news 2026/9/17 10:25:44

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟V10磁盘管理实战:LVM逻辑卷创建、格式化与挂载全流程

银河麒麟V10环境下做磁盘管理,建分区、做LVM逻辑卷、格式化、挂载,这一套流程我实操过很多次。特别是给服务器加数据盘、给系统盘扩容、调整home目录大小的时候,如果LVM规划不对,后面会非常折腾。这篇就按照从零开始的实际操作顺序,把分区、LVM创建、格式化、挂载的完整过程拆开讲清楚,包括每一步为什么这么做、命令怎么敲、有哪些坑要避开。

先说清楚一个概念:LVM(Logical 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分区表。这步很关键,决定了后续能分多少个主分区、最大支持多大容量。

  • MBR(Master Boot Record):传统的分区表,最大支持2TB的磁盘,最多4个主分区(或者3主分区+1扩展分区)。兼容性最好,但功能和容量上限太低。
  • GPT(GUID Partition Table):现代分区表,支持大于2TB的磁盘,理论支持近乎无限个分区,还带备份分区表,更安全。

银河麒麟V10默认安装时基本都走UEFI+GPT路线,所以我建议新盘一律用GPT。特别是以后可能扩容到2TB以上的场景,MBR会直接让你寸步难行。用partedfdisk都行,我习惯用parted,因为它可以直接指定分区表类型。

parted /dev/vdb mklabel gpt

注意:如果磁盘上已有数据或分区表,执行mklabel gpt会清空整块盘。操作前务必确认磁盘名称正确,且里面没有需要保留的数据。

1.3 规划LVM结构:PV、VG、LV

在创建任何内容之前,先花两分钟把LVM的层级关系想清楚。这里我用一个生活化的类比:

  • PV(Physical Volume,物理卷):相当于一块块“原料地”,可以直接是一块裸盘,也可以是一个分区。
  • VG(Volume Group,卷组):把多块PV圈起来形成一个“资源池”,相当于把多块地合并成一个总仓库。
  • LV(Logical 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

进入交互界面后,操作步骤如下:

  1. 输入n创建新分区。
  2. 提示分区号时,直接回车默认。
  3. 提示起始扇区时,直接回车默认(通常不需要改变)。
  4. 提示结束扇区时,这里有两种输入方式:
    • 直接回车,表示把整块盘都划给这个分区。
    • 输入像+50G这样的参数,表示只分50G。
  5. 创建完成后输入t,然后输入分区号,再输入分区类型代码8e。这个代码代表Linux LVM,一定不能漏掉。如果漏了,后面pvcreate会识别不出来或者报“not found”。
  6. 输入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/vdb

partprobe是让我最省心的一个,它会通知内核重新读取分区表,不用重启。

2.2 创建PV物理卷

分区完成后,用pvcreate把刚才创建的/dev/vdb1初始化成物理卷。命令格式很简单:

pvcreate /dev/vdb1

执行成功后,可以用pvs或者pvdisplay查看结果。pvs是精简版,一行一个PV;pvdisplay是详细版,包含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或者vgdisplay

vgs

这时候你应该能看到VG #PV #LV #SN Attr VSize VFree这样一列信息。我经常用VFree判断当前还有多少空间可以划给逻辑卷,规划新LV大小全靠这个数。

2.4 创建LV逻辑卷

VG建好之后,就轮到真正的“灵活分配”了。创建LV有两种方式:-L直接指定大小,或者-l指定PE个数/百分比。最常用的是-L

lvcreate -n data -L 80G vgdata

这个命令解释一下:-n data表示逻辑卷名字叫data-L 80G表示大小80G,vgdata是卷组名。创建完成后,设备路径是/dev/vgdata/data

查看LV信息用lvs

lvs

会看到类似data vgdata -wi-a----- 80.00g的输出。如果你想一次性把VG所有剩余空间都分配给某个LV,可以用-l 100%FREE

lvcreate -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: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="xfs"

这个UUID后面写/etc/fstab时必须用到,记住它,或者直接靠命令动态获取。

3.2 创建挂载点并挂载

文件系统格式化完,要给它找个“门”才能进入。这个“门”就是挂载点(mount point)。通常我在根目录下建一个与应用相关的目录,比如/data

mkdir -p /data mount /dev/vgdata/data /data

挂载完成后,用df -hlsblk检查一下:

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是文件系统创建时固化的,可靠性高得多。

先获取UUID:

blkid /dev/vgdata/data

然后把下面这行追加到/etc/fstab

UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxx" /data xfs defaults 0 0

这行有6个字段,分别是:设备标识、挂载点、文件系统类型、挂载参数、是否dump(0表示不做备份)、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 /data

chmod 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 /datafuser -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里的空间扩展给LV:

lvextend -L +10G /dev/vgdata/data

然后让文件系统扩容:

xfs_growfs /data # XFS resize2fs /dev/vgdata/data # ext4

如果是XFS,扩容是完全在线的,不用卸载;如果是ext4,其实也可以在挂载状态下在线扩容(只要不是缩容)。整个过程很顺滑,业务不会中断。

4.6 误操作导致数据丢失

LVM和分区操作里,最危险的是把vgcreatepvcreatemkfs用错设备。这些命令执行后往往无法恢复。我建议每次执行前都使用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/fstabmount -a
在线扩容文件系统xfs_growfs /dataresize2fs
重新读取分区表partprobe
查看谁占用了挂载点lsof /data/fuser -v /data

我自己的习惯是把这张表打印出来或者存成备忘文件,每次做磁盘操作前先看一眼,尤其是“查看确认”那几行,能避免很多低级错误。

最后再分享一个小技巧:做完LVM全套操作后,建议立刻写一个简单的检查脚本,内容包括lsblkdf -hvgs,并输出到日志文件。这样下次排查问题时,能快速对比出“上次达标”和“这次异常”的差异。银河麒麟V10本身命令集完整,网上也有大量命令手册可查,但真正有价值的还是自己在操作过程中积累的“确认机制”——设备名对不对、空间够不够、fstab语法有没有错。每次动手之前默念三遍:确认设备名,确认数据可丢,确认有备份。养成这种习惯,比记住任何一条命令都重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 10:25:39

重要知识PPT制作与PDF交付:结构设计、导出优化与质量校验全流程

简介:一份聚焦技术领域组内汇报场景的PPT制作规范资料,面向研究生、科研人员及需要定期向导师或团队汇报的工程师,系统解决汇报课件风格随意、逻辑松散、图表不规范等常见问题。资源为1个PDF文档,总大小仅35KB,内容高度…

作者头像 李华
网站建设 2026/9/17 10:22:33

MATLAB多算法潮流计算包:从IEEE9到IEEE300的对比实验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 10:20:26

微信小游戏与网页游戏源码工程化改造指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 10:18:10

3 步清理播客录音杂音:Audacity 免费音频编辑教程

3 步清理播客录音杂音:Audacity 免费音频编辑教程 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 录好的播客底噪嗡嗡响、音量忽大忽小,想重新录一遍?Audacity 是一款完全免费、…

作者头像 李华
网站建设 2026/9/17 10:12:16

OpenUSD 内嵌命令行解析库 pxrCLI11:版本、修补与源码集成解析

OpenUSD 内嵌命令行解析库 pxrCLI11:版本、修补与源码集成解析 【免费下载链接】OpenUSD Universal Scene Description 项目地址: https://gitcode.com/GitHub_Trending/ope/OpenUSD 本篇技术指南聚焦 OpenUSD(Universal Scene Description&#…

作者头像 李华