mdadm - Tamanho do array RAID5 versus incompatibilidade do tamanho do disco real

4

Tenho discos WD RED de 4 TB de 3 TB que estão no mdadm RAID5, o que deve totalizar um tamanho de matriz de 9 TB de espaço utilizável, no entanto, tenho apenas 6 TB.

Confirmei que todos os discos estão na matriz, a única coisa estranha é que o fdisk retorna diferentes IDs de partição, tamanhos de cabeçalhos e tamanhos de setor, etc. para cada uma das unidades. Como essas unidades foram adicionadas em momentos diferentes, é possível que eu tenha seguido um tutorial diferente e isso levou a um contratempo.

Eu, claro, não quero começar a experimentar as coisas à toa, já que não quero perder dados. Então, eu espero que seja uma solução fácil e algo que eu esteja perdendo. Depois que eu souber qual disco está com defeito, posso adicionar novamente isso à matriz corretamente.

root@bobserv:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdb1[5] sdc1[3] sdd1[1] sde1[4]
      6442053120 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: none
root@bobserv:~# mdadm --detail /dev/md/0
/dev/md/0:
        Version : 1.2
  Creation Time : Thu Oct 17 20:19:10 2013
     Raid Level : raid5
     Array Size : 6442053120 (6143.62 GiB 6596.66 GB)
  Used Dev Size : 2147351040 (2047.87 GiB 2198.89 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Feb 11 09:36:33 2014
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : bob:0
           UUID : aa43b63e:1c359341:077e94c8:36875aaf
         Events : 84216

    Number   Major   Minor   RaidDevice State
       4       8       65        0      active sync   /dev/sde1
       1       8       49        1      active sync   /dev/sdd1
       3       8       33        2      active sync   /dev/sdc1
       5       8       17        3      active sync   /dev/sdb1
root@bobserv:~# fdisk -l

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 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: 0x00045481

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   165675007    82836480   83  Linux
/dev/sda2       165677054   167770111     1046529    5  Extended
/dev/sda5       165677056   167770111     1046528   82  Linux swap / Solaris

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 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: 0x79c7d1c7

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

Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes
90 heads, 3 sectors/track, 21705678 cylinders, total 5860533168 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: 0x6b7a81a1

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  4294967294  2147482623+  fd  Linux RAID autodetect

Disk /dev/sdf: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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: 0x00083e19

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1            2048   123844607    61921280   83  Linux
/dev/sdf2       123846654   156248063    16200705    5  Extended
/dev/sdf5       123846656   156248063    16200704   82  Linux swap / Solaris

WARNING: GPT (GUID Partition Table) detected on '/dev/sde'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sde: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 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/sde1               1  4294967295  2147483647+  ee  GPT

Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
90 heads, 3 sectors/track, 21705678 cylinders, total 5860533168 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: 0x83a606dd

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048  4294967294  2147482623+  fd  Linux RAID autodetect

Disk /dev/md0: 6596.7 GB, 6596662394880 bytes
2 heads, 4 sectors/track, 1610513280 cylinders, total 12884106240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table
root@bobserv:~#

EDIT: Eu também desmontei o array e tentei ambos fsck.ext4 -f / dev / md0 & resize2fs / dev / md0 sem sucesso.

# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  84.8GB  84.8GB  primary   ext4            boot
 2      84.8GB  85.9GB  1072MB  extended
 5      84.8GB  85.9GB  1072MB  logical   linux-swap(v1)


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  3001GB  3001GB  ntfs         primary


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2199GB  2199GB  primary               raid


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2199GB  2199GB  primary               raid


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sde: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  3001GB  3001GB               primary


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdf: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  63.4GB  63.4GB  primary   ext4
 2      63.4GB  80.0GB  16.6GB  extended
 5      63.4GB  80.0GB  16.6GB  logical   linux-swap(v1)


Model: Linux Software RAID Array (md)
Disk /dev/md0: 6597GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  6597GB  6597GB  ext4


root@kierserv:/media/store/TV Shows/Bob's Burgers#
    
por Lemon 11.02.2014 / 10:56

1 resposta

7

fdisk é a ferramenta errada para discos > 2TB. Use parted ou gdisk .

Parece que /dev/sdc1 e /dev/sdd1 são partições de 2 TB, o que limita o tamanho do seu array. Para os outros discos, eles têm GPT, então eu suponho que eles já tenham 3 TB, mas você deve verificar.

Basicamente você tem que parar o array, aumentar cada partição para 3TB (sem mudar o offset inicial), então iniciá-lo novamente e segui-lo com um grow:

mdadm --grow /dev/md0 --size=max

Se você não puder parar o array, você terá que falhar cada partição de 2TB individualmente, reparticionar e adicioná-lo novamente. Isso pode ser mais rápido se você adicionar um bitmap de intenção de gravação primeiro.

mdadm --grow /dev/md0 --bitmap=internal

Em seguida, para cada disco individualmente,

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

Quando isso for feito, você poderá remover o bitmap novamente (mantê-lo pode prejudicar o desempenho).

mdadm --grow /dev/md0 --bitmap=none
mdadm --grow /dev/md0 --size=max

Finalmente, faça o seu resize2fs ou o que for.

    
por 11.02.2014 / 11:47