如何让新扩展的 RAID 在 Debian 中显示正确的大小

如何让新扩展的 RAID 在 Debian 中显示正确的大小

我最近将 RAID 5 存储虚拟驱动器从 6TB 扩展到 9TB。Dell OMSA 和 RAID 控制器的 BIOS 都显示我的容量为 8382GB。这很好。

但是当进入 Debian 并四处查看时,仍然只看到 6TB。

当我执行 fdisk -l 时,我得到了这个:

Disk /dev/sda: 9000.1 GB, 9000103968768 bytes
255 heads, 63 sectors/track, 1094200 cylinders, total 17578328064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT

所以现在它显示为 9TB。但 sda1 分区不是。我该如何扩展它以反映大小变化......而不会丢失任何数据!

谢谢

答案1

正如 @duskwuff 已经提到的,这是一个GPT分区表,因此fdisk仅显示受保护的 MBR 内容。请使用gdisk -l /dev/sda。您可能有多个分区,在这种情况下,您只能调整最后一个分区的大小。

解决方法(不推荐)可能是软件 RAID0(mdraid在 Linux 中称为),跨越您要扩展的分区并在新空间中创建一个,对操作系统来说是一个大空间。为了避免数据丢失,您必须使用 mdraid 的变体没有元数据mdadm --build ...,不是mdadm --create ...),勾选man mdadm。但是,这会降低性能,如果应用于根文件系统分区,则会带来其他困难,并且有可能因任何错误而擦除您的数据。

可能还有另一种非破坏性解决方案 - 如果磁盘上只有一个分区,并且您找到了文件系统的偏移量,则可以删除该分区并以无分区方式挂载整个磁盘,并在挂载时提供 offset= 值。不确定它是否适用于适当的块设备(仅用于循环和图像文件)。如果它在分区仍在原位的情况下工作,那么它在没有分区的情况下也可以工作,因此您可以在接触分区布局之前尝试挂载和偏移。缺点是,如果您将来需要数据恢复软件,这种布局可能会使它感到困惑。

为了避免此类问题,我总是尝试对 boot/rootfs 使用不同的卷组 - 分区磁盘,对数据使用无分区磁盘(在线扩展非常简单,只需调整文件系统的大小 -resize2fs /dev/sda假设它是 EXT{2..4})。这是未来的解决方案。

答案2

如果您不使用 LVM,就没有简单的方法可以做到这一点。

如果你非常非常小心。显然,最好的小心方法就是提前备份数据。

幸运的是,您的分区从第一个扇区开始,所以您不必担心这一点。您的问题出在末尾,这不是您的(新的)最后一个扇区。所以您需要更新它。所以您需要销毁您的分区,然后创建一个新的分区(不格式化它!)。

fdisk -u /dev/sda

然后,在 fdisk 实用程序中:

  • d删除分区1
  • p确保没有剩余分区
  • n创建新分区:
    • p使其成为主分区
    • 1使其成为第一个分区
    • 1使其从 1 号扇区开始(原样)
    • 将最后一个扇区设为分区的“结束”(应该是默认答案)

可选(使您的分区可启动):

  • a切换标志,并1指定分区

现在你必须写下你的改变:

  • w

现在您可以退出 fdisk,然后重新启动服务器。完成后,在文件系统级别扩展分区(resize2fs /dev/sda1

相关内容