
我們使用的是 RHEL 5.4,需要克隆一些硬碟。什麼是一個好的(或“正確的”)方法來做到這一點?如果可以的話,我想避免使用 dd ,因為這有點慢。 (但是,如果這是唯一的選擇,那就這樣吧。)
一些注意事項:
1) 不可能使用其他發行版 - 包括 live CD - 因為我們有非常嚴格的審批流程,而且我們唯一可以使用的發行版是 RHEL。
2) 如果可能的話,我們需要使用 RHEL 軟體包中的軟體。其他軟體的推薦仍然值得讚賞,但如果我們可以使用 RHEL 中已有的軟體,那麼我們將節省大量文書工作。
我意識到這似乎是我試圖讓工作變得比應有的困難,但這就是公司法規的本質。
謝謝你的幫忙!
答案1
您需要多精確的克隆?例如,如果有 LVM,ID 是否需要匹配? ext2(和 3,可能實際上是大多數 Linux 檔案系統)在每個檔案系統上都有一個通用唯一識別碼 (UUID);那些需要在原始和克隆之間匹配嗎?
換句話說,你需要克隆做什麼?
沒有什麼比 dd 更快地創建驅動器的真正精確克隆了。
一些 dd 替代方案
- 使用fdisk(或parted或cfdisk或其他)來複製分割區。 lv工具如果需要的話。建立檔案系統,使用
rsync
或(cd /origmount ; tar cf) | (cd /newmount; tar xf -)
或cp
複製資料——這將以完全不同的區塊排列方式佈置文件,但看起來相同。或不要安裝原始檔案系統並使用類似的東西dump -level0 -f - /dev/sda1 | (cd /mnt/sdb1; restore -f - -rf)
- 小心地使用軟體 RAID 工具 (md) 從原始分區建立降級的 RAID1,新增分區,等待同步完成,然後破壞 RAID。這可能會比 dd 慢,但大部分工作可以在機器運行時完成,因此對於該詞的某些定義來說,它可能會「更快」。
答案2
這些是我記錄的從安裝了 CentOS 5.5 的大型 LVM 託管磁碟遷移到較小磁碟的步驟(顯然大磁碟上的已使用空間小於較小磁碟的大小)。我確信有更好的方法可以做到這一點,但這個方法是成功的。有些步驟可能針對我們的具體情況,請視需要進行調整。
要求:
- 安裝光碟
- 新磁碟
腳步:
連接新磁碟
使用 CD 啟動,在提示符號處輸入「linuxrescue」進入救援模式。它會詢問您是否要繼續或跳過安裝,您應該繼續(它將安裝到
/mnt/sysimage
)。如果出現提示,請不要格式化新磁碟。使用 檢查先前的幾何圖形
fdisk -l
。您可能會在常規 LVM 配置中擁有/dev/sda1
和。將會是存在於 LVM 之外的 /boot 分割區。其大小應為 1-13,磁碟的其餘部分專用於 LVM。/dev/sda2
sda1
。
# fdisk -l
...
/dev/sda1 * 1 13 ... 83 Linux
/dev/sda2 14 ... 8e Linux LVM
# fdisk /dev/sdb
>Command...:
n
>Command action
>e extended
>p primary partition (1-4)
p
>Partition number (1-4):
1
>First cylinder ...:
<default>
>Last cylinder ...:
13 (value from /dev/sda1, the original /boot)
>Command...:
n
>Command action
>e extended
>p primary partition (1-4)
p
>Partition number (1-4):
2
>First cylinder ...:
<default>
>Last cylinder ...:
<default (end of disk)>
>Command...:
t
>Partition...:
1
>Hex code...:
83
>Command...:
t
>Partition...:
2
>Hex code...:
8e
>Command...:
a
>Partition...:
1
>Command...:
w
- 在 /dev/sdb1 上為 /boot 建立檔案系統
。
# mkfs.ext3 /dev/sdb1
- 在 /dev/sdb2 上設定新的實體磁碟區、磁碟區組和邏輯磁碟區及其檔案系統。更換
?G
為您想要的尺寸。 LogVol00 應該是 LVM 分割區大小減去所需的交換磁碟區大小,LogVol01 應該是您的交換大小。
。
# pvcreate /dev/sdb2
# vgcreate VolGroup01 /dev/sdb2
# lvcreate --name LogVol00 --size ?G VolGroup01
# lvcreate --name LogVol01 --size ?G VolGroup01
# mkfs.ext3 /dev/VolGroup01/LogVol00
# mkswap /dev/VolGroup01/LogVol01
- 掛載新磁碟並將舊磁碟中的內容複製到新磁碟上
cp -ax
。避免複製/dev
、、、、和/proc
/sys
/boot
/lost+found
/mnt
。
# mkdir /mnt/newdisk
# mount /dev/VolGroup01/LogVol00 /mnt/newdisk
# cd /mnt/sysimage
# for i in $(ls -1 | grep -v '\(dev\|proc\|sys\|mnt\|boot\|lost\)'); do echo $i; cp -ax /mnt/sysimage/$i /mnt/newdisk; done
# cd /mnt/newdisk
# mkdir {dev,proc,sys,mnt,boot}
- 掛載新磁碟
/boot
並將舊磁碟中的內容複製到其中,然後卸載它
。
# mkdir /mnt/{boot,newboot}
# mount /dev/sda1 /mnt/boot
# mount /dev/sdb1 /mnt/newboot
# cp -ax /mnt/boot/* /mnt/newboot
# umount /mnt/newboot
- 安裝grub到新磁碟
。
# mount -o bind /dev /mnt/newdisk/dev
# mount /dev/sdb1 /mnt/newdisk/boot
# chroot /mnt/newdisk
# grub
> root (hd1,0)
> setup (hd1)
> quit
- 修復你的
/boot/grub/grub.conf
。
# vi /boot/grub/grub.conf
:%s/VolGroup00/VolGroup01/g
:wq
- 重做你的 initrds
。
# cd /boot
# for i in $(ls -1 initrd* | grep -v bak); do mv $i{,-bak}; ver=$(echo $i | sed 's/initrd-//;s/\.img//;'); mkinitrd /boot/$i $ver; done
- 退出 chroot
。
# exit
#
- 修復你的
/etc/fstab
。
# vi /mnt/newdisk/etc/fstab
:%s/VolGroup00/VolGroup01/g
:wq
此時,關閉並取出舊磁碟。再次啟動進入救援模式。
/dev/sdb
現在將是/dev/sda
並安裝到/mnt/sysimage
標籤
/boot
。
# e2label /dev/sda1 /boot
- 取出 CD,此時您應該能夠啟動到調整大小的磁碟。
答案3
好吧,如果您避免使用“dd”和任何其他非 RHEL 提供的工具,那麼您將不得不複製檔案系統並複製內容(使用您選擇的工具,cpio、tar、rsync 等)並將GRUB 放在新驅動器上。最好使用靜止驅動器(也許啟動到 RHEL 救援模式)來完成此操作。
答案4
對於磁碟的映像副本,您可以嘗試 Ghost、Fog、Clonezilla 等(甚至 VMware Converter 等)。
對於檔案系統副本,我推薦 rsync 等。