我曾经dd
将 2TB 磁盘复制到 4TB 磁盘 (dd if=/dev/sdb of=/dev/sdc status=progress),但现在我的 4TB 磁盘报告只有 2TB 可用空间。有什么方法可以恢复另外 2TB 而不进行新的复制吗?
如果我制作新副本,我应该以其他方式使用“dd”还是诉诸“cp”
2TB 磁盘没有任何问题,只是有点旧了,我需要更多空间。两个磁盘都是 WD Red NAS 磁盘。
答案1
你的文件系统报告的是 2TB 可用空间,而不是磁盘。
您的旧磁盘已定义一个 2TB 分区,因此在复制整个内容(包括分区列表!)后,新磁盘也有一个 2TB 分区定义1gparted
。如果您使用或查看gnome-disks
,您可能会看到一个 4TB 磁盘,其中一半由数据分区使用,另一半“未分配”。
使用 GParted 或其他分区工具将分区扩展到整个磁盘。
(一旦调整分区大小,ext4 文件系统也需要扩大以填充新容量,但 GParted 会自动执行此操作。使用其他一些工具时,您可能需要resize2fs
手动运行。)
1(请注意,就磁盘所知,分区只是数据– 它们仅被操作系统识别,而不能被磁盘本身识别,并且较小的分区不会导致物理磁盘报告不同的容量。
分区定义,即起始至结束范围存储在 /dev/sdb 的 0-33 扇区中,任何复制 /dev/sdb 原始内容的工具最终也会传输分区表。)
答案2
如果我制作新副本,我应该以其他方式使用“dd”还是诉诸“cp”
当您完全复制驱动器时,您也会复制分区表。有两种类型的分区表:旧 MBR 和新 GPT。结合 512 字节的扇区大小(在驱动器界面上显示),旧 MBR 方案仅允许 2TB 的分区大小。
Linux 下存在一些黑客攻击,我忘记使用带有 2 TB + 2 TB 分区的 4 TB 驱动器。
但是避免使用 cp 命令进行单独复制的聪明方法应该是这样的:
使用 GPT 方案对重复的目标 4 TB 驱动器进行分区,并创建一个大小与您唯一的源分区 (2 TB) 相同的分区。无需格式化该 2 TB 分区。
将源分区复制到目标分区:
dd if=/dev/sdb1 of=/dev/sdc1
- 如果还有另一个分区需要复制,请添加另一个与相关源分区大小相同的分区,然后返回停止 2 并增加分区号
(dd if=/dev/sdb1 of=/dev/sdc2
dd if=/dev/sdb2 of=/dev/sdc3
dd if=/dev/sdb3 of=/dev/sdc4
...)
通过这种方式进行复制,您可以避免两个驱动器具有相同的 UUID。此外,您还安装了一个分区表方案,该方案支持当前所有超过 2 TB 的可用磁盘大小,并且您将能够在目标驱动器上创建更多分区,或者(如果您的软件支持)扩展 2TB 目标分区。
现代 Linux 操作系统和所有当前的 Windows 系统都支持 GPT。
两个磁盘在 Ubuntu 20.04 Server 版本上均格式化为 EXT4。我明白你的意思,Frank,但我能做些什么来解决这个问题
假设您的分区表和第一个分区之间还剩下一些扇区,您可以快速将目标磁盘从使用 MBR 方案转换为 GPT(也许使用 Gparted?)。GPT 方案需要在驱动器开头添加一些额外的扇区。如果缺少这些扇区,则转换磁盘将涉及将目标分区的一些扇区移向磁盘末尾。这将耗费与如上所述正确重做复制作业一样多的时间。