我最近升级了我的家庭服务器,想把我的云盘从 600GB 增加到 2TB。经过一番研究,我发现可以完全复制磁盘的 dd 命令,在我的情况下,这似乎是一个不错的选择,因为我在同一个磁盘上拥有我的 nextcloud 实例的 docker 和数据库的所有数据。
我成功地在我的计算机中复制并安装了新磁盘,我的所有数据仍然完好无损。我的云像往常一样出现。我现在看到的唯一问题是新分区是 600GB 而不是 2TB(这是我所期待的)。在仪表板中,我的主磁盘也被列为 600gb。
我猜通过克隆磁盘,我还克隆了磁盘,认为它仍然更小。当我检查时,df -h
我看到磁盘在 /dev/sde1 上显示为 600gb 磁盘,但是当我使用时,lsblk
我看到 sde `- sde1 显示为 1.8T(我期待)。
如何修复 /dev/sde1 以使用完整的 1.8TB?我用来将旧磁盘复制到新磁盘的命令sudo dd if=/dev/sde1 of=/dev/sdk1 bs=4M status=progress
是使用正确的 if 和 to 属性。
先感谢您 :)。
'dd' 进程复制分区中的每一位,包括描述它开始和停止位置的文件系统元数据。它还复制每个未使用的位。没错,您只是浪费了大量时间复制未使用的扇区。此外,每个坏块(这将导致它出错而不是继续,除非你添加一个标志来忽略错误)。它将使用相同的块大小并写入它,无论它是否与它所在的硬件不对齐。总而言之,
dd
将文件系统上的数据复制到另一个磁盘是一个糟糕的工具。您应该已经在磁盘上创建了一个新的文件系统,其分区与磁盘几何形状对齐,并且针对磁盘类型优化了块大小。然后,您可以使用 tar、rsync、dump/restore 等仅复制文件系统上的数据。据我所知,这只是意味着分区本身的文件系统仍然使用它的旧大小。在 linux 上调整磁盘大小时,大多数情况下您必须调整它的大小两次。首先在分区方案(例如 GPT 或 MBR)中使用类似
parted
or的命令fdisk
,然后在文件系统中使用类似resize2fs
. 第二步很大程度上取决于使用的文件系统,如果您使用 zfs 或 btrfs 等其他命令,则可能需要另一个命令。