银河麒麟V10磁盘管理实战:LVM逻辑卷创建、格式化与挂载全流程

发布时间:2026/9/17 10:25:57
银河麒麟V10磁盘管理实战:LVM逻辑卷创建、格式化与挂载全流程 银河麒麟V10环境下做磁盘管理建分区、做LVM逻辑卷、格式化、挂载这一套流程我实操过很多次。特别是给服务器加数据盘、给系统盘扩容、调整home目录大小的时候如果LVM规划不对后面会非常折腾。这篇就按照从零开始的实际操作顺序把分区、LVM创建、格式化、挂载的完整过程拆开讲清楚包括每一步为什么这么做、命令怎么敲、有哪些坑要避开。先说清楚一个概念LVMLogical Volume Manager逻辑卷管理在银河麒麟V10里用得非常多因为它允许你把多块物理磁盘合并成一个卷组然后按需划分逻辑卷扩容缩容都非常灵活。传统分区直接挂载的方式遇到磁盘空间不足就只能加新盘或者备份重做麻烦得很。所以只要不是特殊场景比如U盘、引导分区我强烈推荐用LVM来管理数据盘。在开始之前你需要确认当前账户有root权限并且系统里已经接好了一块或多块新磁盘。下面我按一条完整链路来走识别磁盘 - 分区 - 创建PV - 创建VG - 创建LV - 格式化 - 挂载 - 开机自动挂载 - 故障排查。1. 环境准备与磁盘规划1.1 先让系统“认出”新磁盘拿到一块新硬盘或者新加的虚拟磁盘第一件事不是马上分区而是先看系统识别到没有。我常用的命令是lsblk它能以树状图显示当前所有块设备以及挂载关系非常直观。lsblk输出大概长这样NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 50G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 49G 0 part ├─klv-root 253:0 0 45G 0 lvm / └─klv-swap 253:1 0 4G 0 lvm [SWAP] vdb 252:16 0 100G 0 disk这个输出里vda一般是系统盘已经有分区和LVM了vdb就是刚加进来的新盘100GB还没有分区TYPE列是disk。如果你的机器是物理机设备名很可能是/dev/sda、/dev/sdb如果是虚拟机常见的是/dev/vda、/dev/vdb。名字不同不影响操作逻辑。如果新盘插上去了但lsblk没看到可以执行echo - - - /sys/class/scsi_host/host0/scan触发重新扫描或者干脆重启系统。虚拟机里有时候还要去控制台确认磁盘是否真正挂载到了实例上这一步很多人会忽略。1.2 分区表方案GPT还是MBR磁盘识别到了接下来要决定用GPT还是MBR分区表。这步很关键决定了后续能分多少个主分区、最大支持多大容量。MBRMaster Boot Record传统的分区表最大支持2TB的磁盘最多4个主分区或者3主分区1扩展分区。兼容性最好但功能和容量上限太低。GPTGUID Partition Table现代分区表支持大于2TB的磁盘理论支持近乎无限个分区还带备份分区表更安全。银河麒麟V10默认安装时基本都走UEFIGPT路线所以我建议新盘一律用GPT。特别是以后可能扩容到2TB以上的场景MBR会直接让你寸步难行。用parted或fdisk都行我习惯用parted因为它可以直接指定分区表类型。parted /dev/vdb mklabel gpt注意如果磁盘上已有数据或分区表执行mklabel gpt会清空整块盘。操作前务必确认磁盘名称正确且里面没有需要保留的数据。1.3 规划LVM结构PV、VG、LV在创建任何内容之前先花两分钟把LVM的层级关系想清楚。这里我用一个生活化的类比PVPhysical Volume物理卷相当于一块块“原料地”可以直接是一块裸盘也可以是一个分区。VGVolume Group卷组把多块PV圈起来形成一个“资源池”相当于把多块地合并成一个总仓库。LVLogical Volume逻辑卷从VG这个总仓库里划出一块来用相当于具体分给某个项目的仓库空间。为什么要这样设计最大的好处是灵活。比如你有一块100G的盘全部分给某个应用结果应用只用了20G剩下的80G就浪费了。但如果做成LVM先把100G加入VG再创建一块80G的LV挂给应用后面不够了可以直接在线扩容甚至多挂一块新盘进VG总仓库变大后再给LV扩容完全不影响业务。所以我的建议是假如数据盘容量不超过2TB直接整块盘建PV不分区如果容量特别大或者有特殊引导需求才考虑先分区再把分区建为PV。下面示例我演示“先分区再建PV”的完整流程毕竟这是很多朋友实际会遇到的场景而且理解分区后再建PV对排查问题也很有帮助。2. LVM逻辑卷创建实操2.1 用fdisk创建LVM分区建PV之前先要用分区工具把磁盘划分出一个类型为“Linux LVM”的分区。fdisk是最经典的工具交互式操作适合手动处理我用它最多。fdisk /dev/vdb进入交互界面后操作步骤如下输入n创建新分区。提示分区号时直接回车默认。提示起始扇区时直接回车默认通常不需要改变。提示结束扇区时这里有两种输入方式直接回车表示把整块盘都划给这个分区。输入像50G这样的参数表示只分50G。创建完成后输入t然后输入分区号再输入分区类型代码8e。这个代码代表Linux LVM一定不能漏掉。如果漏了后面pvcreate会识别不出来或者报“not found”。输入w写入分区表并退出。完整输出类似这样Command (m for help): n Partition number (1-128, default 1): First sector (2048-209715166, default 2048): Last sector, sectors or size{K,M,G,T,P} (2048-209715166, default 209715166): Created a new partition 1 of type Linux filesystem. Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition to Linux LVM. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.这里有一个非常容易踩的坑分区写完后系统内核可能还“认识”不到新分区尤其是你正在操作的磁盘刚好有分区被占用时。解决办法是执行下面任意一条partprobe /dev/vdb # 或者 partx -a /dev/vdbpartprobe是让我最省心的一个它会通知内核重新读取分区表不用重启。2.2 创建PV物理卷分区完成后用pvcreate把刚才创建的/dev/vdb1初始化成物理卷。命令格式很简单pvcreate /dev/vdb1执行成功后可以用pvs或者pvdisplay查看结果。pvs是精简版一行一个PVpvdisplay是详细版包含PE大小、PV UUID等。我最常用pvs因为信息够用且不啰嗦pvs正常输出会看到/dev/vdb1 100.00g之类的信息PV状态应该是lvm2。如果这里就报错请回顾上一步分区类型是不是忘了设成8e。提示如果你使用的是parted创建分区记得在最后一步设置flag为lvm效果和fdisk的8e是一样的。命令是set 1 lvm on。2.3 创建VG卷组PV创建好之后把这个PV加入到一个卷组里。卷组名我习惯叫vgdata。如果你后面有多块盘全都可以加入同一个VG这就是LVM的“合并”能力。vgcreate vgdata /dev/vdb1这条命令的意思是用/dev/vdb1创建一个名为vgdata的卷组。如果以后想加第二块盘直接执行vgextend vgdata /dev/vdb2查看VG信息用vgs或者vgdisplayvgs这时候你应该能看到VG #PV #LV #SN Attr VSize VFree这样一列信息。我经常用VFree判断当前还有多少空间可以划给逻辑卷规划新LV大小全靠这个数。2.4 创建LV逻辑卷VG建好之后就轮到真正的“灵活分配”了。创建LV有两种方式-L直接指定大小或者-l指定PE个数/百分比。最常用的是-Llvcreate -n data -L 80G vgdata这个命令解释一下-n data表示逻辑卷名字叫data-L 80G表示大小80Gvgdata是卷组名。创建完成后设备路径是/dev/vgdata/data。查看LV信息用lvslvs会看到类似data vgdata -wi-a----- 80.00g的输出。如果你想一次性把VG所有剩余空间都分配给某个LV可以用-l 100%FREElvcreate -n data -l 100%FREE vgdata注意-L和-l不能混用。-L 80G是固定大小-l 80%FREE是占比。实际生产环境中我一般先用-L明确指定大小避免以后配置混乱。到这里LVM的逻辑卷创建已经完成但还没法用。接下来要格式化建立文件系统然后挂载使用。3. 格式化与挂载3.1 选择文件系统xfs还是ext4逻辑卷只是一个“空容器”要往里存数据必须先写入文件系统。银河麒麟V10下我常遇到两种选择XFS和ext4。XFS默认安装下root用的就是它适合大文件、大数据量场景扩容时可以xfs_growfs在线扩容不用卸载非常方便。缺点是不支持缩容。ext4经典老牌文件系统兼容性好支持在线扩容和离线缩容小文件性能也不错。缺点是缩容操作要卸载且不能在线。怎么选我的原则很简单如果只是做大容量数据存储、以后大概率只需要扩容不需要缩容那就直接用XFS如果你可能要对逻辑卷做缩容或者有强烈的小文件性能要求那就用ext4。银河麒麟V10的root卷默认就是XFS日常新增数据盘我大多数情况下也用XFS因为“在线扩容”这一点实在太重要了。格式化的命令如下# 格式化为XFS mkfs.xfs /dev/vgdata/data # 如果是ext4就用 mkfs.ext4 /dev/vgdata/data执行时会输出一堆文件系统参数其中包括一个NO NAME的日志信息。这时再用blkid查看就能看到设备的UUID和文件系统类型blkid /dev/vgdata/data输出类似/dev/vgdata/data: UUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx TYPExfs这个UUID后面写/etc/fstab时必须用到记住它或者直接靠命令动态获取。3.2 创建挂载点并挂载文件系统格式化完要给它找个“门”才能进入。这个“门”就是挂载点mount point。通常我在根目录下建一个与应用相关的目录比如/data。mkdir -p /data mount /dev/vgdata/data /data挂载完成后用df -h或lsblk检查一下df -h | grep data能看到/dev/mapper/vgdata-data 80G ... /data就对了。这里有个细节使用LVM后设备路径不仅存在于/dev/vgdata/data在/dev/mapper/下也会出现一个名为vgdata-data的软链接。很多工具比如某些监控脚本会调用df并显示/dev/mapper/vgdata-data看到这种路径不要奇怪它们其实是同一个设备。挂载成功后在/data下读写文件数据才会真正写入逻辑卷。你可以先创建一个测试文件验证一下touch /data/testfile如果没有任何报错说明读写正常。3.3 配置开机自动挂载mount命令做的是临时挂载一旦重启挂载关系就会丢失。想让它永久生效必须写入/etc/fstab。我强烈建议不要直接写/dev/vgdata/data而要用UUID。因为设备的名称在某些情况下可能发生变化比如增加或减少了磁盘/dev/vdb可能变成/dev/vdc但UUID是文件系统创建时固化的可靠性高得多。先获取UUIDblkid /dev/vgdata/data然后把下面这行追加到/etc/fstabUUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxx /data xfs defaults 0 0这行有6个字段分别是设备标识、挂载点、文件系统类型、挂载参数、是否dump0表示不做备份、fsck检查顺序0表示不检查非根分区我一般设置0。保存退出后执行mount -a这个命令会重新读取/etc/fstab并挂载所有还没挂载的条目。如果没有任何报错说明配置没问题。为了更稳妥我习惯再执行一次df -h确认/data已经挂载且没有重复挂载。这里再多说一句对于根分区/而言fstab里的 fsck 顺序应该时1或2而不是0但数据分区写0完全没问题。3.4 处理挂载目录权限挂载成功后你可能会发现普通用户无法在/data下写文件。这是因为新文件系统的根目录默认属主是root。如果是给某个业务用户用就需要调整属主或者权限。chown -R user:group /data chmod 755 /datachmod 755意味着属主可读写执行组内和其他用户只有读和执行权限。如果是比较隐私的数据建议权限收紧到700。我遇到过不少朋友挂载是成功了但忘改权限业务进程启动半天写不进去排查了一两个小时才发现是权限问题。顺序上建议先挂载再改权限改完立刻重启验证一下。4. 常见问题与技巧4.1 分区后系统内核没有立即识别症状fdisk创建完分区后执行pvcreate报错/dev/vdb1不存在。原因内核没有重新读取分区表。解决办法partprobe如果/dev/vdb1还是不出现用partx -a /dev/vdb手动通知内核。一般情况下这两条命令能解决95%的问题。实在不行再考虑重启但生产环境里重启代价大所以第一条命令一定要记牢。4.2 格式化时提示设备忙或已被占用症状执行mkfs.xfs /dev/vgdata/data时提示Device or resource busy。原因这个LV可能已经挂载在某个目录下或者被某些进程占用了。排查和处理findmnt /dev/vgdata/data # 或者 df -h | grep data确认挂载点后先停止使用该目录的业务进程或者直接卸载umount /data如果umount提示target is busy执行lsof /data或fuser -vm /data查看哪些进程在用然后处理这些进程。千万不能用umount -l强制卸载虽然能马上解除挂载但可能会导致正在写入的数据损坏。4.3 LVM扩容给系统盘/home扩容银河麒麟V10里很多人会遇到“根分区空间不够”的情况热搜里也经常看到lvm扩容home。这里分享一个典型场景系统盘原本有100G根分区只剩1G了但卷组里还有空闲空间未分配给任何LV。第一步看VG还剩多少空间vgs输出里VFree就是可以继续分配的大小。如果有空闲空间对根分区进行在线扩容lvextend -L 20G /dev/mapper/klv-root第二步让文件系统感知到新空间。XFS在银河麒麟V10默认是root的文件系统所以用xfs_growfs / resize2fs /dev/mapper/klv-root # 如果是ext4用这个特别注意XFS只能用xfs_growfs且指定挂载点不能用resize2fs否则会报错。扩容过程中业务不需要停这是LVM最大的优势之一。4.4 开机挂载失败导致系统进入紧急模式症状重启后系统卡在Welcome to emergency mode登录后提示无法挂载某个文件系统。原因/etc/fstab里的挂载配置写错了或者设备UUID不匹配。解决办法并不复杂。在紧急模式输入root密码后先注释或者修正/etc/fstab的错误行然后重启。如果fstab写错了系统会卡住这时执行mount -o remount,rw / vi /etc/fstab把错误行注释掉。更稳妥的做法是改完fstab后每次都用mount -a验证确认无误再重启。我自己的习惯是每次配置fstab后至少重启一次或执行一次reboot前检查把风险消灭在开机前。4.5 LV空间不足但VG有剩余空间这是最常遇到的问题。虽然VG里还有空闲但LV本身不够用。解决办法很简单先把VG里的空间扩展给LVlvextend -L 10G /dev/vgdata/data然后让文件系统扩容xfs_growfs /data # XFS resize2fs /dev/vgdata/data # ext4如果是XFS扩容是完全在线的不用卸载如果是ext4其实也可以在挂载状态下在线扩容只要不是缩容。整个过程很顺滑业务不会中断。4.6 误操作导致数据丢失LVM和分区操作里最危险的是把vgcreate、pvcreate、mkfs用错设备。这些命令执行后往往无法恢复。我建议每次执行前都使用lsblk再确认一遍目标设备尤其是当系统里有多个大小一致的磁盘时。另外强烈建议养成备份习惯。如果是生产环境做任何LVM修改之前优先使用快照功能。LVM本身就支持给LV打快照例如lvcreate -s -n data_snap -L 5G /dev/vgdata/data这个快照会给你一个“后悔药”。确认业务稳定后再用lvremove删除快照。这个操作我不敢说每次都做但重要数据前一定会做。4.7 关于图形化工具和命令集银河麒麟V10桌面版自带“磁盘”工具GNOME Disks可以在图形界面里完成分区、格式化和挂载适合不习惯命令行的朋友。界面操作很简单选中盘点齿轮图标能创建分区、格式化为ext4/xfs、临时挂载。不过图形工具对LVM的支持比较有限建PV/VG/LV还是得用命令行。日常排障最常用的命令我整理成了一张速查表需求命令查看磁盘和分区lsblk/fdisk -l查看PV信息pvs/pvdisplay查看VG信息vgs/vgdisplay查看LV信息lvs/lvdisplay查看挂载和文件系统df -h/blkid创建PVpvcreate /dev/vdb1创建VGvgcreate vgdata /dev/vdb1创建LVlvcreate -n data -L 80G vgdata格式化mkfs.xfs /dev/vgdata/data挂载mount /dev/vgdata/data /data永久挂载编辑/etc/fstab后mount -a在线扩容文件系统xfs_growfs /data或resize2fs重新读取分区表partprobe查看谁占用了挂载点lsof /data/fuser -v /data我自己的习惯是把这张表打印出来或者存成备忘文件每次做磁盘操作前先看一眼尤其是“查看确认”那几行能避免很多低级错误。最后再分享一个小技巧做完LVM全套操作后建议立刻写一个简单的检查脚本内容包括lsblk、df -h、vgs并输出到日志文件。这样下次排查问题时能快速对比出“上次达标”和“这次异常”的差异。银河麒麟V10本身命令集完整网上也有大量命令手册可查但真正有价值的还是自己在操作过程中积累的“确认机制”——设备名对不对、空间够不够、fstab语法有没有错。每次动手之前默念三遍确认设备名确认数据可丢确认有备份。养成这种习惯比记住任何一条命令都重要。