如何使用RHEL 5.4制作一个HD的克隆?

我们使用的是RHEL 5.4,需要克隆一些硬盘。 什么是一个好的(或“正确的”)方式来做到这一点? 如果可以,我想避免使用dd,因为这有点慢。 (如果这是唯一的select,那就这样吧)

几点注意事项:

1)使用其他发行版是不可能的 – 包含live CD – 因为我们有一个非常严格的审批stream程,我们唯一可以使用的发行版是RHEL。

2)如果可能,我们需要使用RHEL软件包中的软件。 其他软件的build议仍然值得赞赏,但是如果我们可以使用已经是RHEL一部分的东西,它将为我们节省大量的文书工作。

我意识到这似乎是在努力使工作比应该更难,但这是公司法规的性质。

谢谢你的帮助!

你需要一个确切的克隆? 例如,如果有LVM,那么这些ID是否需要匹配? ext2(和3,也许真的是大多数Linux文件系统)在每个文件系统上都有一个通用唯一标识符(UUID) 做那些需要匹配的原始和克隆?

换句话说,你需要克隆什么?

没有什么比dd更快速地制作一个真正的驱动器的确切克隆。

一些dd替代品

  1. 使用fdisk(或parted或cfdisk或其他)来复制分区。 lv工具,如果需要的话。 制作文件系统,使用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)
  2. 仔细使用软件RAID工具(md)从原始分区中创build降级的RAID1,添加新的分区,等待同步完成,然后中断RAID。 这可能会比dd慢,但大部分工作可以在机器运行时完成,所以对于某个词的定义可能会“更快”。

这些是我为从一个安装了CentOS 5.5的大型LVM托pipe磁盘转移到一个较小的磁盘(显然,大磁盘上的已用空间小于较小磁盘的大小)而logging的步骤。 我相信有更好的方法来做到这一点,但这种方法是成功的。 有些步骤可能是特定于我们的情况,根据需要调整。

REQS:

  • 安装CD
  • 新的磁盘

脚步:

  • 连接新的磁盘

  • 用CD启动,在提示符types“linux rescue”进入救援模式。 它会问你是否要继续或跳过挂载,你应该继续(它会挂载到/mnt/sysimage )。 如果问题请不要格式化新磁盘。

  • fdisk -l检查以前的几何体。 您可能会在常规的LVMconfiguration中使用/dev/sda1/dev/sda2sda1将会是你的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 
  • 在/ dev / sdb1上为/ boot创build文件系统

 # mkfs.ext3 /dev/sdb1 
  • 在/ dev / sdb2上设置新的物理卷,卷组和逻辑卷及其文件系统。 用你想要的尺寸replace?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 
  • 在这一点上,closures并删除旧的磁盘。 再次启动进入救援模式。 /dev/sdb现在将成为/dev/sda并挂载到/mnt/sysimage

  • 标签/boot

 # e2label /dev/sda1 /boot 
  • 取出光盘,此时您应该可以启动进入resize的光盘。

那么,如果你避免使用“dd”和任何其他非RHEL提供的工具,那么你就被复制文件系统和复制内容(使用你select的工具,cpio,tar,rsync等)和将GRUB放在新的驱动器上。 这可以通过停顿的驱动器来完成(可能启动到RHEL救援模式)。

克隆驱动器的目的是什么? 要快速安装多个系统? 然后从服务器创build一个kickstart文件进行克隆,并使用它来安装其他机器。

对于磁盘的映像副本,您可以尝试Ghost,Fog,Clonezilla等(甚至是VMware Converter等)。

对于文件系统的副本,我build议rsync之类的。