Remover uma unidade de uma matriz RAID 5 de 2 unidades usando metadados da versão 1.2?

1

Minha situação é quase idêntica a " Como remover uma unidade de um array RAID 5 de 2 unidades não padrão? ", exceto que o meu RAID5 de 2 TB está usando o mdadm super block versão 1.2. De acordo com a melhor resposta ," Porque é um mdadm super block versão 0.90, cada drive deve ser usado também. Desde 1.1 e 1.2 coloque os metadados perto do começo no array não funcionará para essas versões. "

No entanto, depois de executar

mdadm /dev/md0 --grow --raid-devices=2

e conclusão da alteração de layout subsequente, meu RAID 5 se parece com isso:

    /dev/md0:
        Version : 1.2
  Creation Time : Thu Sep 25 11:25:10 2014
     Raid Level : raid5
     Array Size : 1953383296 (1862.89 GiB 2000.26 GB)
  Used Dev Size : 1953383296 (1862.89 GiB 2000.26 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sun May  3 17:19:39 2015
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 128K

           Name : XXX:0  (local to host XXX)
           UUID : XXX:XXX:XXX:XXX
         Events : 93388

    Number   Major   Minor   RaidDevice State
       3       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

E meus dois dispositivos são assim:

/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 37ac9dbd:a823812b:fe8a59f6:ba24bf34
           Name : XXX:0  (local to host XXX)
  Creation Time : Thu Sep 25 11:25:10 2014
     Raid Level : raid5
   Raid Devices : 2

 Avail Dev Size : 3906767024 (1862.89 GiB 2000.26 GB)
     Array Size : 1953383296 (1862.89 GiB 2000.26 GB)
  Used Dev Size : 3906766592 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : XXX:XXX:XXX:XXX

    Update Time : Sun May  3 13:11:25 2015
       Checksum : 30f8e8f7 - correct
         Events : 93388

         Layout : left-symmetric
     Chunk Size : 128K

   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing)

-

/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 37ac9dbd:a823812b:fe8a59f6:ba24bf34
           Name : XXX:0  (local to host XXX)
  Creation Time : Thu Sep 25 11:25:10 2014
     Raid Level : raid5
   Raid Devices : 2

 Avail Dev Size : 3906767024 (1862.89 GiB 2000.26 GB)
     Array Size : 1953383296 (1862.89 GiB 2000.26 GB)
  Used Dev Size : 3906766592 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : XXX:XXX:XXX:XXX

    Update Time : Sun May  3 13:11:25 2015
       Checksum : 6ab24a9f - correct
         Events : 93388

         Layout : left-symmetric
     Chunk Size : 128K

   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing)

Contabilizando o valor de "Data Offset" em cada unidade:

dd if=/dev/sdb skip=262144 bs=512 count=1024 of=/tmp/b
dd if=/dev/sdc skip=262144 bs=512 count=1024 of=/tmp/c

Ainda recebo md5sums equivalentes:

79e53dd4906b3fcb7b1f7c613325c377  /tmp/b
79e53dd4906b3fcb7b1f7c613325c377  /tmp/c

Então, isso significa que

mdadm /dev/md0 --fail /dev/sdc --remove /dev/sdc
mdadm --zero-superblock /dev/sdc

ou

mdadm --stop /dev/md0
mdadm --create /dev/md0 --level=1 --raid-devices=1 --force /dev/sdb
mdadm --zero-superblock /dev/sdc

não resultará em perda de dados (supondo que os dados restantes sejam movidos para outro lugar antes que o comando final falhe)?

    
por ryank 04.05.2015 / 01:40

1 resposta

1

Eu fui em frente e apenas tentei, e a resposta é sim. Um RAID5 de dois discos usando o mdadm superblock versão 1.2, na verdade, reterá seus dados em caso de falha e remoção de um dos discos.

por exemplo:

mdadm /dev/md0 --fail /dev/sdc --remove /dev/sdc
mdadm --zero-superblock /dev/sdc
    
por 04.05.2015 / 07:40