RAID5 tömbben lévő lemezek számának csökkentése

A feladat egy 11+1 lemezből álló RAID5 tömb átalakítása 9+1 lemezes állapotra, mivel egy 3 portos RAID vezérlő megbízhatatlanul működik. Van még egy szabad port, oda helyezem át az egyik lemez kábelét. Ez nem igényel semmilyen módosítást, a gépet le kell állítani és egyszerűen át kell dugni a kábelt.
A másik két lemez eltávolítása sokkal összetettebb, mert a használatban lévő, a RAID5 tömb elemét képező lemezekről van szó.
A következő leírás is ebben a témában íródott, ez alapján oldottam meg a problémát: http://blog.stalkr.net/2009/10/reducing-number-of-devices-in-raid-5.html

A RAID tömbre LVM került és ezen foglal helyet a rendszer:
#ls -1 /dev/filesystem


backup


iscsi


root


swap



A legnagyobb mérete a Backup nevű Logical Volume-nak van, így ennek a méretét csökkentem.

Előkészületek:
Le kell csatolni azt a LV-ot, amelyiken dolgozunk

sync; umount /backup #- ide volt felcsatolva

Ellenőrizzük a fájlrendszert:

#e2fsck -fyv -C 0 /dev/filesystem/backup

Csökkentjük a fájlrendszer méretét a végleges értékre (esetleg egy kicsit kisebbre):

#resize2fs -f  /dev/filesystem/backup 500G

Jöhet az első lemez RAID-ből való kiszabadításának folyamata
Csökkentjük az LVM méretét:

#lvreduce -L501G /dev/filesystem/backup

Beállítjuk a RAID tömb méretét egy lemezzel kisebbre. Ezt úgy számoljuk ki, hogy RAID5-nél a rendelkezésre álló terület az összes lemez területe - egy lemez területe.

# mdadm -Q -D /dev/md1 | grep size


     Array Size : 4882867200 (4656.67 GiB 5000.06 GB)


     Used Dev Size : 488286720 (465.67 GiB 500.01 GB)


     Chunk Size : 512K


Tehát a Array Size- ból ki kell vonni a Used Dev Size méretet, így megkapjuk az egyel kisebb lemezből álló tömb felhasználható méretét.
4882867200  - 488286720  = 4394580480
Ezt az értéket adjuk meg mint array-size

#mdadm /dev/md1 --grow --array-size=4394580480

A RAID tömbből kiveszünk egy lemezt (a --raid-devices-be nem kell beleszámolni a spare diskeket):

mdadm /dev/md1 --grow --raid-devices=10 --backup-file=/root/backup

Ennek hatására az mdadm elkezdi újraszinkronizálni a tömböt, majd ha végez akkor a kivett lemez átkerül spare állapotba
Erről a szinkronizálás alatt és utána a következő parancs ad információt:

#mdadm --detail /dev/md1


/dev/md1:


        Version : 1.2


  Creation Time : Thu Jun 23 10:01:02 2011


     Raid Level : raid5


     Array Size : 4394580480 (4191.00 GiB 4500.05 GB)


  Used Dev Size : 488286720 (465.67 GiB 500.01 GB)


   Raid Devices : 10


  Total Devices : 12


    Persistence : Superblock is persistent



    Update Time : Mon Jul 25 18:11:00 2011


          State : clean, recovering


 Active Devices : 11


Working Devices : 12


 Failed Devices : 0


  Spare Devices : 1



         Layout : left-symmetric


     Chunk Size : 512K



 Reshape Status : 0% complete


  Delta Devices : -1, (10->9)



           Name : debian:1


           UUID : 2f4b016c:54c46bf9:0efd1543:b1ae7dbf


         Events : 328



    Number   Major   Minor   RaidDevice State


       0       8       82        0      active sync   /dev/sdf2


       1       8        2        1      active sync   /dev/sda2


       2       8       18        2      active sync   /dev/sdb2


       3       8       34        3      active sync   /dev/sdc2


       4       8       50        4      active sync   /dev/sdd2


      11       8      178        5      active sync   /dev/sdl2


       6       8       98        6      active sync   /dev/sdg2


       7       8      114        7      active sync   /dev/sdh2


       8       8      130        8      active sync   /dev/sdi2


       9       8      146        9      active sync   /dev/sdj2



      10       8      162       10      active sync   /dev/sdk2


      12       8       66        -      spare   /dev/sde2



A második lemez esetén teljesen hasonlóan járunk el (az array-size és a raid-devices változókra kell figyelni)


#lvreduce -L501G /dev/filesystem/backup


#mdadm /dev/md1 --grow --array-size=3906293760


#mdadm /dev/md1 --grow --raid-devices=9 --backup-file=/root/backup1

A szinkronizáció végén így néz ki:

# mdadm --detail /dev/md127


/dev/md127:


        Version : 1.2


  Creation Time : Thu Jun 23 10:01:02 2011


     Raid Level : raid5


     Array Size : 3906293760 (3725.33 GiB 4000.04 GB)


  Used Dev Size : 488286720 (465.67 GiB 500.01 GB)


   Raid Devices : 9


  Total Devices : 12


    Persistence : Superblock is persistent



    Update Time : Tue Jul 26 21:57:06 2011


          State : clean


 Active Devices : 9


Working Devices : 12


 Failed Devices : 0


  Spare Devices : 3



         Layout : left-symmetric


     Chunk Size : 512K



           Name : debian:1


           UUID : 2f4b016c:54c46bf9:0efd1543:b1ae7dbf


         Events : 10238



    Number   Major   Minor   RaidDevice State


       0       8       82        0      active sync   /dev/sdf2


       1       8        2        1      active sync   /dev/sda2


       2       8       18        2      active sync   /dev/sdb2


       3       8       34        3      active sync   /dev/sdc2


       4       8       50        4      active sync   /dev/sdd2


      11       8      178        5      active sync   /dev/sdl2


       6       8       98        6      active sync   /dev/sdg2


       7       8      114        7      active sync   /dev/sdh2


       8       8      130        8      active sync   /dev/sdi2



       9       8      146        -      spare   /dev/sdj2


      10       8      162        -      spare   /dev/sdk2


      12       8       66        -      spare   /dev/sde2

Ha a szintkronizáció véget ér, akkor ki lehet venni a lemezt a tömbből:

#mdadm -f -r /dev/md1 /dev/sde2


#mdadm -f -r /dev/md1 /dev/sdk2


Ha van másik RAID tömb, abból is ki kell venni a lemezt:


#mdadm -f -r /dev/md0 /dev/sde1


#mdadm -f -r /dev/md0 /dev/sdk1

Ha sok lemez van egy gépben, nem könnyű őket megkülönböztetni. A következő paranccsal ki tudjuk olvasni a lemez széria számát, amit a cimkén is megtalálunk:

#smartctl -i /dev/sde


smartctl 5.40 2010-10-16 r3189 [i486-pc-linux-gnu] (local build)


Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net



=== START OF INFORMATION SECTION ===


Model Family:     SAMSUNG SpinPoint T166 series


Device Model:     SAMSUNG HD501LJ


Serial Number:    S0MUJ2KP925564


Firmware Version: CR100-11


User Capacity:    500,107,862,016 bytes


Device is:        In smartctl database [for details use: -P show]


ATA Version is:   8


ATA Standard is:  ATA-8-ACS revision 3b


Local Time is:    Tue Jul 26 09:35:34 2011 UTC


SMART support is: Available - device has SMART capability.


SMART support is: Enabled



Ha a csökkentés megtörtént, akkor növelni kell az LVM-et,  de mennyivel?

# pvscan


  PV /dev/md1   VG filesystem   lvm2 [4.55 TiB / 4.52 TiB free]


  Total: 1 [4.55 TiB] / in use: 1 [4.55 TiB] / in no VG: 0 [0   ]


Tehát még 4.52 TB-tal gazdálkodhatunk, egyelőre elég lesz 3Tb a backup LVM-nek. A mostani 501GB-hoz adjunk még 2.5TB-ot:

# lvextend -L +2.5T /dev/filesystem/backup

A végeredmény:

# lvdisplay /dev/filesystem/backup


  --- Logical volume ---


  LV Name                /dev/filesystem/backup


  VG Name                filesystem


  LV UUID                Y7nKXy-zL1O-1626-BtYd-0qQd-YvKr-UhcPmS


  LV Write Access        read/write


  LV Status              available


  # open                 1


  LV Size                3.00 TiB


  Current LE             786432


  Segments               1


  Allocation             inherit


  Read ahead sectors     auto


  - currently set to     16384


  Block device           253:3

 Az LVM-et már megnöveltük, a fájlrendszert is hozzá kell igazítani:

# resize2fs /dev/filesystem/backup

Ha ez is megvan, akkor ismét használhatjuk a backup LV-ot