mdadm - RAID5 阵列大小与实际磁盘大小不匹配

Lem*_*mon 4 raid software-raid ubuntu mdadm

我有 4 个 3TB WD RED 磁盘,它们位于 mdadm RAID5 中,总阵列大小应为 9TB 可用空间,但我只有 6TB。

我已经确认所有磁盘都在阵列中,唯一奇怪的是 fdisk 为每个驱动器返回不同的分区 ID、磁头大小和扇区大小等。由于这些驱动器是在不同时间添加的,因此我可能遵循了不同的教程,这会导致一些事故。

我当然不想随意开始尝试,因为我不想丢失数据。所以我希望这是一个简单的修复,只是我缺少的东西。一旦我知道哪个磁盘有问题,我就可以正确地将它重新添加到阵列中。

root@bobserv:~# cat /proc/mdstat
个性:[线性] [多路径] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : 活动 raid5 sdb1[5] sdc1[3] sdd1[1] sde1[4]
      6442053120 块 super 1.2 级别 5,512k 块,算法 2 [4/4] [UUUU]

未使用的设备:无
root@bobserv:~# mdadm --detail /dev/md/0
/dev/md/0:
        版本:1.2
  创建时间:2013 年 10 月 17 日星期四 20:19:10
     突袭等级:raid5
     阵列大小:6442053120(6143.62 GiB 6596.66 GB)
  使用的开发大小:2147351040(2047.87 GiB 2198.89 GB)
   突袭装置:4
  设备总数:4
    持久性:超级块是持久性的

    更新时间:2014 年 2 月 11 日星期二 09:36:33
          状态:活动
 有源设备:4
工作装置:4
 失败的设备:0
  备用设备:0

         布局:左对称
     块大小:512K

           姓名:鲍勃:0
           UUID : aa43b63e:1c359341:077e94c8:36875aaf
         活动:84216

    Number Major Minor RaidDevice 状态
       4 8 65 0 主动同步 /dev/sde1
       1 8 49 1 主动同步 /dev/sdd1
       3 8 33 2 主动同步 /dev/sdc1
       5 8 17 3 主动同步 /dev/sdb1
root@bobserv:~# fdisk -l

磁盘 /dev/sda:85.9 GB,85899345920 字节
255 个磁头,63 个扇区/磁道,10443 个柱面,总共 167772160 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x00045481

   设备引导开始结束块 Id 系统
/dev/sda1 * 2048 165675007 82836480 83 Linux
/dev/sda2 165677054 167770111 1046529 5 扩展
/dev/sda5 165677056 167770111 1046528 82 Linux 交换 / Solaris

警告:在“/dev/sdb”上检测到 GPT(GUID 分区表)!util fdisk 不支持 GPT。使用 GNU Parted。


磁盘 /dev/sdb:3000.6 GB,3000592982016 字节
255 个磁头,63 个扇区/磁道,364801 个柱面,总共 5860533168 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x79c7d1c7

   设备引导开始结束块 Id 系统
/dev/sdb1 1 4294967295 2147483647+ ee GPT

磁盘 /dev/sdc:3000.6 GB,3000592982016 字节
90 个磁头,3 个扇区/磁道,21705678 个柱面,总共 5860533168 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x6b7a81a1

   设备引导开始结束块 Id 系统
/dev/sdc1 2048 4294967294 2147482623+ fd Linux RAID 自动检测

磁盘 /dev/sdf:500.1 GB,500107862016 字节
255 个磁头,63 个扇区/磁道,60801 个柱面,总共 976773168 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x00083e19

   设备引导开始结束块 Id 系统
/dev/sdf1 2048 123844607 61921280 83 Linux
/dev/sdf2 123846654 156248063 16200705 5 扩展
/dev/sdf5 123846656 156248063 16200704 82 Linux 交换 / Solaris

警告:在“/dev/sde”上检测到 GPT(GUID 分区表)!util fdisk 不支持 GPT。使用 GNU Parted。


磁盘 /dev/sde:3000.6 GB,3000592982016 字节
255 个磁头,63 个扇区/磁道,364801 个柱面,总共 5860533168 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x00000000

   设备引导开始结束块 Id 系统
/dev/sde1 1 4294967295 2147483647+ ee GPT

磁盘 /dev/sdd:3000.6 GB,3000592982016 字节
90 个磁头,3 个扇区/磁道,21705678 个柱面,总共 5860533168 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标识符:0x83a606dd

   设备引导开始结束块 Id 系统
/dev/sdd1 2048 4294967294 2147482623+ fd Linux RAID 自动检测

磁盘 /dev/md0:6596.7 GB,6596662394880 字节
2 个磁头,4 个扇区/磁道,1610513280 个柱面,总共 12884106240 个扇区
单位 = 1 * 512 = 512 字节的扇区
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):524288 字节 / 1048576 字节
磁盘标识符:0x00000000

磁盘 /dev/md0 不包含有效的分区表
root@bobserv:~#

编辑:我还卸载了阵列并尝试了fsck.ext4 -f /dev/md0resize2fs /dev/md0都无济于事。

# 分开 -l
型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sda:85.9GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos

编号开始结束大小类型文件系统标志
 1 1049kB 84.8GB 84.8GB 主 ext4 引导
 2 84.8GB 85.9GB 1072MB 扩展
 5 84.8GB 85.9GB 1072MB 逻辑 li​​nux-swap(v1)


型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sdb:3001GB
扇区大小(逻辑/物理):512B/512B
分区表:gpt

编号开始结束大小文件系统名称标志
 1 1049kB 3001GB 3001GB ntfs 主


型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sdc:3001GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos

编号开始结束大小类型文件系统标志
 1 1049kB 2199GB 2199GB 主要突袭


型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sdd:3001GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos

编号开始结束大小类型文件系统标志
 1 1049kB 2199GB 2199GB 主要突袭


型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sde:3001GB
扇区大小(逻辑/物理):512B/512B
分区表:gpt

编号开始结束大小文件系统名称标志
 1 1049kB 3001GB 3001GB 主


型号:VMware、VMware Virtual S (scsi)
磁盘/dev/sdf:500GB
扇区大小(逻辑/物理):512B/512B
分区表:msdos

编号开始结束大小类型文件系统标志
 1 1049kB 63.4GB 63.4GB 主 ext4
 2 63.4GB 80.0GB 16.6GB 扩展
 5 63.4GB 80.0GB 16.6GB 逻辑 li​​nux-swap(v1)


型号:Linux 软件 RAID 阵列 (md)
磁盘 /dev/md0:6597GB
扇区大小(逻辑/物理):512B/512B
分区表:循环

编号开始结束大小文件系统标志
 1 0.00B 6597GB 6597GB ext4


root@kierserv:/media/store/TV Shows/Bob's Burgers#

fro*_*utz 8

fdisk对于大于 2TB 的磁盘是错误的工具。使用partedgdisk代替。

看起来/dev/sdc1/dev/sdd1是 2TB 分区,因此这限制了您的阵列大小。对于其他磁盘,它们有 GPT,所以我假设它们已经是 3TB,但您应该检查一下。

基本上你必须停止阵列,将每个分区扩大到 3TB(不改变起始偏移量),然后再次启动它并跟进它:

mdadm --grow /dev/md0 --size=max
Run Code Online (Sandbox Code Playgroud)

如果您无法停止阵列,则必须单独使每个 2TB 分区失败,重新分区并重新添加它。如果您先添加一个写意图位图,这可能会更快。

mdadm --grow /dev/md0 --bitmap=internal
Run Code Online (Sandbox Code Playgroud)

然后分别为每个磁盘,

mdadm /dev/md0 --fail /dev/disk1 # check mdstat for [UUUU] first
mdadm /dev/md0 --remove /dev/disk1
parted /dev/disk -- mklabel gpt mkpart primary 1mib -1mib
mdadm /dev/md0 --re-add /dev/disk1
mdadm --wait /dev/md0 # must wait for sync
Run Code Online (Sandbox Code Playgroud)

完成后,您可以再次删除位图(保留它可能会损害性能)。

mdadm --grow /dev/md0 --bitmap=none
mdadm --grow /dev/md0 --size=max
Run Code Online (Sandbox Code Playgroud)

最后做你的resize2fs或什么。