Onnistuin jälleen kerran sotkemaan Arch Linuxini päivittelemällä varomattomasti. Tällä kertaa sain koneen käynnistymättömään kuntoon päivittämällä paketteja, jolloin koukut (HOOKS) muuttuivat sen verran, ettei järjestelmä löydä enää RAID-pakkojani, eikä LVM-osiota. Opinpahan tästä sen verran, että lisäsin Archin sivujen uutisosion RSS-syötteisiini, jotta vahinko ei pääse uusiutumaan.
Omasta huolimattomuudesta ja itse rakentamani järjestelmän toiminnan ymmärtämättömyydestä johtuneesta vahingosta sisuuntuneena ajattelin rakentaa kaiken uusiksi ja saada sen tällä kertaa toimimaan paria päivityskertaa pidemmälle. Osioinnista pudotettiin LVM pois, koska juuri vie joka tapauksessa kaiken tilan, joka jää /bootilta ja swapilta vapaaksi. Murphyn lain mukaisesti nämä tarpeet tulevat taatusti muuttumaan lähiaikoina, mutta sillehän ei voi mitään.
Edellisestä asennuksesta poiketen levymäärä saatiin nyt tuplattua kahdesta neljään. Tämä toi myös uusia vaihtoehtoja RAID-tasoihin ja pikaisen laskutoimituksen perusteella RAID5 on paras ratkaisu neljällä identtisellä levyllä, kun tavoitteena on mahdollisimman suuri levytila jonkinasteisella vahinkovakuutuksella. RAID6 olisi toki varmempi kestäessään kahden levyn rikkoutumisen, mutta omiin tarpeisiin se on jo hieman turhan järeä ratkaisu ja se käyttää yhden levyn enemmän pariteettiin.
Gentoon taannoisesta asennuksesta viisastuneena ajattelin tällä kertaa hoitaa Archin asennuksen etänä omalta sohvalta käsin SSH-yhteyden yli. Tähän löytyikin yksinkertaiset ohjeet Archin wikistä. Aivan kivutta ei tietysti tämäkään voinut hoitua. Asennettaessa openSSH-palvelinta kyseltiin ensin pacmanin päivittämistä. Tähän vastasin aikaisempien kokemuksien perusteella kieltävästi. Tämän jälkeen sain valitusta liian vanhasta glibc:n versiosta. Tästä pääsi eroon asentamalla uudemman glibc:n.
Saatuani SSH-palvelimen asennettua ja käyntiin oli aika aloittaa etäasennus. Aluksi tyhjennettiin kevyt kokonaan, jottei sinne vain jää kummittelemaan mitään metadatan raatoja, jos koneet vaikka aiemmin ovat kuuluneet johonkin RAID-pakkaan.
mdadm --zero-superblock /dev/sd[a-d]
Tästä saatiin vastaus: “mdadm: Unrecognised md component device - /dev/sda” Tämä kuulosti oikealta, koska levyt eivät luultavasti ole kuuluneet mihinkään RAID-pakkaan, mutta varmuus aina parasta. Seuraavaksi tyhjennettiin levyjen osioinnit.
dd if=/dev/zero of=/dev/sd[a-d] bs=4096 count=1
Sitten varmistettiin, että kerneli on kanssani samaa mieltä siitä, mitä osiointitietoja käytetään.
partprobe -s
Ennen uuden osioinnin tekoa otin vielä kiintolevyn välimuistin pois käytöstä, jotta data menisi suoraan levylle. Tämän pitäisi suojata hieman paremmin datan katoamiselta sähkökatkoksen sattuessa. Vaikka palvelin onkin viimeisimmäin high techin mukainen tykki, UPSiin ei viitsi sijoittaa.
hdparm -W 0 /dev/sd[a-d]
Osiointia varten täytyi vielä asentaa gdisk, joka ymmärtää GPT-osiointitaulun päälle.
pacman -S gdisk
Seuraavaksi tehtiin osiointi, jossa luotiin alkuun yhden gigatavun /boot-osio, perään kahden gigatavun swap ja lopusta melkein kaikki uhrattiin juurelle. Loppuun jätin noin gigan verran tyhjää tilaa, jotta levyrikon sattuessa ja uuden samankokoisen levyn korvatessa vanhan koko pakka ei hajoa pyöristysvirheisiin. Osion tyypiksi valittiin kaikkiin kolmeen fd00. Kun osiointi oli valmis, tarkistin sen vielä kerran ja kopioin ensimmäiseltä levyltä muille kolmelle.
gdisk -l /dev/sda
sgdisk --backup=table /dev/sda
sgdisk --load-backup=table /dev/sd[b-d]
Tässä vaiheessa sain seuraavan ilmoituksen:
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.<br />
***************************************************************
Non-GPT disk; not saving changes. Use -g to override.
Niinpä ajoin viimeisen komennon uudestaan g-vivulla.
sgdisk -g --load-backup=table /dev/sd[b-d]
Nyt komento meni läpi ongelmitta, mutta kun tarkistin muiden levyjen osiointeja, huomasin, ettei osiointitaulu ollut kopioitunut lainkaan sdc:lle ja sdd:lle, ainoastaan sdb:lle. Niinpä komento täytyi ajaa vielä yksitellen kahdelle viimeiselle levylle.
Kun osiointi oli kaikilla levyillä lopulta kohdillaan, oli aika luoda RAID-pakat. Aluksi ladattiin tarvittavat moduulit ja perään luotiin pakat. /boot-osion täytyi laittaa metadata-vipu, jotta saatiin käyttöön Syslinuxin ymmärtämä vanhempi versio.
modprobe raid1
modprobe raid5
mdadm --create /dev/md1 --level=1 --raid-devices=4 --metadata=1.0 /dev/sd[a-d]1
mdadm --create /dev/md2 --level=1 --raid-devices=4 /dev/sd[a-d]2
mdadm --create /dev/md3 --level=5 --raid-devices=4 /dev/sd[a-d]3
Pakkojen luomisen jälkeen laitettiin mdadm:n asetustiedosto talteen.
mdadm --examine --scan > /mnt/etc/mdadm.conf
Sitten avattiin toinen SSH-sessio ja aloitettiin varsinainen asennus. Osiointivaiheessa mentiin suoraan kohtaan “Manually Configure block devices, filesystems and mountpoints”. Nimiöinniksi valittiin uuid, md1 asetettiin bootiksi, md2 swapiksi ja md3 juureksi. Käynnistyslataimeksi valittiin Syslinux.
Rc.conffissa lisättiin sshd daemoneihin, hostname asetettiin halutuksi ja locale vaihdettiin suomeksi. Fstab oli luotu suoraan oikein. Mkinitcpio.conffissa lisättiin MODULES-kohtaan raid1, FILES-kohtaan /etc/mdadm.conf, HOOKS-kohtaan mdadm udevin perään. Rootin salasana laitettin sopivaksi.
Vielä kerran vaihdettiin ensimmäiseen SSH-istuntoon ja chrootattiin uuteen ympäristöön, jotta saatiin luotua oikea initrd.
cd /mnt
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
mount /dev/md1 boot/
chroot . /bin/bash
export PS1="(chroot) $PS1"
cd /boot
mkinitcpio -p linux
exit
umount {proc,sys,dev}
ielä takaisin varsinaiseen asennukseen ja valittiin “install bootloader”. Käytiin läpi konfiguraatio ja asennettiin Syslinux MBR:ään ja asetettiin active-lippu boot-osiolle. Tämän jälkeen käynnistettiin kone uudelleen, mutta POST-tarkistuksen jälkeen ei tapahtunut mitään. Syyksi paljastui Syslinux, joka ei jostain syystä ollut saanut tehtyä boot-osiota käynnistyväksi. Tein sen käsin ohjeiden mukaan kaikille neljälle levylle. Tämän jälkeen käynnistin koneen uudelleen ja nyt kone käynnistyi oikein.
Asennuksen jälkeen lukaisin pikaisesti Archin uutisosiota varmistuakseni, ettei mitään fataalia päivitystä ollut liikenteessä. Uutisissa ei ollut mitään uutta, mutta foorumeilla näkyi olevan paljon keskustelua uudesta lvm2-paketista, joka aiheutti harmaita hiuksia. Itselläni ei tässä uudessa asennuksessa ole kuin RAID, joten kai tässä uskaltaa päivittää. Ihminen kun ei tunnetusti opi virheistään…