20. Diszkek kezelése

A diszkek kezeléséről már tanultál az előző félévben, itt most feltételezem, hogy ismered a sáv, szektor, cluster, master boot rekord, partcíció, elsődleges partíció, kiterjesztett partíció és a logikai meghajtó fogalmát, és a /dev/sdX eszközfájlokat. Kezdjük egy gyakorlati példával, egy diszket fogunk partícionálni, amihez a cfdisk parancsot használjuk.

A diszk jelenlegi partíciós tábláját a cfdisk paranccsal lehet megjeleníteni.

root@koczka-lnx:~# cfdisk /dev/sda
cfdisk

A képernyőn megjelenő sorok a diszk és a partíciók adatait írják le. A fenti példában a columbo.uni-eszterhazy.hu gép diszkje szerepel, lássuk, milyen információkat tudunk meg róla!

Lemezmeghajtó /dev/sda:
 Itt ellenőrizheted, hogy pontosan melyik diszkkel dolgozol. Ez a lemez az első merevlemez a gépben (/dev/sda).
Méret:Itt látható a meghajtó mérete. Érdemes tudnod, hogy a byte-ban megadott méret a pontos adat, de a prefixumok használatát egyes rendszerek, gyártók másképp értelmezik. Az informatikában a váltószám a 2 10, azaz 1024, ezt használja az IEC (Nemzetközi Elektrotechnikai Bizottság) jelölésrendszere is. Az SI-ben viszont a 10 hatványait használják, ezért abban a szabályrendszerben 1 KByte=1000 byte, az IEC szabályai szerint viszont 1 KByte=1024 byte. A kilo, mega, giga, terra előtagok az SI-ben használatosak, ezért akik ezt használják, az 1000-et fogják váltószámként használni. Az IEC szerinti prefixeket ezért nevkben is megkülönböztetik ettől, az 1024-es váltószám alkalmazásakor a kibi, mebi, gibi, tebi perfixeket használják, a jelölésük Ki, Mi, Gi, Ti lesznek. Ez egyébként a merevlemez gyártóknak jól jön, hiszen a vásárlók azt feltételezik, hogy ők 1024-gyel fognak számolni, pedig nem, a vásárló pedig valójában kisebb diszket kap, mint amekkorát eredetileg gondolhatott. Az operációs rendszerek 1024-gyel szoktak számolni, így a hiány azonnal észrevehető akkor, amikor a diszket használatba vesszük.
Label:A lemezen található partíciós tábla a hagyományos, MS-DOS típusú, a diszk azonosítója 0xee17a8e7.

A következő blokkban a merevlemezen levő 3 partíció adatai olvashatók le. Ezen a diszken három partíció található, az /dev/sda1 mérete 3,7 GByte, a /dev/sda2-é 954M, a /dev/sda3-é pedig 11,46 GByte. Az /dev/sda1 és a /dev/sda3 típusa Linux (ezen tehát valamilyen linuxos fájlrendszer van), a /dev/sda2 pedig Linux lapozó, így annak tartalma a rendszer virtuális memóriája lesz.

root@koczka-lnx:~# cfdisk /dev/sdb
cfdisk - új lemez

Hozzunk létre két új partíciót ezen a diszken!

cfdisk - új partíció létrehozása

A mérete legyen 4 GByte!

cfdisk - új partíció mérete

A partíció típusa legyen primary!

cfdisk - új partíció mérete

A partíció elkészült.

cfdisk - új partíció mérete

A Típus kiválasztásával meghatározhatjuk a partíció típusát. A jelenlegi beállítás (Linux) megfelelő a céljainknak, ezen a partíción majd ext4 fájlrendszert szeretnénk működtetni. (Ettől még nem jön létre a fájlrendszer, azt majd egy másik paranccsal alakítjuk ki).

cfdisk - új partíció mérete

Kiírjuk a partíciós táblát a diszkre. A fennmaradó üres hellyel most nem foglalkozunk, azt majd a későbbiekben használjuk fel.

cfdisk - új partíció mérete

Mivel a partíciós tábla kiírása a korábbi táblát felülírja, ezért könnyen fennáll az adatvesztés lehetősége. A program ezért megerősítést vár, ha valóban ki akarod írni az új partíciós táblát, be kell gépelned a yes szót.

cfdisk - új partíció mérete

Tip

  • A GPT megjelenése előtt a partícionálás fő eszköze a fdisk parancs volt. Ma is gyakran használjuk ezt akkor, ha egyszerű, msdos típusú partíciós táblával dolgozunk. A cfdisk mindent tud, amit az fdisk, ezért ha a téma új neked, akkor a cfdisk paranccsal dolgozz.
  • A cfdisk mellett egy másik particionáló program is rendelkezésre áll, a neve parted. Ha van kedved, próbáld ki.

20.1. A Unixok fájlrendszere

Az elkészült partíciót meg kell formázni ahhoz, hogy azt használatba vehesd, amihez a Unixok számos parancsot kínálnak. A feladat nem bonyolult, de mivel sokféle fájlrendszer létezik, ezért a használható parancsok köre is elég széles. Mi most a legfontosabbakat nézzük át, ha ezek logikáját megérted, a többivel is könnyen tudsz majd dolgozni. A fájlrendszereket létrehozó parancsok neve egységes, mkfs.<fájlrendszer> alakú. Könnyen meggyőződhetsz, hogy a rendszeredben milyen ilyen parancsok állnak rendelkezésedre, csak gépeld be a mkfs. karaktereket a parancssorba, majd nyomd le kétszer a Tab gombot! A parancsértelmező kiírja az összes, ezzel keződő parancsot, a nevük tartalmazza a választható fájlrendszereket.

root@koczka-lnx:~# mkfs.
mkfs.bfs      mkfs.ext2     mkfs.ext4dev  mkfs.msdos    mkfs.xfs
mkfs.btrfs    mkfs.ext3     mkfs.fat      mkfs.ntfs
mkfs.cramfs   mkfs.ext4     mkfs.minix    mkfs.vfat

Hozzunk létre a /dev/sdb1 partíción ext4 fájlrendszert! A mkfs.ext4 parancsnak meg kell adni a partíciót, így a parancs mkfs.ext4 /dev/sdb1 lesz.

root@koczka-lnx:~# mkfs.ext4 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Fájlrendszer létrehozása 1048576 4 blokkal és 262144 inode-dal
Fájlrendszer UUID: 2f7d20f6-4c42-4cda-9915-0d3e584d5d68
Tartalék szuperblokkok tárolva a blokkokon:
  32768, 98304, 163840, 229376, 294912, 819200, 884736

Csoporttáblák foglalása: kész
Inode táblák írásakor: kész
Napló létrehozása (32768 blokk): kész
Szuperblokkok és fájlrendszer-könyvelési információk írása: kész

20.2. Fájlrendszerek csatolása

A fájlrendszer kialakítása után már csak egy lépés van hátra ahhoz, hogy az új partíciót használatba vehesd, ez a mountolás. Arról, hogy ez pontosan hogyan működik, a Fájlrendszerek csatolása fejezetben olvashattál. Lássuk, hogyan kell ezt elvégezni a gyakorlatban!

A mountolás parancsa a mount. Ennek számos paramétere van, mi most az egyszerűségre törekszünk, és csak a szükséges minimumot tanuljuk meg. Lássuk ezt egy példán, mountoljuk a /dev/sdb1 partíciót a /mnt könyvtárba!

root@koczka-lnx:~# mount /dev/sdb1 /mnt

Látszólag nem történt semmi, de a hibaüzenet elmaradása azt jelenti, hogy a parancs sikeresen végrehajtásra került. Nézzük meg az /mnt könyvtár tartalmát! Egy lost+found nevű könyvtár van itt, a fájlrendszer javításakor ebbe kerülhetnek azok a fájlok, amelyek a javítási folyamat helyreállít.

root@koczka-lnx:~# ls -l /mnt
összesen 16
drwx------ 2 root root 16384 okt   16 06:05 lost+found

Azt, hogy az operációs rendszer milyen csatolásokat tart fenn, a mount paranccsal lehet megnézni. Mivel ennek kimenetében sok olyan sor van, amiről még nem tanultál, ezért szűröm annek kimenetét:

root@koczka-lnx:~# mount | grep sd
/dev/sda1 on / type ext4 (rw,noatime,nodiratime,errors=remount-ro,data=ordered)
/dev/sda3 on /var type ext4 (rw,noatime,nodiratime,data=ordered)
/dev/sdb1 on /mnt type ext4 (rw,relatime,data=ordered)

A parancs három sort ad vissza, a három csatolt partíció adataival. Az első oszlopban az eszközfájl neve szerepel, amit a csatolási pont, majd a fájlrendszer típusa követ. A zárójelben szereplő poaraméterek a csatolás paraméterei, az rw az olvasható-írható módot jelenti (ez lehetne ro, azaz read-only is). A noatime és a nodiratime jelentését a telepítés során már megismerted.

Ha már nincs szükséged a csatolásra, azt meg is tudod szüntetni az umount paranccsal. Ez nem bonyolult parancs, paraméterként vagy az eszközfájlt, vagy a csatolási pontot kell megadnod. (Azt javaslom, az utóbbit válaszd, a későbbiekben látni fogod, hogy az eszközfájl helyett mást is meg lehet adni, így a biztos pont a csatolási pont lesz.)

root@koczka-lnx:~# umount /mn

Ha ellenőrizzük a mount paranccsal, látható, hogy a /dev/sdb1 már nem szerepel a csatolt partíciók közt.

root@koczka-lnx:~# mount | grep sd
/dev/sda1 on / type ext4 (rw,noatime,nodiratime,errors=remount-ro,data=ordered)
/dev/sda3 on /var type ext4 (rw,noatime,nodiratime,data=ordered)

Tip

  • A mountolást kell használnod minden esetben, amikor valamilyen háttértárat használni akarsz. Ha egy pendrive-ot akarsz használni, a csatlakoztatás után azt is mountolnod kell, és ugyanez a helyzet egy CD/DVD olvasóval, esetleg floppy lemezzel is. A cstoláshoz ismerni kell a megfelelő eszközfájl nevét, ez a CD/DVD-k esetében gyakran a /dev/cdrom, vagy /dev/sr0, a floppy lemez esetén a /dev/fd0 (floppy disk 0). A pendrive-ok merevlemezként viselkednek, így a nevük /dev/sdX1 lesz, példánkban, ahol az sda és az sdb már használatban van, a /dev/sdc1 lenne.
  • Sok rendszer tartalmaz egy automount programot, amely a mountolást minden olyan eszköz esetében automatikusan elvégzi, ahol a rendszer képes érzékelni az adathordozó behelyezését. Ilyenek a CD/DVD lemezek, külső merevlemezek, pendrive-ok, de pl. a mágneslemezek esetében nincs ilyen érzékelési mechanizmus, azokkal nem működik.

Egy rendszer esetében már az induláskor el kell végezni az egyes csatolásokat. Azt, hogy melyik eszköz melyik partícióját hová és milyen paraméterekkel kell mountolni a /etc/fstab fájl írja le. Nézzük meg a tartalmát!

root@koczka-lnx:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=2f93a3b9-9456-4036-b7d8-8cfd74de7b8f /               ext4    noatime,nodiratime,errors=remount-ro 0       1
# /var was on /dev/sda3 during installation
UUID=9f77b647-cd1c-47be-83df-494c1d970033 /var            ext4    noatime,nodiratime 0       2
# swap was on /dev/sda2 during installation
UUID=f5cd2468-0f35-45d4-b25c-c6a25bfbb7c3 none            swap    sw              0       0

A #-tel kezdődő sokrok megjegzések, ezzel most nem kell foglalkozunk. A három további sor az egyes csatolásokat írja le, de ebben az eszközfájl helyett az ún. UUID-t használjuk a partíció azonosítására. A sorok következő paramétere a csatolási pont, a fájlrendszer neve és a csatolási paraméterek. A sort két szám zárja, ezek sorszámok, amelyek az egyes partíciókkal kapcsolatos műveletek sorrendjét határozzák meg, az első a mentés sorrendjét (ezt ma már nemigazán használjuk), a második pedig a fájlrendszerek ellenőrzésének sorrendjét. Utóbbira a boot folyamat során szokott sor kerülni, ezért ennek van jelentősége.

A UUID egyedi azonosítást biztosít az egyes eszközökön található partíciók számára. A /dev/sdXY eszközfájlok használata bonyodalmat okozhat akkor, ha a merevlemezeket valamilyen okból átkábelezed, egy diszk eltávolításakor, vagy beépítésekor ezek a nevek megváltozhatnak. Ezért célszerűbb a UUID-k használata a csatolási pontok megadásakor. A UUID-ket a rendszer automatiksan elkészíti a fájlrendszer kialakítása során, az egyes eszközökhöz tartozó UUID-t lekérdezni a blkid paranccsal tudod. A UUID nem egy unixos fejlesztés, a Redundáns diszkek c. fejezetben látni fogod, hogy más rendszerek, pl. a Windows család is képes a kezelésére.

root@koczka-lnx:~# blkid
/dev/sda1: LABEL="ROOT" UUID="2f93a3b9-9456-4036-b7d8-8cfd74de7b8f" TYPE="ext4" PARTUUID="ee17a8e7-01"
/dev/sda2: UUID="f5cd2468-0f35-45d4-b25c-c6a25bfbb7c3" TYPE="swap" PARTUUID="ee17a8e7-02"
/dev/sda3: LABEL="VAR" UUID="9f77b647-cd1c-47be-83df-494c1d970033" TYPE="ext4" PARTUUID="ee17a8e7-03"
/dev/sr0: UUID="2016-07-19-21-21-08-00" LABEL="Ubuntu-Server 16.04.1 LTS amd64" TYPE="iso9660" PTUUID="232e9d64" PTTYPE="dos"
/dev/sdb1: UUID="2f7d20f6-4c42-4cda-9915-0d3e584d5d68" TYPE="ext4" PARTUUID="3853f685-01"

Lássunk egy gyors példát, csatoljuk a /dev/sdb1 partíciót, de most a UUID használatával! Az eszközfájl helyére most a blkid kimenetében látható UUID-t írom, és a mountolás ugyanúgy végbemegy:

root@koczka-lnx:~# mount UUID="2f7d20f6-4c42-4cda-9915-0d3e584d5d68" /mnt

A /etc/fstab fájl a root számára írható, ezért ott újabb eszközök mountolását írhatjuk elő. Példánkban a /dev/sdb1 partíció automatikus csatolását végezzük el úgy, hogy a /etc/fstab végére az alábbi sort írjuk be:

/dev/sdb1 /mnt ext4 auto 0 3

A gép újraindítása után meggyőződhetsz a művelet helyességéről a mount paranccsal:

Tip

A /etc/fstab fájlban leírtak alapján a mount parancsok még rövidebben végezhetők el, ha egy partícióra vonatkozó sor létezik az /etc/fstab fájlban, akkor pl. így: mount /mnt. Ebben az esetben a mount parancs megkeresi a /etc/fstab fájlban, hogy a /mnt könyvtárhoz melyik partíciót rendeltük, és kiegészíti a parancsot ezzel a paraméterrel. Minden más, ott leírt paramétert alkalmazni fog (noatim, nodiratime, rw stb.).

Lássunk még néhány gyakorlati példát!

Ha a CD/DVD meghajtóba egy lemezt teszel, azt is mountolni kell. A javasolt mountolási pont Linux változatonként eltérhet, de gyakran a /media/cdrom. Az alábbi példában elvégezzük a mountolást. Ha az /etc/fstab fájlban szeretnéd megadni ezt, fájlrendszerként iso9660-at adj meg, általában ez van a PC-s CD/DVD lemezeken.

root@koczka-lnx:~# mount /dev/cdrom /media/cdrom

Ha a csatolást le akarod bontani, értelemszerűen a umount /dev/cdrom vagy a umount /media/cdrom parancsot használd.

Ha egy USB porton csatlakozó külső merevlemezt szeretnél mountolni, amit Windows alatt formáztál meg, hasonlóképp kell eljárnod. Ahhoz, hogy a mount parancsot használni tudd, ismerned kellene az USB-s merevlemez eszközfájljának nevét. Ezek listázását az lsblk paranccsal tudod elvégezni, az alábbi példában a diszk méretek alapján látható, hogy az /dev/sdb lesz a behelyezett 1 TByte-os külső HDD.

root@koczka-lnx:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0    10G  0 disk
├─sda1   8:1    0   3,7G  0 part /
├─sda2   8:2    0   954M  0 part [SWAP]
└─sda3   8:3    0   5,4G  0 part /var
sdb      8:16   0 931,5G  0 disk
└─sdb1   8:17   0 931,5G  0 part
sr0     11:0    1  1024M  0 rom

Ez után a diszk első partíciója már egyszerűen mountolható (először készítek egy könyvtárat a mountpontnak):

root@koczka-lnx:~# mkdir /media/externalhdd
root@koczka-lnx:~# mount /dev/sdb1 /media/externalhdd/
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.

A példa arról is árulkodik, hogy a diszket legutóbb nem távolítottam el szabályosan, a mount parancs javítja is ezt a “hibát”.

Egyébként, ha már az USB-s eszközökről van szó, érdemes megjegyezni, hogy az USB-s eszközöket az lsusb paranccsal listázhatod ki. Ezzel megállapítható, hogy egy Western Digital gyártmányú külső merevlemezt csatlakoztattam a géphez, aminek azonosítója: 1058:25a2. Egy gyors gyakorlatként keress rá a 1058:25a2 kifejezésre a Google-ben! Hamar megtalálod, hogy az a Elements 25A2 típusú diszk azonosítója, így minden más technikai paramétert azonnal megtalálhatsz róla.

root@koczka-lnx:~# lsusb
Bus 002 Device 002: ID 1058:25a2 Western Digital Technologies, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Tip

Egy másik számítógép megosztott mappáját is felmountolhatod, ha azon működik a megosztást támogató szoftver és van hozzá jogosultságod. A Unix rendszereken a megosztást az NFS szerverrel (Network FileSystem) szokták megoldani. Egy ilyen szerver egy könyvtárát agy gépre felmountolni egy ehhez hasonló paranccsal lehet: mount 192.168.1.33:/home /nfs/home. Ennek eredményeképp a /nfs/home könyvtáron keresztül a 192.168.1.33-as IP című gép /home könyvtárát érjük el.

20.2.1. Bővebben a csatolásról

Játsszunk egy kicsit a csatolásokkal, mutatok néhány ezzel kapcsolatos érdekes lehetőséget. Ezekhez a dd parancsot is használni fogom, ezért először lássuk, mire használhatod ezt! Ha lehet, egy gyakorlás céljára telepített virtuális géppel dolgozz!

Danger

Az alábbi példák kipróbálásával nagyon vigyázz, nehogy olyan diszkeket, partíciókat írj felül, amelyek számodra értékes adatokat tartalmaznak!

A dd jelentése Disk Dump, alapvetően a feladata az, hogy valahonnan olvasson, és azt valahová kiírja. Különösen jól használható adathordozók tartalmának olvasására és írására. Az alábbi példában egy CD lemez tartalmát bájtról bájtra olvassom, és egy fájlba írom:

root@koczka-lnx:~# dd if=/dev/cdrom of=counterstrike.iso bs=1024K

A paraméterek jelentése:

if=/dev/cdrom:a parancs ebből a fájlból olvas (az if jelentése itt input file). A /dev/cdrom a CD/DVD meghajtó eszközfájlja, ennek olvasása a lemez bitszintű olvasását (tehát nem a fájlrendszerének fájljait) jelenti.
of=counterstrike.iso:
 az olvasott bájtok a counterstrike.iso fájlba kerülnek. Az of jelentése output file.
bs=1024K:a bs jelentése block size. Ha ezt a paramétert nem adod meg, a dd egybájtos egységeket olvas, majd ír, ezzel a másolás nagyon sok időt vesz majd igénybe. Ha a blokkméretet megemeled pl. 1024K-ra, akkor a parancs egy lépésben 1 MByte-ot olvas és ír, ezzel lényegesen gyorsabban történik meg a másolás.
count:Bár most nem használtuk, a parancsnak megadhatod azt is, hogy hány blokkot akarsz másolni vele, ehhez a count=n formát kell használnod. A példában azért nem használtam, mert nem tudom előre, hogy a forrás hány blokkból áll, így azt a dd a fájl végéig olvassa majd.

Egy fájlt is fel lehet mountolni, ha a fájl egy fájlrendszert taralmaz. Az előző példában készült counterstrike.iso montolása az alábbi módon történhet. Ha fájlt akarsz mountolni, használnod kell a -o loop paramétert, amely az ún. loop device-t használja a mountolás végrehajtásához.

root@koczka-lnx:~#  mount -o loop counterstrike.iso /media/cdrom

Ugyanezt egy fájllal is megcsinálhatod, nézzük meg ezt is egy példán keresztül! Először hozzunk létre egy üres fájlt a /tmp könyvtárban, a neve legyen vdisk! A mérete legyen 100M Byte (1024 darab 100K-s blokkból álljon)! A dd parancs a /dev/zero fájlból folyamatosan 0-kat olvas, és azokat a vdisk fájlba írja:

root@raid1:/tmp# dd if=/dev/zero of=vdisk count=1024 bs=100K
1024+0 beolvasott rekord
1024+0 kiírt rekord
104857600 bájt (105 MB, 100 MiB) másolva, 0,173312 s, 605 MB/s

A fájl valóban létrejött:

root@raid1:/tmp# ls -l
összesen 102408
-rw-r--r-- 1 root root 104857600 okt   23 21:49 vdisk

Most megformázzuk a fájlt. Tudom, ez elsőre nem hangzik jól, de minden további nélkül megteheted:

root@raid1:/tmp# mkfs.ext4 vdisk
mke2fs 1.42.13 (17-May-2015)
Eszközblokkok eldobása: kész
Fájlrendszer létrehozása 102400 1 blokkal és 25688 inode-dal
Fájlrendszer UUID: 2151b034-79f5-45da-8879-9c7d15ceabdd
Tartalék szuperblokkok tárolva a blokkokon:
  8193, 24577, 40961, 57345, 73729

Csoporttáblák foglalása: kész
Inode táblák írásakor: kész
Napló létrehozása (4096 blokk): kész
Szuperblokkok és fájlrendszer-könyvelési információk írása: kész

Most csatoljuk a fájlt, a csatolandó eszköz a fájl lesz:

root@raid1:/tmp# mount vdisk /mnt

Lássuk a tartalomjegyzékét:

root@raid1:/tmp# ls -l /mnt
összesen 12
drwx------ 2 root root 12288 okt   23 21:49 lost+found

Egy SD kártya másolása egy másikra (a forrás a /dev/sde a cél a /dev/sdf:

root@koczka-lnx:~# dd if=/dev/sde of=/dev/sdf bs=1024K

Egy merevlemez vagy SD kártya teljes tartalmának felülírása pl. eladás előtt az alábbi paranccsal történhet. A forrás a /dev/random, amely minden olvasáskor egy véletlenszámot ad vissza. A cél a törlendő merevlemez, példánkban a /dev/sdc. Ha ezt lefuttatod, a diszk tartalmát nem lesz könnyű helyreállítani, házi eszközökkel, szoftverekkel lehetetlen vállalkozásnak bizonyul majd.

root@koczka-lnx:~# dd if=/dev/random of=/dev/sdc bs=1024K

20.3. Redundáns diszkek

Ha egy PC szervizest megkérdeznél, hogy a számítógép mely alkatrészei szoktak a leggyakrabban meghibásodni, valószínűleg a tápegységeket és a merevlemezeket említené az első helyeken. A tápegység meghibásodása a legtöbb esetben nem okoz nagy traumát, az alkatrész cseréje után a számítógép újra működőképes lesz, a veszteséget a leállás következtében felmerült munkaidő vagy termelés kiesése jelenti. A Miért szervert? c. részben láttad, hogy a tápegység meghibásodásának kezelésére a szerverekbe több ilyet is beépítenek, így az egyik kiesése esetén a folyamatos üzem fennmarad.

A merevlemezek esetében azonban ennél bonyolultabb a helyzet, mert ha ez meghibásodik, akkor a rajta tárolt adat is elvész, ennek kezelése komoly problémákat vethet fel. Az adatok mentése sok esetben önmagában már nem elég, hoszen egy banki rendszerben, ahol az egyes számlák közt folyamatos mozgások történnek, nem lenne elfogadható megoldás, ha a rendszergazdák visszatöltenék az éjjeli mentést.

Ezért kiszolgáló gépet soha nem szoktam építeni úgy, hogy abban csak egy merevlemez van, azokban mindig egy több lemezből álló, az adatokat redundánsan tartalmazó ún. RAID tömböt teszek. A RAID betűszó, eredetileg a Redundant Array of Inexpensive Disks (olcsó merevlemezek redundáns tömbje), később a Redundant Array of Independent Disks (egymástól független diszkek redundáns tömbje). A mi szemszögünkből a lényeget a második megfogalmazás jelenti.

A feladatunk tehát az, hogy több diszk felhasználásával biztosítsuk, hogy egy vagy több diszk meghibásodása esetén ne történjen adatvesztés, és a folyamatos üzem is fenntartható legyen. Lássuk, milyen megoldások léteznek erre, ezek hogyan működnek, milyen előnyeik, hátrányaik vannak!

A lehegyszerűbb megoldást az ún. RAID1 jelenti. (A nevében levő 1-es a RAID tömb típusára utal.) Ebben az alapötlet az, hogy a tömbben két diszket használunk fel, és minden adatot mindkét diszkre kiírunk. Az alábbi ábrán a teljes folymatot mutatom meg, hogy biztosan jól értsd a RAID helyét a fájlkezelés rendszerében.

A bal oldalon az alkalmazás rteg látható. Ebben egy alkalmazással, példánkban a Microsoft Worddel menteni akarunk egy fájlt. A Wordnek “fogalma sincs” mi az, hogy fájlrendszer, bekéri a mentendő fájl nevét és a helyét, átadja a mentendő adatokat az operációs rendszer megfelelő moduljának, és rábízza a mentést. A fájlrendszer rétege a mentendő adatokat tárolási egységekre bontja (példánkban hat egységre), majd továbbítja ezt a diszk kezelő réteg felé. Példánkban ez a réteg kezeli a RAID1-et, így nem egy diszkre, hanem mindkettőre kiírja az adatblokkokat.

Rail rétegek

Mi történik, ha az egyik diszk elvész? A diszk kezelő réteg szoftvere érzékeli ezt, lekapcsolja a hibás diszket, és a továbbiakban egy diszkkel (“fél lábon”) működik tovább. Amikor a rendszer üzemeltetője észleli a hibát, a hibás lemez kicserélése után elindítja azt a szinkronizálási folyamatot, amely során a működőképes diszk tartalmát átmásolja az új diszkre (ez az újraépítés, a rebuild). Ez alatt a rendszer mindvégig működőképes marad, bár a rebuild érezhető teljesítményvesztést okoz.

Hasonlítsuk össze a tömb sebességét az egy diszkre alapozott rendszerrel!

Írás:Az írási folyamatok sebessége nem változik. A felírandó adatblokkokat mindkét diszkre kiküldi a rendszer, azok felírása közel párhuzamosan történik, így itt nem számolhatunk különbséggel.
Olvasás:Ez akár kétszer olyan gyors is lehet a RAID1 esetében, mivel a diszk kezelő réteg számára adott a lehetőség, hogy egy adatblokkot az egyik diszkről, míg a következőt a másikról olvassa. (Példánkban az 1-est a Disk1-ről, és vele párhuzamosan a 2-est a Disk2-ről, a 3-ast megint a Disk1-ről és így tovább.)

Mi a helyzet a tárolókapacitással? Ez a teljes tárolókapacitás fele, azaz, ha egy diszk mérete N, akkor a RAID1-es tömb teljes mérete is N lesz.

Note

  • A legtöbb RAID megoldás szoftvere képes valamilyen formában értesítést küldeni, ha valamilyen hiba lép fel a RAID alrendszerben. Ez általában egy e-mail értesítés, de kis ügyeskedéssel más üzenetek is kiküldhetők, SMS-ek, de akár az azonnali üzenetküldő szolgáltatások is beköthetők lehetnek.
  • RAID1-es tömböt építhetsz kettőnél több diszkből is, de abban az esetben is minden diszk tartalma azonos lesz. A teljes tárolókapacitás továbbra is N lesz, az olvasási sebesség tovább gyorsulhat.
  • A RAID1-et azért, mert az egyes diszkek tartalma megegyezik, tükrözésnek is nevezik.

A RAID tömbök esetében minimalizálni kell azt az időt, amíg a tömb valamelyik eleme nem áll rendelkezésre (ilyenkor azt mondjuk, a tömb degradált állapotban van). Hogy ez minél kevesebb ideig legyen így, sok megoldás lehetőséget ad az ún. spare disk (tartalék diszk) beépítésére és kezelésére. Amegoldás lényege az, hogy a két diszk mellé egy harmadikat is beépítenek, amit a normál üzemben nem használ a rendszer. Amennyiben valamelyik diszk meghibásodik, a RAID alrendszer azt leválasztja, és a spare diskre azonnal elindítja rebuild folymatot.

A RAID1 mellett gyakran találkozhatsz egy másik, két diszkre alapozott megoldással, a RAID0-val. Ennek működése első pillantásra nagyon hasonlít a RAI1-re, de attól egy pontban eltér, ami minden tulajdonságát megváltoztatja.

Ahogyan az alábbi ábrán látható, a RAID1 működése során egy adatblokkot csak egy diszkre ír ki, ezért redundáns adattárolásról ebben az esetben nem beszélhetünk. Ezért a tömb tulajdonságai egészen mások, mint a RAID 1 esetében:

  • A teljes tárolókapacitás 2*N, mivel a redundanci hiánya miatt mindkét diszk teljes egészében hasznos adatokkal telik meg.
  • Az írási és az olvasási sebesség is az egydiszkes rendszer duplája lesz.
  • Ismét csak a redundancia hiánya miatt, amennyiben az egyik diszk meghibásodik, a teljes alrendszer tartalma használhatatlan lesz.

Ez nem sok pozitívumot tartalmaz, egyáltalán miért érdemes RAID0-s alrendszert készíteni? Csak a sebesség miatt. Ha különösen gyors háttértárra van szükséged, és el tudod fogadni, hogy azt rendszeresen mentened kell, akkor érdemes lehet RAID0-s tömböt használni.

Tip

  • Ne feledd, hogy ha több diszked van, akkor annak valószínűsége, hogy valamelyik meghibásodik, magasabb, mint annak valószínűsége, hogy egy diszkből egy meghibásodik.
  • A RAID0 névben a 0 azt is jelenti, hogy nem igazi RAID-ről van szó.
  • Ha azt gondolod, hogy az egyik diszk elvesztése esetén minden második fájlod elérhető lesz egy RAID0-s tömbben, akkor nem értetted meg a RAID réteg helyét. Ez a fájlrendszer alatt működik, ezen a szinten csak adatblokkok vannak, a fájlok itt nem értelmezettek.

A RAID1 legnagyobb problémája a diszkek kihasználtságának alacsony aránya. Ezért további RAID megoldásokat dolgoztak ki, van RAID2, RAID3, RAID4, de ezek a gyakrolatban nem terjedtek el, ezért ezekkel nem foglalkozunk. (Ha érdekel a működésük, az Interneten találsz leírásokat róluk.) A következő megoldást a RAID5 jelenti, amelynek működéséhez legalább három diszkre van szükség.

Raid 5

Az aábrán látható, hogy a RAID5 a diszkre íráskor minden két egységnyi adathoz három egységnyi diszk területet használ, két adat után egy ún. ECC-t (Error Correction Code) számol, és azt írja fel a harmadik blokkba. A ECC-k kelyét ráadásul forgatja, az egyes diszkeken a ECC-k azonos számban helyezkednek el.

A ECC kiszámítása a XOR (kizáró vagy) műveleten alapul, a megértéséhez lássunk egy példát! Képezzünk ECC-t két számból, a 153-ból és a 214-ből! Ez után “elveszítjük” az egyiket, majd a ECC segítségével újból kiszámítjuk. Képezzük először a ECC-t úgy, hogy a két számot kettes számrendszerben írjuk fel, majd bitenként kizáró vagy műveletet hajtunk végre:

153 1 0 0 1 1 0 0 1
214 1 0 0 0 1 1 0 0
21 0 0 0 1 0 1 0 1

A ECC értéke tehát 21, ezt írjuk fel a RAID5 esetében a ECC blokkba.

Most feltételezzük, hogy az egyik diszk tartalma megsemmisült, az azon található adatok nem érhetők el. A rendszerbe betesszük az új diszket, és elindul a rebiud folyamat. Ennek kétféle esetet kell kezelnie. Az egyikben az elveszett adat a ECC, ez a fentiek alapján nem probléma, hiszen az újra kiszámítható. A másik esetben ismert az egyik adat és a ECC, ki kell számítani az elveszett másik adatot. A példánkban ismerjük a 214-et és a ECC 21-es értékét, számítsuk ki a hiányzó másik adatot! A megoldáshoz ugyanúgy a kizáró vagy műveletet kell használni, mint az első esetben:

214 1 0 0 0 1 1 0 0
21 0 0 0 1 0 1 0 1
153 1 0 0 1 1 0 0 1

Visszakptuk az eredeti adatot, a 153-at! A RAID5 tömb normál működése során is rengeteg ECC számítást igényel, a rebuild folyamat esetében ez fokozottan igaz. Egy nagyobb tömb esetében a rebuild folyamat sajnos napokat is igénybe vehet.

A RAID5 írási és olvasási sebessége is nagyobb, mint az egydiszkes rendszeré, hiszen egységnyi idő alatt két adatblokk is kiírásra kerül. A diszkek kihasználtsága jpbb, mint a RAID1-é, hogyen ott a teljes diszk terület fele használható adatok tárolására, egy N diszkből álló RAID5-ös tömb esetében N-1 (hoszen mindig egy ECC kerül felírásra). Az adattárolás biztonságával már rosszabb a helyzet, a tömbből továbbra is egy diszk veszhet el, de mivel három diszkünk van, az, hogy egy meghibásodik, nagyobb valószínűséggel bír.

Tip

A RAID5 tömb 3-nál több diszkből is állhat, ebben az esetben két adatblokkból képződik egy ECC, majd a következő adattal és a ECC-vel egy újabb ECC és így tovább. Ebből következően a RAID5-ös tömbök sebessége a diszkek számával folyamatosan csökken.

A RAID5-öt számos esetben kritika azért, mert a nagyméretű diszkek hazsnálata esetén a rebuild művelet nagyon sokáig tart, és ha ennek során még egy diszk meghibásodik, a teljes RAID tömb tartalma elvész. A helyzetet tovább rontja az, hogy a diszkek rendszerint a gyártósorról egymás után lejött diszkek, a gyakorlatban még asorozatszámuk is egymás után következik, így várhatóan egymáshoz nagyon közeli időpontban fognak meghibásodni. Ezért sokan tartózkodnak a RAID5-től, és helyette RAID6 használatát javasolják.

A RAID6 működésében nagyon kasonlít a RAID5-höz, de nem csak soronként, hanem oszloponként is képez ECC-ket. Ennek következtében két diszk elvesztését bírja ki, így minimálisan 4 diszk szükséges hozzá, a tárolókapacitása viszont csak 2N lesz, ahol N az egyes diszkek mérete.

A fenti RAID tömbökből hibrid megoldások is készíthetők úgy, hogy raid tömböket használunk fel egy újabb tömb elemeiként. Lássunk néhány példát ezekre!

A RAID0+1 RAID0-s tömbökből alkot RAID1-es tömböt úgy, ahogyan azt alábbi ábra mutatja. A Disk1 és a Disk2 RAID0-ban működnek, Disk3 és Disk4 szintén egy tükrözott tömböt alkotnak. Ezt a két tömböt egy RAID1-es tömbbe fogjuk össze, így a megnövekedett sebesség előnyét is megkapjuk.

RAID 0+1

Mi történik, ha a RAID0+1 tömb meghibásodik? Akér két diszk is elveszhet, ha azok a azonos RAID0-s tömb diszkjeiként működnek. Ha viszont különböző tömbben hibásodnak meg, a teljes tömb megsemmisül.

Fordítsuk meg a két tömb szerepét, RAID1-es tömböket szervezzünk RAID 0-ba! Ebben az esetben is két diszk sérülhet meg abban az esetben, ha azok két különböző RAID1-es résztömb elemei. Ha a két diszk azonos RAID1-es tömbben van, a RAID0-s tömb egyik lába elvész, így a teljes tömb megsemmisül.

RAID 1+0

A RAID5 is lehet hibrid tömb eleme. A RAID5+0 esetében két RAID5-ös tömböt fogunk össze egy RAID0-s tömbbe. Egy ilyen tömbben maximum két diszk veszhet el, de csak abban az esetben, ha azok két különböző RAID5-ös tömbben vannak.

RAID 5+0

A RAID0+5 működése ennek fordítottja, három RAID0-s tömb alkot egy RAID5-öst. Itt is két diszk veszhet el abban az esetben, ha azok egy RAID0-s tömb elemei. Mivel a RAID0-s tömbök nem maradnak működőképesek, ha egy diszk megsemmisül bennük, ezért más esetekben két diszk elvesztése a teljes tömb megsemmisülését jelenti.

RAID 0+5

A RAID megoldásokra beszerezhetsz célhardvert, de a mai operációs rendszerek egy része szoftveres megoldást is kínál erre. Azt, hogy melyik megoldást válaszd, az adott környezet dönti el. A hardveres RAID vezérlő mellett és ellen az alábbi érvek játszanak szerepet,

Előnyök:
  • A hardveres megoldás leveszi a terhet a processzorról, és az erre dedikált hardverrel látja azt el. A RAID5-től megjelenő ECC számítás következménye már érezhető lehet a hardveres megoldás javára.
  • A hardveres vezérlők támmogathatók egy ún. BBU-val (Battery Backup Unit). Ez egy akkumulátorral ellátott modul, amely áramszünet esetén is képes a diszkre még ki nem írt adatok tárolására. Ha ilyen is rendelkezésre áll, bekapcsolható a vezérlőn az írás cache, ami jelentősen felgyorsítja a diszk műveleteket. BBU nélkül is meg lehet ezt tenni, de ebben az esetben az áramszünet adatvesztéshez vezet. Az ábrán a HP P410-es RAID vezérlője és a BBU-jához kapcsolt akkumulátor látható.
Hot Swap disk
  • Rendszerint (bár nem kizárólag) a hardveres RAID vezérlővel ellátott gépek esetében építenek be olyan merevlemez caddy-ket, amelyek üzem közben lehetővé teszik a merevlemez cseréjét. Ezt a lehetőséget hot swap-nak nevezik. Az ábrán a Lenovo szerverének üzem közben cserélhető diszk megoldása látható.
BBU
Hátrányok:
  • A legolcsóbb hardveres RAID vezérlők csak a PC-s alaplapokra integrált SATA vezérlők, amelyekhez driver szükséges, ez pedig valójában szoftveres megoldást jelent.
  • Az olcsó RAID vezérlők gyakran csak RAID0-t és RAID1-et tudnak.
  • A RAID vezérlő meghibásodása esetén tartalék RAID vezérlőre van szükség. A szoftveres megoldásban ilyenre nincs szükség.
  • Előfordulhat (bár én még nem találkoztam ilyennel) hogy a hardveres RAID vezérlőn működő diszk egy normál SATA portra kapcsolva nem olvasható, mert a RAID vezérlő valamilyen speciális formátumot használ. Ebben az esetben mindenképp szükség van egy, az eredetivel megegyező RAID vezérlőre ahhoz, hogy az adatainkhoz hozzáférhessünk.

Tip

  • Fontos, hogy értsd, a RAID alrendszerek használata nem helyettesíti a rendszeres adatmentést! Az én gyakorlatomban adatok helyreállítására túlnyomó többségben nem azért volt szükség, mert meghibásodott valamilyen adattároló, hanem mert a felhasználók letörölték, felülírták a fájljaikat. Ezen a RAID alrendszerek nem segítenek, a változások azonnal végbennek, így nincs honnan helyreállítani az ilyen módon elvesztett adatokat.
  • A mai merevlemezek képesek felügyelni a saját állapotukat. Nyilvántartják a hibás szektorok számát, rögzítik a sikertelen műveletek számát, és sok más, a működésük során felmerült hibát is. Ezt a funkciót s.m.a.r.t.-nak nevezik (Self-Monitoring, Analysis and Reporting Technology). A működés során gyűjtött adatok kiolvashatók, és ezzel a merevlemezek hátralevő élettartama is meghatározható. Erre alapozva egy élettartama vége felé járó merevlemez már akkor kicserélhető, amikor az még nem hibásodott meg. Ha érdekel a téma, és Windows-t használsz, probáld ki a Hard Disk Sentinel-t. Linuxon a smartmontools látja el ezt a feladatot (a virtuális gépen nem érdemes ezzel foglalkoznod, nem fogsz valós eredményt kapni).

20.4. Telepítés RAID tömbre

A RAID alapelveinek megértése után lássuk, hogyan kell azt a gyakorlatban megvalósítani! Először azt mutatom meg, hogy a telepítés során mit kell másképp csinálnod, ha a teljes rendszert szoftveres RAID tömbökre szeretnéd telepíteni, a következő fejezetben pedig megismered az mdadm parancsot, amivel ezeket karban lehet tartani.

Ha hardveres RAID vezérlőt használsz, akkor az egyes tömböket a RAID vezérlő szoftverével kell előkészítened. Ebbe általában a gép indulásakor tudsz belépni, hasonlóan ahhoz, mint amikor a géped BIOS-ába szeretnél belépni. Ez általában egy karakteres (a legújabb szerverek esetében egy grafikus) felület, amire az alábbi néhány ábra mutat példát (ezek egy HP ProLiant G9-es szerver HP P410ar vezérlőjének kezelőfelületéről készültek.)

Két SSD összekapcsolásával hozunk létre egy tükrözött kötetet.

Hardveres Raid vezérlő beállítása

A RAID tömb kialakításakor több paraméterrel szabályozható a tömb működése.

Hardveres Raid vezérlő beállítása

A rendszerben levő diszkek és tömbök (itt logikai meghajtóknak nevezik őket) áttekinthetők és később is menedzselhetők. Fontos, hogy az operációs rendszer számára ezek a tömbök mint meghajtók jelennek meg, azok összetevőiről, a RAID működéséről annak nem igazán van tudomása. Ha ilyen gépre telepítesz operációs rendszert, pontosan úgy kell eljárnod, mint ahogyan azt a rendszer telepítésekor tanultad, a telepítés során nem kell a RAID tömbökkel foglalkoznod.

Hardveres Raid vezérlő beállítása

Ha nincs hardveres RAID vezérlőd, a szoftveres megoldást kell választanod, a továbbiakban ezzel foglalkozunk. Itt már jóval több feladatunk lesz!

A telepítési gyakorlatainkban a rendszert három partícióra telepítettük, egyet a rendszer, egyet a virtuális memória, egyet pedig a /var vagy a /home partíció számára hoztunk létre attól függően, hogy milyen célre telepítettük a rendszert. Ha a rendszert RAID tömbökre szeretnéd telepíteni, a telepítés sémája egy kicsit bonyolultabb lesz, amit az alábbi ábra szemléltet. Fontos, hogy ezt megértsd, mert a telepítés során ezeket a rétegeket fogjuk felépíteni.

Raid1-es rendszer telepítési sémája
  1. Ez a fizikai réteg, példánkban három merevlemezt fogunk használni. Egyet-egyet egy RAID1-es tömb kialakításához, egyet pedig tartalékként (spare) hagyunk a rendszerben, hogy egy meghibásodás esetén az azonnal átvegye a hibás diszk szerepét. A két aktív diszk a /dev/sda és a /dev/sdb lesz, a tartalékot a /dev/sdc adja.
  2. Az egyes diszkeket ebben az esetben is partíciókra kell bontani, ezek fogják adni a redundáns kötetek elemeit úgy, ahogyan az ábrán látod: a /dev/sda1 és a /dev/sdb1 adja a tükör két elemét, a /dev/sdc1 lesz a tartalék. Ugyanígy áll elő a /dev/md1 és a /dev/md2 is.
  3. A /dev/sda1 és a /dev/sdb1 együtteséből keletkezett elem neve kötet, a neve /dev/md0 lesz. A második partíciókból a /dev/md1, a harmadik partíciókból a /dev/md2 keletkezik. A gyakorlatban zavaró, hogy a partíciók számozása 1-gyel, a RAID tömböké 0-val kezdődik, erre a későbbiek során figyelni kell.
  4. Fájlrendszert kialakítani az így kapott köteteken kell majd.

Tip

  • Fontos, hogy értsd, a RAID tömböt nem diszkekre, hanem annak partícióira építejük fel.
  • Gondolom, nyilvánvaló, hogy bár elvben létrehozhatnád az egyes köteteket úgy, hogy azok egy diszk különbüző partícióiból állnának össze, a gyakorlatban ez nem sokat érne, hiszen az őket tartalmazó diszk meghibásodásakor minden, a kötetet alkotó partíció kiesne a tömbből, így az adatvesztés elkerülhetetlen lenne.

A virtuális gép létrehozásakor az alábbi ábr szerint három virtuális diszket vettem fel, hogy a kötetek létrehozhatók legyenek.

VmWare beállítása RAID1-hez

A telepítés során a lemezek partícionálása menüpontban kell az új feltételeknek megfelelően eljárnod.

Raid1 telepítés 1

Itt is a kézi beállításokat választom ki.

Raid1 telepítés 2

A telepítő most három virtuális merevlemez partícionálását teszi lehetővé. Egy darabig most a fenti sémánk kettes szintjén dolgozunk, elkészítjük mindhárom merevlemez három-három partícióját.

Raid1 telepítés 3

Létrehozom az üres partíciós táblát.

Raid1 telepítés 4

Mivel kis diszkjeink vannak, az msdos típusú partíciós tábla megfelel a céljainknak.

Raid1 telepítés 5

Az első merevlemezen most már kialakíthatók a partíciók. A folyamat több lépése hasonló lesz ahhoz, amit már ismersz. Ki kell választanod a SZABAD HELY sort, majd nyomj Enter-t! A fenti ábra /dev/sda1 partícióját készítjük el, ami a rendszerpartíció egyik eleme lesz.

Raid1 telepítés 6

Egy új partíciót kell létrehozni.

Raid1 telepítés 7

A mérete legyen 4GByte, ez a telepítési gyakorlatainkhoz elég.

Raid1 telepítés 8

Elsődleges típusú partíció legyen.

Raid1 telepítés 9

Haladjunk sorban, legyen a diszk elején.

Raid1 telepítés 10

Eddig minden ugyanúgy történt, mint az egyszerű telepítéskor, innentől viszont másképp járunk el.

Raid1 telepítés 11

Az új partíció típusa ne Ext4 legyen, hanem RAID fizikai kötet!

Raid1 telepítés 12

Mivel még nem fájlrendszert készítettünk elő, a fájlrendszerre jellemző beállításokat most nem kell elvégezned. Válaszd a Partíció beállítása kész menüt!

Raid1 telepítés 13

Az első partíció kész, már csak nyolc van hátra :-). Válaszd megint a SZABAD HELY menüt, és készítsd el a következő partíciót, ez a /dev/sda2 lesz, ami majd a virtuális memória egyik “lábát” adja.

Raid1 telepítés 14

Új partíciót hozunk létre.

Raid1 telepítés 15

A mérete legyen 1GByte.

Raid1 telepítés 16

Elsődleges partíciót választok.

Raid1 telepítés 17

Továbbra is sorban haladunk, ezért a szabad hely kezdetén kezdődjön ez a partíció is.

Raid1 telepítés 18

Ez a partíció sem tartalmaz közvetlenül fájlrendszert, ezért a Használat pontban itt is Raid fizikai kötetet kell megadni.

Raid1 telepítés 19

A helyes választás tehát: Raid fizikai kötet.

Raid1 telepítés 20

Nincs szükség további beállításokra, válaszd a Partíció beállítása kész menüpontot.

Raid1 telepítés 21

Két partícióval készen vagyunk, az első diszk utolsó partíciója következik. A további gyakorlatok elvégezhetősége érdekében most nem fogom a teljes szabad tárterületet felhasználni, ezért a /var partíció is csak 4GByte-os méretű lesz. A fennmaradó szabad területet később, már a működő operációs rendszerben fogjuk használatba venni. Ismét a SZABAD HELY sort kell kiválasztani, majd folytatni a partícionálást.

Raid1 telepítés 22

Új partíciót hozunk létre.

Raid1 telepítés 23

A mérete 4 GByte.

Raid1 telepítés 24

Az új partício most is elsődleges lesz.

Raid1 telepítés 25

És most is a szabad hely elején kezdődjön.

Raid1 telepítés 27

Ebben az esetben is megváltoztatjuk a partíció típusát.

Raid1 telepítés 28

A típus RAID fizikai kötet legyen.

Raid1 telepítés 29

Ezzel a partícióval is készen vagyunk.

Raid1 telepítés 30

A 29. képernyőképnél járunk, és még csak ott tartunk, hogy az első diszken kialakítottuk a három RAID tömbhöz szükséges három partíciót. Az eddigiek alapján bízom abban, hogy egyértelmű, hogy most a másik két diszkkel is pontosan ugyanezeket a lépéseket kell elvégezned, három-három azonos méretű partícióra van szükség a /dev/sdb és a /dev/sdc lemezen is.

Nem írom le ezek lépéseit, mert pontosan ugyanazok, mint amit eddig láttál, az alábbi ábrán már azt az állapotot látod, amikor már a fentieket a másik két diszken is elvégeztem. Összesen kilenc partíció áll rendelkezésre, és ezzel a partícionálási sémánk második rétegét is megvalósítottuk.

Mostantól a harmadik réteget, a RAID tömbök kialakítását fogjuk elvégezni, ehhez válaszd ki a Szoftvees RAID konfigurálása menüpontot!

Raid1 telepítés 31

Ahhoz, hogy ezt a műveletet folytatni lehessen, ki kell írni az eddig összeállított partíciós táblákat a diszkekre. (Eddig, mint az egyszerű telepítésnél is csak a telepítő számára írtuk le a partíciós táblákat, tehát azok még csak a telepítő számára ismertek.)

Raid1 telepítés 32

Hozzuk létre az első kötetet, az /dev/md0-t! Ehhez a Többlemezes eszköz létrehozása menüpontra lesz szükség.

Raid1 telepítés 33

Meg kell adnod, hogy milyen típusú RAID tömböt akarsz készíteni. Mivel a feladatunk egy tükrözött tömb készítése tartalék diszkkel, a RAID1-et kell kiválasztani.

Raid1 telepítés 34

Meg kell adni a RAID tömbben használt aktív eszközeinek számát. A mi esetünkben ez 2 (a spare nem aktív eszköz).

Raid1 telepítés 35

Most kell megadnod, hogy hány tartalék eszközt szeretnél a tömbhöz rendelni. A koncepciónk alapján ide 1-et kell megadnod.

Raid1 telepítés 36

Most ki kell választani, hogy mely partíciókból szeretnéd összerakni a tömböt. Itt az aktív eszközöket kell kiválasztani. Ha visszatekintesz a sémánkra, láthatod, hogy a /dev/sda1 és a /dev/sdb1 alkotja ezt a kötetet, ezért azokat jelöltem be.

Raid1 telepítés 37

A tartalék eszköz a /dev/sdc1 lesz.

Raid1 telepítés 38

Az első kötetet sikeresen létrehoztuk, most a másik két kötetetn a sor. A folymaat ugyanaz, mint eddig. Először egy többlemezes eszközt hozunk létre.

Raid1 telepítés 39

Ez is RAID1 lesz.

Raid1 telepítés 40

Két aktív eszközzel...

Raid1 telepítés 41

és egy tartalékkal.

Raid1 telepítés 42

Összerendeljük a /dev/sda2 és a /dev/sdb2 partíciókat egy kötetbe.

Raid1 telepítés 43

Megadjuk, hogy a /dev/sdc2 legyen a spare partíciónk, és ezzel ez a kötet is készen van.

Raid1 telepítés 44

Az utolsó kötet következik, ismét válaszd ki a többlemezes eszköz létrehozásával.

Raid1 telepítés 45

Ez is RAID1 lesz.

Raid1 telepítés 46

Szintén két aktív eszközt határozunk meg.

Raid1 telepítés 47

És ehhez is tartozik egy tartalék.

Raid1 telepítés 48

A két aktív eszköz a /dev/sda3 és a /dev/sdb3 lesz.

Raid1 telepítés 49

A tartalék pedig a /dev/sdc3.

Raid1 telepítés 50

Végeztünk a sémák szerinti harmadik szinttel, készen vannak a köteteink, lépjünk vissza a partícionálás menüjébe.

Raid1 telepítés 51

Itt a korábbiakhoz képest elég bonyolulttá vált a helyzet, látszanak a merevlemezek, a partíciók sorai, felül pedig a RAID kezdetű sorokban a kötetek láthatók. Már csak a fájlrendszereket kell az egyes köteteken kialakítanunk, ezek a korábban már megismert módszer szerint történnek. Válaszd ki a RAID1 0.eszköz 4 GByte-os sorát, úgy, ahogyan azt az alábbi ábrán látod!

Raid1 telepítés 52

Be kell állítanod ennek használatát, ami jelenleg mellőzés, ez nyilván nem felel meg az elképzeléseinknek, ezért változtassunk rajta!

Raid1 telepítés 53

Válaszd az Ext4 fájlrendszert!

Raid1 telepítés 54

Állítsd be a fájlrendszer paramétereit a korábban tanultak alapján, add meg, hogy ez a kötet szolgál majd a rendszer gyökereként, majd térj vissza a partícionálás menüjébe!

Raid1 telepítés 55

Most az 1 GByte-os nagyságú, második kötet következik, amit a virtuális memória számára hoztunk létre.

Raid1 telepítés 56

A mellőzés itt sem a megfelelő beállítás.

Raid1 telepítés 57

Ahhoz, hogy ez virtuális memória lehessen, a típusát cserehelyre kell változtatnod. Ennek nincsenek további beállítási lehetőségei, így ezzel készen is vagyunk.

Raid1 telepítés 58

Ez a kötet is készen van.

Raid1 telepítés 59

Az utolsó kötet következok. Válaszd ki a hozzá tartozó 4 GByte-os sort, és lássunk neki!

Raid1 telepítés 60

Ez is mellőzött partíció lenne, amin változtatnunk kell.

Raid1 telepítés 61

Ezen a köteten is fájlokat kell tárolnunk, ezért itt is az Ext4-et kell kiválasztani.

Raid1 telepítés 62

A séménk szerint ennek a fájlrendszernek a /var könyvtár lesz a mountolási pontja, ezt feltétlenül be kell állítanod. A további részletek meghatározása után visszaléphetünk a partícionálási menübe.

Raid1 telepítés 63

Készen vagyunk, a partícionálási folyamat lezárható, és folytatható a rendszer telepítése.

Raid1 telepítés 64

A telepítő megformázza a RAID eszközöket, és kialakítja a virtuális memóriát.

Raid1 telepítés 65

Tegyük fel, hogy az így kialakított rendszer egyik merevlemeze elromlik, azt cserélni kell. Ha ez az első merevlemez, akkor problémát okozhat, hogy azt a lemezt kell kivenned a rendszerből, amelyen a master boot rekord van, hiszen ez a boot folyamathoz nélkülözhetetlen. Ezért, ha RAID tömbre telepíted a rendszert, annak minden egyes elemére fel kell írni az MBR-t, azért, hogy bármelyikről képes legyen a számítógép az operációs rendszert elindítani. Az alábbi képernyőn ezt láthatod:

Raid1 telepítés 66

Azért nem felhőtlen az örömünk, mivel tartalék diszkünk, a /dev/sdc kimaradt. A meglepetések elkerülése érdekében érdemes ezt mihamarabb pótolnod a grub-install /dev/sdc paranccsal:

koczka@raid1:~$ sudo grub-install /dev/sdc
Telepítés a(z) i386-pc platformhoz.
A telepítés befejeződött. Nem jelentettek hibát.

20.5. Munka tömbökkel

Lássuk, hogyan lehet kezelni a RAID tömböket egy működő rendszer esetén! Ebben a fejezetben megtanulod, hogyan tudod ellenőrizni a RAID tömb állapotát, és hogyan kell eljárnod, ha egy diszket ki kell cserélned. A legtöbb feladatra az mdadm parancsot kell majd használnod.

20.5.1. Ellenőrzés

Először ellenőrizzük a RAID tömbök állapotát! Ehhez nem egy hagyományos parancsot fogunk használni, hanem a /proc fájlrendszert használjuk úgy, hogy a /proc/mdstat fájl tartalmát olvassuk ki. Emlékeztetlek, hogy ez nem egy reguláris fájl, a /proc könyvtárban levő fájlok csak látszólag fájlok, valójában a kernel egyes függvényeit éred el ezen fájlokon keresztül. Amikor tehát a /proc/mdstat fájl tartalmát olvasod, valójában a kernel felé egy lekérdezést indítasz a RAID tömbök állapotáról, az egy szöveges választ ad vissza úgy, mint ha egy egyszerű textfájlt olvastál volna.

Lássunk egy példát!

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0] sdb3[1] sdc3[2](S)
      3904512 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1] sdc1[2](S)
      3903488 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1] sdc2[2](S)
      976320 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Mit jelentenek az egyes részek? Az első sorban (Personalities...) a kernel felsorolja, hogy milyen raid változatok kezelésére képes. Ez után a három RAID tömb (md2, md1, md0) tulajdonságainak és állapotának leírása következik. A nevet az állapot követi, ez jó esetben active. A RAID típus egyértelmű, példánkban ez RAID1. A követekező részben a RAID tömb alkotóelemeit láthatod, a tartalék mögött (S) olvasható.

Név Állapot RAID típus Részegységek Spare diszk
md2 active raid1 sda3[0] sdb3[1] sdc3[2](S)

A [2/2] [UU] a tömb állapotát írja le. A 2/2 azt jelenti, hogy a tömb két eszközből áll, és mindkettő működik. Az [UU] ugyanezt szemlélteti, az U jelentése Up, esetünkben működő eszköz. Probléma esetén itt _ jelenik meg, ekkor az adott pozíción levő eszköz hiányzik.

20.5.2. Hibás elem cseréje

Előbb-utóbb bekövetkezik a merevlemez meghibásodása, és szükségessé válik a hibás eszköz cseréje, és a RAID tömb helyreállítása. Erre érdemes idejében felkészülni, hogy ne a probléma bekövetkeztekor kelljen ad-hoc döntéseket hoznod, vagy akkor elkezdeni utánaolvasni, hogy mit is kellene tenni.

A gyakorláshoz nem kell megvárnod, hogy valamelyik diszk valóban meghibásodjon. Az elöregedett diszkek cseréjéhez a Linux rendszerek lehetővé teszik, hogy egy eszközt működésképtelennek jelölj. Ezt fogjuk az alábbiakban kihasználni, egy diszket hibásnak jelölünk, kivesszük a tömbből, végül egy másik diszkkel pótolni fogjuk.

Először jelöljük hibásnak az /dev/sdb1 eszközt! Ehhez a mdadm parancsot fogjuk használni. Mivel szinte minden műveletet ezzel végzunk majd el, érdemes megtanulni a parancs általánosabb alakját: mdadm tömb művelet eszköz, azaz meg kell adni, hogy melyik tömbön milyen műveletet melyik eszközzel akarsz végrehajtani. Most a -f (fail) lesz a művelet, amit az md0 tömb /dev/sdb1 eszközére vonatkoztatunk. Azaz az /dev/md0 tömbben hibásnak jelöljük a /dev/sdb1-et.

Tip

Ha virtuális gépet használsz, és csak gyakorolsz, nem fogod majd követni a helyreállítási folyamatot, mert a kisméretű diszkekkel a rendszer pillanatok alatt végez. Ezért érdemes lehet a helyreállítás sebességét lecsökkenteni az alábbi parancsokkal:

root@raid1:~# echo 80 > /proc/sys/dev/raid/speed_limit_min
root@raid1:~# echo 100 > /proc/sys/dev/raid/speed_limit_max

Éles rendszerben is lehet értelme ennek a beállításnak, ha a meghibásodott diszk cseréje utáni helyreállítási folyamat nagyon lelassítja a gép szolgáltatásait, ezzel csökkenthető a helyreállításra fordított idő. Az alapérték 1000, ennek megfelelően érdemes választanod.

mdadm /dev/md0 -f /dev/sdb1

Lássuk, mi a helyzet a RAID tömbök állapotával! Az md0 esetében sdb1[1](F) látható, ahol az (F) jelzi az /dev/sdb1 meghibásodását, ugyanezt mutatja az [U_] is. Mivel volt spare diszk a rendszerben, a helyreállítás azonnal megkezdődött, ennek folyamata nyomon követhető a [>....................] sorban.

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0] sdb3[1] sdc3[2](S)
      3904512 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1](F) sdc1[2]
      3903488 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  2.1% (85376/3903488) finish=440.3min speed=144K/sec

md1 : active raid1 sda2[0] sdb2[1] sdc2[2](S)
      976320 blocks super 1.2 [2/2] [UU]

unused devices: <none>

A célunk a /dev/sdb eltávolítása a rendszerből, ezért az azon levő másik két partíciót is hibásnak jelöljük az alábbi parancsokkal.

mdadm /dev/md1 -f /dev/sdb2
mdadm /dev/md2 -f /dev/sdb3

A rebuild ezekre csak az után kezdődik meg, miután a jelenlegivel már végzett a rendszer, addig ezek a hibás tömbök DELAYED szinkronizációs állapotban lesznek.

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0] sdb3[1](F) sdc3[2]
      3904512 blocks super 1.2 [2/1] [U_]
        resync=DELAYED

md0 : active raid1 sda1[0] sdb1[1](F) sdc1[2]
      3903488 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  4.3% (168192/3903488) finish=372.9min speed=166K/sec

md1 : active raid1 sda2[0] sdb2[1](F) sdc2[2]
      976320 blocks super 1.2 [2/1] [U_]
        resync=DELAYED

unused devices: <none>

A folyamat végén a /dev/sdb eltűnt, és a helyét a /dev/sdc vette át, és a tömb újra teljes értékű állapotban van:

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0] sdc3[2]
      3904512 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdc1[2]
      3903488 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[0] sdc2[2]
      976320 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Tip

  • Ha a rendszerben nem lett volna tartalék diszk, a rebuild csak a hibás diszk kivétele és az új diszk beépítése után, a megfelelő parancsok kiadása után indult volna el. A fenti példában látszott, hogy a degradált állapot csak a szükséges ideig állt fenn.

  • Régebbi rendszereken ez után el kell távolítani a hibás diszken levő partíciókat, mivel a hibásnak jelölés nem végzi azt el, logikailag még a tömbök részei a /dev/sdb1, a /dev/sdb2 és a /dev/sdb3. Add ki az alábbi parancsokat, amelyben a -r kapcsoló jelentése remove! Ezzel a tömbökből eltávolítod a hibás partíciókat.

    mdadm /dev/md0 -r /dev/sdb1
    mdadm /dev/md1 -r /dev/sdb2
    mdadm /dev/md2 -r /dev/sdb3
    

A diszk cseréjéhez a virtuális gépben el kell távolítanod a hibás diszket. Ez a második volt, mivel a /dev/sdb partícióit távolítottuk el. Mivel ehelyett szükség van egy új diszkre is, adj hozzá egyet a rendszerhez. Állítsd le a gépet, és végezd el a diszkek cseréjét!

Új diszk a virtuális gépben

Egy fizikai gépen az új diszket szinte biztosan a régi helyére kábelezed be, ezért a /dev/sdb helyére kerül majd az új diszk. A virtuális gépen ez nem feltétlenül lesz így, azért le kell ellenőrizni, hogy mi az új diszk neve. Erre most is az lsblk parancsot érdemes használni. Ennek kimenetében látható, hogy a /dev/sda nem tartalmaz partíciókat, tehát ez az új diszkünk.

root@raid1:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0    16G  0 disk
sdb       8:16   0    16G  0 disk
├─sdb1    8:17   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdb2    8:18   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
└─sdb3    8:19   0   3,7G  0 part
  └─md2   9:2    0   3,7G  0 raid1 /var
sdc       8:32   0    16G  0 disk
├─sdc1    8:33   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdc2    8:34   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
└─sdc3    8:35   0   3,7G  0 part
  └─md2   9:2    0   3,7G  0 raid1 /var
sr0      11:0    1   667M  0 rom

Az új diszken ki kell alakítani azokat a partíciókat, amelyek a másik két diszken már megvannak. Ezt megteheted a cfdisk parancsnál tanultakkal, de van egy sokkal egyszerűbb megoldás is, amelyben az egyik diszk partíciós tábláját (csak a táblát, nem az egyes partíciók adatait adatait) átmásolhatod egy másikra. Példánkban az /dev/sdb partíciós tábláját másolom a /dev/sdb-re:

root@raid1:~# sfdisk -d /dev/sdb | sfdisk /dev/sda
Checking that no-one is using this disk right now ... OK

Disk /dev/sda: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x5be58f28.
Created a new partition 1 of type 'Linux raid autodetect' and of size 3,7 GiB.
/dev/sda2: Created a new partition 2 of type 'Linux raid autodetect' and of size 954 MiB.
/dev/sda3: Created a new partition 3 of type 'Linux raid autodetect' and of size 3,7 GiB.
/dev/sda4:
New situation:

Eszköz     Indítható   Start    Vége Szektorok  Size Id Típus
/dev/sda1               2048  7813119   7811072  3,7G fd Linux raid automatikus
/dev/sda2            7813120  9766911   1953792  954M fd Linux raid automatikus
/dev/sda3            9766912 17580031   7813120  3,7G fd Linux raid automatikus

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Tip

Ha a cél diszk már tartalmaz partíciós táblát, annak felülírása csak akkor történik meg, ha használod a --force paramétert is. Abban az esetben a helyes parancs: sfdisk -d /dev/sdb | sfdisk –force /dev/sda

Ellenőrizzük le, hogy létrejöttek-e a partíciók (igen, a /dev/sda most már három partíciót tartalmaz):

root@raid1:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0    16G  0 disk
├─sda1    8:1    0   3,7G  0 part
├─sda2    8:2    0   954M  0 part
└─sda3    8:3    0   3,7G  0 part
sdb       8:16   0    16G  0 disk
├─sdb1    8:17   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdb2    8:18   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
└─sdb3    8:19   0   3,7G  0 part
  └─md2   9:2    0   3,7G  0 raid1 /var
sdc       8:32   0    16G  0 disk
├─sdc1    8:33   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdc2    8:34   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
└─sdc3    8:35   0   3,7G  0 part
  └─md2   9:2    0   3,7G  0 raid1 /var
sr0      11:0    1   667M  0 rom

Nézzük meg, milyen állapotban vannak a RAID tömbjeink! Látható, hogy most ezek az sdb és az sdc diszkekkel működnek, az sda egyik működésében sem vesz részt.

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdc3[2] sdb3[0]
      3904512 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdb2[0] sdc2[2]
      976320 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdc1[2] sdb1[0]
      3903488 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Adjuk hozzá az új diszk partícióit az egyes tömbökhöz, ehhez megint az mdadm parancs kell. A művelet az -a (add) lesz:

root@raid1:~# mdadm /dev/md0 -a /dev/sda1
mdadm: added /dev/sda1
root@raid1:~# mdadm /dev/md1 -a /dev/sda2
mdadm: added /dev/sda2
root@raid1:~# mdadm /dev/md2 -a /dev/sda3
mdadm: added /dev/sda3

Ellenőrizzük, a RAID tömbök állapotát! Látható, hogy a /dev/sdc partíciói megjelentek az egyes tömbök spare eszközeiként, így a diszk alrendszer működését helyreállítottuk.

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[3](S) sdc3[2] sdb3[0]
      3904512 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[3](S) sdb2[0] sdc2[2]
      976320 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[3](S) sdc1[2] sdb1[0]
      3903488 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Már csak egy lépés van hátra, a rendszerbetöltő telepítése az új diszkre. Ezt az alábbi paranccsal teheted meg:

root@raid1:~# dpkg-reconfigure grub-pc

A parancs a grub-pc csomagot fogja újra konfigurálni. Az első három kérdésre csak egy Enter-t kell nyomnod, a lényeg a negyedik lépésnél következik, ahol az alábbi ábrán látható módon minden diszket ki kell jelölnöd. Ennek eredményeként a rendszer bármelyik diszkről képes lesz elindulni.

20.5.3. Új tömb létrehozása

Az alábbi példában egy új RAID1-es tömböt hozok létre, ebben az esetben is spare diszkkel. Ehhez a diszkeken meghagyott üres helyeket fogom felhasználni.

Első lépésként a cfdisk programmal mindhárom diszken létre kell hozni a negyedik partíciót. A parancs a cfdisk /dev/sda lesz az első diszk esetében, a továbbiaknál értelemszerűen kell a diszkek nevét használni. Létrehozzuk a negyedik partíciót, a típusuk Linux raid automatikus felismeréssel lesz. Ne feledd kiírni a változásokat, mielőtt kilépsz a programból.

Új raid tömb partícióinak létrehozása

Érdemes kiadni a partprobe parancsot azért, hogy a rendszer számára ismert legyen a megváltozott partíciós tábla:

root@raid1:~# partprobe

Ellenőrizzük az eredményt az lsblk paranccsal, látnunk kell a negyedik partíciókat minden diszken!

root@raid1:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0    16G  0 disk
├─sda1    8:1    0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sda2    8:2    0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
├─sda3    8:3    0   3,7G  0 part
│ └─md2   9:2    0   3,7G  0 raid1 /var
└─sda4    8:4    0   7,6G  0 part
sdb       8:16   0    16G  0 disk
├─sdb1    8:17   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdb2    8:18   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
├─sdb3    8:19   0   3,7G  0 part
│ └─md2   9:2    0   3,7G  0 raid1 /var
└─sdb4    8:20   0   7,6G  0 part
sdc       8:32   0    16G  0 disk
├─sdc1    8:33   0   3,7G  0 part
│ └─md0   9:0    0   3,7G  0 raid1 /
├─sdc2    8:34   0   954M  0 part
│ └─md1   9:1    0 953,4M  0 raid1 [SWAP]
├─sdc3    8:35   0   3,7G  0 part
│ └─md2   9:2    0   3,7G  0 raid1 /var
└─sdc4    8:36   0   7,6G  0 part
sr0      11:0    1   667M  0 rom

Hozzunk létre egy új RAID1-es tömböt az alábbi paranccsal!

root@raid1:~# mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sdb4 /dev/sdc4
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 7983104K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.

Az egyes paraméterek jelentése a következő:

–create:új tömböt hozunk létre.
/dev/md3:az új tömb neve. Érdemes sorban haladni, /dev/md2 már van a rendszerünkben, ezért az új neve a 3-as lesz.
–level=1:RAID1-es tömböt hozunk létre.
–raid-devices=2 /dev/sdb4 /dev/sdc4:
 A tömb két alapját adó partíciók száma kettő, ezek a /dev/sdb4 és a /dev/sdc4 lesznek. Az /dev/sda4 majd a spare lesz, ezért nem haladtam sorban a diszkekkel.

A tömb létrejön, és azonnal megkezdődik az egyes partíciók szinkronizálása:

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md3 : active raid1 sdc4[1] sdb4[0]
      7983104 blocks super 1.2 [2/2] [UU]
      [==============>......]  resync = 70.1% (5596672/7983104) finish=0.2min speed=155118K/sec

md2 : active raid1 sda3[3](S) sdc3[2] sdb3[0]
      3904512 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[3](S) sdb2[0] sdc2[2]
      976320 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[3](S) sdc1[2] sdb1[0]
      3903488 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Hozzáadjuk a spare partíciót:

root@raid1:~# mdadm /dev/md3 -a /dev/sda4
mdadm: added /dev/sda4

Ellenőrizzük az eredményt! Látszik, hogy az md4 kötetet az sdc4[1] és az sdb4[2] alkotja, a tartalék pedig az sda4(S).

root@raid1:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md3 : active raid1 sda4[2](S) sdc4[1] sdb4[0]
      7983104 blocks super 1.2 [2/2] [UU]

md2 : active raid1 sda3[3](S) sdc3[2] sdb3[0]
      3904512 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[3](S) sdb2[0] sdc2[2]
      976320 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[3](S) sdc1[2] sdb1[0]
      3903488 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Formázzuk meg a /dev/md4 kötetet ext4-es fájlrendszerrel!

root@raid1:~# mkfs.ext4 /dev/md3
mke2fs 1.42.13 (17-May-2015)
Fájlrendszer létrehozása 1995776 4 blokkal és 499712 inode-dal
Fájlrendszer UUID: 860d48c5-078d-4298-999b-93ec78b866ae
Tartalék szuperblokkok tárolva a blokkokon:
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Csoporttáblák foglalása: kész
Inode táblák írásakor: kész
Napló létrehozása (32768 blokk): kész
Szuperblokkok és fájlrendszer-könyvelési információk írása: kész

Végül mountoljuk fel a /mnt könyvtárba!

root@raid1:~# mount /dev/md3 /mnt

Tip

Ha el szeretnéd távolítani ezt a tömböt, az alábbiak szerint kell eljárnod. Először umountold a kötetet:

root@raid1:~# umount /mnt

Majd állítsd le a tömböt a –stop kapcsolóval:

root@raid1:~# mdadm --stop /dev/md3
mdadm: stopped /dev/md3

Végül szüntesd meg a tömböt a –remove kapcsolóval:

root@raid1:~# mdadm --remove /dev/md3

Végül ellenőrizd az eredményt a cat /proc/mdstat paranccsal!

20.6. Kötetkezelés Windows-on

A szoftveres RAID funkciók nem hiányoznak a Windows rendszerekből sem. Az alábbiakban megmutatom, hogy hogyan lehet ezt megvalósítani Windows 10 rendszeren. Ahhoz, hogy minden esetre tudjak példát adni, a virtuális gépbe 3 merevlemezt építek be, az elsőre fogom telepíteni az operációs rendszert úgy, hogy nem használom fel a teljes diszket, hanem a már korábban látott módon csak az első felét használom fel. A további részeket a telepítés során üresen hagyom.

A virtuális gép kialakításakor tehát három merevlemezt adok a géphez. Új lemez hozzáadásához a párbeszédablakban kattints az Add hard disk gombra!

Windows kötetkezelés

Mivel három diszket akarunk a renndszerbe felvenni, ezért a diszkekt a SATA kontrollerhez kell kapcsolni. (Az alap beállításban szereplő IDE kontroller csak két diszket képes kezelni, az IDE amúgy is a múlté már.) Az átállítás módját az alábbi ábra szerint, egyesével végezd el.

Windows kötetkezelés

A Windows telepítésekor az első diszk (0. meghajtó) felét használd csak fel! A fennmaradó szabad területre később szükséged lesz.

Windows kötetkezelés

Figyeld meg, hogy a telepítő további három partíciót hozott létre, ebből az egyik a GPT-het szükséges indító partíció. A rendszert az első diszk negyedik partíciójára kell telepítened. A többi diszket hagy érintetlenül, majd az operációs rendszer telepítése után fogjuk azokat használatba venni.

Windows kötetkezelés

Danger

Ha a telepítő csak csak két új partíciót hozott létre, akkor nem kapcsoltad be az EFI BIOS-t a virtuális gépben. Ebben az esetben ne folytasd a telepítést, mert a későbbiekben ez probléma lesz, nem tudod majd végigvinni a gyakorlatunkat.

Telepítsd fel az operációs rendszert! Minden értéket hagyj alapbeállításon, most nem kell a részletekkel foglalkoznunk. A célunk egy rendszer gyors feltelepítése és a lemezkezelés megismerée lesz.

20.6.1. A lemezkezelő

A partíciók (később kötetek) kezeléséhez szükséges program indításához a Start menün kattints a jobb egérgombbal, majd válaszd ki a Lemezkezelés menüpontot.

A program elindul, majd felsorolja a rendszerben detektált lemezeket, és azok partícióit, köteteit (utóbbiról kicsit később). Az ablak alsó részében szemlélteti is ezeket, itt látható a három lemezt szimbolizáló sáv. A sávok elején levő blokkban olvasható le a lemez sorszáma, típusa, mérete és az állapota.

Példánkban a Lemez 1 és a Lemez 2 még nem tartalmaz partíciós táblát, ezt fejrészben is jelzi: ismeretlen partíció típust és nem inicializált állapotot jelöl. Ilyen esetekben azonnal kezdeményezi a partíciós tábla kialakítását úgy, ahogyan azt alábbi ábrán ezt látod. A partíciós tábla típuának GPT-t ajánl. Az MBR itt az msdod típusú partíciós táblát jelenti.

Windows disk kezelés 4

A partíciós tábla kialakítása után a mindhárom diszk elérhető, a típusuk alaplemez, GPT típusú partíciós tábla van rajtuk. Az 1-es és a 2-es diszk nem tartalmaz partíciót, ezt a Nem lefoglalt szöveg jelzi.

Windows disk kezelés 5

20.6.2. Új partíció

Új partíció létrehozásához kattints a 0-s lemez nem lefoglalt 16.00 GByte-os területébe az egér jobb gombjával! A megjelenő helyi menüben válaszd ki az Új egyszerű kötet pontot!

Windows disk kezelés 6

Egy varázsló indul el (az interakciót nem igénylő lépések bemutatását kihagyom). Az első lépésben add meg az új kötet méretét! (A példákban csak kisméretű köteteket fogok létrehozni, a gyakorlatban ezek nem igazán lennének értelmes méretek.) Készítsünk egy 1 GByte-os kötetet!

Windows disk kezelés 7

Mi történjen az új kötettel a létrehozása után? Három lehetőséged van:

  1. A hagyományos felhasználás során az új kötetet egy betűjellel azonosítja a rendszer, itt kiválaszthatod, hogy ez melyik legyen.
  2. A második lehetőség a Unixoknál már megszokott maountolás. Igen, a Windows is ismeri ezt, kiválaszthatsz egy (célszerűen) üres mappát, és abba csatolhatod ezt a kötetet úgy, ahogyan azt a Unixok teszik.
  3. Érintetlenül is hagyhatod a kötetet, ebben az esetben nem sok mindenre tudod majd használni.
Windows disk kezelés 8

Végül a fájlrendszer kialakítása következik. Kiválaszthatod a fájlrendszer típusát, ez merevlemezek esetében valószínűleg NTFS a célszerű választás, kisebb diszkek köteteinél esetleg FAT, vagy FAT32. A kötetcímke a partíció nevét jelenti, ezt látod majd viszont pl. a Sajátgépben. A gyorsformázás esetén csak a szükséges táblázatokat, leírókat készíti el a program, nem formázza “végig” a teljes paríciót. A tömörítés engedélyezésével bekapcsolod az ún. röptömörítést, ekkor az operációs rendszer a fájlok és mappák tárolása előtt tömöríti azokat, így azok kevesebb helyet foglalnak a diszken. Ez a gép teljesítményétől függően diszk műveletek esetén sebességcsökkenést, gyors gép esetén viszont növekedést hozhat.

Windows disk kezelés 9

A beállítások áttekintése után a kötet kialakítása és a fájlrendszer kialakítása, a formázás kezdetét veszi.

Windows disk kezelés 10

Az új kötet elkészült, a Lemezkezelőben, a 0. diszken látható is a Data nevű új kötet. (Egyúttal a Sajátgépben is megjelenik.)

Windows disk kezelés 11

20.6.3. Kötet kiterjesztése

Egy kötet mérete a mai Windows rendszereken könnyen megváltoztatható. A növelés az egyszerűbb, kezdük ezzel! Ha egy kötet alulméreteztél, és még van hely a lemezen, kattints jobb gombbal rajta, a helyi menüben válaszd a Kötet kiterjesztése pontot.

Windows disk kezelés 12

Most még csak egy lemezt, a Lemez 0-t használhatod (később, ha dinamikus köteteket használsz, már a többi lemez is igénybe vehető lesz.) Add meg a növekményt az alsó beviteli mezőben, az itt megadott mérettel lesz nagyobb a kötet. A tovább gomb megnyomásával elindul az átméretezés.

Windows disk kezelés 13

A Lemekezelőben mát az új méret, példánkban 3 GByte jelenik meg.

Windows disk kezelés 14

20.6.4. Kötet zsugorítása

Egyáltalán nem jellemző, hogy a kötetek méretét csökkenteni is lehetne, de a Windows kötetkezelője erre is képes. Ehhez kattints jobb gombbal a kiszemelt partícióra, majd válaszd a Kötet zsugorítása pontot.

Windows disk kezelés 15

Add meg a kötet új méretét! A folyamat hosszabb időt is igénybe vehet, mert a méret csökkentése előtt az operációs rendszernek át kell helyeznie a fájlok blokkjait úgy, hogy azok a csökkentett méretű köteten belül legyenek.

Windows disk kezelés 16

A zsugorítási folyamat végén az új kötet mérete a megadottra csökken.

Windows disk kezelés 17

20.6.5. Dinamikus kötetek

Ahhoz, hogy a Windows kötetkezelési szolgáltatásait teljes egészében kihasználhasd, az egyes diszkeket dinamikus lemezzé kell konvertálni. Ehhez a diszk információs blokkjában jobb gombbal kell kattintanod, majd a menüben a Konvertálás dinamikus lemezzé pontot kell választanod. A konvertálást minden diszkre el kellene végezni, de a Windows megkönnyíti a dolgodat: egy újabb párbeszédablakban lehetővé teszi, hogy minden lemezt kiválassz, így egy lépésben végezd el a konverziókat. A konverziót egy újabb ablakban jóvá is kell hagynod. Fontos, hogy a dinamikus diszkek adminisztrációja a rendszer szemponjából bonyolultabb, egy esetleges diszk hiba, összeomlás esetén az adatok helyreállítása lényegesen bonyolultabb feladatot jelent, mint az alaplemezek esetén.

Windows disk kezelés 18

Danger

A konvertálást nem szabad elvégezned, ha valamelyik lemez más, bootolható operációs rendszert is tartalmaz. Ez a rendszer a konverzió után már nem tud elindulni, amit az alábbi párbeszédablak is jelez.

Windows diszk kezelés 20

A konverzió lefutása után az egyes kötetek színe megváltozik, és a diszkek típusa alaplemezről dinamikus lesz.

Windows diszk kezelés 21

20.6.6. RAID 0

A RAID 0 a Windows terminológiájában a csíkozott kötet nevet kapta. Egy ilyen létrehozásához két diszkre van szükség, melyen a kötet két “lába” létrehozható. Első lépésként egy szabad diszk területen kattints az egér jobb gombjával, és válaszd az Új csíkozott kötet menüpontot!

Windows diszk kezelés 22

A kötet létrehozásáhz meg kell adnod, melyik legyen a másik lemez, ami a kötet másik lábát adja. Példánkban ez a 2-es lemez lesz. Meg kell adni a kötet méretét is, amit 1024 MByte-ra állítok be. A teljes kötet mérete így 2048 MByte lesz.

Windows diszk kezelés 23

Ezt a panelt már ismered, a kötet elérésének módját állíthatod itt be. Az új kötetet F: néven szeretném majd elérni.

Windows diszk kezelés 24

A fájlrendszer legyen NTFS, címkeként a Stripe nevet adom meg (a RAID 0 angol neve Stripe Set.)

Windows diszk kezelés 25

A formázást követően a kötet létrejön, az ezt alkotó két láb látható az 1-es és a 2-es lemezen is.

Windows diszk kezelés 26

20.6.7. RAID 1

A RAID 1-es tömb létrehozása analóg módon történik. Első lépésként a szabad terület helyi menüjében válaszd a Új tükrözött kötet pontot!

Windows diszk kezelés 27

A következő lépésben most is meg kell adnod, hogy melyik diszken legyen a tükör másik fele, és itt is meg kell határoznos a méretet. A tükrüzés természetébeől adódóan az 1024 MByte most egy 1 GByte-os kötet létrehozását jelenti.

Windows diszk kezelés 28

Az új kötet legyen a G: meghajtó!

Windows diszk kezelés 29

A fájlrendszer kialakítását a szokásos módon végezzük. A kötet neve legyen Mirror!

Windows diszk kezelés 30

A RAID1-es tömböt a Windows szinkronizálja, majd F: meghajtó néven használható is.

Windows diszk kezelés 31

20.6.8. RAID 5

A Windows kötetkezelője csak a Windows szerver változatai esetében teszi lehetővé a RAID 5-ös tömb létrehozását.

20.6.9. Átnyúló kötet

Az átnyúló kötet – ahogyan a neveéből következik is – olyan kötetet jelent, amely diszkeken nyúlik át. Helentősége a kisebb szabad helyek kihasználásában, illetve a nagyméretű diszkek egy meghajtóként történő felhasználásakor van. Fontos, hogy az átnyúló kötet nem redundáns, így bármelyik, a kötet részeként működő diszk üzemképtelenné válása a teljes kötet elvesztését jelenti. Új átnyúló kötethez válaszd a Új átnyúló kötet pontot a kiinduló diszk helyi menüjében!

Windows diszk kezelés 32

Válaszd ki, hogy mely diszkek vegyenek részt a kötet kialakításában, és add meg a kötet méretét is! (A példa sikeréért olyan méretet adj meg, hogy az átnyúlásra mindenképp szükség legyen!)

Windows diszk kezelés 33

A kötetre H: meghajtóként akarunk majd hivatkozni, a kötet címkéje legyen Átnyúló!

Windows diszk kezelés 34

Végezd el a formázást!

Windows diszk kezelés 35

Az új kötet a 0-s és az 1-es lemezen is használ fel helyet.

Windows diszk kezelés 36

20.6.9.1. Sérült kötetek helyreállítása

Nézzük meg, milyen meghajtókat tartalmaz most a rendszerünk! Az egyes kötetek nevei mutatják azok működési elvét.

Windows diszk kezelés 37

Most nézzük meg, mi történik, és hogyan kell eljárni abban az esetben, ha a rendszert alkotó diszkek valamelyike elvész. A (majdnem) legnyagyobb bonyodalom érdekében állítsd le a virtuális gépet, távolítsd el a 2-es lemezt, és adj hozzá egy újat! (Ne felejtsd el a SATA1 vezérlőhöz kapcsolni az új diszket!) Ezzel azt a helyzetet állítjuk elő, amikor ez egyik diszk meghobásodik (ezt vettük ki) és a pótlására egy újat adtunk a rendszerhez.

Windows diszk kezelés 38
A gép elindítását követően a meghajtók száma megcsappant:
  1. A C: és az E: meghajtók megvannak, ezek csak az első diszket használták, és az sértetlen.
  2. Az F: meghajtó (Stripe) eltűnt, a korábban tanultak alapján ennek adataitól búcsút is vehetünk.
  3. Ugyanez a helyzet az átnyúló kötet esetében is: a H: meghajtónak is nyoma veszett.
  4. A G: meghajtó megvan, a tükör egyik fele még működőképes.
Windows diszk kezelés 39

Kezdjük meg a rendrakást! Első lépésként a tükrözött kötetnek adjunk egy újabb lábat! Először távolítsuk el a hiányzó felet a tükrözött kötet helyi menüjében, a Tükör eltávolítása pont kiválasztásával!

Windows diszk kezelés 40

A hiányzó felet kell kiválasztani.

Windows diszk kezelés 41

Ahhoz, hogy a tükör másk lábát létrehozhassuk, először csatlakoztatni kell az új diszket az ábrán látható módon:

Windows diszk kezelés 42

A lemezt inicializálni kell.

Windows diszk kezelés 43

GPT-t használj!

Windows diszk kezelés 44

Majd konvertáld dinamikus lemezzé!

Windows diszk kezelés 45

A tükrözött kötet működő felének helyi menüjében válaszd ki a Tükör hozzáadása menüt!

Windows diszk kezelés 46

Az új láb a 2-es lemmezen jöjjön létre! (Az 1-es lemez is használható lett volna, ha a hibás kötetek “maradékát” előbb töröljük. Mivel azon most nincs szabad hely, ezért az nem válaszható ki.)

Windows diszk kezelés 47

A 2-es lemezen létrejön a tükör másik fele, megtörténi a kötet alkotóelemeinek szinkronizálása is.

Windows diszk kezelés 48

Tip

Ezzel a módszerrel “békeidőben” bármelyik egyszerű kötetet utólag is tükrözött kötetté alakíthatod és viszont: a Tükör hozzáadása és a Tükör eltávolítása menükkel ez könnyen elvégezhető.

Windows diszk kezelés 49 Windows diszk kezelés 50 Windows diszk kezelés 51 Windows diszk kezelés 52

20.7. Az LVM

21. Feladatok

Linux

  1. Számold ki, hogy egy 1 TByte-os merevlemez vásárlásakor valójában mennyivel kisebb diszket kapsz, ha feltételezed, hogy 1 Tebi-s lemezt vettél, pedig csak 1 TByte-osat.
  2. A virtuális gépedhez adj hozzá egy újabb 1 GByte-os diszket! Indítsd el a rendszert és hozz létre rajta egy 500 GByte-os elsődleges, és egy 500 GByte-os logikai meghajtót!
  3. Formázd mindkét partíciót ext4-es fájlrendszerre!
  4. Az első partíciót csatold a /home/oktatok mappába!
  5. Gondoskodj arról, hogy ez a mountolás a rendszer indulásakor automatikusan megtörténjen!

Végezz telepítést az alábbiak szerint:

  1. Használj GPT-t! Ne feleddkezz meg a biosboot partícióról!
  2. Telepítsd a rendszert egy tükrözött diszkekből álló tömbre, ahol álljon rendelkezésre még egy tartalék diszk is!

Windows

  1. Telepíts egy virtuális Windows 10-et! Ennek a gépnek egy 10 GByte-os és két 1 GByte-os merevlemezt biztosíts, az első diszket partícionáld kétfelé és csak az elsőre telepítsd az operációs rendszert!
  2. Indítsd el a Windows-t és jelentkezz be! A lemezkezelőben végezd el a következő feladatokat:
  3. Inicializáld az első adatdiszket, alakíts ki rajta egy 500 Mbyte méretű partíciót! Gyorsformázd, a kötet neve legyen Fileserver!
  4. Hozz létre egy újabb kötetet, ennek mérete 100 Mbyte legyen, a neve pedig DataBase!
  5. Bővítsd a Fileserver kötetet 200 Mbyte-tal! Figyeld meg, hogyan jeleníti meg ezt a lemezkezelő!
  6. Bővítsd ezt a kötetet a másik adatdiszk 500 Mbyte-os darabjával!
  7. Törölj egy szeletet (ne az utolsót) a Fileserver kötetből! Figyeld meg mi történik!
  8. Törölje az adatdiszkről minden partíciót! Alakíts ki egy átnyúló kötetet, mely mindkét adatdiszket felhesználja! Gyorsformázd NTFS-re, a neve legyen Spanned!
  9. Másold bele a Windows könyvtárból az Explorer.exe fájlt!
  10. Állítsd le a szervert, kapcsold ki a data2 meghajtót, majd indítsd el a szervert! Figyeld meg, mi történt a spanned meghajtóval!
  11. Állítsd le a szervert, állítsd vissza a data2 meghajtót, majd indítsd újra! Elérhető újra az összefüggő meghajtó? Töröld az átnyúló kötetet!
  12. Alakíts ki egy csíkozott kötetet, mely mindkét adatdiszket felhasználja! Gyorsformázd NTFS-re, a neve legyen Stripe!
  13. Másold bele a Windows könyvtárból az Explorer.exe fájlt!
  14. Állítsd le a szervert, kapcsold ki a data2 meghajtót, majd indítsd el a szervert! Figyeld meg, mi történt a Stripe meghajtóval!
  15. Állítsd le a szervert, állítsd vissza a data2 meghajtót, majd indítsd újra! Elérhető újra a csíkozott kötet? Töröld a csíkozott kötetet!
  16. Alakíts ki egy tükrözött kötetet, mely mindkét adatdiszket felhasználja! Gyorsformázd NTFS-re, a neve legyen Mirror!
  17. Másold bele a Windows könyvtárból az Explorer.exe fájlt!
  18. Állítsd le a szervert, a data2 meghajtót cseréld le a spare meghajtóra (amit a 2. feladatban hoztál létre), majd indítsd el a szervert! Figyeld meg, mi történt a Mirror meghajtóval!
  19. Állítsd helyre a tömböt! (Első lépés: Remove mirror a hiányzó merevlemezre.)