news 2026/9/18 13:09:37

银河麒麟v10磁盘卸载、LVM删除与配置文件清理实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟v10磁盘卸载、LVM删除与配置文件清理实战

1. 需求整体拆解与方案选型思路

机房搬迁、存储扩容、业务下线、盘阵退役,这几年碰到的磁盘回收需求五花八门,但核心动作高度一致:把一块或者几块已经不需要的磁盘从银河麒麟v10服务器上干干净净地摘下来,既要不影响线上业务,又要保证系统重启后不报错、不自动挂载、不留下一堆悬空的逻辑卷。我见过太多人一上来就fdisk删分区,结果重启之后系统卡在紧急模式,或者lvs里还孤零零挂着几个无法激活的卷组,最后只能进单用户模式救火。所以下面这套流程是我反复验证过、在银河麒麟v10 SP1/SP2/SP3上都跑通的完整套路,从确认现状、卸载文件系统,到删除LVM、擦除分区、清理配置文件,一步一步来,小白照着做也不会翻车。

先说清楚这套操作适合谁。如果你是刚接触国产化服务器运维的工程师,手里正好有一台银河麒麟v10,需要回收数据盘或者释放LVM空间;如果你是系统集成商,在给客户做交付前要清理测试盘;又或者你的服务器上之前用LVM做过home扩容,现在业务迁移要走,盘要腾出来——这些场景都适用。涉及的关键词就是银河麒麟v10、LVM、磁盘、服务器、配置文件,整篇围绕这五个点展开,把每个命令背后的道理讲透,让你知其然也知其所以然。

1.1 什么场景下需要卸载磁盘和删除LVM

先别急着敲命令,我们得先搞清楚自己的需求属于哪一类。第一类是物理磁盘退役,比如一块1T的SAS盘要拔下来换新盘,此时磁盘上可能既有分区又有LVM,必须先把上层逻辑关系全部解除,再擦分区表,否则新盘插上去系统还认到旧的PV UUID,会报"duplicate PV"警告。第二类是LVM空间回收,之前给/home或者/data做过lvextend扩容,现在业务缩容,想把多出来的LV删掉把空间还给卷组,甚至把整个卷组删掉让磁盘回到裸盘状态。第三类是更换存储路径,服务器从本地盘切到SAN存储,原来的本地LVM要全部清理,配置文件里也不能再有残留挂载项。

这三类场景虽然细节不同,但底层的处理顺序是一样的:先停业务、再卸载文件系统、然后删除LV、VG、PV,最后擦分区、清配置、刷缓存。这个顺序不能乱,因为LVM是分层结构,PV在最底层对应物理磁盘或分区,VG在中间把多个PV聚合成资源池,LV在最上层是给文件系统用的逻辑卷。删的时候必须自上而下,就像拆积木一样,先拿掉顶上的,再拆中间的,最后处理地基。你要是反过来先删PV,系统会直接报错"PV is in use",因为VG还引用着它。

1.2 为什么不能直接用fdisk删分区

很多人图省事,fdisk /dev/sdb进去一个d删掉分区,然后w保存,觉得完事了。这在纯裸盘、无LVM的场景下勉强可行,但只要涉及LVM,这么做几乎必然出问题。原因是LVM在磁盘头部和分区的起始位置写了PV元数据(LVM2_member标签),fdisk删了分区表,PV的元数据可能还残留在磁盘上,系统启动时pvscan会扫到这些孤儿PV,虽然不会自动激活,但会在日志里刷一堆警告,有些版本还会导致systemctl status lvm2-pvscan@服务报failed。

更稳妥的做法是分两步走:先让LVM自己把关系解除干净(vgremove、pvremove),再去动分区表。这样PV元数据会被主动清掉,磁盘回到真正的"干净"状态。我在一台麒麟v10 SP2上实测过,直接fdisk删分区后pvs还能看到unknown device的残留记录,就是元数据没清导致的,后来用pvremove重新处理才彻底正常。

1.3 操作前的整体流程与风险控制

把整个流程浓缩成一句话:确认现状 → 卸载挂载 → 删除LV → 删除VG → 删除PV → 擦分区 → 清配置 → 刷缓存 → 重启验证。这九步里,风险最高的是前两步和最后一步。卸载挂载如果没做干净,有进程占用会报"target is busy";重启验证如果配置文件没清干净,系统可能进不了正常模式。

我一般的做法是先在一台测试机上完整走一遍,把每一步的输出记下来,再上生产。生产环境操作前一定要做快照或者备份,尤其是/etc/fstab/etc/lvm/lvm.conf/etc/multipath.conf这几个文件,备份成.bak加日期,出问题能秒回滚。另外强烈建议在维护窗口操作,因为卸载文件系统会让依赖该盘的业务中断,这个不用多说,但真有人在大白天干过,结果数据库直接崩了。

2. 操作前的必备排查与数据备份

动手之前,最忌讳的就是"我以为"。你以为那块盘没用了,结果上面挂着备份目录;你以为LV叫lv_home,实际是lv_data。所以这一章专门讲怎么把现状摸清楚,把该备的备好,磨刀不误砍柴工。这一步骤花的时间通常比实际操作还长,但它能帮你避免90%的翻车。

2.1 摸清磁盘与LVM的完整拓扑

第一件事是搞清楚系统里现在有哪些盘、哪些LVM。我习惯用一组命令组合看,逐个说。

lsblk是最直观的,它以树形结构展示磁盘、分区、LVM的父子关系。输出里你能一眼看到/dev/sdb下面挂了/dev/sdb1sdb1又是某个VG的PV,VG下面又有几个LV,每个LV挂载在哪里。这个树是操作的总地图。

lsblk -f

-f会显示文件系统类型、UUID、挂载点,信息更全。如果输出里某个LV的MOUNTPOINT有值,说明它正在被挂载,操作前必须卸载。

接着看LVM的详细情况:

pvs # 查看物理卷 vgs # 查看卷组 lvs # 查看逻辑卷

pvs输出里重点看PV Name(对应哪个设备)、VG Name(属于哪个卷组)、PV Size。vgs看卷组剩余空间和包含几个PV。lvs看每个逻辑卷的大小和所属卷组。这三个命令的输出要交叉比对,确认没有遗漏。

再看挂载和分区:

df -hT # 查看已挂载的文件系统 mount | grep sd # 查看磁盘挂载 blkid # 查看块设备UUID和类型 fdisk -l /dev/sdb # 查看指定磁盘分区表

注意:blkid输出里的TYPE="LVM2_member"就说明这个分区是PV,TYPE="ext4"xfs"才是文件系统。麒麟v10默认根分区用xfs,数据盘常见ext4,两者卸载命令一样,但后面清理细节略有区别。

2.2 确认挂载点、进程占用与开机自启

确认了拓扑,接下来要确认"谁在用这块盘"。最直接的方法是看挂载点:

mount | grep /dev/mapper

如果LV正在挂载,比如/dev/mapper/vg_data-lv_home on /home type ext4,那说明/home在用这块盘。这时候不能直接umount,得先确认没有进程在读写。

lsoffuser两把利器排查占用:

lsof /home fuser -mv /home

lsof会列出打开该目录下文件的进程,fuser -mv会显示哪个进程的哪个用户在使用这个挂载点。如果发现有进程,先停服务再卸载。我碰到过一次nginx日志目录挂在待卸载的盘上,直接umount报busy,后来systemctl stop nginx才解决。

还要确认开机自动挂载。检查/etc/fstab

grep -E "sd|mapper" /etc/fstab

只要看到待卸载磁盘或LV的挂载项,就要记下来,后面统一清理。这一步漏了,重启必然出问题。另外如果用了autofs,还要检查/etc/auto.master和相关map文件;如果用了systemd mount unit,检查/etc/systemd/system/下有没有对应的.mount文件。

2.3 数据备份与回滚预案

这一步是底线。哪怕你100%确定盘里没数据,也建议备份配置文件。要备份的清单如下:

cp /etc/fstab /etc/fstab.bak.$(date +%F) cp /etc/lvm/lvm.conf /etc/lvm/lvm.conf.bak.$(date +%F) cp /etc/multipath.conf /etc/multipath.conf.bak.$(date +%F) 2>/dev/null vgcfgbackup -f /root/vgcfgbackup_$(date +%F).txt # 备份VG元数据

vgcfgbackup这个命令很多人不知道,它会把当前所有卷组的配置信息导出成文本,万一误删VG,可以用vgcfgrestore恢复元数据。虽然不能恢复数据,但能救回卷组结构,省去重建的麻烦。

如果有重要数据,用rsync或者tar先拷到别的盘:

rsync -avP /data/ /backup/data_$(date +%F)/

提示:LVM删除是不可逆操作,lvremove之后数据基本找不回来。别迷信数据恢复工具,LVM的条带化和元数据布局让恢复难度极高。所以"确认无用"这四个字一定要落实到人,最好让业务方书面确认。

3. 逐步卸载磁盘与删除LVM的实操

准备工作做完,正式进入操作环节。这一章是全文的核心,我会把每一步的命令、输出含义、注意事项都讲清楚。整个删除顺序是自上而下:文件系统 → LV → VG → PV → 分区。记住这个方向,就不会乱。

3.1 卸载文件系统与停止相关服务

第一步,卸载所有挂载的LV或分区。假设我们要处理的是/dev/mapper/vg_data-lv_home,挂载在/home

umount /home

如果报target is busy,先cd /切出目录,再用fuser -km /home强制踢掉占用进程(慎用,会杀掉进程),或者老老实实找到进程停服务。卸载成功后再确认:

mount | grep /home

没有任何输出才算卸载干净。如果这块盘上有LVM快照(snapshot),先删快照再删原LV,因为快照引用着原卷:

lvs # 先看有没有snap lvremove /dev/vg_data/lv_home_snap

同时别忘了停掉可能依赖这块盘的服务,比如数据库、日志服务、监控agent。麒麟v10上可以用systemctl list-units --type=service --state=running看看跑着哪些服务,评估是否有依赖。

3.2 删除LV、VG、PV的正确顺序

文件系统卸载后,开始拆LVM。顺序是LV → VG → PV,一层一层来。

先删逻辑卷:

lvremove /dev/vg_data/lv_home

系统会提示确认,输入y。如果有多个LV,可以一次性删:

lvremove /dev/vg_data/lv_data /dev/vg_data/lv_log

如果LV处于激活状态删不掉,先lvchange -an /dev/vg_data/lv_home去激活再删。删完用lvs确认,该卷组下应该没有LV了。

接着删卷组:

vgremove vg_data

卷组必须在其下所有LV都删除后才能删。如果VG里有PV还活跃,vgremove会报错,先排查。删完用vgs确认。

最后删物理卷:

pvremove /dev/sdb1

如果PV对应的是整块盘(没分区),就是pvremove /dev/sdb。这一步会把磁盘头部的LVM2_member标签清掉。删完用pvs确认,对应的PV应该消失了。

注意:这三个命令的先后顺序绝对不能反。vgremove会连带把VG的元数据删掉,但如果VG里还有LV,它会拒绝执行。pvremove要求PV不属于任何VG。所以自上而下是硬性规则。

3.3 擦除分区表与磁盘标识

LVM关系解除后,磁盘就成了一块"有分区表但没用"的裸设备。如果你想让磁盘彻底回到出厂状态,需要清掉分区表和残留标识。

fdiskparted删分区。以fdisk为例:

fdisk /dev/sdb # 进入后输入 p 查看分区 # 输入 d 删除分区,多个分区重复 d # 输入 w 保存退出

或者用parted更干净:

parted /dev/sdb mklabel gpt # 重建分区表(会清空所有分区)

提示:mklabel会瞬间清空分区表,确认盘上无数据再用。如果想彻底擦除磁盘头部的所有残留(包括PV标签、文件系统超级块),可以用:

dd if=/dev/zero of=/dev/sdb bs=1M count=100

这个命令往磁盘前100M写零,足以覆盖分区表、PV元数据、文件系统超级块。之后wipefs -a /dev/sdb再扫一遍,确保没有残留标识:

wipefs -a /dev/sdb wipefs -n /dev/sdb # -n只预览不执行,确认无输出

wipefs是专门用来擦除设备签名(signature)的工具,比dd更精准,推荐两个配合用。

3.4 刷新内核识别与验证结果

分区表改完后,有时候内核还缓存着旧的分区信息,需要刷新:

partprobe /dev/sdb

或者用更底层的:

blockdev --rereadpt /dev/sdb

刷新后再用lsblk看,/dev/sdb下面应该不再有sdX1之类的子节点,pvs里也不应该有它。最后确认一遍:

lsblk pvs vgs lvs blkid | grep sdb

理想状态下,blkid应该完全没有sdb的输出,说明签名已清干净。到这里磁盘层面的操作就完成了,接下来处理配置文件。

4. 配置文件清理与残留排查

很多人的操作到这里就结束了,结果重启后系统报错、进紧急模式,问题就出在配置文件没清。LVM和磁盘相关的配置文件有好几个,分布在/etc下的不同位置,这一章逐个梳理,把该清的清干净。

4.1 fstab与自动挂载配置清理

/etc/fstab是重灾区。只要里面有对已删除设备的挂载项,系统启动时就会尝试挂载,挂不上就报错,严重时卡在emergency mode。清理方法:

vim /etc/fstab

找到包含待删磁盘或LV的行,比如:

/dev/mapper/vg_data-lv_home /home ext4 defaults 0 0

整行删除或注释掉。如果用UUID挂载:

UUID=xxxx-xxxx /home ext4 defaults 0 0

同样删掉。改完用mount -a测试一下,没有报错说明配置正常:

mount -a

注意:mount -a会挂载fstab里所有未挂载的项,如果还有别的盘没挂会一起挂上,这是预期行为。如果有报错,说明fstab里还有问题项,仔细排查。

如果用了systemd的mount unit,删掉对应文件:

systemctl disable home.mount rm /etc/systemd/system/home.mount systemctl daemon-reload

4.2 LVM元数据缓存与扫描配置

LVM有一套自己的缓存和扫描机制。删除PV后,/etc/lvm/cache/.cache里可能还残留旧记录,一般不用手动清,vgscan会刷新。但有个地方要注意,/etc/lvm/lvm.conf里可能配置了设备过滤规则,比如:

filter = [ "a|/dev/sdb|", "r|.*|" ]

如果写死了某块盘,删盘后规则还在,最好一并清理,改成通用规则或者把特定条目去掉。改完执行:

vgscan --cache

让LVM重新扫描并刷新缓存。再检查/etc/lvm/backup//etc/lvm/archive/目录,这里存放卷组的备份和归档文件,如果卷组已删,对应的文件可以清掉:

ls /etc/lvm/backup/ ls /etc/lvm/archive/ rm /etc/lvm/backup/vg_data

留着也不影响运行,但有洁癖或者担心误扫描的话,清掉更清爽。

4.3 多路径、iSCSI与其他残留检查

如果服务器接了SAN存储或者用了多路径软件,/etc/multipath.confmultipathd服务里可能有残留的wwid映射。先看多路径状态:

multipath -ll

如果输出里有待删磁盘的wwid,用:

multipath -f <wwid> # 刷新该多路径设备

然后在/etc/multipath.conf的blacklist里加上,或者删掉对应配置,重启multipathd

systemctl restart multipathd

如果用了iSCSI,还要iscsiadm登出并删除节点记录。这些存储协议相关的清理,核心原则是"谁引用了这块盘,就在谁的配置里解除引用"。

最后做一个全面残留检查。我常用的组合:

grep -r "sdb\|vg_data\|lv_home" /etc/ 2>/dev/null

把上面命令的sdbvg_data换成你实际删的设备名和卷组名,看/etc下还有哪些文件引用了它们。重点关注/etc/fstab/etc/mtab/etc/crypttab/etc/exports(如果配了NFS)、/etc/rc.local。这个grep是兜底手段,能揪出你意想不到的残留。

5. 常见问题与排查技巧实录

即便流程再规范,实操中还是会遇到各种报错。这一章把我和同行踩过的坑整理出来,配上排查思路和解决办法,遇到问题直接对着查。

5.1 卸载时报device is busy怎么办

这是最高频的问题,报错长这样:

umount: /home: target is busy.

原因是有进程占用或者有进程的工作目录在这个挂载点下。排查顺序:

  1. fuser -mv /home看哪个进程在用;
  2. lsof +D /home列出打开该目录下文件的进程;
  3. cd /确认自己不在该目录里(自己占用的坑最容易被忽略);
  4. 停掉相关服务后重试。

如果实在找不到进程,可以用lsof | grep /home全量搜。还有一种情况是NFS导出占用了挂载点,exportfs -v看一下有没有相关导出。实在不行,umount -l /home做懒卸载,但这是下策,懒卸载后进程继续写会出问题,只适合维护窗口内应急。

5.2 LV删除报Logical volume is in use

Logical volume vg_data/lv_home in use.

说明LV还处于激活状态或者有挂载。先确认卸载:

umount /dev/vg_data/lv_home lvchange -an /dev/vg_data/lv_home lvremove /dev/vg_data/lv_home

如果报LV is used by another device,可能是被dm设备引用,用dmsetup ls看有没有相关的device mapper条目,必要时dmsetup remove清掉。还有可能是快照或thin pool引用了它,lvs -a -o +devices看依赖关系。

5.3 重启后磁盘又出现或系统进紧急模式

重启后lsblk又看到/dev/sdb有分区,通常是分区表没擦干净,或者partprobe没生效。进系统后重新wipefs -a /dev/sdbdd擦头部。

系统进紧急模式,八成是fstab里有挂不上的项。在紧急模式下,根分区通常是只读挂载的,需要重新挂载为读写:

mount -o remount,rw / vim /etc/fstab # 删掉问题项 reboot

紧急模式里如果没有vim,用vi或者nano,再不行用sed直接改。这就是前面强调备份fstab的原因——有备份可以直接覆盖回去。

5.4 常见问题速查表

问题现象可能原因排查命令解决方式
umount target is busy进程占用挂载点fuser -mv、lsof停服务或fuser -km
LV is in useLV未去激活/被引用lvs -a -o +deviceslvchange -an后删除
PV is in usePV属于VGpvs先删VG再删PV
vgremove拒绝执行VG下有LVlvs先删所有LV
重启进紧急模式fstab残留挂载项cat /etc/fstab注释或删除问题行
磁盘出现duplicate PVPV元数据未清pvs、blkidpvremove加wipefs
分区删了又出现分区表缓存未刷lsblk、partprobeblockdev --rereadpt
blkid仍显示旧类型超级块残留blkid、wipefs -nwipefs -a擦除

这张表建议收藏,遇到报错直接对照。我自己最常遇到的是前三个,基本占了八成情况。

我个人在实际操作中的体会是,这套流程里最容易被低估的是"确认现状"和"清理配置"两头。中间删LVM的命令其实很简单,就那么几条,但前面的排查决定了你会不会删错盘,后面的配置清理决定了重启稳不稳。我见过删错盘的惨案,就是因为lsblk没看仔细,把系统盘当数据盘处理了。所以每次动手前,我都会在纸上或者文本里把盘符、VG名、LV名、挂载点列一遍,对着lsblk的输出核三遍再敲回车。另外一个小技巧是,删LVM之前先vgcfgbackup备份一次元数据,真删错了还能vgcfgrestore把结构找回来,虽然数据救不回,但至少不用从头重建分区和卷组。这套流程在麒麟v10 SP3上跑了不下二十台机器,目前零事故,希望对你有用。

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

VirtualBox 运行 Ubuntu 卡顿提速:分层优化配置与排查实践

虚拟机跑 Ubuntu 卡顿这件事&#xff0c;几乎每个用 VirtualBox 的人都撞过&#xff1a;鼠标一动一顿、窗口拖动像在拉橡皮筋、终端敲命令要等半秒才回显。我前后在三台机器上折腾过 VirtualBox 里的 Ubuntu&#xff0c;从最初的"能跑就行"到后来把开机时间从两分半压…

作者头像 李华
网站建设 2026/9/18 15:40:25

图书馆管理系统UML建模:从用例图到类图顺序图完整指南

简介&#xff1a;图书馆管理系统UML设计是一份面向信息管理与信息系统、软件工程等专业学生的课程设计参考资料&#xff0c;完整呈现图书馆管理系统的分析与建模过程。文档从开发背景入手&#xff0c;阐述系统目标、功能需求&#xff0c;并围绕读者管理、书籍管理、借阅管理和系…

作者头像 李华
网站建设 2026/9/18 15:53:31

UML用例图实战指南:从需求分析到软考真题全解析

同行们&#xff0c;先问个扎心的问题&#xff1a;你们团队画用例图&#xff0c;是不是经常画成“一堆椭圆堆在一起&#xff0c;旁边站着几个小人&#xff0c;然后评审会上被产品经理和开发两头挑毛病”&#xff1f;我从刚入行画到第十年&#xff0c;最大感受是——用例图是UML里…

作者头像 李华
网站建设 2026/9/18 15:56:02

反隐身技术全解析:从雷达方程到多基地融合探测

简介&#xff1a;文档围绕现代军事反隐身主题&#xff0c;梳理超宽带雷达、超视距雷达、双/多基地雷达、双波段雷达、穿透树叶雷达、机载/浮空器载雷达、天基雷达等探测机理与适用场景&#xff0c;并结合频率捷变、扩频、低旁瓣、功率合成等技术提升现有雷达探测能力&#xff0…

作者头像 李华
网站建设 2026/9/18 15:51:16

基于NSGA-II的高速动车组车轮型面多目标优化设计与工程复现

简介&#xff1a;面向高速动车组轮缘磨耗抑制与曲线通过安全性提升的论文复现资源&#xff0c;涵盖车轮型面几何参数&#xff08;R4、R5、R6、x_R6、T、α&#xff09;对轮轨接触和动力学性能的影响分析。资源核心是基于多目标优化的LMA-Opt型面设计流程&#xff0c;包含详细可…

作者头像 李华