LVM: Unterschied zwischen den Versionen
Cbs (Diskussion | Beiträge) (→lvm loeschen) |
Cbs (Diskussion | Beiträge) |
||
Zeile 6: | Zeile 6: | ||
==pakete== | ==pakete== | ||
+ | |||
apt-get install lvm2 cryptsetup mdadm | apt-get install lvm2 cryptsetup mdadm | ||
+ | |||
==raid erzeugen== | ==raid erzeugen== | ||
+ | |||
mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1 | mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1 | ||
packt die platten sdb1 und sdc1 in ein '''raid1 (-l1)'''<br /> | packt die platten sdb1 und sdc1 in ein '''raid1 (-l1)'''<br /> | ||
Zeile 14: | Zeile 17: | ||
fuer ein raid5 waere das entsprechend: | fuer ein raid5 waere das entsprechend: | ||
mdadm -C /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1 | mdadm -C /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1 | ||
+ | |||
==lvm anlegen== | ==lvm anlegen== | ||
+ | |||
===pysical volume erzeugen=== | ===pysical volume erzeugen=== | ||
+ | |||
pvcreate /dev/md0 | pvcreate /dev/md0 | ||
oder ohne raid: | oder ohne raid: | ||
Zeile 22: | Zeile 28: | ||
fuegt die physical volumes hinzu. | fuegt die physical volumes hinzu. | ||
{{Achtung|bei der verwendung eines raid's muss das device /dev/mdX (z.B. pvcreate /dev/mdX) verwendet werden.}} | {{Achtung|bei der verwendung eines raid's muss das device /dev/mdX (z.B. pvcreate /dev/mdX) verwendet werden.}} | ||
+ | |||
===volume-group erzeugen=== | ===volume-group erzeugen=== | ||
+ | |||
vgcreate vg1 /dev/md0 | vgcreate vg1 /dev/md0 | ||
legt die volume-group 'vg1' an. name frei waehlbar | legt die volume-group 'vg1' an. name frei waehlbar | ||
+ | |||
===logisches volume erzeugen=== | ===logisches volume erzeugen=== | ||
+ | |||
lvcreate -L 10G -n <name (z.b. daten)> <vol-group (z.b. vg1)> | lvcreate -L 10G -n <name (z.b. daten)> <vol-group (z.b. vg1)> | ||
Zeile 35: | Zeile 45: | ||
Physical (encrypted) /dev/<vol-grp>/<name><br/> | Physical (encrypted) /dev/<vol-grp>/<name><br/> | ||
Logical (unencrypted) /dev/mapper/daten.decrypted<br/> | Logical (unencrypted) /dev/mapper/daten.decrypted<br/> | ||
+ | |||
===dateisystem erzeugen=== | ===dateisystem erzeugen=== | ||
+ | |||
mkfs.ext3 /dev/<vol-grp>/<name> | mkfs.ext3 /dev/<vol-grp>/<name> | ||
z.b.: | z.b.: | ||
Zeile 52: | Zeile 64: | ||
lvremove /dev/vg1/daten | lvremove /dev/vg1/daten | ||
</pre> | </pre> | ||
+ | |||
==lvm vergroessern== | ==lvm vergroessern== | ||
+ | |||
===groesse der volume-group anzeigen=== | ===groesse der volume-group anzeigen=== | ||
+ | |||
vgdisplay zeigt volume-group an, also verbleibender/benutzter speicher etc.<br/> | vgdisplay zeigt volume-group an, also verbleibender/benutzter speicher etc.<br/> | ||
ohne den optionalen parameter werden alle volume groups aufgelistet. | ohne den optionalen parameter werden alle volume groups aufgelistet. | ||
vgdisplay [vol-group (z.b. daten)] | vgdisplay [vol-group (z.b. daten)] | ||
+ | |||
===logisches volume vergroessern=== | ===logisches volume vergroessern=== | ||
+ | |||
lvextend -L +100G /dev/vg1/daten | lvextend -L +100G /dev/vg1/daten | ||
+ | |||
===dm-crypt-container vergroessern=== | ===dm-crypt-container vergroessern=== | ||
+ | |||
'''wenn verschluesselt,''' dann den dmcrypt-container vergroessern | '''wenn verschluesselt,''' dann den dmcrypt-container vergroessern | ||
cryptsetup resize daten.decrypted | cryptsetup resize daten.decrypted | ||
+ | |||
===dateisystem vergroessern=== | ===dateisystem vergroessern=== | ||
+ | |||
danach das filesystem vergroessern... | danach das filesystem vergroessern... | ||
resize2fs /dev/vg1/daten | resize2fs /dev/vg1/daten | ||
Zeile 93: | Zeile 114: | ||
lvreduce -L-100G /dev/mapper/daten.decrypted | lvreduce -L-100G /dev/mapper/daten.decrypted | ||
mount /dev/mapper/daten.decrypted /dest/path | mount /dev/mapper/daten.decrypted /dest/path | ||
− | |||
Zeile 106: | Zeile 126: | ||
wenn man (wie ich) 3 gleiche platten eingebaut hat, wie finde ich jetzt die defekte?<br/> | wenn man (wie ich) 3 gleiche platten eingebaut hat, wie finde ich jetzt die defekte?<br/> | ||
ich weiss, es ist sdd, aber welche physikalische platte ist das? | ich weiss, es ist sdd, aber welche physikalische platte ist das? | ||
+ | |||
sdparm -i /dev/sdd | sdparm -i /dev/sdd | ||
... | ... | ||
ST31000340AS 9QJ0W04D | ST31000340AS 9QJ0W04D | ||
... | ... | ||
+ | |||
oder man verwendet lshal | oder man verwendet lshal | ||
+ | |||
lshal | less | lshal | less | ||
+ | |||
nun nach der defekten platte, also 'sdd' suchen<br/> | nun nach der defekten platte, also 'sdd' suchen<br/> | ||
dann findet man ein paar zeilen weiter unten etwa sowas: | dann findet man ein paar zeilen weiter unten etwa sowas: | ||
+ | |||
... | ... | ||
storage.serial = 'SATA_ST31000340AS_9QJ0W04D' (string) | storage.serial = 'SATA_ST31000340AS_9QJ0W04D' (string) | ||
... | ... | ||
+ | |||
und hat damit die seriennummer der platte 9QJ0W04D <br/><br/> | und hat damit die seriennummer der platte 9QJ0W04D <br/><br/> | ||
nun also platte raus... | nun also platte raus... | ||
Zeile 147: | Zeile 173: | ||
[>....................] recovery = 4.1% (40587520/976761408) finish=227.8min | [>....................] recovery = 4.1% (40587520/976761408) finish=227.8min | ||
... | ... | ||
+ | |||
==Raid-Status== | ==Raid-Status== | ||
+ | |||
<pre> | <pre> | ||
cat /proc/mdstat | cat /proc/mdstat |
Version vom 29. November 2012, 10:09 Uhr
Inhaltsverzeichnis
future comments
since luks is outdated:
in future use eCryptfs https://launchpad.net/ecryptfs
pakete
apt-get install lvm2 cryptsetup mdadm
raid erzeugen
mdadm -C /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
packt die platten sdb1 und sdc1 in ein raid1 (-l1)
-n2 = 2 raid-member
fuer ein raid5 waere das entsprechend:
mdadm -C /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1
lvm anlegen
pysical volume erzeugen
pvcreate /dev/md0
oder ohne raid:
pvcreate /dev/hda5 /dev/hdc1 /dev/sda2
fuegt die physical volumes hinzu.
bei der verwendung eines raid's muss das device /dev/mdX (z.B. pvcreate /dev/mdX) verwendet werden. |
volume-group erzeugen
vgcreate vg1 /dev/md0
legt die volume-group 'vg1' an. name frei waehlbar
logisches volume erzeugen
lvcreate -L 10G -n <name (z.b. daten)> <vol-group (z.b. vg1)>
wenn verschluesselt werden soll:
cryptsetup -c aes-cbc-essiv:sha256 -y -s256 luksFormat /dev/<vol-grp>/<name> cryptsetup luksOpen /dev/<vol-grp>/<name> daten.decrypted
Physical (encrypted) /dev/<vol-grp>/<name>
Logical (unencrypted) /dev/mapper/daten.decrypted
dateisystem erzeugen
mkfs.ext3 /dev/<vol-grp>/<name>
z.b.:
mkfs.ext3 /dev/vg1/daten
oder falls verschluesselt:
mkfs.ext3 /dev/mapper/daten.decrypted
lvm loeschen
umount [PARTITION] cryptsetup luksClose daten.decrypted dmsetup remove /dev/mapper/vg1-daten lvremove /dev/vg1/daten
lvm vergroessern
groesse der volume-group anzeigen
vgdisplay zeigt volume-group an, also verbleibender/benutzter speicher etc.
ohne den optionalen parameter werden alle volume groups aufgelistet.
vgdisplay [vol-group (z.b. daten)]
logisches volume vergroessern
lvextend -L +100G /dev/vg1/daten
dm-crypt-container vergroessern
wenn verschluesselt, dann den dmcrypt-container vergroessern
cryptsetup resize daten.decrypted
dateisystem vergroessern
danach das filesystem vergroessern...
resize2fs /dev/vg1/daten
wenn verschluesselt:
resize2fs /dev/mapper/daten.decrypted
LVM verkleinern
Reihenfolge beachten um datenverlust zu vermeiden!!! ANYWAY: BE SURE YOU HAVE A BACKUP!! |
nachdem wir die 100G abgezogen haben bleiben noch 50GB in der partition.
diese information ist wichtig fuer die berechnung des wertes am ende des resize2fs commandos
dies ist die angabe der groesse in bloecken.
- dateisystem verkleinern
- ggf. crypted container verkleinern
- lv verkleinern
umount /dev/mapper/daten.decrypted e2fsck -f /dev/mapper/daten.decrypted resize2fs /dev/mapper/daten.decrypted 51200000
wenn verschluesselt nun:
cryptsetup resize daten.decrypted
lvreduce -L-100G /dev/mapper/daten.decrypted mount /dev/mapper/daten.decrypted /dest/path
Platte austauschen
alte platte raus
defekte platte aus raid entfernen
mdadm --remove /dev/md0 /dev/sdd
wenn man (wie ich) 3 gleiche platten eingebaut hat, wie finde ich jetzt die defekte?
ich weiss, es ist sdd, aber welche physikalische platte ist das?
sdparm -i /dev/sdd ... ST31000340AS 9QJ0W04D ...
oder man verwendet lshal
lshal | less
nun nach der defekten platte, also 'sdd' suchen
dann findet man ein paar zeilen weiter unten etwa sowas:
... storage.serial = 'SATA_ST31000340AS_9QJ0W04D' (string) ...
und hat damit die seriennummer der platte 9QJ0W04D
nun also platte raus...
neue platte rein
Falls noetig Partitionstabelle von platte sda auf neue platte sdb uebertragen:
sfdisk -d /dev/sda | sfdisk /dev/sdb
ich denke allerdings ein raid aus platten-partitionen ist eher sub-optimal!
ACHTUNG: bei platten die bereits als raid in benutzung waren! |
das magig-flag am anfang der raid-partition muss ueberschrieben werden:
dd if=/dev/zero of=/dev/sdb5 bs=1024 count=1000
bzw:
dd if=/dev/zero of=/dev/sdd bs=1024 count=1000
raid-partition zu mdX hinzufuegen bzw. ganzes device:
mdadm /dev/md0 -a /dev/sdb1
bzw:
mdadm /dev/md0 -a /dev/sdd
replication abwarten:
watch 'cat /proc/mdstat'
... [>....................] recovery = 4.1% (40587520/976761408) finish=227.8min ...
Raid-Status
cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb5[1] sda5[0] 155999040 blocks [2/2] [UU] unused devices: <none>
ausgabe bei inconsitenz oder fehlender platte:
cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda5[0] 155999040 blocks [2/1] [U_] unused devices: <none>
mit folgendem kommando kann wird die ausgabe staendig refreshed:
watch cat /proc/mdstat
LVM Snapshot/Backup
erstelle ein backup eines logischen volumes.
dies wird hauptsaechlich zum backup von mysql benutzt. ich fuehre also die
schritte, die innerhalb von mysql benoetigt werden, hier mit auf...
mysql-datenbanken locken damit die files consistent sind:
mysql> FLUSH TABLES WITH READ LOCK
dies kann einen moment dauern.
wenn das kommando durch ist, die mysql-connection offen lassen!
nun:
lvcreate -L16G -s -n dbbackup /dev/vg1/mysqlPartition
dies erzeugt eine kopie der lvm-partition die die datenbanken enthalten.
bei der groesse (-L16G) muss man natuerlich darauf achten dass partition f. die kopie
gross genug ist um die daten in /dev/vg1/mysqlPartition aufzunehmen.
danach haben wir eine kopie unserer partition /dev/vg1/mysqlPartition unter /dev/vg1/dbbackup
zurueck zur datenbank und tabellen frei geben.
falls die DB repliziert ist muss man zusaetzlich noch die log-position sichern:
mysql> SHOW MASTER STATUS; ... mysql> UNLOCK TABLES;
nun kann man ganz gemuetlich die backup-partition mounten und die daten kopieren.
die datenbank laeuft derweil ganz normal weiter...
mount /dev/vg1/dbbackup /mnt/backup cp /mnt/backup/mysql/* /path/to/backups
or whatever you want...
if ready, unmount the partition and destroy it...
umount /mnt/backup lvremove /dev/vg1/dbbackup
thats it! ;-)