RAID-pakan laajentaminen

Submitted by Tha-Fox on 2013-07-12

Maailmassa on paljon asioita, joita ei koskaan tunnu olevan liikaa. Tietotekniikan saralla varsinkin levyjärjestelmien myyjät muistavat usein mainita alati kasvavan levytilan tarpeen. Omassa käytössäni olen havainnut, että varsinkin digikameroiden kuvat ja videot ovat tilasyöppöjä. Jos näitä haluaa vielä varmistaa johonkin, kuten toivottavasti useimmat tekevät, tilantarve on kaksinkertainen.

RAID-pakan laajennus tuli omassa käytössä eteen, kun uuden kameran myötä kuvien ja videoiden koko kasvoi huomattavasti ja muutaman kuukauden käytön jälkeen /home-osio oli 94% täynnä. Etsiskelin hetken ohjeita ja parhaat ohjeet tuntuivat löytyvän täältä.

Ohjeen mukaisesti siis tarkistettiin ensin tilanne. Alkutilanteessa minulla on kolme RAID-pakkaa, jotka jokainen koostuvat neljällä levyllä majailevista identtisistä osioista. Jokainen levy on kooltaan 160 GB ja ne on tarkoitus korvata 500 GB:n levyillä.

    [root(a)host ~]# cat /proc/mdstat
    Personalities : [raid1] [raid6] [raid5] [raid4]
    md2 : active raid1 sdc2[4] sdb2[1] sda2[0] sdd2[5]
          2096116 blocks super 1.2 [4/4] [UUUU]
     
    md1 : active raid1 sdd1[3] sdc1[2] sdb1[1] sda1[0]
          1048564 blocks super 1.0 [4/4] [UUUU]
     
    md3 : active raid5 sda3[0] sdc3[2] sdb3[1] sdd3[4]
          456125952 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
     
    unused devices: <none>

    [root(a)host ~]# lsblk
    NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda       8:0    0 149,1G  0 disk
    ├─sda1    8:1    0     1G  0 part
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sda2    8:2    0     2G  0 part
    │ └─md2   9:2    0     2G  0 raid1 [SWAP]
    └─sda3    8:3    0   145G  0 part
      └─md3   9:3    0   435G  0 raid5 /
    sdb       8:16   0 149,1G  0 disk
    ├─sdb1    8:17   0     1G  0 part
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdb2    8:18   0     2G  0 part
    │ └─md2   9:2    0     2G  0 raid1
    [SWAP]
    └─sdb3    8:19   0   145G  0 part
      └─md3   9:3    0   435G  0 raid5 /
    sdc       8:32   0 149,1G  0 disk
    ├─sdc1    8:33   0     1G  0 part
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdc2    8:34   0     2G  0 part
    │ └─md2   9:2    0     2G  0 raid1
    [SWAP]
    └─sdc3    8:35   0   145G  0 part
      └─md3   9:3    0   435G  0 raid5 /
    sdd       8:48   0 149,1G  0 disk
    ├─sdd1    8:49   0     1G  0 part
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdd2    8:50   0     2G  0 part
    │ └─md2   9:2    0     2G  0 raid1
    [SWAP]
    └─sdd3    8:51   0   145G  0 part
      └─md3   9:3    0   435G  0 raid5 /

Ennen kuin aletaan irrottaa levyjä, tutkitaan niiden sarjanumerot, jotta tulee varmasti irrotettua oikea levy.

    [root(a)host ~]# hdparm -I /dev/sdc | head -n 6
     
    /dev/sdc:
     
    ATA device, with non-removable media
            Model Number:       SAMSUNG HD161HJ                         
            Serial Number:      S0V3J90QB30563  

Seuraavaksi levyn poisto pakasta.

    mdadm -f /dev/md1 /dev/sda1
    mdadm -f /dev/md2 /dev/sda2
    mdadm -f /dev/md3 /dev/sda3
    mdadm -r /dev/md1 /dev/sda1
    mdadm -r /dev/md2 /dev/sda2
    mdadm -r /dev/md3 /dev/sda3

Sammutetaan kone alas levynvaihtoa varten

    systemctl poweroff

Levynvaihdon jälkeen kone ilmoittaa "insert boot media". Käynnistettiin uudestaan ja vaihdettiin BIOSista jokin toinen levy, jolta käynnistetään ja kone käynnistyi normaalisti. Tämän jälkeen tarkistettiin tilanne.

    [root(a)host ~]# lsblk
    NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda       8:0    0 465,8G  0 disk  
    sdb       8:16   0 149,1G  0 disk  
    ├─sdb1    8:17   0     1G  0 part  
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdb2    8:18   0     2G  0 part  
    │ └─md2   9:2    0     2G  0 raid1 [SWAP]
    └─sdb3    8:19   0   145G  0 part  
      └─md3   9:3    0   435G  0 raid5 /
    sdc       8:32   0 149,1G  0 disk  
    ├─sdc1    8:33   0     1G  0 part  
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdc2    8:34   0     2G  0 part  
    │ └─md2   9:2    0     2G  0 raid1 [SWAP]
    └─sdc3    8:35   0   145G  0 part  
      └─md3   9:3    0   435G  0 raid5 /
    sdd       8:48   0 149,1G  0 disk  
    ├─sdd1    8:49   0     1G  0 part  
    │ └─md1   9:1    0  1024M  0 raid1 /boot
    ├─sdd2    8:50   0     2G  0 part  
    │ └─md2   9:2    0     2G  0 raid1 [SWAP]
    └─sdd3    8:51   0   145G  0 part  
      └─md3   9:3    0   435G  0 raid5 /

Nähdään, että uusi levy on sda. Otetaan välimuisti pois käytöstä, jotta levyrikon sattuessa sinne ei ainakaan jäisi mitään.

    hdparm -W 0 /dev/sda

Otetaan osiotaulu talteen yhdeltä alkuperäisistä levyistä.

    sgdisk --backup=table /dev/sdb

Tiputetaan se uudelle levylle.

    sgdisk --load-backup=table /dev/sda

Saatu seuraavat varoitukset.

    Creating new GPT entries.
    Warning! Current disk size does not match that of the backup!
    Adjusting sizes to match, but subsequent problems are possible!
    The operation has completed successfully.

Sitten osioinnin muokkaus kolmannen osion osalta, jotta se olisi uuden levyn mukainen eli ottaa käyttöön noin gigatavua vaille koko tilan. Noin giga jätetään tyhjää, jotta mahdollisista pyöristysvirheistä samankokoisissa levyissä ei tule haittaa.

    gdisk /dev/sda
    p (Tarkistetaan, että levylle kopioituivat osiot vanhemmalta levyltä.)
    d (Poistetaan kolmas osio, jota halutaan muokata.)
    n (Oletusvalinnoilla koon valintaan asti.)
    +462G (Tulevan osion kooksi 462 GB, tyhjää jää loppuun 780 MB)
    fd00 (Tyypiksi Linux RAID.) (Huom! Deprecated-ominaisuus.)
    w (Kirjoittaa muutokset levylle. Jos kysyy, tehdäänkö GPT-osiotaulua, vastataan myöntävästi.)

Asetetaan ensimmäinen osio buuttavaksi syslinuxia varten.

    sgdisk /dev/sda --attributes=1:set:2

Tarkistetaan asia.

    sgdisk /dev/sda --attributes=1:show

Lisätään uusi levy pakkaan.

    mdadm --add /dev/md1 /dev/sda1
    mdadm --add /dev/md2 /dev/sda2
    mdadm --add /dev/md3 /dev/sda3

Seuraillaan tilanteen kehittymistä.

    watch -n 30 cat /proc/mdstat

Kun valmistunut, sama tehdään seuraaville levyille sdb-sdd. Nyt levyille ei tarvitse tehdä muutoksia osioiden kokoihin, kun ne kopioidaan ensimmäisenä vaihdetulta levyltä (sda). Myös legacy_boot -lippu tulee automaattisesti.

Kolmas lisätty levy oli kuulunut aiemmin johonkin raid-pakkaan, josta osoituksena fyysisen asennuksen jälkeiset tulosteet:

    [root(a)host ~]# lsblk
    NAME      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda         8:0    0 465,8G  0 disk  
    ├─sda1      8:1    0     1G  0 part  
    │ └─md1     9:1    0  1024M  0 raid1 /boot
    ├─sda2      8:2    0     2G  0 part  
    │ └─md2     9:2    0     2G  0 raid1 [SWAP]
    └─sda3      8:3    0   462G  0 part  
      └─md3     9:3    0   435G  0 raid5 /
    sdb         8:16   0 465,8G  0 disk  
    ├─sdb1      8:17   0     1G  0 part  
    │ └─md1     9:1    0  1024M  0 raid1 /boot
    ├─sdb2      8:18   0     2G  0 part  
    │ └─md2     9:2    0     2G  0 raid1 [SWAP]
    └─sdb3      8:19   0   462G  0 part  
      └─md3     9:3    0   435G  0 raid5 /
    sdc         8:32   0 465,8G  0 disk  
    ├─sdc1      8:33   0     1G  0 part  
    ├─sdc2      8:34   0     2G  0 part  
    │ └─md126   9:126  0     2G  0 raid1
    ├─sdc3      8:35   0  70,6M  0 part  
    ├─sdc4      8:36   0     1K  0 part  
    └─sdc5      8:37   0 462,7G  0 part  
      └─md127   9:127  0 462,7G  0 raid1
    sdd         8:48   0 149,1G  0 disk  
    ├─sdd1      8:49   0     1G  0 part  
    │ └─md1     9:1    0  1024M  0 raid1 /boot
    ├─sdd2      8:50   0     2G  0 part  
    │ └─md2     9:2    0     2G  0 raid1 [SWAP]
    └─sdd3      8:51   0   145G  0 part  
      └─md3     9:3    0   435G  0 raid5 /

    [root(a)host ~]# cat /proc/mdstat
    Personalities : [raid1] [raid6] [raid5] [raid4]
    md3 : active raid5 sdd3[4] sdb3[6] sda3[5]
          456125952 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UU_U]
     
    md126 : active (auto-read-only) raid1 sdc2[0]
          2104448 blocks [2/1] [U_]
     
    md2 : active raid1 sdb2[7] sda2[6] sdd2[5]
          2096116 blocks super 1.2 [4/3] [UU_U]
     
    md1 : active raid1 sdb1[5] sda1[4] sdd1[3]
          1048564 blocks super 1.0 [4/3] [UU_U]
     
    md127 : active (auto-read-only) raid1 sdc5[0]
          485146816 blocks [2/1] [U_]
     
    unused devices: <none>

Tästä päästiin eroon sammuttamalla kyseinen "haamupakka" komennolla

    mdadm -S /dev/md12[67]

Tiputettaessa osiotaulua tälle ennestään osioidulle levylle saatiin herja

    sgdisk --load-backup=table /dev/sdc
    ***************************************************************
    Found invalid GPT and valid MBR; converting MBR to GPT format.
    ***************************************************************
     
    Non-GPT disk; not saving changes. Use -g to override.

Lisättiin siis komentoon vipu -g ja homma toimi.

Kun kaikki levyt käyty läpi, on aika laajentaa pakkaa suurennetun osion osalta.

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

Laitetaan jälleen tarkkailu päälle ja odotellaan pakan kasvamista.

    watch -n 30 cat /proc/mdstat

Lopuksi kasvatetaan tiedostojärjestelmä.

    resize2fs /dev/md3

Ja homma bueno!

Lisää uusi kommentti

Rajattu HTML

  • Sallitut HTML-tagit: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Rivit ja kappaleet päätetään automaattisesti.
  • Verkko- ja sähköpostiosoitteet muutetaan automaattisesti linkeiksi.