DocRev 2.0 2018-06-09 / Arto Jääskeläinen

Software RAID ---  Ubuntu




  • Johdanto

    SoftaRAID: n etuna on riippumattomuus laitteista.  Jos kone hajoaa voi levyt siirtää toiseen koneeseen.  Tuo ei välttämättä onnistu käytettäessä levyohjaimiin integroitua RAIDia tai välimuotoa jossa osa koodista on levyohjaimessa ja osa softana.  RAIDin asentaminen softana Ubuntuun / Linux Minttiin ei ole tolkuttoman monimutkaista.

    Mitä tarvitaan

    Lähtötilanteeksi tässä oletetaan valmiiksi asennettu kone jossa systeemilevyllä on jo toimiva Ubuntu/Linux Mint/vastaava  ja RAIDia varten on erikseen levyt. Tässä esimerkissä käsittelen vain RAID5 toteutusta 4 levyllä jotka yhdessä muodostavat RAID-pakan.  Nämä 4 levyä ovat liitetty tavanomaiseen SATA-ohjaimeen. Tässä 4 levyn tapauksessa hyötytilaksi saadaan 3 levyn määrä ja vikasietoisuus yhden levyn rikkoutumisen varalta. Malli on helposti sovellettavissa muihinkin levymääriin ja RAID-tasoihin.

    Toimintaperiaate

    Toiminnan tekninen idea on siinä että RAID-pakan koko levytilasta muodostetaan uusi laite ”/dev/md0” joka näyttää koko pakasta hyödyksi jäävän tilan yhtenä isona levynä joka on myös vikasietoinen.

    Asennus

    Asennus on täysin päätetyöskentelyä. Asennuksessa tarvitaan osiointiohjelmia jotka osaavat GPT-osiotaulun käsittelyn kuten ”gdisk” ja ”parted”.  Jälkimmäinen löytyy yleensä valmiina koneesta mutta ”gdisk” enimmäkseen ei eli asennetaan se.  Tarvitset hieman näiden ohjelmien käytön osaamista.  Lisäksi tarvitaan ”mdadm” ohjelma RAID-määritysten tekoon.

  • sudo apt-get install gdisk 

  • sudo apt-get install mdadm 

     

    1) Valmistellaan kukin RAID-pakkaan tuleva levy ”gdisk” ja/tai ”parted” ohjelmilla.  Määritetään: 

  • Osio 2048---> levyn loppu 

  • Osion tyypiksi FD00  (=Linux RAID) 

  • Osion nimeksi sopiva selitys esim. RAID5_hd1, RAID5_hd2, jne. 

     

    2) Määritellään RAID-pakan rakenne ”mdadm” ohjelmalla.  

     

  • sudo mdadm  --create  /dev/md0  --level=5  --raid-device=4  /dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1  --verbose 

     

    Yllä määritetään RAID-taso 5, levyjä 4 kpl ja pakkaan kuuluvien laitteiden nimet.  Tarkasta kuitenkin ennen tätä että nuo laitenimet ovat oikeat ja tilanteesi mukaiset. Ei ole ainutlaatuista jos levyjen laitenimet ovatkin eri järjestyksessä kuin kuvittelit. Ylläoleva rivi on esimerkki. 

    Levyjen synkronointi alkaa heti ja kestää useita tunteja yleensä.  Voit seurata etenemistä: 

     

  • watch -d cat /proc/mdstat 

     

    3) Kun valmista voit kokeilla  

     

  • sudo mdadm --examine --scan 

     

    ARRAY /dev/md/0 metadata=1.2 UUID=ff3c3b0b:3165c80f:cde8ddab:3574773e name=fs1:0 

     

    Ja tallettaa tuon tulosteen /etc/mdadm/mdadm.conf tiedoston loppuun: 

     

  • sudo bash  -c  'mdadm --examine --scan >> /etc/mdadm/mdadm.conf' 

     

    4) Päivitä ”initramfs” jotta pakka latautuu oikein myös koneen käynnistyksen jälkeen: 

     

  • sudo update-initramfs -u 

     

    Jos unohdit tämän vaiheen niin huomaat ongelman myöhemmin mahdollisesti ”/dev/md126” tai ”/dev/md127” tiedostoina vaikka RAID-laitteen pitäisi näkyä nimellä ”/dev/md0” kun kaikki on hyvin.  Käynnistä kone uudestaan ja varmista että ”/dev/md0” on olemassa. 

     

    5) Formatoi pakka 

     

  • sudo mkfs.ext4  /dev/md0 

     

    Huomaa että nykyään formatointi on kaksiosainen.  Tämä näkyvä vaihe jonka teet tekee osan yksi päästäen nopeasti ”loppuun”.  Taustalla käynnistyy kuitenkin formatoinnin loppuun suoritus vasta siinä vaiheessa kun levypakka mountataan tuolla hieman myöhemmin.  Tämä kakkosvaihe vie aikaa.  Tiedät että toinen vaihe on käynnissä kun näet ”ext4lazyinit” nimisen prosessin käynnissä. 

    Lisätietoja löydät hakutermillä ”ext4 lazy init” Googlesta. 

     

    6) Luo ”mount point” 

     

  • sudo mkdir -p /mnt/md_0   

     

    7) Katso UUID tunnus RAID-pakallesi  

     

  • sudo blkid /dev/md0 

     

    /dev/md0: UUID="29cdc9c5-52a0-45c3-bef0-99497c5c53b6" TYPE="ext4" 

     

    ja määritä ”/etc/fstab”: iin rivi sille korvaten alla olevassa ”sinun_UUID” sillä oikealla: 

     

  • sudo bash  -c  'echo UUID=sinun_UUID  /mnt/md_0  ext4  errors=remount-ro  0  1  >>  /etc/fstab' 

     

    8) Tarkasta että kaikki näkyy oikein ja selitystekstit osioiden kohdalla löytyvät.  Tässä esimerkki: 

     

  • sudo parted -l 

     

    Model: ATA WD5003ABYX-88 (scsi) 

    Disk /dev/sda: 500GB 

    Sector size (logical/physical): 512B/512B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system     Name                 Flags 

     3      17,4kB  1049kB  1031kB                  BIOS boot partition  bios_grub 

     1      1049kB  500GB   500GB   ext4            Linux filesystem 

     2      500GB   500GB   64,0MB  linux-swap(v1)  Linux swap 

     

     

    Model: ATA TOSHIBA DT01ACA2 (scsi) 

    Disk /dev/sdb: 2000GB 

    Sector size (logical/physical): 512B/4096B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system  Name       Flags 

     1      1049kB  2000GB  2000GB               RAID5_hd1  raid 

     

     

    Model: ATA TOSHIBA DT01ACA2 (scsi) 

    Disk /dev/sdc: 2000GB 

    Sector size (logical/physical): 512B/4096B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system  Name       Flags 

     1      1049kB  2000GB  2000GB               RAID5_hd2  raid 

     

     

    Model: ATA TOSHIBA DT01ACA2 (scsi) 

    Disk /dev/sdd: 2000GB 

    Sector size (logical/physical): 512B/4096B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system  Name       Flags 

     1      1049kB  2000GB  2000GB               RAID5_hd3  raid 

     

     

    Model: ATA TOSHIBA DT01ACA2 (scsi) 

    Disk /dev/sde: 2000GB 

    Sector size (logical/physical): 512B/4096B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system  Name       Flags 

     1      1049kB  2000GB  2000GB               RAID5_hd4  raid 

     

     

    Model: Linux Software RAID Array (md) 

    Disk /dev/md0: 6001GB 

    Sector size (logical/physical): 512B/4096B 

    Partition Table: gpt 

     

    Number  Start   End     Size    File system  Name         Flags 

     1      1049kB  6001GB  6001GB  ext4         RAID5_array  raid 

     

    Jotain hämärää, ohjeessa vikaa tai jokin hankaluus ? 

  • Täällä voi kysyä: http://forum.ubuntu-fi.org



  • Viallisen levyn uusiminen


  •  Kun gnome-disks (eli Ubuntun "Levyt" -ohjelma) näyttää levyn kunnoksi tämän, on levyn uusinta edessä:


  •  SMART_data_1

  • SMART_data

     

  • Tarvitset tuolta levyn sarjanumeron viallisen levyn tunnistamiseen.

  • Aluksi, älä tee näin...


ÄLÄ tee kuten itse tein:  Irrotin risan levyn koneesta ja laitoin uuden levyn tilalle. Käynnistyksen virheessä ohitin levypakan mounttauksen painamalla "S".  Määrittelin uuden levyn samaan tapaan gdisk: in avulla kuin yllä on ohjeessa tehty. Sujui normaaliin tapaan mutta:
Seurauksena oli tilanne, että ehjä osa levypakkaa ei enää käynnistynytkään ja en saanut pienellä temppuilullakaan sitä enää käyntiin että olin päässyt synkronoimaan datan uudelle levylle.   Kyllä, googlen tietämät lukemattomat RAID5-ohjeet Ubuntulle kokeiltiin ja eivät auttaneet. Erilaiset käskyt käynnistää vain ehjät levyt kaatuivat lopulta I/O-virheeseen! 
VIRHEENI oli ottaa viallinen levy ulos ilmoittamatta sitä ennen RAID: lle tuosta toimesta.   Siispä käännös takaisin ja viallinen levy koneeseen takaisin.
Kaikki käynnistyi aivan normaalisti ja kaikki tallessa edelleen.

Tee mieluummin näin

Noista kuvista yllä näkyy, että viallinen levyni on /dev/sdd1.  Ilmoitetaan siis RAIDille tuo vialliseksi:

sudo mdadm /dev/md0 --fail /dev/sdd1

mdadm: set /dev/sdd1 faulty in /dev/md0


Käsketään ottaa se irti aktiivisesta pakasta:

sudo mdadm /dev/md0 --remove /dev/sdd1


Kurkistetaan tilanne:


mdadm -D /dev/md0


/dev/md0:

Version : 1.2

Creation Time : Wed Feb 4 17:46:56 2015

Raid Level : raid5

Array Size : 5860145664 (5588.67 GiB 6000.79 GB)

Used Dev Size : 1953381888 (1862.89 GiB 2000.26 GB)

Raid Devices : 4

Total Devices : 3

Persistence : Superblock is persistent


Update Time : Sat Jun 9 10:04:22 2018

State : clean, degraded

Active Devices : 3

Working Devices : 3

Failed Devices : 0

Spare Devices : 0


Layout : left-symmetric

Chunk Size : 512K


Name : fs1:0 (local to host fs1)

UUID : ff3c3b0b:3165c80f:cde8ddab:3574773e

Events : 212


Number Major Minor RaidDevice State

0 8 17 0 active sync /dev/sdb1

1 8 33 1 active sync /dev/sdc1

2 0 0 2 removed

4 8 65 3 active sync /dev/sde1


*** Nyt sammutetaan kone ja korvataan viallinen levy uudella ***
Koneen pitäisi käynnistyä tuon jälkeen normaalisti ja levypakan toimia normaalisti.  Lisätään uusi levy mukaan:

sudo mdadm /dev/md0 --add /dev/sdd

mdadm: added /dev/sdd


Synkronointi käynnistyy saman tien:

cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]

md0 : active raid5 sdd[5] sdc1[1] sdb1[0] sde1[4]

5860145664 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UU_U]

[>....................] recovery = 0.7% (14191020/1953381888) finish=227.4min speed=142121K/sec

unused devices: <none>


Myöhemmin:

RAID5_pakka_taantunut


"PAKKA ON TAANTUNUT" ei tarkoita tässä virhettä vaan että synkronointi on kesken eli data kopioituu uudelle levylle.
Levypakka toimii aivan normaalisti samaan aikaan.   Jotain nelisen tuntia näyttäisi vievän tuo synkkaus tällä kokoonpanolla.