ITjes en datjes

Dingen uit dagelijks IT werk

Archive for februari 2015

notities bij omzetting naar RAID

*losse notities terwijl ik nog bezig met met de omzetting, het is nog niet geverifieerd

De oorspronkelijke opzet van de PC:
disk 1: /boot, 512MB, /, 32GB, swap, 4GB, /data/local/disk01, *GB
disk 2: /data/local/disk02, *GB

Wat ik wilde maken:
/boot, RAID10 512MB, /, RAID10 32GB, swap RAID10 4GB, /data/local/disk02, RAID10 *GB, /data/local/disk01, *GB met /boot, / en swap verdeeld over 1 320GB en 2 1TB schijven, disk02 verdeeld over de rest van de 2 TBschijven voor belangrijke data en virtuele machines en disk01 voor onbelangrijke data.

Helaas kunnen er maar 3 schijven aangesloten worden ivm de 4e poort voor de CD speler, anders had ik er meteen 4 gebruikt.

Als eerste de 3e schijf plaatsen, raid partities maken (fdisk, mdadm), formatteren (mkfs.ext4), mounten en data overzetten. Na de kopie fstab wijzigen en de disk02 mount omzetten van /dev/sdb5 naar /dev/md3, swap naar /dev/md2.
(niet vergeten om de bootable flag te zetten op de nieuwe boot partities)

*aangezien mdadm nog geen grow optie heeft voor raid10 is het misschien slim om bij het maken de optie –raid-devices=3 (of hoger) toe te passen. al zal dan waarschijnlijk de array constant als degraded vermeld worden..

Overzetten van / en /boot;

mount /dev/md1 /mnt
mount /dev/md0 /mnt/boot
mount –rbind /dev /mnt/dev
mount –rbind /proc /mnt/proc

Alles in / en /boot kopieëren met cp -bpRx /[dir] /mnt/[dir] behalve /dev, /proc, /tmp, /lost+found, /sys, /run. Deze zelf aanmaken in /mnt (let op de permissies).

chroot /mnt

Eventuele oude RAID array vermelding in /etc/mdadm/mdadm.conf verwijderen (de ARRAY regels aan het einde) en de nieuwe toevoegen via mdadm –detail –scan >> /etc/mdadm/mdadm.conf.

grub-mkconfig
grub-install /dev/sdb1 /dev/sdc1
update-initramfs -u

Testen door PC uitzetten, oude disk loskoppelen en PC weer starten.
Als boot lukt, oude disk via USB connectie herpartitioneren, aan RAID arrays toevoegen en na geslaagde sync weer inbouwen in PC.

 *grub.cfg

In de config van grub2 wordt verwezen naar uuid’s van de raid arrays en file systemen. Deze zouden bij migratie naar grote schijven aangepast kunnen worden mits er naar de juiste verwezen worden (zie blkid en mdadm –detail –scan).

De eerste vermelding in grub.cfg is;
set root=’mduuid/…’ verwijst naar naar de array id van root (md1)
if search –hint= verwijst naar mduuid/ array id md1 en blkid md1
else naar blkid md1

in het 10_linux gedeelte;
set root=’mduuid/ array id /boot (md0)
if search –hint=’mduuid/ array id md0′ en blkid md0
else blkid /md1

Het eerste kijkt dus meteen naar de root partitie, daarna wordt in 10_linux telkens gekeken naar de /boot partitie en alleen root als dat niet werkt.

Dit alles moet het volgende opleveren;
-opstarten van systeem en programma’s met een factor tot 3 versnellen
-opstarten virtuele machines versnellen met factor tot 2
-lezen van data vanaf disk02 versnellen met factor tot 2
-verlies van 1 schijf is geen verlies van functionaliteit, ten hoogste van onbelangrijke data op disk01
-schrijf snelheid kan verhoogd zijn tot factor 2
-eventuele uitbreiding van diskruimte door vervanging disks kan zonder opnieuw installeren

Snelheid testen via simpele tests;

hdparm -tT /dev/mdxx voor het testen van leessnelheid.
sync;time bash -c “(dd if=/dev/zero of=bf bs=8k count=500000; sync)” voor de snelheid van schrijven. Let op op welke plek dit wordt gestart, het bf bestand wordt 4.1GB groot.

 

Uiteindelijke procedure

Configuratie:
sda: 320GB; sda1: 297.9GiB type dasdb: 1TB; sdb1: 297.9GiB type da, sdb2: 633.6GiB type da
sdc: 1TB; sdc1: 297.9GiB type da, sdb2: 633.6GiB type da

md11: raid-devices=3 level=10 layout=f2 /dev/sda1 /dev/sdb1 /dev/sdc1
md12: raid-devices=2 level=10 layout=f2 /dev/sdb2 /dev/sdc2

vg00: /dev/md11 /dev/md12
lv01: 512MB /boot
lv02: 32GB /
lv03: 4GB swap
lv04: 1.1TB /data/local/disk01

1 RAID10 set van de 320GB schijf en partities van de TB schijven en 1 set van de overgebleven ruimte leek me de beste prestaties en redundency te geven. De RAID sets worden vervolgens met LVM tot 1 grote schijf samengevoegd en daarna in gedeeltes voor /boot, /, swap en data ruimte verdeeld.
Hierdoor krijgt het OS en /home gedeelte de maximale prestaties met daarbij nog een gedeelte (zo’n 260GiB) van data.
Het is een optie om de 260GiB een eigen data locatie te geven maar dat was van minder belang omdat er een flink aantal virtuele testmachines komen te draaien.

Leessnelheid op md11 is ongeveer 280MB/s, op md12 190MB/s.
De schrijftest gaf in / ongeveer 185MB/s, in de data directory ongeveer 90MB/s.

sdb had nog de oorspronkelijke configuratie van het systeem nadat ik de rest van de devices sda en sdc had verwijderd van de RAID setup.

Het effect op het maken van virtuele machines was helaas erg. Het duurde een lange tijd voordat het uitpakken van de installatiebestanden van Windows 7 klaar was bij het maken van een nieuwe virtuele machine. De goede snelheid van 90Mb/s was helaas niet van toepassing in dit geval.

De volgende stap uitgevoerd, verplaatsen van de lvm physical volumes naar sdb en sdc, sda vervangen door een andere 1TB schijf, daarna alles verplaatst met lvm naar sda (gelukkig nog niet zoveel ruimte gebruikt) en van sdb en sdc een nieuwe raid10 met layout o2 gemaakt met 1 missing disk (/dev/md11).
Nadat dat gelukt is de nieuwe raidset toegevoegd aan de volume group en alles weer vehuisd naar de nieuwe md11, de oude sda1 verwijderd en weer als onderdeel van de nieuwe raidset toegevoegd.
Nu nog een installatie van een virtuele Windows machine testen..

 

Advertenties

Written by mnystrom

2015/02/21 at 21:17

Geplaatst in installatie, linux, NL, opslag

Tagged with ,

Over software RAID op Linux, FreeBSD, Windows

Vorige week voor een klant een kleine firewall opgezet. Er was weinig budget maar het was hard nodig om de boel daar (een stapel Windows PC’s voor de clïenten) beter te beveiligen. Tot nog toe was er alleen maar software gebruikt die de PC’s naar oorspronkelijke staat terugdraaide bij uitzetten of herstart. Met als gevolg dat de provider voor de zoveelste keer de verbinding blokkeerde i.v.m. infecties.

Eén van de maatregelen was een firewall met filtering en daarvoor hebben we op een oude PC PFSense gezet. Om in ieder geval op één punt wat redundancy te krijgen is de installatie op een GEOM mirror geplaatst.
Aangezien dat de installatie daar de optie voor heeft was het een fluitje van een cent. Nu kwam dat ook goed uit want na een paar dagen proefdraaien op de zaak kreeg een schijf kuren. Schijf eruit, andere schijf erin, de mirror de ontbrekende schijf laten vergeten en vervolgens de nieuwe toevoegen. Dat was alles.

Dat dat zo makkelijk kan was ik al gewend van de eerdere ervaringen met Linux software RAID.
De diverse Proxmox servers installeerde ik al bovenop een Debian installatie met specifieke RAID opzet. En de eigen PC had ik ook draaien met meerdere schijven met een combinatie van RAID 1 en 0 partities.

Na de installatie van de firewall was ik weer eens gaan kijken naar de diverse opties die mdadm biedt om te zien of er nog iets interessants te vinden was.
Daarbij kwam ik op diverse testen uit van de RAID 10 opties. Normale RAID 10 bestond altijd uit twee vaste paren schijven in RAID 0 die een RAID 1  vormden (of andersom). De RAID 10 optie van mdadm werkt al vanaf twee schijven, en werkt niet met vaste paren als er meer dan twee worden gebruikt. Er wordt (afhankelijk van de keuze hoeveel) alleen maar voor gezorgd dat er stukken data op minstens twee verschillende partities staan. Staan de partities op dezelfde fysieke schijf dan heeft het geen zin, maar dat is een eigen keuze.

Waar dan ook nog voor gekozen kan worden is de manier waarop de dubbele blokken verdeeld worden op de schijven. Standaard is “near”, dan staan de blokken zoveel mogelijk op dezelfde positie op de schijven. “Offset” verschuift het tweede blok een positie verder zodat het iets meer verspreid staat (mmaar niet veel). En “far” deelt de schijf min of meer in twee en begint bij één schijf vooraan en de ander in het midden zodat er maximale spreiding is van de datablokken.

Het grote voordeel van “far” is de snelheid van constant lezen van data (wat meestal bij een PC gebeurt), deze kan bijna net zo snel zijn als RAID 0. Schrijven is daarintegen langzamer, maar niet zo langzaam als men zou denken.
Diverse tests zijn uitgevoerd van de diverse mdadm RAID opties en over het algemeen komt RAID 10 met de “far layout” het beste uit de bus.

Software RAID is nooit een echte optie geweest in Windows. Om de systeemschijf in RAID te krijgen was altijd een hardware oplossing nodig, al was het maar de on-board semi-RAID controller.
Met server 2012 is er verandering in gekomen. Via de disk manager kan er een mirror gemaakt worden van de systeemschijf partities als er een lege, ongeformateerde schijf beschikbaar is.

Om de systeemschijf van Windows server 2012 in RAID1 te zetten;

Start diskmgmt.msc na een ongeformatteerde schijf beschikbaar te hebben.Windows_2012_RAID1_01

 

Klik met de rechtermuisknop op de eerste partitie en kies voor Add Mirror.Windows_2012_RAID1_02

 

Selecteer de juiste schijf.  Windows_2012_RAID1_03

 

Bevestig de conversie.

Windows_2012_RAID1_04

 

En de mirror verschijnt als volgt in de disk manager.Windows_2012_RAID1_05

 

Doe hetzelfde voor de partitie waar Windows op geïnstalleerd staat.Windows_2012_RAID1_06

Echter is het nog steeds niet hetzelfde als open source software RAID. Met een test van een virtuele machine bleek dat het aanmaken makkelijk was, echter als de originele schijf weg is blijft Windows tijdens de start vragen naar de schijf.
In plaats van automatisch omschakelen naar de kopie wordt geprobeerd om van de eerste schijf te starten en komt vervolgens een foutmelding en de vraag naar de installatieschijf voor opstartherstel.
Alleen als er tijdens het opstarten de tweede schijf gekozen wordt kan Windows verder gaan.
Het begin is er, maar helaas is de software RAID versie van Microsoft te beperkt om in te zetten voor de eigen systeemschijf.

Het goed aanmaken van een RAID set onder Linux is iets meer werk, maar dan werkt het wel zoals het hoort.

*Een aantal ideeën die ik nog kreeg tijdens het lezen van het materiaal;

-Hoe zou de snelheid zijn als i.p.v. een grote partitie meerdere kleinere partities gebruikt werden van RAID10,f2 met daarbovenop een LVM volume die deze weer combineert. Lezen iets langzamer en schrijven dan weer sneller?

-RAID10,2f emuleren door zelf de schijven in twee partities te verdelen en vervolgens elke eerste en tweede als RAID 1 te gebruiken. Dit zou een alternatief voor gebruik met Windows kunnen zijn.

 

Written by mnystrom

2015/02/17 at 22:56