Linux

如何以最少到零停機時間重新對齊邏輯卷上的磁碟

  • May 14, 2013

一個執行未對齊磁碟分區的系統,需要在不失去包括 mbr 在內的所有分區上的數據的情況下進行對齊,並且停機時間最短甚至沒有。

創建新的對齊分區

DISK=/dev/sdd(假設新磁碟指向 sdd)

 dd if=/dev/zero of=$DISK count=1 bs=1M
 parted -s -- $DISK mklabel msdos
 parted -s -- $DISK mkpart primary ext3 64s 401624s
 parted -s -- $DISK mkpart primary 401628s 6144866s
 parted -s -- $DISK mkpart primary 6144868s 100%
 parted $DISK unit s print

 (echo t; echo 1; echo 83;echo t; echo 2; echo 82;echo t; echo 3; echo 8e; echo w)  | fdisk $DISK
 (echo a; echo 1; echo w)  | fdisk $DISK

安裝 Grub:

 mkfs –t ext3 –L /boot dev/sdd1
 mount $DSIK1 /mnt
 cd /mnt 
 dump -0 -b 1024 -f - /boot/ | restore -r -f - -b 1024
 cd /
 umount /mnt

蠐螬:

grub> device (hd1) /dev/sdd
device (hd1) /dev/sdd

grub>root (hd1,0)
    root (hd1,0)
    Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)
   setup (hd1)
   Checking if "/boot/grub/stage1" exists... no
   Checking if "/grub/stage1" exists... yes
   Checking if "/grub/stage2" exists... yes
   Checking if "/grub/e2fs_stage1_5" exists... yes
   Running "embed /grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded.
   succeeded
   Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2  /grub/grub.conf"...

succeeded
   Done.

grub> quit

向 LVM 添加新磁碟:

pvcreate  /dev/sdd3

擴展 sdd 到 myvg lvm 組:

   vgextend /dev/myvg /dev/sdd

將數據移動到新磁碟(假設舊磁碟指向 sda):

   pvmove –verbose /dev/sda3 /dev/sdd3

如果還有其他分區可以合併為一個分區:

   pvmove –verbose /dev/sdd1 /dev/sdd3

刪除舊 LVM:

   vgreduce /dev/myvg /dev/sda3
   vgreduce /dev/myvg /dev/sda1
   pvremove /dev/sda1
   pvremove /dev/sda3

請注意,無需立即重新啟動系統。您可能需要確認重新啟動以確保在刪除未對齊的磁碟後啟動。

引用自:https://unix.stackexchange.com/questions/75702