开发机有一块希捷的 1TB 硬盘报废了,读写速度超慢,坏道一堆(别买希捷,真的)
今天想把这块硬盘换掉,简单看了一下硬盘里没有什么文件,基本上就几个 G 的文件而已,把文件移动到其他盘之后就准备开始移除硬盘。
刚开始我用的是 Webmin 操作的硬盘,当我尝试删除逻辑卷的时候,它提示我要将体量移动到其他物理卷,然后点了确定之后发现 Webmin 卡死了,过了一分钟 SSH 掉线了,打开服务器的显示器一看,内核错误了,无奈只能强制重启服务器。
重启完之后进系统就卡住了,然后过了一会进入了应急维护模式,我想了下要不干脆就直接把逻辑卷删除吧,反正也没东西,当我尝试执行删除命令 lvremove home
的时候报错了,提示:
Can't remove locked LV home
这是为啥呢?因为死机之前,正在将原逻辑卷的体量转移到其他物理卷,所以这时候会创建一个叫 pvmove0 的镜像逻辑卷,然后会把目标(要迁移的)逻辑卷锁定,这时候就会出现上面这个情况。
我上网查了一下,最简单的解决锁定的情况,就是通过备份 vg 配置文件,然后手动删除 locked 标识,再还原回去即可,操作方法如下:
$ vgcfgbackup vol1 (你的卷组名字)
Volume group "vol1" successfully backed up.
这时候卷组 vol1 的配置文件就会保存到 /etc/lvm/backup/vol1
,可以用 vim 编辑,打开之后内容大概如下
# Generated by LVM2 version 2.02.187(2)-RHEL7 (2020-03-24): Thu Apr 22 16:41:42 2021
contents = "Text Format Volume Group"
version = 1
description = "Created *after* executing 'vgreduce vol1 /dev/sdc1'"
creation_host = "ZeroDream-Develop" # Linux ZeroDream-Develop 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64
creation_time = 1619080902 # Thu Apr 22 16:41:42 2021
vol1 {
id = "CMZ8Ou-Emkm-UJ9c-e7yt-ODRW-Fa3r-6QVYcV"
seqno = 10
format = "lvm2" # informational
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 8192 # 4 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "IK9HLV-FTxJ-jhoC-qvH3-0mqM-RyYl-dYxBdC"
device = "/dev/sdb1" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 3907027087 # 1.81935 Terabytes
pe_start = 2048
pe_count = 476931 # 1.81935 Terabytes
}
pv1 {
id = "Mfi9ej-dNW0-O08P-jvQa-Ds70-gzt8-Aj3SO1"
device = "/dev/sdd1" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 976771087 # 465.761 Gigabytes
pe_start = 2048
pe_count = 119234 # 465.758 Gigabytes
}
}
logical_volumes {
block1 {
id = "92VDUd-i80z-gZRJ-vYw3-uTGc-MRbw-DZ7zRd"
status = ["READ", "WRITE", "VISIBLE", "LOCKED"]
flags = []
creation_time = 1553284089 # 2019-03-23 03:48:09 +0800
creation_host = "ZeroDream-I5"
allocation_policy = "contiguous"
segment_count = 1
segment1 {
start_extent = 0
extent_count = 476931 # 1.81935 Terabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
}
}
留意这个 logical_volumes 下面的 <逻辑卷> 名,status 里面如果有 LOCKED,把它删除掉,然后保存。
保存完之后输入下面这条命令即可把配置文件恢复回逻辑卷。
$ vgcfgrestore vol1
不出意外,就会看到下面这样的提示,输入 y 确认:
Volume group vol1 has active volume: block1.
WARNING: Found 1 active volume(s) in volume group "vol1".
Restoring VG with active LVs, may cause mismatch with its metadata.
Do you really want to proceed with restore of volume group "vol1", while 1 volume(s) are active? [y/n]: y(是否要执行,直接输入 y 回车即可)
Restored volume group vol1
Scan of VG vol1 from /dev/sdb1 found metadata seqno 8 vs previous 7.
Scan of VG vol1 from /dev/sdc1 found metadata seqno 8 vs previous 7.
Scan of VG vol1 from /dev/sdd1 found metadata seqno 8 vs previous 7.
此时再输入 lvremove home
就可以成功删除掉 home 逻辑卷了。
当然,如果是像我一样硬盘坏了的话,还需要输入 pvremove /dev/sdc1
这样来删除物理卷。
完事之后不要忘了在 /etc/fstab
里面把对应磁盘的挂载项删除或者注释。
感谢分享 赞一个
你是我亲爹,折腾一晚上恨不得把盘都格式化烂了还是没法装上系统,结果只有你这个办法可以移除卷组