我们使用的是RHEL 5.4,需要克隆一些硬盘。 什么是一个好的(或“正确的”)方式来做到这一点? 如果可以,我想避免使用dd,因为这有点慢。 (如果这是唯一的select,那就这样吧)
几点注意事项:
1)使用其他发行版是不可能的 – 包含live CD – 因为我们有一个非常严格的审批stream程,我们唯一可以使用的发行版是RHEL。
2)如果可能,我们需要使用RHEL软件包中的软件。 其他软件的build议仍然值得赞赏,但是如果我们可以使用已经是RHEL一部分的东西,它将为我们节省大量的文书工作。
我意识到这似乎是在努力使工作比应该更难,但这是公司法规的性质。
谢谢你的帮助!
你需要一个确切的克隆? 例如,如果有LVM,那么这些ID是否需要匹配? ext2(和3,也许真的是大多数Linux文件系统)在每个文件系统上都有一个通用唯一标识符(UUID) 做那些需要匹配的原始和克隆?
换句话说,你需要克隆什么?
没有什么比dd更快速地制作一个真正的驱动器的确切克隆。
一些dd替代品
rsync或(cd /origmount ; tar cf) | (cd /newmount; tar xf -) (cd /origmount ; tar cf) | (cd /newmount; tar xf -)或cp来复制数据 – 这将以完全不同的块排列文件,但看起来完全相同。 或者不安装原始文件系统,并使用像dump -level0 -f - /dev/sda1 | (cd /mnt/sdb1; restore -f - -rf) dump -level0 -f - /dev/sda1 | (cd /mnt/sdb1; restore -f - -rf) 这些是我为从一个安装了CentOS 5.5的大型LVM托pipe磁盘转移到一个较小的磁盘(显然,大磁盘上的已用空间小于较小磁盘的大小)而logging的步骤。 我相信有更好的方法来做到这一点,但这种方法是成功的。 有些步骤可能是特定于我们的情况,根据需要调整。
REQS:
脚步:
连接新的磁盘
用CD启动,在提示符types“linux rescue”进入救援模式。 它会问你是否要继续或跳过挂载,你应该继续(它会挂载到/mnt/sysimage )。 如果问题请不要格式化新磁盘。
用fdisk -l检查以前的几何体。 您可能会在常规的LVMconfiguration中使用/dev/sda1和/dev/sda2 。 sda1将会是你的LVM之外的/ boot分区。 它的大小应该是1-13,其余的磁盘专用于LVM。
。
# 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
。
# mkfs.ext3 /dev/sdb1
?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
。
# 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
。
# 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
。
# exit #
/etc/fstab 。
# vi /mnt/newdisk/etc/fstab :%s/VolGroup00/VolGroup01/g :wq
在这一点上,closures并删除旧的磁盘。 再次启动进入救援模式。 /dev/sdb现在将成为/dev/sda并挂载到/mnt/sysimage
标签/boot
。
# e2label /dev/sda1 /boot
那么,如果你避免使用“dd”和任何其他非RHEL提供的工具,那么你就被复制文件系统和复制内容(使用你select的工具,cpio,tar,rsync等)和将GRUB放在新的驱动器上。 这可以通过停顿的驱动器来完成(可能启动到RHEL救援模式)。
克隆驱动器的目的是什么? 要快速安装多个系统? 然后从服务器创build一个kickstart文件进行克隆,并使用它来安装其他机器。
对于磁盘的映像副本,您可以尝试Ghost,Fog,Clonezilla等(甚至是VMware Converter等)。
对于文件系统的副本,我build议rsync之类的。