我的笔记本电脑中有一个 500 GB 的 SSD,其中一个分区装有 Windows 7,另一个分区装有 Ubuntu 18.10,安装在具有 4KB 块大小和双启动的 BTRFS 文件系统上。
我有一块 1 TB 的 SSD,正在安装在台式电脑上,我想将笔记本电脑当前的 Ubuntu 18.10(BTRFS 文件系统)分区完整复制到这块 1 TB 的 SSD 上,供我的台式机使用。我不想在 1TB 的 SSD 上安装 Windows,而是希望整个 1TB 的 SSD 单独启动 Ubuntu 18.10。复制后,当我登录到新 SSD 上的操作系统时:我想访问我安装的所有软件(通过 sudo、pip 和 .deb 文件安装)、我的所有设置和软件配置以及我的所有书签。
但是,我想全新安装 Ubuntu 18.10,并为我的台式机的 1 TB SSD、64 GB RAM 和 i7-6700k 处理器设置最佳块大小。
是否可以将具有 BTRFS 文件系统和 4KB 块大小的定制 Ubuntu 18.10 操作系统复制/克隆到具有 BTRFS 文件系统和(比如说)4096KB 块大小(如果 4096KB 对我的电脑来说是最佳的)的新安装的 18.10 操作系统上?
我希望两个操作系统上的所有内容都相同。我是否需要从头开始手动安装每个软件项目/或者我可以执行类似 Clonezilla 的操作或将我的笔记本电脑目录直接安装到我的 1TB SSD 上?
答案1
尝试进行此传输时存在许多潜在的技术问题。要进行精确复制,您可能会使用 Clonezilla 或 dd,但是如果同时插入两个磁盘,则可能会遇到 UUID 冲突,这可能会破坏数据。据我所知,此 UUID 克隆冲突仅是 BTRFS 的问题,并且与操作系统认为两个磁盘是 RAID 阵列有关,或者不知道将数据写回哪个磁盘,导致日志不同步且在关机时不干净。
此任务更适合 Arch 系统。分区布局可能存在差异 - MFT 与 GPT,如果是 MFT,则必须通过 chrooting 新磁盘并运行 apt 或 dpkg-reconfigur grub2 或您使用的任何引导加载程序将引导加载程序数据写入磁盘的开头。
然后存在 /etc/fstab 中每个 btrfs 子卷都有不同子卷 ID 的问题,因此如果您通过手动设置新磁盘上的布局并尝试 rsync 所有数据来解决 4k 问题,则子卷 ID 会有所不同,需要您确切知道在文件系统中更改它们的位置。
我建议您断开旧磁盘的连接,然后安装全新的 ubuntu。然后找到命令以生成通过 apt 安装的所有软件包以及通过 pip 安装的所有软件包的列表,并运行命令以重新安装所有这些软件包。
完成后,我建议 rsync 您的 /home 目录,并假设它覆盖了 99.9% 的重要数据,保持另一个磁盘处于当前状态,以便稍后提取您错过的任何内容。
据我所知,磁盘的 KB 扇区大小实际上不会影响性能,但不要引用我的话。
当我为您自己的问题寻找答案时,我会开始考虑这些信息。
答案2
对于上面提到的 UUID 问题,您可以使用:btrfstune -U <UUID> /dev/sdx1
更改任何驱动器上任何 btrfs 分区的 UUID。
对于子卷 ID,这取决于您如何设置 btrfs 文件系统。如果您遵循 Ubuntu 的标准布局,即 root 的 @ 子卷和 home 的 @home 子卷,那么 UUID 是相同的。例如我的 /etc/fstab:
# /dev/sdb1 - / (root) UUID=59736ffd-b777-4ee1-af45-11cdf76353d4 / btrfs defaults,subvol=@,noatime 0 0
# /dev/sdb1 - /home UUID=59736ffd-b777-4ee1-af45-11cdf76353d4 /home btrfs defaults,subvol=@home,noatime 0 0
使用 rsync 效果很好,因为我将系统备份到 ext4 分区,在另一个驱动器上完全创建一个新的 btrfs 文件系统,然后使用 btrfstune 将我的 UUID 更改为以前的值,然后使用 rsync 将所有内容复制到 btrfs 驱动器。请注意,如果您想要相同的 UUID(不必弄乱/etc/fstab
),则只需使用 btrfstune。如果您不介意,只需将其更改/etc/fstab
为您当前的 UUID。无论您使用 MBR 启动还是 UEFI 启动,都会有很大的不同。我使用 UEFI。