LVM2 und RAID5 erweitern

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
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

[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
'Persönliche Werkzeuge