如何使用 RHEL 5.4 克隆 HD?

如何使用 RHEL 5.4 克隆 HD?

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

一些注意事项:

1) 无法使用其他发行版 - 包括 Live CD - 因为我们有非常严格的审批流程,并且我们唯一可以使用的发行版是 RHEL。

2) 如果可能的话,我们需要使用 RHEL 软件包中的软件。我们仍然欢迎您推荐其他软件,但如果我们可以使用 RHEL 中已有的软件,那么这将为我们节省大量文书工作。

我意识到这看起来像是我试图使工作变得比它应有的更难,但这就是公司法规的本质。

谢谢你的帮助!

答案1

您需要多精确的克隆?例如,如果有 LVM,ID 是否需要匹配?ext2(和 3,可能还有大多数 Linux 文件系统)在每个文件系统上都有一个通用唯一标识符 (UUID);原始和克隆之间是否需要匹配?

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

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

一些 dd 替代品

  1. 使用 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)
  2. 小心使用软件 RAID 工具 (md) 从原始分区创建降级 RAID1,添加新分区,等待同步完成,然后断开 RAID。这可能比 dd 慢,但大多数工作可以在机器运行时完成,因此对于该词的某些定义来说,它可能“更快”。

答案2

这些是我记录的从安装了 CentOS 5.5 的大型 LVM 管理磁盘移动到较小磁盘的步骤(显然,大磁盘上的已用空间小于小磁盘的大小)。我相信有更好的方法可以做到这一点,但这种方法是成功的。有些步骤可能特定于我们的情况,请根据需要进行调整。

要求:

  • 安装 CD
  • 新磁盘

脚步:

  • 连接新磁盘

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

  • 使用 检查先前的几何结构。在常规 LVM 配置中,fdisk -l您可能有/dev/sda1和。将是您的 /boot 分区,它存在于 LVM 之外。其大小应为 1-13,其余磁盘专用于 LVM。/dev/sda2sda1

# 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 之类的工具。

相关内容