pio*_*rek 1 linux boot partition ubuntu
我有一个带有/、/home 的硬盘。我刚刚购买了新的 SSD,需要更改分区而无需重新安装。我想创建一个单独的 /var 分区(当前位于 / 下)并将其保留在硬盘上。其余的/(包括/boot)我想移至SSD。我应该在 ubuntu 12.04 中怎么做?
cat /etc/fstab
proc /proc proc nodev,noexec,nosuid 0 0
UUID=4f614ad4-8b21-4e21-b6fc-13ba7f489a88 / ext4 errors=remount-ro 0 1
UUID=dba112c1-1647-4e73-b907-0117ad3a058e /home ext3 defaults 0 2
UUID=01CB6A18FD7DF1C0 /windows/c ntfs defaults,umask=007,gid=46 0 0
UUID=01CB6A18E6F42370 /windows/d ntfs defaults,umask=007,gid=46 0 0
UUID=48d5b437-91c9-4304-9bde-ee661779089d none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
我还有一些 lvm 分区,但它们与这个问题无关
我的做法是根据需要对 SSD 进行分区(/、/boot、/home 等),并且由于您要将所有内容移动到新的 SSD,因此您无需担心缩小分区或其他任何事情就这么复杂。您基本上只需将所有内容复制到 SSD,对 HDD 重新分区并编辑磁盘上和 fstab 中的安装点。
对 SSD 进行分区
出于演示目的,我将使用这些分区:
如果需要,您可以省略 /boot 并将其保留为 / 内的普通目录,就像您当前所做的那样。
mkfs.ext4或mkfs任何您想要的文件系统)将新分区挂载到当前文件系统的层次结构下。例如,将 SSD 上的新 / 安装为 /mnt,将 SSD 上的新 /boot 和 /mnt/boot 安装,将 SSD 上的新 /home 安装为 /mnt/home
例如:
mkdir -p /mnt/newroot
mkdir /mnt/newroot/boot
mkdir /mnt/newroot/home
mount /dev/sdb2 /mnt/newroot
mount /dev/sdb1 /mnt/newroot/boot
mount /dev/sdb3 /mnt/newroot/home
Run Code Online (Sandbox Code Playgroud)将所有内容复制(保留时间戳、权限和所有权)到新分区中。
您可以使用以下命令组之一
cp -ax --sparse=always / /mnt/newroot
cp -ax --sparse=always /home /mnt/newroot /home
Run Code Online (Sandbox Code Playgroud)或者
rsync -avSx / /mnt/newroot
rsync -avSx /home /mnt/newroot/home
Run Code Online (Sandbox Code Playgroud)这些将使用存档标志进行复制(保留文件所有权和其他信息),在可能的情况下进行稀疏复制,并且不会跨越源文件系统上的文件系统边界。如果您没有指定-x保留在文件系统中的标志,则可以通过一个命令进行复制,但需要采取措施从副本中排除 /proc、/dev 和其他内存中文件系统。
编辑文件 /mnt/newroot/etc/fstab 并更改条目以反映新分区
卸载新分区。
umount /mnt/newroot/home
umount /mnt/newroot/boot
umount /mnt/newroot
Run Code Online (Sandbox Code Playgroud)重新启动进入新分区
验证一切正常。
dd如果要移动它们,请使用克隆工具或 )重新分区硬盘
暂时将这个新的 /var 挂载为 /mnt/var 或其他东西
mkdir /mnt/var
mount /dev/sd?? /mnt/var
Run Code Online (Sandbox Code Playgroud)停止依赖于 /var 的服务或进入单用户模式
init 1在 sysvinit 上,不确定 upstart)将旧的 /var 复制到新的 /var
cp -av --sparse=always /var /mnt/var
Run Code Online (Sandbox Code Playgroud)删除旧的 /var(保留该目录,但将其清空)。
rm -rf /var
mkdir /var
Run Code Online (Sandbox Code Playgroud)卸载新的 /var
umount /mnt/var
Run Code Online (Sandbox Code Playgroud)编辑/etc/fstab并添加 /var 条目
挂载 /var(如果您编辑了 fstab,这将是新的)。
mount /var
Run Code Online (Sandbox Code Playgroud)重新启动您停止的任何服务或返回多用户模式(或者根据需要重新启动)
这个一般过程应该可以帮助您进行迁移,最重要的步骤是备份,以防万一您搞砸了。