====== Lemezek elnevezése Linuxban ====== ===== Nem perzisztens nevek ===== A lemezeszközök nem perzisztens elnevezése az eszközök minor számával van kapcsolatban. ==== Major és minor szám ==== Linuxban minden eszköznek van ún. major és minor száma. Ez megnézhető pl. a következő paranccsal: ls -l /dev **Példa:** crw-rw-rw- 1 root root 1, 3 May 18 17.19 /dev/null crw-rw-rw- 1 root root 1, 9 May 18 17.19 /dev/urandom crw-rw-rw- 1 root tty 5, 2 Aug 23 15.27 /dev/ptmx A fenti példában a ''major,minor'' számok rendre: ''1,3''; ''1,9'' és ''5,2''. Ezek mind karakteres eszközök, ezt jelzi a sor eleji ''c'' betű. Linuxban a tárolóeszközöket (lemezek, partíciók, kötetek) nem karakteres, hanem blokkos eszközök reprezentálják. A blokkos eszköz elnevezése és major–minor száma között egyértelmű megfelelés van. ==== SCSI: /dev/sd* ==== Az ''sd'' (SCSI disk) meghajtóprogram a következőképpen nevezi el a tárolóeszközöket reprezentáló blokkos eszközöket (eszközfájlokat): /dev/sd Például: ''/dev/sda'', ''/dev/sda1'', ''/dev/sdb2'' stb. Ha az eszköz a teljes meghajtót reprezentálja, nincs partíciószám. Az SCSI-eszközök major száma mindig 8, minor száma pedig: 16 * meghajtó száma + partíció száma, ahol a meghajtó száma a meghajtók detektálásának sorrendje szerinti, 0-tól induló sorszám. **Példa:** brw-rw---- 1 root disk 8, 0 aug 23 18:44 /dev/sda brw-rw---- 1 root disk 8, 1 aug 23 18:44 /dev/sda1 brw-rw---- 1 root disk 8, 16 aug 23 18:44 /dev/sdb brw-rw---- 1 root disk 8, 17 aug 23 18:44 /dev/sdb1 brw-rw---- 1 root disk 8, 18 aug 23 18:44 /dev/sdb2 Blokkos eszközök esetén a következő parancs is hasznos: lsblk **Példa:** sda 8:0 0 465,8G 0 disk └─sda1 8:1 0 465,8G 0 part / sdb 8:16 0 111,8G 0 disk ├─sdb1 8:17 0 2G 0 part /boot └─sdb2 8:18 0 109,8G 0 part [SWAP] ==== Device Mapper: /dev/dm-* ==== Linuxban a logikai kötetkezelés (LVM), a redundáns storage-elérés (dm-multipath) és a kötetek titkosításának (dm-crypt) alapja a Device Mapper (DM). A DM-eszközök virtuális eszközök, tehát nem fizikai eszközöket reprezentálnak, hanem logikai köteteket, storage I/O-útvonalakat összefogó eszközt, titkosított kötetet stb. DM használata esetén az eszközfájlok elnevezése: /dev/dm- A DM-eszközök major száma mindig 253, a sorszáma pedig a minor számmal egyezik meg. **Példa:** brw-rw----. 1 root disk 253, 0 aug 17 13.32 /dev/dm-0 brw-rw----. 1 root disk 253, 1 aug 17 13.32 /dev/dm-1 brw-rw----. 1 root disk 253, 2 aug 17 13.32 /dev/dm-2 brw-rw----. 1 root disk 253, 3 aug 17 13.32 /dev/dm-3 sda 8:0 0 238G 0 disk └─sda1 8:1 0 236G 0 part ├─dm-1 253:1 0 4G 0 lvm │ └─dm-2 253:2 0 4G 0 crypt [SWAP] └─dm-0 253:0 0 23G 0 lvm └─dm-3 253:3 0 23G 0 crypt / ==== A név megváltozása ==== Ha új tárolóeszközt detektál a meghajtóprogram, akkor új minor számokat foglal le annak, ha pedig kiesik egy eszköz, akkor felszabadulnak az adott minor számok. Mivel a minor szám a meghajtók detekciójának sorrendjétől függ, az ''sd*'' és a ''dm-*'' elnevezés megváltozhat, például abban az esetben, ha: * egy lemez meghibásodik, nem válaszol az SCSI-vezérlőnek, ezért nem detektálható, * az SCSI-vezérlő vagy HBA meghibásodik (és az összes ehhez kapcsolódó lemez elérhetetlenné válik), * az SCSI-vezérlőt vagy HBA-t átteszik másik helyre, újat szerelnek be * nem egyforma HBA-k vannak a gépben (a detekció sorrendje változhat), * HBA-n át elérhető lemezek nem válaszolnak storage oldali probléma (pl. switch hiba) miatt. Ilyen esetekben pl. ha az eddig ''/dev/sdb''-nek nevezett lemez nem detektálható, akkor egy másik lemez kapja ezt a nevet, ami nagy eséllyel adatkorrupcióhoz vezet. :!: Tehát **a ''/dev/sd*'', illetve a ''/dev/dm-*'' elnevezés nem perzisztens**. Emiatt rossz gyakorlat pl. a ''/etc/fstab''-ban vagy egyéb helyen ilyen néven hivatkozni a kötetekre. === /dev/disk/by-path/* === A ''/dev/disk/by-path/*'' eszközök neve nem a major–minor számokra épül, hanem az SCSI-címzésre, melynek része többek között a HBA/SCSI-vezérlő száma (PCI-hely), -csatorna száma (HBA-port), az SCSI target, LUN stb. Ezek a nevek is változhatnak, ha az SCSI target vagy az SCSI host/channel változik, pl. a fent felsorolt okok miatt. Tehát a ''/dev/disk/by-path/*'' elnevezés sem igazán perzisztens, bár egy fokkal jobb, mint a major–minor számokra hagyatkozni. ===== Perzisztens nevek ===== A ''/dev'' könyvtár alatti eszközfájlok perzisztens elnevezéséért a Linux kernel hotplug alrendszerének részét képező, **udev** nevű meghajtókezelő program felelős. (Az udev konfigurálása nem része ennek az összefoglalónak.) A perzisztens nevek egyedi azonosítók alapján jönnek létre. Ilyen azonosító a WWID, illetve az UUID. Az ilyen nevű eszközfájlok szimbolikus linkek a hozzájuk tartozó ''/dev/sd*'', illetve ''/dev/dm-*'' eszközfájlokra. ==== WWID (WWN): /dev/disk/by-id/* ==== A WWID vagy más néven WWN az SCSI-szabvány által megkövetelt, a világon egyedi azonosító (World Wide ID vagy World Wide Name) minden egyes SCSI-eszközhöz. Ezek a ''/dev/disk/by-id'' könyvtárban látszanak. **Példák:** /dev/disk/by-id/ata-KINGSTON_SMS200S3120G_50026B7241147299 -> /dev/sda /dev/disk/by-id/ata-KINGSTON_SMS200S3120G_50026B7241147299-part1 -> /dev/sda1 /dev/disk/by-id/ata-KINGSTON_SMS200S3120G_50026B7241147299-part2 -> /dev/sda2 /dev/disk/by-id/usb-SSK_SFD199_00000000000025EB-0:0 -> /dev/sdb /dev/disk/by-id/usb-SSK_SFD199_00000000000025EB-0:0-part1 -> /dev/sdb1 /dev/disk/by-id/wwn-0x50026b7241147299 -> /dev/sda /dev/disk/by-id/wwn-0x50026b7241147299-part1 -> /dev/sda1 /dev/disk/by-id/wwn-0x50026b7241147299-part2 -> /dev/sda2 A példában látszik, hogy egy eszközhöz az operációs rendszer több WWID-t is rendelhet. A WWID lekérdezhető a lemezről SCSI-protokollon át (''Device Identification Vital Product Data (page 0x83) or Unit Serial Number (page 0x80)''), a következő paranccsal: /lib/udev/scsi_id -gu /dev/sd* ==== UUID: /dev/disk/by-uuid/* ==== Az UUID 128 bit hosszú, a világon egyedi azonosító (Universally Unique ID), 32 hexadecimális számjegyként ábrázolva, pl.: ''13152fae-d25a-4d78-b318-74397eb08184'' (lásd: RFC 4122). Nemcsak blokkos eszközök azonosítására használatosak. Blokkos eszközök esetén az UUID-k a ''/dev/disk/by-uuid'' alatt láthatók, illetve az alábbi paranccsal is lekérdezhetők: blkid A ''/etc/fstab''-ban az UUID-vel szokás hivatkozni a partíciókra. Hagyományos partíció esetén UUID a fájlrendszerben (a szuperblokkban) tárolódik. :!: **Új fájlrendszer létrehozása esetén megváltozik az eszköz UUID-ja.** Ha nincs fájlrendszer a lemezen, nics UUID-ja sem az eszköznek. (A GPT-partíciók bevezetésével ez megváltozott: a GPT-partícióknak fájlrendszer nélkül is van UUID-juk, ez a ''/dev/disk/by-partuuid'' alatt látszik. Ha nem GPT típusú a partíció, akkor az UUID kamu.) Device Mapper estén az UUID megtudható a ''dmsetup info /dev/dm-*'' paranccsal is. LVM- és LUKS-köteteknél a kötet fejlécében tárolódik az UUID. ==== Label: /dev/disk/by-label/* ==== Az eszközökhöz definiálható "emberi" név, címke is. Ezek a ''/dev/disk/by-label'' alatt érhetők el, és szintén használhatók ''/etc/fstab''-ban, noha ez mostanában nem gyakori. A címke a fájlrendszerben tárolódik. (GPT-partíciók esetén már nem szükséges fájlrendszer, a partícióhoz is tarozhat címke, ez a ''/dev/disk/by-partlabel'' alatt látszik. Az LVM és LUKS nem támogatja címkéket.) ==== Device Mapper: /dev/mapper/* ==== A Device Mapper eszközök perzisztens neve ''/dev/mapper/''. A '''' lehet WWID vagy UUID, egy ezeket tartalmazó egyéb azonosító, vagy valamilyen más egyedi név, pl. LVM estén kötetcsoport és kötet neve. **Példa:** /dev/mapper/vg01-swap -> dm-1 /dev/mapper/vg01-root -> dm-0 /dev/mapper/luks-a76f051a-cc77-491a-bde6-197e0bb12f6b -> dm-3 /dev/mapper/luks-ec46545d-29d9-4b85-a019-a9a77a4f5144 -> dm-2 Ezek az eszközök listázhatók a következő paranccsal is: dmsetup ls **Példa:** vg01-swap (253:1) vg01-root (253:0) luks-a76f051a-cc77-491a-bde6-197e0bb12f6b (253:3) luks-ec46545d-29d9-4b85-a019-a9a77a4f5144 (253:2) Újabb Linuxokban az ''lsblk'' is perzisztens neveket mutat. === DM Multipath === Multipath használata esetén bekapcsolhatók a felhasználóbarát nevek (''user_friendly_names''), melyek formája: /dev/mapper/mpath<útvonal betűjele> Ezek egy hoszton belül konzisztensek, az eszköz WWID-jára képeződnek le. Klaszterszinten viszont nem biztos, hogy ugyanaz lesz a felhasználóbarát név minden node-on. Ekkor érdemes kikapcsolni a a felhasználóbarát neveket, és helyette az alapértelmezett WWID-t használni, amely klaszterszinten is konzisztens.