KVM Harde schijf indeling
Uit MediaServe Wiki
We willen onze grote harde schijven indelen in kleinere virtuele schijven voor het gebruik ervan, oftewel, we willen de schijven partitioneren. Het MBR (Master Boot Record) staat toe dat we niet meer dan vier primaire partities mogen gebruiken, of drie primaire partities en een zogenaamde extended partition. Op die extended partitie kunnen we vervolgens tientallen logische partities maken als we dat zouden willen.
Installatie van het besturingssysteem
We gaan uit van een praktijkvoorbeeld waarbij de fysieke server over zes schijven van 1 TB beschikt. We willen het besturingssysteem op een veilige manier installeren, maar zonder in te moeten leveren op de snelheid en flexibiliteit. We zetten alle RAID-functionaliteit in de server zelf uit. Vervolgens tijdens de installatie maken we op iedere van de zes schijven een aantal partities aan.
| 1 TB sda | 1 TB sdb | 1 TB sdc | 1 TB sdd | 1 TB sde | 1 TB sdf |
|---|---|---|---|---|---|
| 64 GB RAID (sda1) | 64 GB RAID (sdb1) | 64 GB RAID (sdc1) | 64 GB RAID (sdd1) | 64 GB RAID (sde1) | 64 GB RAID (sdf1) |
| RAID-1 array (md0) | RAID-1 array (md1) | RAID-1 array (md2) | |||
| ext4 file system (/) | ext4 file system (/usr/) | ext4 file system (/var/) | |||
| 64 GB RAID (sda2) | 64 GB RAID (sdb2) | 64 GB RAID (sdc2) | 64 GB RAID (sdd2) | 64 GB RAID (sde2) | 64 GB RAID (sdf2) |
| spare drive for md1 | spare drive for md2 | spare drive for md0 | spare drive for md2 | spare drive for md0 | spare drive for md1 |
| 4 GB swap (sda5) | 4 GB swap (sdb5) | 4 GB swap (sdc5) | 4 GB swap (sdd5) | 4 GB swap (sde5) | 4 GB swap (sdf5) |
| 868 GB RAID (sda6) | 868 GB RAID (sdb6) | 868 GB RAID (sdc6) | 868 GB RAID (sdd6) | 868 GB RAID (sde6) | 868 GB RAID (sdf6) |
| RAID-10 array (md3) | |||||
| Volume Group (/dev/storage) | |||||
| Logical Volume (/dev/storage/local) | |||||
| ext4 file system (/storage/local/) | |||||
| 2,6 TB Redundant Gluster Distributed File System | |||||
We hebben nu per harde schijf twee primaire partities aangemaakt voor het besturingssysteem. Door de spreiding van de RAID schijven wordt uitval van twee schijven getolereerd, hetzij in enkele gevallen de tijd tussen de uitval van beide schijven voldoende moet zijn voor een rebuild. Door op alle harde schijven een klein stukje swap te maken kunnen we hoge snelheden verwachten en zal dit niet beperkt blijven tot de snelheid van een enkele harde schijf. Hetzelfde geldt voor de RAID partities. Door de belangrijkste mounts (root, var en usr) te spreiden over alle schijven kunnen we optimale snelheid verwachten. We maken sda1 en sdb1 bootable.
De overige ruimte maken we een grote RAID-10 array van en deze mounten we als ext4 bestandssysteem op een Logical Volume. Deze gaan we later clusteren met het Gluster distributed file system. De keuze voor een Logical Volume ligt bij het feit dat deze achteraf eenvoudig uit te breiden of te verkleinen is.
Toevoegen van spare disks
We hebben het besturingssysteem op RAID-1 array's gebouwd, maar wanneer een harde schijf uitvalt zal deze vervangen moeten worden. Om risico's te beperken gaan we op alle schijven nog een extra 64 GB RAID partitie maken. Wanneer een harde schijf uitvalt kunnen we deze loze partities (spares) gebruiken om de array's van het besturingssysteem direct te rebuilden. We blijven even uitgaan van het vorige voorbeeld.
We hebben in ons voorbeeld vier RAID array's:
|
Bekijk een RAID array configuratie als volgt:
mdadm --detail /dev/md0
Je ziet nu als het goed is dat je twee harde schijven in je array hebt. We gaan hier een twee van onze zes spare schijven aan toevoegen:
/sbin/mdadm /dev/md0 -a /dev/sdc2 /sbin/mdadm /dev/md0 -a /dev/sde2
Dit doen we tevens voor de twee andere RAID array's en wel op zo'n manier dat iedere willekeurige volgorde van twee uitvallende schijven door het systeem wordt getolereerd.
/sbin/mdadm /dev/md1 -a /dev/sda2 /sbin/mdadm /dev/md1 -a /dev/sdf2 /sbin/mdadm /dev/md2 -a /dev/sdb2 /sbin/mdadm /dev/md2 -a /dev/sdd2
In de details van de array's zie je nu per array twee spare schijven vermeld staan:
mdadm --detail /dev/md[012]
Uitval van schijven wordt nu automatisch door de Linux kernel opgevangen.
Write Intent Bitmaps
Aangezien de hypervisor zelf niet veel schrijfacties nodig heeft, gaan we bitmaps activeren op de RAID arrays. Let op, dit doen we uitsluitend voor het host besturingssysteem. Dankzij de bitmaps kan een hypervisor snel terug online komen na een storing. Echter levert het activeren van de bitmaps wel een snelheidsverlies op, daarom gebruiken we deze functionaliteit niet voor de storage van de virtuele servers.
mdadm --grow --bitmap=internal /dev/md0 mdadm --grow --bitmap=internal /dev/md1 mdadm --grow --bitmap=internal /dev/md2