LVM (Logikai kötetkezelő)
Az LVM (Logical Volume Manager) lehetővé teszi az rendszergazdák számára, hogy meta eszközöket hozzanak létre, amelyek absztrakciós réteget biztosítanak a fájlrendszer és az alatta használt fizikai tároló között. A meta eszközök (amelyeken a fájlrendszerek találhatók) logikai kötetek, amelyek tárhelyet használnak a kötetcsoportoknak nevezett tárolói csoportokból. A kötetcsoport egy vagy több fizikai kötetből kerül kialakításra, amelyek azok a valódi eszközök, amelyeken az adatok tárolása történik.
A fizikai kötetek lehetnek partíciók, teljes merevlemezek, amelyek JBOD-ként (Just a Bunch Of Disks - Csak egy rakás lemez), RAID rendszerek, iSCSI, Fibre Channel, eSATA stb. vannak csoportosítva.
Telepítés
Az LVM-et kernelszintű illesztőprogramok és felhasználói területalkalmazások egyaránt használják az LVM-konfiguráció kezeléséhez.
Kernel
Aktiválja a következő kernelbeállításokat:
Device Drivers --->
Multiple devices driver support (RAID and LVM) --->
<*> Device mapper support
<*> Crypt target support
<*> Snapshot target
<*> Mirror target
<*> Multipath target
<*> I/O Path Selector based on the number of in-flight I/Os
<*> I/O Path Selector based on the service time
Nem mindent kell engedélyezni. Egyes opciókra csak az LVM2 pillanatfelvételek és LVM2 vékony pillanatfelvételek, LVM2 tükrözött kötetek, LVM2 RAID 0/Stripe készlet és titkosítás esetén van szükség.
USE jelölőzászlók
USE flags for sys-fs/lvm2 User-land utilities for LVM2 (device-mapper) software
+udev
|
Enable virtual/udev integration (device discovery, power and storage device support, etc) |
lvm
|
Build all of LVM2 including daemons and tools like lvchange, not just the device-mapper library (for other packages to use). If your system uses LVM2 for managing disks and partitions, enable this flag. |
readline
|
Enable support for libreadline, a GNU line-editing library that almost everyone wants |
sanlock
|
Enable lvmlockd with support for sanlock |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
static
|
!!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically |
static-libs
|
Build static versions of dynamic libraries as well |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
thin
|
Support for thin volumes |
valgrind
|
Enable annotations for accuracy. May slow down runtime slightly. Safe to use even if not currently using dev-debug/valgrind |
Az összes, az lvm, pv, vg vagy lv* parancsok használatát igénylő utasítás esetén ebben a cikkben, valamint az LVM kötetek eléréséhez az
lvm
USE jelölőzászlót engedélyezni kell.Emerge
Győződjön meg arról, hogy valóban engedélyezve van az lvm USE jelölőzászló a sys-fs/lvm2 szoftvercsomag számára:
/etc/portage/package.use
# LVM szolgáltatásnak és a kapcsolódó eszközök támogatásának engedélyezése.
sys-fs/lvm2 lvm
A USE jelölőzászlók áttekintése után kérje meg a Portage szoftvercsomag kezelőt, hogy telepítse a sys-fs/lvm2 szoftvercsomagot:
root #
emerge --ask sys-fs/lvm2
Beállítás
Az LVM beállítása több szinten történik:
- LV, PV és VG kezelés a kezelőeszközökön keresztül.
- Az LVM alrendszer finomhangolása a beállításfájl segítségével.
- Szolgáltatáskezelés a disztribúció szintjén.
- Beállítás kezdeti RAM fájlrendszeren (initramfs) keresztül.
A logikai és fizikai kötetek, valamint a kötetcsoportok kezelése a Használat fejezetben található.
LVM beállításfájl
Az LVM egy kiterjedt beállításfájllal rendelkezik a /etc/lvm/lvm.conf helyen. A legtöbb felhasználónak nem kell módosítania a beállításokat ebben a fájlban ahhoz, hogy elkezdje használni az LVM szolgáltatást.
Szolgáltatáskezelés
A Gentoo az LVM szolgáltatást biztosítja, amely automatikusan észleli és aktiválja a kötetcsoportokat és a logikai köteteket.
A szolgáltatás az init rendszer segítségével kezelhető.
openrc
LVM manuális elindításához:
root #
/etc/init.d/lvm start
LVM elindítása az operációs rendszer elindulásakor:
root #
rc-update add lvm boot
systemd
Az lvm manuális elindításához:
root #
systemctl start lvm2-monitor.service
Az lvm elindítása az operációs rendszert indulásakor:
root #
systemctl enable lvm2-monitor.service
LVM használata initramfs fájlban
A legtöbb bootloader nem tud közvetlenül LVM-ről indítani. Sem a GRUB Legacy, sem a LILO nem képes erre. A GRUB2 képes LVM lineáris logikai kötetről, tükrözött logikai kötetről és esetleg bizonyos típusú RAID logikai kötetről indítani. Jelenleg egyetlen bootloader sem támogatja a vékony logikai köteteket.
Ezért ajánlott egy nem-LVM /boot partíciót használni, és az LVM gyökérkönyvtárat egy initramfs segítségével felcsatolni. Az initramfs bináris képfájl automatikusan létrehozható a Genkernel, Dracut segítségével, illetve kézi úton mint egyedi initramfs bináris képfájl.
- A genkernel minden típusról képes indítani, kivéve a vékony köteteket (mivel sem nem hozza létre, sem nem másolja a sys-block/thin-provisioning-tools binárisokat a build host számítógéptől), és talán a RAID10-et (a RAID10 támogatás LVM2 2.02.98-at igényel, de a genkernel 2.02.89-et épít, azonban ha statikus binárisok elérhetőek, akkor azokat másolhatja).
- A dracut minden típusról indíthat, de csak akkor tartalmaz vékony támogatást az initramfs-ben, ha a futó host számítógépnek vékony gyökérkönyvtára van.
Genkernel
Telepítse az sys-kernel/genkernel szoftvercsomagot. Az "static" USE jelölőzászlót szintén engedélyezheti az sys-fs/lvm2 szoftvercsomagon, hogy a genkernel az operációs rendszeren található binárisokat használja (ellenkező esetben saját privát másolatot fog készíteni). Az alábbi példa csak egy initramfs fájlt fog létrehozni (nem egy teljes kernel) és engedélyezi az LVM támogatást.
root #
genkernel --lvm initramfs
A genkernel man súgója más opciókat is ismertet a rendszerkövetelményektől függően.
Az initrd szoftvernek paraméterekre lesz szüksége, hogy megmondja, miként indítsa el az LVM-et, és ezeket ugyanúgy kell megadni, mint a többi kernelparamétert. Például:
/etc/default/grub
A dolvm hozzáadása kernelindítási paraméterkéntGRUB_CMDLINE_LINUX="dolvm"
Dracut
A sys-kernel/dracut szoftvercsomag a RedHat projektről került átültetésre, és hasonló eszközként szolgál egy initramfs fájl létrehozására. Részletekért tekintse meg a Dracut oldalt. Általában a következő parancs egy használható alapértelmezett initramfs fájlt hoz létre.
root #
dracut -a lvm
Az initrd szoftvernek paraméterekre lesz szüksége, hogy megmondja, miként indítsa el az LVM-et, és ezeket ugyanúgy kell megadni, mint a többi kernelparamétert. Például:
/etc/default/grub
LVM támogatás hozzáadása a kernel boot paraméterekhezGRUB_CMDLINE_LINUX="rd.lvm.vg=vol00"
A dracut LVM opcióinak átfogó listájáért kérjük, tekintse meg a Dracut kézikönyv megfelelő szakaszát.
Használat
Az LVM három különböző szinten szervezi a tárolást, az alábbiak szerint:
- A merevlemezek, partíciók, RAID rendszerek vagy más adathordozó eszközök fizikai kötetekké (PV) inicializálódnak.
- A fizikai kötetek (PV) kötetcsoportokba (VG) szerveződnek.
- A logikai kötetek (LV) a kötetcsoportokban (VG) vannak kezelve.
Fizikai kötet (Physical Volume, PV)
A fizikai kötetek azok a tényleges hardverek vagy adathordozó rendszerek, amelyekre az LVM építkezik.
Particionálás
Külön partíciók használata adathordozó kötetcsoportokhoz csak akkor szükséges, ha nem cél az egész adathordozó használata egyetlen LVM kötetcsoport számára. Ha az egész adathordozó felhasználható, akkor ezt a lépést átugorhatja, és a teljes adathordozót inicializálja fizikai kötetként.
Az LVM partíció típusa 43 (Linux LVM).
Például a típus beállításához a fdisk használatával egy partícióra a /dev/sda adathordozón:
root #
fdisk /dev/sda
Az fdisk használatakor hozzon létre partíciókat a n billentyűgomb megnyomásával, majd a partíció típusát változtassa meg a t billentyűgomb segítségével 43 értékre.
Fizikai kötet létrehozása
Fizikai kötetek a pvcreate parancs segítségével hozhatók létre és inicializálhatók.
Például a következő parancs fizikai kötetet hoz létre a /dev/sda és /dev/sdb adathordozó elsődleges partícióján:
root #
pvcreate /dev/sd[ab]1
Fizikai kötet kilistázása
A pvdisplay parancs segítségével áttekintést lehet kapni az operációs rendszeren lévő összes aktív fizikai kötetről.
root #
pvdisplay
--- Physical volume --- PV Name /dev/sda1 VG Name volgrp PV Size 160.01 GiB / not usable 2.31 MiB Allocatable yes PE Size 4.00 MiB Total PE 40962 Free PE 4098 Allocated PE 36864 PV UUID 3WHAz3-dh4r-RJ0E-5o6T-9Dbs-4xLe-inVwcV --- Physical volume --- PV Name /dev/sdb1 VG Name volgrp PV Size 160.01 GiB / not usable 2.31 MiB Allocatable yes PE Size 4.00 MiB Total PE 40962 Free PE 40962 Allocated PE 0 PV UUID b031x0-6rej-BcBu-bE2C-eCXG-jObu-0Boo0x
Ha több fizikai kötetet kell megjeleníteni, akkor a pvscan parancs képes észlelni az inaktív fizikai köteteket és képes aktiválni azokat.
root #
pvscan
PV /dev/sda1 VG volgrp lvm2 [160.01 GiB / 16.01 GiB free] PV /dev/sdb1 VG volgrp lvm2 [160.01 GiB / 160.01 GiB free] Total: 2 [320.02 GB] / in use: 2 [320.02 GiB] / in no VG: 0 [0]
Fizikai kötet eltávolítása
Az LVM automatikusan elosztja az adatokat az összes elérhető fizikai kötetre (hacsak más utasítást nem kap), de lineáris megközelítéssel. Ha egy kért logikai kötet (egy kötetcsoporton belül) kisebb, mint a szabad hely egyetlen fizikai kötetben, akkor a logikai kötethez szükséges teljes helyet ezen az (egyetlen) fizikai kötetben, összefüggő módon foglalja le. Ez teljesítménybeli okok miatt történik.
Ha egy fizikai kötetet el kell távolítani egy kötetcsoportból, akkor először az adatokat el kell távolítani a fizikai kötetből. A pvmove parancs segítségével az összes adatot egy fizikai kötetből a kötetcsoporton belüli más fizikai kötetekre lehet áthelyezni.
root #
pvmove -v /dev/sda1
Egy ilyen művelet eltarthat egy ideig, az áthelyezendő adatmennyiségtől függően. Miután a művelet befejeződött, nem maradhat adat az eszközön. Ellenőrizze a pvdisplay paranccsal, hogy a fizikai kötetet már nem használja egyetlen logikai kötet sem.
A következő lépés a fizikai kötet eltávolítása a kötetcsoportból a vgreduce parancs segítségével, ezt követően pedig az eszköz "kijelölésének megszüntetése" fizikai kötetként a pvremove parancs használatával:
root #
vgreduce vg0 /dev/sda1 && pvremove /dev/sda1
Kötetcsoport (Volume Group, VG)
Egy kötetcsoport (Volume Group, VG) több fizikai kötetet csoportosít, és a /dev/VG_NAME formában jelenik meg az eszköz fájlrendszerében. A kötetcsoport nevét a rendszergazda választja ki.
Kötetcsoport létrehozása
A következő parancs egy vg0 nevű kötetcsoportot hoz létre, amelyhez két fizikai kötet van hozzárendelve: /dev/sda1 és /dev/sdb1.
root #
vgcreate vg0 /dev/sd[ab]1
Kötetcsoport kilistázása
Az összes aktív kötetcsoport listázásához használja a vgdisplay parancsot:
root #
vgdisplay
--- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 8 VG Access read/write VG Status resizable MAX LV 0 Cur LV 6 Open LV 6 Max PV 0 Cur PV 1 Act PV 1 VG Size 320.02 GiB PE Size 4.00 MiB Total PE 81924 Alloc PE / Size 36864 / 144.00 GiB Free PE / Size 45056 /176.01 GiB VG UUID mFPXj3-DdPi-7YJ5-9WKy-KA5Y-Vd4S-Lycxq3
Ha kötetcsoportok hiányoznak, akkor használja a vgscan parancsot a kötetcsoportok felderítéséhez:
root #
vgscan
Reading all physical volumes. This may take a while... Found volume group "vg0" using metadata type lvm2
Kötetcsoport bővítése
A kötetcsoportok fizikai köteteket csoportosítanak, lehetővé téve a rendszergazdák számára, hogy tárolási erőforrások egy készletéből állományrendszerekhez rendeljenek. Ha egy kötetcsoport nem tartalmaz elegendő tárolási erőforrást, akkor szükséges a kötetcsoportot további fizikai kötetekkel bővíteni.
A következő példa a vg0 nevű kötetcsoportot bővíti egy fizikai kötet hozzáadásával a /dev/sdc1 helyen:
root #
vgextend vg0 /dev/sdc1
Ne feledje, hogy először a fizikai kötetet fizikai kötetként kell inicializálni!
Kötetcsoport csökkentése
Ha fizikai köteteket kell eltávolítani a kötetcsoportból, akkor az adott fizikai kötethez tartozó, még használt összes adatot a kötetcsoport más fizikai köteteire kell áthelyezni. Ahogyan korábban láttuk, ezt a pvmove parancs végzi el, ezután a fizikai kötetet a vgreduce parancs segítségével el lehet távolítani a kötetcsoportból:
root #
pvmove -v /dev/sdc1
root #
vgreduce vg0 /dev/sdc1
Kötetcsoport eltávolítása
Ha egy kötetcsoport már nem szükséges (más szóval, az általa képviselt tárolási készletet már nem használják, és a benne lévő fizikai köteteket más célokra kell felszabadítani), akkor a kötetcsoport a vgremove paranccsal eltávolítható. Ez csak akkor működik, ha a kötetcsoporthoz nincs logikai kötet definiálva, és a tárolási készletből már minden fizikai kötetet eltávolítottak, kivéve egyet.
root #
vgremove vg0
Logikai kötet (Logical Volume, VG)
A logikai kötetek (Logical Volumes, LV) az utolsó meta eszközök, amelyeket a rendszer számára elérhetővé tesznek, általában fájlrendszerek létrehozására. Ezeket kötetcsoportokban hozzák létre és kezelik, és a /dev/VG_NAME/LV_NAME formában jelennek meg. Ahogyan a kötetcsoportok esetében, a logikai kötetek nevét is a rendszergazda választja meg.
Logikai kötet létrehozása
Egy logikai kötet létrehozásához a lvcreate parancsot használják. A parancs paraméterei tartalmazzák a logikai kötet kívánt méretét (amely nem lehet nagyobb, mint a kötetcsoport szabad területe), azt a kötetcsoportot, amelyből a helyet igényelni kell, valamint a létrehozandó logikai kötet nevét.
A következő példában egy lvol1 nevű logikai kötetet hozunk létre egy vg0 nevű kötetcsoportból, 150 MB méretben:
root #
lvcreate --size 150M --name lvol1 vg0
Lehetséges megadni a lvcreate parancsnak, hogy használja fel a kötetcsoporton belüli összes szabad helyet. Ez a -l
opcióval érhető el, amely az extensek számát választja ki, nem pedig egy (ember által olvasható) méretet. A logikai kötetek logikai extensekre vannak osztva, amelyek a kötetcsoporton belüli adatblokkokat jelentik. Egy kötetcsoportban minden extens azonos méretű. A -l
opcióval a lvcreate parancs kérhető, hogy ossza ki az összes szabad extenst:
root #
lvcreate --extents 100%FREE --name lvol1 vg0
A VG kulcs használható a kötetcsoport teljes méretének jelölésére, az FREE érték mellett.
Logikai kötetek kilistázása
Az összes logikai kötet listázásához használja a lvdisplay parancsot:
root #
lvdisplay
Ha logikai kötetek hiányoznak, akkor a lvscan parancs használható a logikai kötetek felderítésére az összes elérhető kötetcsoporton.
root #
lvscan
Logikai kötet bővítése
Amikor egy logikai kötetet bővíteni kell, a lvextend parancs használható a logikai kötethez rendelt hely növelésére.
Például az lvol1 nevű logikai kötet bővítése 500 MB teljes méretre a következő parancs segítségével lehetséges: lvextend.
root #
lvextend -L500M /dev/vg0/lvol1
Lehetséges a hozzáadandó méretet használni a teljes méret helyett.
root #
lvextend -L+350MB /dev/vg0/lvol1
Egy kibővített kötetcsoport nem biztosítja azonnal a további tárhelyet a végfelhasználók számára. Ehhez a kötetcsoport feletti fájlrendszer méretét is növelni kell. Nem minden fájlrendszer teszi lehetővé az online átméretezést, ezért további információkért ellenőrizze a kérdéses fájlrendszer dokumentációját.
Például, hogy egy ext4 fájlrendszert 500 MB méretűvé alakítson át:
root #
resize2fs /dev/vg0/lvol1 500M
Bizonyos fájlrendszerek esetében a lvresize parancs képes a logikai kötetet, a fájlrendszert módosítani, és a fájlrendszert ellenőrizni egyetlen lépésben!
root #
lvresize --resizefs --size 150M /dev/vg0/lvol1
Logikai kötet méretének a csökkentése
Ha egy logikai kötet méretét csökkenteni kell, először magát a fájlrendszert kell zsugorítani. Nem minden fájlrendszer támogatja az online zsugorítást.
Például, az ext4 nem támogatja az online zsugorítást, ezért először le kell csatolni a fájlrendszert. Emellett ajánlott fájlrendszer-ellenőrzést végezni annak biztosítására, hogy ne legyenek ellentmondások:
root #
umount /mnt/data
root #
e2fsck -f /dev/vg0/lvol1
root #
resize2fs /dev/vg0/lvol1 150M
Egy zsugorított fájlrendszerrel most már lehetséges a logikai kötet méretének a csökkentése is:
root #
lvreduce --size 150M /dev/vg0/lvol1
Bizonyos fájlrendszerek esetében a lvresize parancs képes a logikai kötetet, a fájlrendszert módosítani, és a fájlrendszert ellenőrizni egyetlen lépésben!
root #
lvresize --resizefs --size 150M /dev/vg0/lvol1
Logikai kötet jogosultságok
Az LVM támogatja az jogosultságállapotokat a logikai köteteken.
Például, egy logikai kötet csak olvasható állapotra állítható a lvchange parancs segítségével:
root #
lvchange -p r /dev/vg0/lvol1
root #
mount -o remount /dev/vg0/lvol1
Az újracsatolás szükséges, mivel a változtatás nem lép azonnal érvénybe.
Ahhoz, hogy a logikai kötetet ismét írhatóvá tegyük, használja az rw jogosultságbitet:
root #
lvchange -p rw /dev/vg0/lvol1 && mount -o remount /dev/vg0/lvol1
Logikai kötet eltávolítása
Mielőtt eltávolít egy logikai kötetet, győződjön meg arról, hogy az már nincs csatolva a fájlrendszerben:
root #
umount /dev/vg0/lvol1
Inaktiválja a logikai kötetet, hogy ne történhessen további írási művelet:
root #
lvchange -a n /dev/vg0/lvol1
Miután a kötetet lecsatolta és inaktiválta, eltávolíthatóvá vált. Így a hozzárendelt szegmensek felszabadulnak, és más logikai kötetek használatába kerülhetnek a kötetcsoportban:
root #
lvremove /dev/vg0/lvol1
Jellemzők
Az LVM számos érdekes funkciót kínál a tárhelykezelők számára, beleértve (de nem kizárólagosan) a következőket:
- Vékony kiosztás (tárhely túlfoglalása).
- Pillanatfelvétel-támogatás.
- Különböző tárhely-kiosztási módszereket használó kötettípusok.
Vékony kiosztás
Győződjön meg arról, hogy engedélyezve van a thin USE jelölőzászló a sys-fs/lvm2 szoftvercsomag számára:
/etc/portage/package.use
# Az LVM szolgáltatás és a kapcsolódó eszközök támogatásának az engedélyezése.
sys-fs/lvm2 lvm
# A vékony támogatás engedélyezése.
sys-fs/lvm2 thin
Az LVM (2.02.89-es vagy újabb verziók) támogatja a "vékony" köteteket. A vékony kötetek a blokkeszközök számára olyanok, mint a ritkított fájlok a fájlrendszerek számára. Így egy vékony logikai kötet egy tárolóban "túlfoglalható": a megadott mérete nagyobb lehet, mint a kiosztott méret – akár nagyobb is lehet, mint maga a tároló. Akárcsak egy ritkított fájl esetében, a kiterjedések akkor kerülnek kiosztásra, amikor a blokkeszköz megtelik. Ha a fájlrendszer törlés támogatással rendelkezik, akkor a kiterjedések újra felszabadulnak, amikor fájlokat törlünk, csökkentve a tároló helyhasználatát.
Az LVM-ben egy ilyen vékony tároló egy speciális típusú logikai kötet, amely maga is képes logikai köteteket tárolni.
Vékony tároló létrehozása
Ha túlcsordulás történik a vékony tároló metaadatain belül, akkor a tároló sérülni fog. Az LVM nem tud helyreállni ebből.
Ha a vékony tároló kimerül, minden olyan folyamat, amely arra késztetné a vékony tárolót, hogy további (nem elérhető) kiterjedéseket osszon ki, "megölhető alvás" állapotban ragad, amíg a vékony tárolót ki nem bővítik, vagy a folyamat SIGKILL jelet nem kap.
Minden vékony tárolóhoz metaadatok társulnak, amelyek hozzáadódnak a vékony tároló méretéhez. Az LVM a vékony tároló mérete alapján számítja ki a metaadatok méretét, amely a pool_chunks * 64 bájt vagy 2 MiB közül a nagyobbik minimuma. A rendszergazda más metaadat-méretet is kiválaszthat.
A vékony tároló létrehozásához adja hozzá a --type thin-pool --thinpool thin_pool
opciókat a lvcreate parancshoz:
root #
lvcreate -L 150M --type thin-pool --thinpool thin_pool vg0
A fenti példa egy thin_pool nevű vékony tárolót hoz létre, amelynek teljes mérete 150 MB. Ez a vékony tároló valós kiosztott mérete (és így a ténylegesen felhasználható tárolókapacitás teljes mennyisége).
A kötetcsoportban fennmaradó szabad hely felhasználásához:
root #
lvcreate -l 100%FREE --type thin-pool --thinpool thin_pool vg0
Egy adott metaadat-méret megadásához használja a --metadatasize
opciót:
root #
lvcreate -L 150M --poolmetadatasize 2M --type thin-pool --thinpool thin_pool vg0
Vegye figyelembe, hogy a vékony tárolónak nincs hozzákapcsolt eszközcsomópontja, mint más logikai köteteknek.
Vékony logikai kötet létrehozása
A vékony logikai kötet egy logikai kötet a vékony tárolón belül (amely maga is egy logikai kötet). Mivel a vékony logikai kötetek ritkítottak, fizikai méret helyett virtuális méretet kell megadni a -V
opcióval:
root #
lvcreate -T vg0/thin_pool -V 300M -n lvol1
Ebben a példában a (vékony) lvol1 logikai kötet 300 MB méretű eszközként jelenik meg, annak ellenére, hogy az alapul szolgáló tároló csak 150 MB valós kiosztott tárolót tartalmaz.
Lehetséges egyetlen parancs segítségével létrehozni mind a vékony tárolót, mind a vékony tárolón belüli logikai kötetet:
root #
lvcreate -T vg0/thin_pool -V 300M -L150M -n lvol1
Vékony tárolók és vékony logikai kötetek listázása
A vékony tárolók és vékony logikai kötetek speciális típusú logikai kötetek, és így a lvdisplay paranccsal jeleníthetők meg. A lvscan parancs szintén felismeri ezeket a logikai köteteket.
Vékony tároló bővítése
A vékony tároló ugyanúgy bővíthető, mint egy nem vékony logikai kötet a lvextend parancs használatával. Például:
root #
lvextend -L +500M vg0/thin_pool
A vékony tároló metaadatai szintén bővíthetők:
root #
lvextend --poolmetadatasize +5M vg0/thin_pool
Vékony logikai kötet bővítése
A vékony logikai kötet ugyanúgy bővíthető, mint egy hagyományos logikai kötet:
root #
lvextend -L1G vg0/lvol1
Vegye figyelembe, hogy a lvextend parancs a -L
opciót használja (vagy a -l
opciót, ha kiterjedésszámokat adnak meg), és nem a "virtuális méret" opciót, amelyet a létrehozás során alkalmaztak.
Vékony tároló csökkentése
Jelenleg az LVM nem képes csökkenteni a vékony tároló méretét. További információért tekintse meg az LVM hibát 812731.
Vékony logikai kötet csökkentése
A vékony logikai kötetek ugyanúgy csökkenthetők, mint a hagyományos logikai kötetek.
For instance:
root #
lvreduce -L300M vg0/lvol1l
Figyelembe kell venni, hogy a lvreduce parancs a -L
opciót használja (vagy -l
, ha kiterjedésszámokat adnak meg), és nem a "virtuális méret" opciót, amelyet a létrehozás során alkalmaztak.
Vékony tárolók eltávolítása
A vékony tárolók nem távolíthatók el, amíg a bennük lévő összes vékony logikai kötetet el nem távolítják.
Amikor egy vékony tároló már nem szolgál ki egyetlen vékony logikai kötetet sem, a lvremove paranccsal eltávolítható:
root #
lvremove vg0/thin_pool
LVM2 pillanatképek és vékony pillanatképek
Egy pillanatfelvétel egy logikai kötet, amely egy másik logikai kötet másolataként működik. A pillanatfelvétel a forrás logikai kötet állapotát mutatja annak létrehozásakor.
Mivel a logikai pillanatfelvétel kötet ugyanazt a fájlrendszer LABEL és UUID attribútumot kapja, ügyeljen arra, hogy a /etc/fstab fájl vagy az initramfs ne tartalmazzon bejegyzéseket ezekre a fájlrendszerekre
LABEL=
vagy UUID=
szintaxis használatával. Ellenkező esetben előfordulhat, hogy a rendszer a pillanatfelvételt csatolja a (szándékolt) eredeti logikai kötet helyett.Pillanatfelvétel logikai kötet létrehozása
A pillanatfelvétel logikai kötetet a -s
opcióval hozhatja létre lvcreate használatával. A pillanatfelvétel logikai kötetekhez továbbra is kijelölt tárhelyet rendelnek, mivel az LVM "regisztrálja" az eredeti logikai kötetben végrehajtott összes módosítást, és ezeket a módosításokat a pillanatfelvételhez kijelölt tárhelyen tárolja. Amikor a pillanatfelvétel állapotát lekérdezi, az LVM az eredeti logikai kötetből indul ki, majd ellenőrzi az összes regisztrált módosítást, "visszavonja" a módosításokat, mielőtt megmutatná az eredményt a felhasználónak.
A pillanatfelvétel logikai kötet ezentúl "növekszik" azzal a sebességgel, ahogy az eredeti logikai kötetben változások történnek. Amikor a pillanatfelvételhez kijelölt tárhely teljesen felhasználódik, a pillanatfelvétel automatikusan eltávolításra kerül a rendszerből.
root #
lvcreate -l 10%VG -s -n 20140412_lvol1 /dev/vg0/lvol1
A fenti példa létrehoz egy 20140412_lvol1 nevű pillanatfelvétel logikai kötetet, amely az vg0 kötetcsoport lvol1 logikai kötetén alapul. Ez a kötetcsoporthoz rendelt hely (valójában kiterjesztések) 10%-át használja.
Pillanatfelvétel logikai kötet elérése
A pillanatfelvétel logikai kötetek ugyanúgy csatolhatók, mint a szokásos logikai kötetek. Nem korlátozódnak kizárólag olvasási műveletekre sem – lehetséges a pillanatfelvételek módosítása, így például a változtatások tesztelésére is használhatók, mielőtt ezeket egy "éles" fájlrendszeren hajtanák végre.
Amíg a pillanatfelvétel logikai kötetek léteznek, a szokásos/eredeti logikai kötet mérete nem csökkenthető, és az nem távolítható el.
LVM vékony pillanatfelvételek
Vékony pillanatfelvétel készíthető:
- Egy vékony tárolóról egy vékony logikai kötet számára.
- Egy külső, csak olvasható, nem vékony logikai kötet számára.
Vékony pillanatfelvétel létrehozásához a lvcreate parancsot használják a -s
opcióval. Méretmegadásra nincs szükség:
root #
lvcreate -s -n 20140413_lvol1 /dev/vg0/lvol1
A vékony logikai kötet pillanatfelvételek ugyanolyan méretűek, mint az eredeti vékony logikai kötetük, és fizikai hozzárendelésük 0, akárcsak minden más vékony logikai köteté.
Ha a -l vagy -L opció meg van adva, akkor a pillanatfelvétel létrejön, de az eredményül kapott pillanatfelvétel egy szokásos pillanatfelvétel lesz, nem vékony pillanatfelvétel.
Lehetséges pillanatfelvételek készítése pillanatfelvételekről is:
root #
lvcreate -s -n 1_20140413_lvol1 /dev/vg0/20140413_lvol1
A vékony pillanatfelvételeknek több előnyük van a szokásos pillanatfelvételekkel szemben. Először is, a vékony pillanatfelvételek az eredeti logikai kötetüktől függetlenek a létrehozás után. Az eredeti logikai kötet csökkenthető vagy törölhető anélkül, hogy ez hatással lenne a pillanatfelvételre. Másodszor, a vékony pillanatfelvételek hatékonyan hozhatók létre rekurzívan (pillanatfelvételek pillanatfelvételeiről) anélkül, hogy a szokásos rekurzív LVM pillanatfelvételek "láncolási" többletterhelése jelentkezne.
Visszaállás a pillanatfelvétel állapotába
Az eredeti logikai kötet pillanatfelvétel szerinti verziójának visszaállításához használja a következő parancsot:
root #
lvconvert --merge /dev/vg0/20140413_lvol1
Ez néhány percig is eltarthat, a kötet méretétől függően. Kérjük, vegye figyelembe, hogy a visszaállítás csak akkor történik meg, ha a szülő logikai kötet offline állapotban van. Ezért előfordulhat, hogy újraindítás szükséges.
The snapshot will disappear and this change is not revertible.
Vékony pillanatfelvételek visszaállítása
Vékony pillanatfelvételek összevonásához:
root #
lvconvert --merge vg0/20140413_lvol1
Ehhez manuálisan törölje az eredeti logikai kötetet, és nevezze át a pillanatfelvételt:
root #
umount /dev/vg0/lvol1
root #
lvremove /dev/vg0/lvol1
root #
lvrename vg0/20140413_lvol1 lvol1
Különböző tárolási hozzárendelési módszerek
Az LVM különböző tárolási hozzárendelési módszereket támogat:
- Lineáris kötetek (ez az alapértelmezett).
- Tükrözött kötetek (többé-kevésbé aktív/készenléti felállásban).
- Csíkozás (RAID0).
- Tükrözött kötetek (RAID1 - ami inkább aktív/aktív felállás).
- Csíkozás paritással (RAID4 és RAID5).
- Csíkozás dupla paritással (RAID6).
- Csíkozás és tükrözés (RAID10).
Lineáris kötetek
A lineáris kötetek az LVM-ben a leggyakrabban használt kötetek. Az LVM megpróbálja a logikai kötetet a lehető leginkább fizikailag összefüggő módon elhelyezni. Ha van olyan fizikai kötet, amely elég nagy ahhoz, hogy az egész logikai kötetet befogadja, akkor az LVM ott fogja kiosztani. Ellenkező esetben a lehető legkevesebb darabra osztja fel a kötetet.
A korábban bemutatott parancsok, amelyekkel kötetcsoportokat és logikai köteteket hozunk létre, lineáris köteteket hoznak létre.
Mivel a lineáris köteteknek nincsenek különleges követelményeik, ezek a legkönnyebben kezelhetők, és tetszés szerint átméretezhetők, illetve áthelyezhetők. Ha egy logikai kötet több fizikai kötetre van kiosztva, és bármelyik fizikai kötet elérhetetlenné válik, akkor az adott logikai kötetet többé nem lehet elindítani, és használhatatlanná válik.
Tükrözött kötetek
Az LVM támogatja a tükrözött köteteket, amelyek hibavédelmet nyújtanak a fizikai adathordozó meghibásodása esetén. A RAID1-től eltérően nincs teljesítményjavító hatása - az összes olvasási és írási műveletet a tükör egyetlen oldalára továbbítja.
Az LVM a tükörállapot nyomon követéséhez egy napló fenntartását igényli. Ajánlott (és gyakran kötelező is) ezt a naplót olyan fizikai kötetre helyezni, amely nem tartalmazza a tükrözött logikai köteteket. Háromféle napló használható tükrökhöz:
- Lemez - A alapértelmezett naplótípus. Az összes végrehajtott módosítás a LVM által kezelt extra metaadat-kiterjesztésekbe kerül naplózásra. Ha egy eszköz meghibásodik, a módosítások a naplóban maradnak, amíg a tükröt nem lehet helyreállítani.
- Tükör - Olyan lemez naplók, amelyek maguk is tükrözöttek.
- Memória - Tükörnaplók. Kizárólag a memória állapotában rögzítik a tükör állapotát. Az LVM-nek minden egyes aktiváláskor újra kell építenie a tükröt. Ez a típus ideiglenes tükrökhöz hasznos.
Egyetlen tükröt tartalmazó logikai kötet létrehozásához adja meg a -m 1 argumentumot (a standard tükrözés kiválasztásához), opcionálisan a --mirrorlog
használatával, hogy kiválassza az adott naplótípust:
root #
lvcreate -m 1 --mirrorlog mirror -l 40%VG --nosync -n lvol1 vg0
A -m 1 argumentum az LVM-nek azt mondja, hogy hozzon létre egy (további) tükröt, így 2 fizikai kötetre van szükség. A --nosync
opció optimalizálásként szolgál - enélkül az LVM megpróbálja szinkronizálni a tükröt, üres szektorokat másolva egyik logikai kötetből a másikba.
Lehetséges egy meglévő logikai kötet tükrének létrehozása:
root #
lvconvert -m 1 -b vg0/lvol1
A -b
opció a háttérben végzi el az átalakítást, mivel ez meglehetősen hosszú időt vehet igénybe.
A tükör eltávolításához állítsa a tükrök számát (vissza) 0 értékre:
root #
lvconvert -m0 vg0/lvol1
Ha a tükör egy része nem érhető el (általában azért, mert a fizikai kötetet tartalmazó lemez meghibásodott), akkor a kötetcsoportot csökkentett módban kell elindítani:
root #
vgchange -ay --partial vg0
Az első íráskor az LVM észleli, hogy a tükör megsérült. Az alapértelmezett politika ("eltávolítás") automatikusan csökkenti/megszakítja a tükröt az elérhető darabok száma alapján. Egy háromutas tükör egy hiányzó fizikai kötet esetén kétutas tükörré lesz csökkentve. Egy kétutas tükör pedig egy szokványos lineáris kötetként folytatja. Ha a hiba csak átmeneti, és a hiányzó fizikai kötet visszatér azután, hogy az LVM megszakította a tükröt, akkor a tükrözött logikai kötetet újra létre kell hozni rajta.
A tükör helyreállításához a meghibásodott fizikai kötetet el kell távolítani a kötetcsoportból, és egy helyettesítő fizikai kötetet kell hozzáadni (vagy ha a kötetcsoportnak van szabad fizikai kötete, akkor azon lehet létrehozni). Ezután a tükröt újra lehet létrehozni a lvconvert paranccsal, ekkor a régi fizikai kötetet el lehet távolítani a kötetcsoportból.
root #
vgextend vg0 /dev/sdc1
root #
lvconvert -b -m 1 --mirrorlog disk vg0/lvol1
root #
vgreduce --removemissing vg0
Lehetséges, hogy az LVM újra létrehozza a tükröt szabad kiterjesztésekkel egy másik fizikai kötetre, ha az egyik oldal meghibásodik. Ehhez állítsa a mirror_image_fault_policy
értékét allocate állapotra a lvm.conf fájlban.
Vékony tükrök
Egy tükrözött vékony tárhely vagy vékony kötet létrehozása (még) nem lehetséges. Egy tükrözött vékony tárhely létrehozása azonban lehetséges egy normál tükrözött logikai kötet létrehozásával, majd a logikai kötet átalakításával vékony tárhellyé a lvconvert paranccsal. Ehhez 2 logikai kötet szükséges: az egyik a vékony tárhelyhez, a másik a vékony metaadatokhoz; az átalakítási folyamat során ezeket egyetlen logikai kötetbe egyesítik.
Az LVM 2.02.98 vagy újabb verzió szükséges ahhoz, hogy ez megfelelően működjön. A korábbi verziók vagy nem képesek erre, vagy szegmentálási hibát okoznak és megsérthetik a kötetcsoportot. Továbbá, egy tükör vékony tárhellyé történő átalakítása megsemmisíti a tükörben lévő összes meglévő adatot!
root #
lvcreate -m 1 --mirrorlog mirrored -l40%VG -n thin_pool vg0
root #
lvcreate -m 1 --mirrorlog mirrored -L4MB -n thin_meta vg0
root #
lvconvert --thinpool vg0/thin_pool --poolmetadata vg0/thin_meta
Csíkozás (RAID0)
A lineáris kötet helyett, ahol több egymást követő fizikai kötet kerül összeillesztésre, lehetőség van csíkozott vagy RAID0 kötet létrehozására a jobb teljesítmény érdekében. Ez váltakozó tárhely-hozzárendelést végez a rendelkezésre álló fizikai kötetek között.
Három fizikai kötetet használó csíkozott kötet létrehozásához:
root #
lvcreate -i 3 -l 20%VG -n lvol1_stripe vg0
Using default stripesize 64.00 KiB
A -i
opció azt jelzi, hogy hány fizikai kötetre kell végrehajtani a csíkozást.
Lehetséges egy csíkozott készlet tükrözése. A -i
és -m
opciók kombinálhatók egy csíkozott tükör létrehozásához:
root #
lvcreate -i 2 -m 1 -l 10%VG vg0
Ez egy 2 fizikai kötetből álló csíkozott készletet hoz létre, és azt 2 különböző fizikai kötetre tükrözi, összesen 4 fizikai kötetet igényelve. Egy meglévő csíkozott készlet tükrözhető a lvconvert paranccsal.
Egy vékony tárhely csíkozható, mint bármely más logikai kötet. Az ebből a tárhelyből létrehozott összes vékony kötet örökli ezeket a beállításokat - ne adja meg kézzel ezeket a beállításokat vékony kötet létrehozásakor.
Nem lehetséges egy meglévő kötet csíkozása, sem a csíkok átrendezése több/kevesebb fizikai kötetre, sem pedig átalakítás más RAID szintre vagy lineáris kötetre. Egy csíkozott készlet tükrözhető. Lehetőség van egy csíkozott készlet kiterjesztésére további fizikai kötetekre, de ezeket az eredeti csíkozott készlet többszöröseiben kell hozzáadni (ami gyakorlatilag egy új csíkozott készlet lineáris hozzáfűzését eredményezi).
Tükrözés (RAID1)
A RAID0, azaz a csíkozás, a RAID1-től eltérően tükrözést jelent, de másképp valósítják meg, mint az eredeti LVM tükrözést. A RAID1 esetében az olvasási műveletek több fizikai kötetre terjednek ki, ami javítja a teljesítményt. A RAID1 tükör meghibásodása nem okoz I/O blokkot, mivel az LVM-nek nem kell törnie a tükröt íráskor.
Bármilyen helyzetben, ahol LVM tükör használható, RAID1 tükör is alkalmazható helyette. Az LVM beállítható úgy, hogy implicit módon RAID1 tükröket hozzon létre a hagyományos tükrök helyett, ha a mirror_segtype_default értékét raid1 állapotra állítják a lvm.conf fájlban.
Az LVM RAID1 tükrözés nem támogatott a GRUB 2.02 előtti verzióiban. Győződjön meg róla, hogy a legújabb verzió telepítve van a grub-install paranccsal, különben a rendszer nem lesz indítható, ha a grub fájlok az LVM RAID1-ben találhatók.
Egyetlen tükröt tartalmazó logikai kötet létrehozásához használja a következő parancsot:
root #
lvcreate -m 1 --type raid1 -l 40%VG --nosync -n lvm_raid1 vg0
Figyelje meg a különbséget a tükör létrehozásánál: nincs megadva mirrorlog, mert a RAID1 logikai köteteknek nincs explicit tükörnaplója – az be van építve a logikai kötetbe.
Lehetséges egy meglévő logikai kötetet RAID1 állapotra átalakítani:
root #
lvconvert -m 1 --type raid1 -b vg0/lvol1
A RAID1 tükör eltávolításához állítsa a tükrök számát 0 értékre:
root #
lvconvert -m0 vg0/lvm_raid1
Ha a RAID1 egy része nem elérhető (általában azért, mert a fizikai kötetet tartalmazó lemez meghibásodott), a kötetcsoportot csökkentett módban kell elindítani:
root #
vgchange -ay --partial vg0
Egy LVM tükörrel ellentétben az írás NEM szakítja meg a tükrözést. Ha a hiba csak átmeneti, és a hiányzó fizikai kötet visszatér, akkor az LVM újraszinkronizálja a tükröt azáltal, hogy az elavult szegmenseket másolja, nem pedig az egész logikai kötetet. Ha a hiba tartós, akkor a meghibásodott fizikai kötetet el kell távolítani a kötetcsoportból, és egy cserekövet kell hozzáadni (vagy ha a kötetcsoportnak van szabad fizikai kötete, az létrehozható egy másik fizikai kötetre). A tükröt ezután lvconvert segítségével lehet javítani, és a régi fizikai kötet eltávolítható a kötetcsoportból:
root #
vgextend vg0 /dev/sdc1
root #
lvconvert --repair -b vg0/lvm_raid1
root #
vgreduce --removemissing vg0
Vékony RAID1
Még nem lehetséges RAID1 vékony poolt vagy vékony kötetet létrehozni. RAID1 vékony pool létrehozása lehetséges úgy, hogy először egy normál tükrözött logikai kötetet hoz létre, majd a logikai kötetet vékony poolrá alakítja lvconvert segítségével. 2 logikai kötet szükséges: egy a vékony poolhoz és egy a vékony metaadatokhoz; az átalakítási folyamat ezután egyetlen logikai kötetbe fogja összevonni őket.
Az LVM 2.02.98 vagy annál újabb verzió szükséges ahhoz, hogy ez megfelelően működjön. A korábbi verziók vagy nem képesek erre, vagy szegmenshibát okoznak és megsértik a kötetcsoportot (VG). Továbbá, a RAID1 vékony poolrá történő átalakítása megsemmisíti a tükörben lévő összes meglévő adatot!
root #
lvcreate -m 1 --type raid1 -l40%VG -n thin_pool vg0
root #
lvcreate -m 1 --type raid1 -L4MB -n thin_meta vg0
root #
lvconvert --thinpool vg0/thin_pool --poolmetadata vg00/thin_meta
Csíkozás paritással (RAID4 és RAID5)
A csíkozás paritással legalább 3 fizikai kötetet igényel.
A RAID0 nem hibaküszöb-tűrő – ha bármelyik fizikai kötet meghibásodik, akkor a logikai kötet használhatatlanná válik. Egy paritáscsík hozzáadásával a RAID0-hoz a logikai kötet továbbra is működhet, ha egy fizikai kötet hiányzik. Ezt követően egy új fizikai kötet hozzáadásával helyreállítható a hibaküszöb-tűrés.
A paritásos csíkozott készletek 2 változatban érhetők el: RAID4 és RAID5. RAID4 alatt az összes paritáscsíkot ugyanazon fizikai kötet tárolja. Ez szűk keresztmetszetet okozhat, mivel minden írás azt a fizikai kötetet érinti, és minél több fizikai kötet van a tömbben, annál rosszabb lesz. A RAID5 esetében a paritásadatok egyenletesen oszlanak el a fizikai kötetek között, így egyikük sem válik szűk keresztmetszetté. Emiatt a RAID4 ritka, és elavult/történelmi jellegűnek tekintik. Gyakorlatilag minden paritásos csíkozott készlet RAID5.
root #
lvcreate --type raid5 -l 20%VG -i 2 -n lvm_raid5 vg0
Csak az adat fizikai köteteket kell megadni a -i opcióval, az LVM automatikusan hozzáad egyet a paritáshoz. Tehát egy 3 fizikai kötetből álló RAID5 esetében -i 2 kerül megadásra, nem pedig -i 3.
Amikor egy fizikai kötet meghibásodik, a kötetcsoportot csökkentett módban kell elindítani:
root #
vgchange -ay --partial vg0
A kötet ebben az állapotban normálisan fog működni, azonban ez a tömböt RAID0-ra degradálja, amíg egy csere fizikai kötetet hozzá nem adnak. Valószínűleg a teljesítmény nem fog jelentősen csökkenni, amíg a tömb csökkentett állapotban van – bár újra kell számítania a hiányzó adatokat paritás segítségével, ehhez csak egyszerű XOR szükséges a paritásblokkhoz a meglévő adatokkal. Az ehhez kapcsolódó többletterhelés elhanyagolható a lemez I/O-hoz képest.
A RAID5 javításához:
root #
lvconvert --repair vg0/lvm_raid5
root #
vgreduce --removemissing vg0
Lehetséges egy még működő fizikai kötetet is lecserélni RAID5-ben:
root #
lvconvert --replace /dev/sdb1 vg0/lvm_raid5
root #
vgreduce vg0 /dev/sdb1
Ugyanazok a korlátozások vonatkoznak a paritásos csíkozott készletekre is: Nem lehetséges paritásos csíkozást engedélyezni egy meglévő kötetre, sem a paritásos csíkozás átalakítása több/kevesebb fizikai kötetre, sem más RAID szintre/lineáris kötetre történő átalakítás. Egy paritásos csíkozott készlet tükrözhető. Lehetséges a paritásos csíkozott készlet kiterjesztése további fizikai kötetekre, de ezeknek az eredeti paritásos csíkozott készlet többszöröseként kell hozzáadódniuk (ami gyakorlatilag egy új paritásos csíkozott készletet lineárisan csatol az eredetihez).
Vékony RAID5 logikai kötetek
Még nem lehetséges paritásos csíkozott készletet (RAID5) létrehozni vékony poolokhoz vagy vékony logikai kötetekhez. RAID5 vékony pool létrehozása lehetséges úgy, hogy először egy normál RAID5 logikai kötetet hoz létre, majd a logikai kötetet vékony poolrá alakítja lvconvert segítségével. 2 logikai kötet szükséges: Egy a vékony poolhoz és egy a vékony metaadatokhoz. Az átalakítási folyamat ezeket egyetlen logikai kötetbe fogja összevonni.
Az LVM 2.02.98 vagy annál újabb verzió szükséges ahhoz, hogy ez megfelelően működjön. A korábbi verziók vagy nem képesek erre, vagy szegmenshibát okoznak és megsértik a kötetcsoportot (VG). Továbbá, egy RAID5 logikai kötet vékony poolra történő átalakítása megsemmisíti az LV-ben található összes meglévő adatot!
root #
lvcreate --type raid5 -i 2 -l20%VG -n thin_pool vg0
root #
lvcreate --type raid5 -i 2 -L4MB -n thin_meta vg0
root #
lvconvert --thinpool vg0/thin_pool --poolmetadata vg00/thin_meta
Csíkozás dupla paritással (RAID6)
A RAID6 legalább 5 fizikai kötetet igényel.
A RAID6 hasonló a RAID5-hez, azonban a RAID6 akár két fizikai kötet meghibásodását is képes túlélni, így nagyobb hibaküszöb-tűrést kínál, mint a RAID5, további fizikai kötetek felhasználásának árán.
root #
lvcreate --type raid6 -l 20%VG -i 3 -n lvm_raid6 vg00
Akárcsak a RAID5 esetében, a -i
opciót kell használni a csíkozandó fizikai kötetek számának megadásához, a 2 paritáshoz szükséges fizikai kötetet kihagyva. Tehát egy 5 fizikai kötetből álló RAID6 esetén -i 3
-at kell megadni, nem pedig -i 5
-öt.
A RAID6 helyreállítása ugyanúgy történik, mint a RAID5 esetében.
A RAID5-től eltérően, ahol a paritásblokk újraszámítása olcsóbb, mint a lemez I/O, ez csak részben igaz a RAID6 esetében. A RAID6 két paritáscsíkot használ: az egyik csíkot ugyanúgy számítják, mint RAID5-ben (egyszerű XOR segítségével). A második paritáscsík azonban sokkal nehezebben számítható ki – további információkért tekintse meg a [https://www.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
Vékony RAID6 logikai kötetek
Még nem lehetséges RAID6 vékony poolt vagy vékony kötetet létrehozni. RAID6 vékony pool létrehozása lehetséges úgy, hogy először egy normál RAID6 logikai kötetet hoz létre, majd a logikai kötetet vékony poolrá alakítja lvconvert segítségével. 2 logikai kötet szükséges: egy a vékony poolhoz és egy a vékony metaadatokhoz. Az átalakítási folyamat ezeket egyetlen logikai kötetbe fogja összevonni.
Az LVM 2.02.98 vagy annál újabb verzió szükséges ahhoz, hogy ez megfelelően működjön. A korábbi verziók vagy nem képesek erre, vagy szegmenshibát okoznak és megsértik a kötetcsoportot (VG). Továbbá, egy RAID6 logikai kötet vékony poolrá történő átalakítása megsemmisíti az LV-ben található összes meglévő adatot!
root #
lvcreate --type raid6 -i 2 -l20%VG -n thin_pool vg0
root #
lvcreate --type raid6 -i 2 -L4MB -n thin_meta vg0
root #
lvconvert --thinpool vg0/thin_pool --poolmetadata vg0/thin_meta
LVM RAID10
A RAID10 legalább 4 fizikai kötetet igényel. Az LVM szintaxis továbbá megköveteli, hogy a fizikai kötetek száma legyen a csíkozások és a tükör számának többszöröse, még akkor is, ha a RAID10 formátum ezt nem írja elő.
A RAID10 a RAID0 és RAID1 kombinációja. Erősebb, mint a RAID0+RAID1, mivel a tükrözés csíkszinten történik ahelyett, hogy a logikai kötet szintjén történne, így az elrendezésnek nem kell szimmetrikusnak lennie. Egy RAID10 kötet legalább egy hiányzó fizikai kötetet képes tolerálni, esetleg többet is.
Az LVM jelenleg korlátozza a RAID10-et egyetlen tükörre.
root #
lvcreate --type raid10 -l 1020 -i 2 -m 1 --nosync -n lvm_raid10 vg0
Mindkét opciót, -i
és -m
, meg kell adni: A -i
a csíkok számát, míg a -m
a tükrök számát jelöli. Két csík és 1 tükör esetén 4 fizikai kötet szükséges.
Vékony RAID10
Még nem lehetséges RAID10 vékony poolt vagy vékony köteteket létrehozni. RAID10 vékony pool létrehozása lehetséges úgy, hogy először egy normál RAID10 logikai kötetet hoz létre, majd a logikai kötetet vékony poolrá alakítja lvconvert segítségével. 2 logikai kötet szükséges: Egy a vékony poolhoz és egy a vékony metaadatokhoz. Az átalakítási folyamat ezeket egyetlen logikai kötetbe fogja összevonni.
Egy RAID10 logikai kötet vékony poolrá való átalakítása megsemmisíti az összes meglévő adatot a logikai kötetben!
root #
lvcreate -i 2 -m 1 --type raid10 -l 1012 -n thin_pool vg0
root #
lvcreate -i 2 -m 1 --type raid10 -l 6 -n thin_meta vg0
root #
lvconvert --thinpool vg0/thin_pool --poolmetadata vg0/thin_meta
Kísérletezés az LVM-mel
Lehetséges LVM-mel kísérletezni valódi tárolóeszközök használata nélkül. Ennek érdekében loopback eszközök kerülnek létrehozásra.
Először győződjön meg róla, hogy a loopback modul be van töltve.
root #
modprobe -r loop && modprobe loop max_part=63
Ha a loopback támogatás be van építve a kernelbe, akkor használja a
loop.max_part=63
boot opciót.Ezután állítsa be az LVM-et úgy, hogy ne használja a udev-et az eszközök keresésére:
/etc/lvm/lvm.conf
Az udev letiltása az LVM beállításábanobtain_device_list_from_udev = 0
Ez csak tesztelésre szolgál. Ügyeljen arra, hogy a beállítást visszaállítja, amikor valódi eszközökkel dolgozik, mivel sokkal gyorsabb az udev használata!
Hozzon létre néhány képfájlt, amelyek tárolóeszközökké válnak. A következő példa öt fájlt használ, összesen körülbelül 10GB tényleges merevlemez-területet:
root #
mkdir /var/lib/lvm_img
root #
dd if=/dev/null of=/var/lib/lvm_img/lvm0.img bs=1024 seek=2097152
root #
dd if=/dev/null of=/var/lib/lvm_img/lvm1.img bs=1024 seek=2097152
root #
dd if=/dev/null of=/var/lib/lvm_img/lvm2.img bs=1024 seek=2097152
root #
dd if=/dev/null of=/var/lib/lvm_img/lvm3.img bs=1024 seek=2097152
root #
dd if=/dev/null of=/var/lib/lvm_img/lvm4.img bs=1024 seek=2097152
Ellenőrizze, hogy mely loopback eszközök érhetők el:
root #
losetup -a
Feltételezve, hogy az összes loopback eszköz elérhető, hozza létre az eszközöket:
root #
losetup /dev/loop0 /var/lib/lvm_img/lvm0.img
root #
losetup /dev/loop1 /var/lib/lvm_img/lvm1.img
root #
losetup /dev/loop2 /var/lib/lvm_img/lvm2.img
root #
losetup /dev/loop3 /var/lib/lvm_img/lvm3.img
root #
losetup /dev/loop4 /var/lib/lvm_img/lvm4.img
A /dev/loop[0-4] eszközök mostantól elérhetők, és használhatók úgy, mint bármely más merevlemez a rendszerben (és így tökéletesek fizikai kötetekhez).
A következő újraindításkor az összes loopback eszköz felszabadul, és a /var/lib/lvm_img mappa törölhető.
Hibaelhárítás
Az LVM rendelkezik néhány olyan funkcióval, amelyek már bizonyos szintű redundanciát biztosítanak. Azonban vannak olyan helyzetek, amikor lehetséges elveszett fizikai kötetek vagy logikai kötetek helyreállítása.
A vgcfgrestore segédprogram
Alapértelmezés szerint, minden változás esetén egy LVM fizikai kötetben, kötetcsoportban vagy logikai kötetben, az LVM2 létrehoz egy biztonsági mentési fájlt a metaadatokról a /etc/lvm/archive könyvtárban. Ezek a fájlok felhasználhatók egy véletlen változtatás (például a rossz logikai kötet törlése) helyreállítására. Az LVM emellett a legfrissebb metaadatok biztonsági mentésének másolatát is megtartja a /etc/lvm/backup könyvtárban. Ezek felhasználhatók metaadatok visszaállítására egy helyettesítő lemezre, vagy sérült metaadatok javítására.
Annak megtekintéséhez, hogy a kötetcsoport mely állapotai állnak rendelkezésre visszaállításhoz (részleges kimenet az olvashatóság javítása érdekében):
root #
vgcfgrestore --list vg00
File: /etc/lvm/archive/vg0_00042-302371184.vg VG name: vg0 Description: Created *before* executing 'lvremove vg0/lvm_raid1' Backup Time: Sat Jul 13 01:41:32 201
Véletlenül törölt logikai kötet helyreállítása
Feltételezve, hogy a lvm_raid1 logikai kötet véletlenül törlésre került a vg0 kötetcsoportból, az alábbi módon lehetséges annak helyreállítása:
root #
vgcfgrestore -f /etc/lvm/archive/vg0_00042-302371184.vg vg0
A vgcfgrestore csak az LVM metaadatait állítja vissza, a logikai kötetben lévő adatokat nem. Azonban a pvremove, vgremove és lvremove parancsok csak a metaadatokat törlik, az adatokat érintetlenül hagyják. Ha viszont a
issue_discards
beállítás meg van adva a /etc/lvm/lvm.conf fájlban, akkor ezek a parancsok az adatokra nézve rombolóak.Meghibásodott fizikai kötet cseréje
Lehetséges egy valódi "csere" elvégzése, és az új fizikai kötet metaadatainak újraalkotása úgy, hogy azok megegyezzenek a régi fizikai kötet metaadataival:
root #
vgdisplay --partial --verbose
--- Physical volumes --- PV Name /dev/loop0 PV UUID iLdp2U-GX3X-W2PY-aSlX-AVE9-7zVC-Cjr5VU PV Status allocatable Total PE / Free PE 511 / 102 PV Name unknown device PV UUID T7bUjc-PYoO-bMqI-53vh-uxOV-xHYv-0VejBY PV Status allocatable Total PE / Free PE 511 / 102
A fontos sor itt az UUID "unknown device".
root #
pvcreate --uuid T7bUjc-PYoO-bMqI-53vh-uxOV-xHYv-0VejBY --restorefile /etc/lvm/backup/vg0 /dev/loop1
Couldn't find device with uuid T7bUjc-PYoO-bMqI-53vh-uxOV-xHYv-0VejBY. Physical volume "/dev/loop1" successfully created
Ez újraalkotja a fizikai kötet metaadatait, de nem a hiányzó logikai kötet vagy kötetcsoport adatait a fizikai kötetben.
root #
vgcfgrestore -f /etc/lvm/backup/vg0 vg0
Restored volume group vg0
Ez most rekonstruálja az összes hiányzó metaadatot a fizikai kötetben, beleértve a logikai kötet és a kötetcsoport adatait is. Azonban ez nem állítja helyre az adatokat, így a tükör nincs szinkronban.
root #
vgchange -ay vg0
device-mapper: reload ioctl on failed: Invalid argument 1 logical volume(s) in volume group "vg0" now active
root #
lvchange --resync vg0/lvm_raid1
Do you really want to deactivate logical volume lvm_raid1 to resync it? [y/n]: y
Ez újraszinkronizálja a tükröt. Ez működik RAID 4, 5 és 6 esetén is.
Logikai kötet deaktiválása
Egy logikai kötet deaktiválása a következő paranccsal lehetséges:
root #
umount /dev/vg0/lvol1
root #
lvchange -a n /dev/vg0/lvol1
Amíg a logikai kötetet nem aktiválják újra, nem lehetséges bárhol csatlakoztatni:
root #
lvchange -a y /dev/vg0/lvol1