FlossDoc: 請協力 GPLv3 的中文翻譯工作。
將損壞的磁碟由 LVM 中移出
FlossDoc,自由中文開源知識庫
使用 LVM 的最大優點在於令檔案系統空間配置很靈活。當 LVM 中有磁碟損壞,您可以在檔案系統仍存取不卸載 (unmount) 下,將損壞磁碟裡使用中的空間移至健康的磁碟,來拆除損壞的磁碟。
目录 |
加入新 Physical Volume
建立 Physical Volume (PV)
您可以使用整個磁碟裝置或磁碟分割區 (disk partition) 作為 LVM 的 Physical Volume (PV)。要使用整個磁碟裝置作為 PV,該磁碟一定不可以有分割表 (partition table)。如果有分割表,需要先使用以下命令把磁碟的第一磁區完全重設為零:
dd if=/dev/zero of=PhysicalVolume bs=512 count=1
如果使用磁碟分割區作為 PV,則應該把該分割區類型設定為 0x8E'。
# fdisk -l /dev/sde Disk /dev/sdc: 80.0 GB, 80025280000 bytes 255 heads, 63 sectors/track, 9729 cylinders, total 156299375 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x3ea2c6a4 Device Boot Start End Blocks Id System /dev/sde1 63 156299374 78149656 8e Linux LVM
初始化 Physical Volume
第一步先要使用命令 pvcreate 初始化各個會加入 LVM 的分割區成為 Physical Volume (PV):
# pvcreate /dev/sde1 Physical volume "/dev/sde1" successfully created
pvcreate 會為各 PV 加入 volume 標簽。
檢視 Physical Volume
初始化 PV 後,可以使用命令 pvscan 或 pvs 檢視新建的 PV 以確定初始化成功。
# pvscan PV /dev/sdc1 VG vg0 lvm2 [74.53 GiB / 0 free] PV /dev/sdd1 VG vg0 lvm2 [74.53 GiB / 39.06 GiB free] PV /dev/sde1 lvm2 [74.53 GiB] Total: 3 [223.59 GiB] / in use: 2 [149.06 GiB] / in no VG: 1 [74.53 GiB] # pvs -o+pv_used PV VG Fmt Attr PSize PFree Used /dev/sdc1 vg0 lvm2 a- 74.53g 0 74.53g /dev/sdd1 vg0 lvm2 a- 74.53g 39.06g 35.47g /dev/sde1 lvm2 a- 74.53g 74.53g 0
將新 PV 併入 Volume Group (VG)
使用命令 “vgextend VGName PVs...” 將新建的 PV 加入要加大空間的 Volume Group (VG) 中:
# vgextend vg0 /dev/sdd1 Volume group "vg0" successfully extended
使用命令 pvscan 或 vgs 檢視 VG 以確定初合併成功。
# vgs VG #PV #LV #SN Attr VSize VFree vg0 3 2 0 wz--n- 223.59g 103.59g # pvscan PV /dev/sdc1 VG vg0 lvm2 [74.53 GiB / 0 free] PV /dev/sdd1 VG vg0 lvm2 [74.53 GiB / 39.06 GiB free] PV /dev/sde1 VG vg0 lvm2 [74.53 GiB / 74.53 GiB free] Total: 3 [223.59 GiB] / in use: 3 [223.59 GiB] / in no VG: 0 [0 ]
搞定後,您的 VG 應該有足夠剩空間將損壞磁碟中 LVM 空間移至健康磁碟空間。請按照[[#將使用空間移離損壞的磁碟|《將使用空間移離損壞的磁碟》]的指示移出損壞磁碟。
將使用空間移離損壞的磁碟
使用命令 “pvmove FailedPV” 將使用空間移離損壞的 PV:
# pvmove /dev/sdc1 /dev/sdc1: Moved: 2.0% ... /dev/sdc1: Moved: 50.0% ... /dev/sdc1: Moved: 100.0%
您亦可以使用命令 “pvmove FailedPV DestPV” 指定移至的新 PV。例如以下命令可以把 /dev/sdc1 中的資料移至 /dev/dev/sde1:
pvmove /dev/sdc1 /dev/sde1
使用 pvscan 檢視各 PV 的情況來確定所有使用空間已移離損壞的 PV:
# pvscan PV /dev/sdc1 VG vg0 lvm2 [74.53 GiB / 74.53 GiB free] PV /dev/sdd1 VG vg0 lvm2 [74.53 GiB / 0 free] PV /dev/sde1 VG vg0 lvm2 [74.53 GiB / 39.06 GiB free] Total: 3 [223.59 GiB] / in use: 3 [223.59 GiB] / in no VG: 0 [0 ] # pvs -o+pv_used PV VG Fmt Attr PSize PFree Used /dev/sdc1 vg0 lvm2 a- 74.53g 74.53g 0 /dev/sdd1 vg0 lvm2 a- 74.53g 0 74.53g /dev/sde1 vg0 lvm2 a- 74.53g 39.06g 35.47g
現在您可以把損壞 PV 拆離有關 VG:
# vgreduce vg0 /dev/sdc1 Removed "/dev/sdc1" from volume group "vg0"
使用 pvs 檢查是否成功:
# pvs PV VG Fmt Attr PSize PFree /dev/sdc1 lvm2 -- 74.53g 74.53g /dev/sdd1 vg0 lvm2 a- 74.53g 0 /dev/sde1 vg0 lvm2 a- 74.53g 39.06g
清除損壞 PV 上的標簽:
# pvremove /dev/sdc1 Labels on physical volume "/dev/sdc1" successfully wiped
現在,您可以把損壞的磁碟拔走。

