我有一个磁盘,其中每个文件夹都有单独的分区(/usr、/var、/home 等),并希望将整个东西传输到另一个稍大的磁盘,现在我不想保留分区方案,因此我应该挂载所有分区(以便它们填充正确的文件夹位置)然后 rsync,或者 cp -avx 将整个分区(当然在运行级别 1 下)复制到新驱动器?
在手动复制所有其他文件之前,我是否需要使用 dd 将根分区 / 和 /boot 复制到磁盘?
我真的只是想摆脱多个分区,这样我就可以使用 LVM,但我不知道如何以“正确”的方式传输它。
答案1
通常我通过在两个硬盘之间进行 rsync 来进行此类传输,因此您对 rsync 或 cp -avx 的猜测对我来说非常正确。
为了像从旧磁盘启动一样从新磁盘启动,您只需要在新的启动扇区中重新安装 grub(我假设您在这里使用 grub)。
对于基于 RedHat 的 Linux 发行版(CentOS、RHEL、Fedora),您可以通过以 root 身份执行此操作grub-install /dev/hdX
,只需告知您的新硬盘在哪里。
对于 Debian 系统,你需要执行sudo update-grub
重新安装 grub 有时需要反复试验,所以要小心。
如果您想以手动方式执行此操作,请按照以下步骤进行操作:
检查新磁盘是否出现在 grubdevice.map
文件中
(fd0) /dev/fd0
(hd0) /dev/hda
(hd1) /dev/hdc
一旦您从旧驱动器启动的操作系统中知道新驱动器位于 device.map 中,请执行以下命令
# grub
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
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 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
意识到:您需要用适合您的内核映像的磁盘和分区替换(hd0,0)
如果您的内核位于分区 /dev/hdX1 -> (hdX,0) 如果您的内核位于分区 /dev/hdX2 -> (hdX,1)
等等...
还要用 device.map 中声明的驱动器替换 hdX,因此如果您的驱动器声明为 (hd1),则需要将其改为 (hd1,X)