LVM2 und RAID5 erweitern
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
Inhaltsverzeichnis |
[Bearbeiten] Einleitung
Diese Seite beschreibt, wie man einen RAID5-Verbund erweitert, sowie das LVM2 Metadevice, welches den RAID-Verbund nutzt.
[Bearbeiten] LVM Vorteile
LVM2 nutze ich auch auf Fileservern, da es eine einfache Dateisystemerweiterung mit einfacher Wartung kombiniert. Die (leichten) Performanceeinbußen nehme ich dafür gern in Kauf.
Die Vorteile zeigen sich, wenn man "mal schnell" eine Partition um ein paar Megabyte/Gigabyte erweitern muß. Genauso schnell kann man noch eine fehlende Partition hinzufügen, ohne daß man auf Löcher zwischen den Partitionen achten muß.
Auch die gemeinsame Nutzung einer Festplatte mit Windowspartitionen und LVM2 Physical Devices ist durch LVM einfacher geworden, da man ohne das Umpartitionieren der Linuxpartitionen etwas Platz vom LVM für eine Windowspartition abgeben kann.
[Bearbeiten] Weitere Optionen
- Es gibt auch eine Möglichkeit, RAID-Festplatten direkt zu partitionieren (dev/md/{1,2,3}), ohne einen Umweg über LVM machen zu müssen. Ich habe diese Möglichkeit aber nicht angewandt.
- In diesem HOWTO wird mdadm und der Kernel >=2.6.17 genutzt. Es gibt auch ein Tool "raidreconf" von Jakob Østergaard, von dem ich z.Z. aber nur abraten kann (sorry Jakob!). Ein Testverbund mit RAID5 wurde bei der Erweiterung in 3 Versuchen jedesmal zerstört. Der Ansatz mit dem Linuxkernel und mdadm hingegen verlief fehlerfrei.
[Bearbeiten] WICHTIG
Wurde ein Backup der wichtigen Daten gemacht? Wenn nicht, bitte vor dem Weiterlesen ein Backup erstellen. Ein RAID-Verbund erspart einem nicht ein Backup zu erstellen. rm -rf /somepath/<Leerzeichen> * oder mke2fs statt e2fsck ist schnell mal vertippt. Siehe dazu auch http://www.tldp.org/HOWTO/Software-RAID-HOWTO-10.html#ss10.2
Der Author des HOWTOs ist nicht verantwortlich für verloren gegangene Daten, kaputte Hardware oder Nächte ohne Schlaf. Die Benutzung dieses HOWTOs geschieht auf eigene Gefahr. Alle Beispiele in diesem Dokument sind genau dies - Beispiele. Sie erheben keinen Anspruch auf Vollständigkeit oder Korrektheit.
[Bearbeiten] Voraussetzungen
- Linux Kernel >= 2.6.17 (emerge -pv >=gentoo-sources-2.6.17)
- mdadm >= 2.5.2 (emerge -pv >=sys-fs/mdadm-2.5.2)
- LVM2 >= 2.02.06 (emerge -pv >=sys-fs/lvm2-2.02.06)
- resize2fs
Im Kernel muß die Unterstützung für MD und RAID5 angegeben, sowie das Erweitern von RAID5 Devices einkompiliert sein. Die folgenden Beispiele sind von Kernel 2.6.18.
/usr/src/linux/.config
# # Multi-device support (RAID and LVM) # CONFIG_MD=y CONFIG_BLK_DEV_MD=m .. CONFIG_MD_RAID456=m CONFIG_MD_RAID5_RESHAPE=y .. CONFIG_BLK_DEV_DM=m
make menuconfig:
| Linux Kernel Configuration: Devices |
Device Drivers ---> Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) <M> RAID support <M> RAID-4/RAID-5/RAID-6 mode [*] Support adding drives to a raid-5 array (experimental) <M> Device mapper support |
Der RAID5-Verbund ist schon fertig assembliert und in Produktion. Wie man das macht steht hier
- http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
- Raid 5 Verbund mit mdadm erstellen
- http://gentoo-wiki.com/Installing_on_LVM2_And_Raid5
[Bearbeiten] Aktion
[Bearbeiten] vorher
cat /proc/mdstat, fdisk -l und pvdisplay zeigen die Größe und den Status des RAID-Device an.
mycomputer ~ # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda1[0] hdc1[2] hdb1[1]
487424 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
mycomputer ~ # fdisk -l /dev/md0 Platte /dev/md0: 499.1 MByte, 499122176 Byte 2 Köpfe, 4 Sektoren/Spuren, 121856 Zylinder Einheiten = Zylinder von 8 × 512 = 4096 Bytes Festplatte /dev/md0 enthält keine gültige Partitionstabelle
mycomputer ~ # pvdisplay --- Physical volume --- PV Name /dev/md0 VG Name raidvol PV Size 476 MB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 119 Free PE 3 Allocated PE 116 PV UUID DVYSgN-poHd-9Xxb-gQ86-z5lo-ecCD-uQwLTq
[Bearbeiten] vergrößern
Die neue Platte muß dem RAID-Verbund bekannt gegeben werden.
mdadm /dev/md0 --add /dev/hdd1
Hier sieht man, daß die neue Platte als Spare dient.
mycomputer ~ # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda1[0] hdd1[3](S) hdc1[2] hdb1[1]
487424 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
In dieser Konfiguration steht sie bei einem plötzlichen Ausfall einer Festplatte dem RAID-Verbund als Ersatz zur Verfügung.
Jetzt kann der RAID Verbund vergrößert werden. Dabei werden alle Stripes des RAID5 auf allen Platten neu verteilt. Dieser Vorgang dauert länger als ein einfaches Neusynchronisieren einer neu eingebundenen Platte und kann viele Minuten bis mehrere Stunden inanspruch nehmen.
mdadm --grow /dev/md0 --raid-disks=4
Warten! Der neue Platz steht dem Raidverbund erst nach dem Synchronisieren zur Verfügung. Der Fortschritt kann mit dem Befehl cat /proc/mdstat beobachtet werden. Die ungefähre Zeit der Fertigstellung wird dabei mit angezeigt. Wenn der --grow Befehl fertig ist, sieht es ungefähr so aus:
mycomputer ~ # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda1[0] hdd1[3] hdc1[2] hdb1[1]
731136 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
Ab jetzt kann dem LVM die geänderte Größe der Raid-Partition bekannt gegeben werden.
pvresize /dev/md0 Physical volume "/dev/md0" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
Jetzt steht der gesamte Platz der Raidpartition dem LVM zur Verfügung. Es können neue Partitionen angelegt werden oder alte erweitert werden. (Siehe auch http://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html)
umount /dev/raidvol/mypart
e2fsck -t -f /dev/raidvol/mypart
lvresize -L +200M /dev/raidvol/mypart Extending logical volume samba to 612.00 MB Logical volume mypart successfully resized
Wegen der Größe von chunk=64k (s.o. "cat /proc/mdstat") wird Stride mit 16 angegeben.
resize2fs -S 16 -p /dev/raidvol/mypart
Der Strideparameter (-S16) ist nur nötig, wenn bei der letzten Formatierung der Partition kein Stride angegeben wurde. Mit dem Stride kann der Durchsatz einer ext2/ext3 Partition auf einem RAID5 Laufwerk verbessert werden. Wenn der Parameter das letzte Mal schon angegeben wurde, kann die Option weggelassen werden. In diesem Fall ermittelt resize2fs die Größe heuristisch. (siehe auch http://www.linuxhaven.de/dlhp/HOWTO/DE-Software-RAID-HOWTO-8.html oder http://www.tldp.org/HOWTO/Software-RAID-HOWTO-5.html#ss5.11)
mount /dev/raidvol/mypart df -m /mynewpartition
[Bearbeiten] nachher
mycomputer ~ # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda1[0] hdd1[3] hdc1[2] hdb1[1]
731136 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
mycomputer ~ # fdisk -l /dev/md0 Platte /dev/md0: 714 MByte, 748683264 Byte 2 Köpfe, 4 Sektoren/Spuren, 182784 Zylinder Einheiten = Zylinder von 8 × 512 = 4096 Bytes Festplatte /dev/md0 enthält keine gültige Partitionstabelle
mycomputer ~ # pvdisplay /dev/md0 --- Physical volume --- PV Name /dev/md0 VG Name raidvol PV Size 714 MB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 178 Free PE 62 Allocated PE 116 PV UUID DVYSgN-poHd-9Xxb-gQ86-z5lo-ecCD-uQwLTq
