Mit ‘lvm2’ Tagged einträge

LVM2 RAID vs mdadm RAID 0, 5, 10

Samstag, August 22nd, 2015

Ich habe mir 4 neue HGST Ultrastar A7K3000 2TB SATA6 Festplatten für meine Server gegönnt. Zum Vergleichen habe ich ein paar Tests mit LVM und mdadm gemacht.

Dafür habe ich je ein 5GB großes Setup gebaut und mit dd die Volumen erst gelesen und dann beschrieben. Dies habe ich in dieser Reihenfolge gemacht, um sicherzugehen, dass keine Daten aus dem cash gelesen werden.

Dabei bin ich zu folgenden spannenden Ergebnissen gekommen:

5GB READ/s READ/MB WRITE/s WRITE/MB
LVM RAID0 9,97195 s 538 MB/s 9,64365 s 557 MB/s
LVM RAID5 31,1128 s 173 MB/s 67,4213 s 79,7 MB/s
LVM RAID10 18,661 s 288 MB/s 26,5428 s 202 MB/s
MDADM RAID0 9,81575 s 547 MB/s 9,5395 s 563 MB/s
MDADM RAID5 20,528 s 260 MB/s 24,9739 s 214 MB/s
MDADM RAID10 17,5713 s 305 MB/s 19,529 s 275 MB/s

Mein Fazit: LVM ist doch deutlich langsamer als mdadm. Erschrocken hat mich die 2,6 fach schlechtere Schreibperformance bei LVM Raid5. Überrascht hat mich auch, dass ein mdadm raid10 fast die Nativ mögliche Geschmeidigkeit, 1/2 facht von reid0, erreicht hat.

Für die Testbedienungen habe ich ein aktuelles Ubuntu 14.04 LTS mit lvm2 2.02.98-6ubuntu2 und mdadm 3.2.5-5ubuntu4.2 verwendet.
(mehr …)

fdisk Festplatten vergrößert

Dienstag, August 11th, 2015

Ab und zu kommt es vor das bei VMs Festplatten vergrößert werden müssen. Bei den alten Systemen ohne LVM im Gastsystem muss dies leider noch offline geschehen.
Zur Sicherheit sollte man ein snappshot des LVs machen und/oder den MBR zuvor sichern.

lvcreate -L 500M --snapshot -n mysnap /dev/vg/lv

Zunächst wird das LV auf dem Träger System vergrößert:

# lvresize -L +20G vg/lv
Size of logical volume vg/lv changed from 80,00 GiB (20480 extents) to 100,00 GiB (25600 extents).
Logical volume lv successfully resized

Danach kann man den MBR neu anlegen. Hier ist auf folgende Fehler Meldung in fdisk zu achten:

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

bzw. erschient nach dem anlegen der Partition folgender hinweise, welcher auch auf den falschen Modus hinweist.
Partition 2 does not start on physical sector boundary.

Dann muss wie im Beispiel fdisk mit -c für den DOS-compatible Modus angegeben werden:

fdisk -c /dev/mapper/vg-lv

Befehl (m für Hilfe): d
Partitionsnummer (1-4): 2

Befehl (m für Hilfe): d
Partition 1 ausgewählt

Befehl (m für Hilfe): n
Befehl Aktion
e Erweiterte
p Primäre Partition (1-4)
p
Partitionsnummer (1-4): 1
Erster Zylinder (1-13054, Vorgabe: 1): 1
Last Zylinder, +Zylinder or +size{K,M,G} (1-13054, Vorgabe: 13054): +95G

Zunächst wurden die Vorhandenen Partitionen gelöscht. Dabei braucht man keine Sorge haben das alle Daten weg sind. (Das Löschen der Daten würde wesentlich länger dauern)
Dann wird eine „neue“ größere Partition angelegt.


Befehl (m für Hilfe): p

Platte /dev/mapper/vg-lv: 107.4 GByte, 107374182400 Byte
255 Köpfe, 63 Sektoren/Spur, 13054 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 524288 bytes
Disk identifier: 0x00059ca1

Gerät boot. Anfang Ende Blöcke Id System
/dev/mapper/vg-lvp1 1 12402 99617792 83 Linux

Befehl (m für Hilfe): n
Befehl Aktion
e Erweiterte
p Primäre Partition (1-4)
p
Partitionsnummer (1-4): 2
Erster Zylinder (12402-13054, Vorgabe: 12402):
Benutze den Standardwert 12402
Last Zylinder, +Zylinder or +size{K,M,G} (12402-13054, Vorgabe: 13054):
Benutze den Standardwert 13054

Nach einer Überprüfung der Partition habe ich auch die zweite Partition über den Rest der Festplatte angelegt.


Befehl (m für Hilfe): a
Partitionsnummer (1-4): 1

Befehl (m für Hilfe): t
Partitionsnummer (1-4): 2
Hex code (L um eine Liste anzuzeigen): 82
Der Dateisystemtyp der Partition 2 ist nun 82 (Linux Swap / Solaris)

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert!

Rufe ioctl() um Partitionstabelle neu einzulesen.

WARNING: Re-reading the partition table failed with error 22: Das Argument ist ungültig.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Synchronisiere Platten.

Anschließend habe ich noch den Boot Modi a und die Art der Partition 82 angegeben. Nur wenn man sich wirklich Sicher ist sollte man w zum Speichen angeben.

# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Das Gerät oder die Ressource ist belegt). As a result, it may not reflect all of your changes until after reboot.

Um den Kernel noch bekannt zugeben, dass es eine neue Partitionstabelle gibt, muss einmal partprobe ausgeführt werden. Alternativ kann man auch die VM Booten und das vergrößern Online durchführen. (Achtung: dann sollte die Partition aber im Readonly Modus mountet sein)

# resize2fs -p /dev/mapper/vg-lv
resize2fs 1.41.12 (17-May-2010)
Bitte zuerst »e2fsck -f /dev/mapper/vg-lv« laufen lassen.

# e2fsck -f -y /dev/mapper/vg-lv
...
/dev/mapper/vg-lv: ***** DATEISYSTEM WURDE VERÄNDERT *****
/dev/mapper/vg-lv: 512061/4825088 Dateien (0.1% nicht zusammenhängend), 18926485/19922384 Blöcke

# resize2fs -p /dev/mapper/vg-lv
resize2fs 1.41.12 (17-May-2010)
Die Grösse des Dateisystems auf /dev/mapper/vg-lv wird auf 24904448 (4k) Blöcke geändert.

Start von Durchgang 1 (max = 153)
Vergrößere die Inode-TabelleXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Das Dateisystem auf /dev/mapper/vg-lv ist nun 24904448 Blöcke groß.

USB Platte mit LVM und mdadm Raid unsaber ausgehangen

Dienstag, Oktober 14th, 2014

Nach dem unsauberen entfernen einer USB Platte mit LVM und mdadm Raid kam es beim aufrufen jeglicher lvm Kommandos zu folgenden Fehlern:

# vgscan
Reading all physical volumes. This may take a while...
/dev/md0: read failed after 0 of 4096 at 0: Input/output error
/dev/md0: read failed after 0 of 4096 at 9997975552: Input/output error
/dev/md0: read failed after 0 of 4096 at 9998090240: Input/output error
/dev/md0: read failed after 0 of 4096 at 4096: Input/output error
/dev/dm-23: read failed after 0 of 4096 at 45097091072: Input/output error
/dev/dm-23: read failed after 0 of 4096 at 45097148416: Input/output error
/dev/dm-23: read failed after 0 of 4096 at 0: Input/output error
/dev/dm-23: read failed after 0 of 4096 at 4096: Input/output error
Found volume group "vg01" using metadata type lvm2

Mittels dmsetup kann man die lvs löschen. Die fehlen lvs kann man mittels ls auflisten und mit remove wieder löschen:
# dmsetup ls | grep ^vg01
vg01-lv66_hdd (254, 23)
# dmsetup remove vg01-lv66_hdd

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd1[2]
9763768 blocks super 1.2 [2/1] [_U]

Das raid device konnte man mittels mdadm dann einfach Stoppen. Siehe dazu auch: mdadm –stop

mdadm –stop

Montag, September 1st, 2014

Ein Raid kann natürlich nicht gestoppt werden, wenn es noch verwendet wird. In meinem Fall:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[1]
966994808 blocks super 1.2 [2/1] [_U]

unused devices: < none >

# mdadm --stop /dev/md0
mdadm: failed to stop array /dev/md0: Device or resource busy
Perhaps a running process, mounted filesystem or active volume group?

Eigentlich war das System nicht mehr gemountet. Nur noch das LVM war auf der Platte in Verwendung. Dafür musste ich das VG erst mal stoppen:
# vgchange -a n vg0
0 logical volume(s) in volume group "vg0" now active

Dann ging es auch mit dem Aushängen der Platte.
# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

lvs nicht da

Montag, Juni 30th, 2014

Beim booten eines Servers standen die Logical Volume nicht zur Verfügung. Beim Aufrufen von lvs kam folgende fehlermeldung die einen hinwies auf die volle Platte gab.
# lvs
No volume groups found
/etc/lvm/cache/.cache.tmp: write error failed: Auf dem Gerät ist kein Speicherplatz mehr verfügbar

# ls /etc/lvm/cache/.
./ ../ .cache .cache.tmp

Nach dem aufräumen des Root-Filesystems muss man erst das pv nach vgs durchsuchen.
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2

# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv1 vg1 -wi--- 100,00g

Anschließend musste man das vg aber noch starten.
# vgchange -a y vg1
7 logical volume(s) in volume group "vg1" now active