使用 dd 进行复制,我的新磁盘存储容量的一半不可用

使用 dd 进行复制,我的新磁盘存储容量的一半不可用

我曾经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 命令进行单独复制的聪明方法应该是这样的:

  1. 使用 GPT 方案对重复的目标 4 TB 驱动器进行分区,并创建一个大小与您唯一的源分区 (2 TB) 相同的分区。无需格式化该 2 TB 分区。

  2. 将源分区复制到目标分区:

dd if=/dev/sdb1 of=/dev/sdc1

  1. 如果还有另一个分区需要复制,请添加另一个与相关源分区大小相同的分区,然后返回停止 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 方案需要在驱动器开头添加一些额外的扇区。如果缺少这些扇区,则转换磁盘将涉及将目标分区的一些扇区移向磁盘末尾。这将耗费与如上所述正确重做复制作业一样多的时间。

相关内容