FlossDoc: 請協力 GPLv3 的中文翻譯工作。

將損壞的磁碟由 LVM 中移出

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

使用 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

現在,您可以把損壞的磁碟拔走。

請參看

外部連結

Personal tools