Bloková zařízení v linuxu

From DCEwiki
Revision as of 16:11, 23 January 2013 by Keny (talk | contribs) (→‎NBD)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


V linuxu se k veškerým blokovým zařízením přistupuje přes tzv. nody (komunikační uzly), které se u novějších verzí linuxového jádra, které používají udev, vytvářejí dynamicky v rámci adresáře /dev. Jádro, má-li zaveden příslušný ovladač, identifikuje připojené zařízení a udev na základě této identifikace vytváří nody a symlinky do příslušných subsystémů.

Pojmenování nodu závisí na použitém ovladači a také počtu blokových zařízení využívajících stejný ovladač. To je velká výhoda linuxu, protože díky tomu je možné používat libovolný počet identických zařízení současně, a s každým z nich komunikovat samostatně.

Nevýhodou při dynamickém vytváření a rušení nodů je, že jsou-li bloková zařízení zapojena v jiném pořadí, může dojít ke zpřeházení nodů. Proto existují ještě tzv. subsystémy, do kterých udev umisťuje symlinky, vytvořené na základě dalších identifikačních údajů. Takže i když blokové zařízení od jádra dostane přidělen jiný nod, jeho symlink v rámci subsystému zůstává stejný.

Komplexní subsystém blokových zařízení je umístěn v adresáři /dev/disk. Tady lze najít symlinky vytvořené na základě dalších identifikačních údajů, umístění na sběrnici, unikátního id blokového zařízení (uuid), aj.

by-id
symlinky, jejichž název je složen z názvu subsystému, přes který je zařízení připojeno a dalších identifikačních údajů získaných ze zařízení
by-uuid
symlinky v tomto subsystému jsou pojmenované podle uuid blokového zařízení. V případě že se UUID blokových zařízení shoduje (což se může stát), tak zde zůstane pouze symlink pro blokové zařízení, které bylo identifikováno naposled.
by-path
symlinky v tomto subsystému se vytváří podle zapojení na sběrnici, existují zde tedy pouze symlinky na fyzická zařízení.
by-label
symlinky v tomto subsystému se vytváří pouze pro bloková zařízení, které mají nastavenou jmenovku (label). Pokud v systému žádné takové zařízení není, pak neexistuje ani tento subsystém.


IDE

S IDE disky se dnes setkáte už spíše jen ve starších desktopových počítačích.

  • IDE konektor desktopových a notebookových IDE disků není stejný. Napájení desktopových 3,5 palcových disků zajišťuje konektor MOLEX, zatím co u notebookové 2,5 palcové disky se napájí přímo přes konektor.
  • IDE rozhraní nepodporuje hotswap, takže tyto disky nelze vyměnit za běhu.
  • Na jedné "kšandě" v počítači mohou být max. 2 IDE zařízení ( disk, nebo CD mechanika ). Základní desky měly obvykle pouze 2 IDE porty, tzn. že mohly mít zapojeny současně maximálně 4 IDE disky

Ide.jpg

V linuxovém systému jména nodů pro IDE zařízení začínají na hd ( hard disc )+ písmeno (a, b, c, d,...). V případě, že je IDE disk rozdělen na diskové oddíly, tak mají pořadové číslo. Toto číslování začíná od čísla 1

/dev/hda
/dev/hda1
Poznámka Linux měl dříve 0 vyhrazenou pro celý disk, ale v současné době se již pro celé zařízení používá pouze jméno nodu bez čísla.

USB, SCSI, SATA a SAS

Pro pojmenování nodů pro USB, SCSI, SATA a SAS disky se používá zkratka sd (serial device) + písmeno (a, b, c,...) tak jako u IDE disků. Stejně tak platí i číslování diskových oddílů, které začíná od čísla 1

/dev/sda

NBD

Network Blok Device (síťové blokové zařízení). Nevytváří se dynamicky. Je to ve skutečnosti přípojný bod, na který lze namapovat jiné blokové zařízení vypublikované přes síť z jiného stroje. Může jít jak o fyzické blokové zařízení, nebo soubor (podobně jako u loop zařízení).

/dev/nbd0

LOOP

Zařízení loop je virtuální zařízení, které umožňuje přistupovat k souboru tak jako by byl fyzickým blokovým zařízením. Pro správu loop zařízení se používá aplikace losetup

/dev/loop0
Poznámka loop je záležitost GNU, ale i jiné unixové systémy mají podobnou funkcionalitu
  • vnd - virtual node device (záležitost BSD aplikace vnconfig)
  • lofi - loopback file interface (záležitost Solarisu aplikace lofiadm)
  • fbk - file emulates blockdevice (SunOS,Solaris do léta 1988)

RAID

Při sestavení raid pole se pro každý nod souběžně vytváří také příslušné symlinky v subsystému /dev/md a také v komplexním subsystému /dev/disk. Nody pro raid zařízení začínají písmeny md. Číslo..

/dev/md126
/dev/md/datadisk
/dev/disk/by-id/md-name-stroj:datadisk
/dev/disk/by-id/md-uuid-f2789b5800cedb6930281b137d3c18f4
/dev/disk/by-uuid/f2789b58-00cedb69-30281b13-7d3c18f4
/dev/disk/by-label/datadisk
  • V subsystému /dev/disk/by-path se symlink nevytvoří, protože SW raid pole samo o sobě na žádné sběrnici připojeno není.
  • V subsystému /dev/disk/by-label se vytvoří symlink pouze tehdy, pokud byl raid vytvořen s návěštím ("label")
  • V subsystému /dev/disk/by-uuid se vytvoří symlink pouze tehdy, pokud byl na raid poli vytvořen nějaký souborový systém

LVM

Při vytvoření LVM skupiny se vytvoří v adresáři /dev subsystém s identickým názvem. Vytvořené logické disky jsou pak mimo jiné symlinkovány i do tohoto subsystému.

Při vytvoření logického disku se založí nod začínající písmeny dm- a s příslušným číslem. Souběžně se přitom vytvoří také symlink v subsystému /dev/mapper a také symlinky v komplexním subsystému /dev/disk.

/dev/dm-0
/dev/data/disk
/dev/mapper/data-disk
/dev/disk/by-id/dm-name-data-disk /dev/disk/by-id/dm-uuid-LVM-F3MHYiQaxACfu6L95gC2Uz0TjhcGS1VsiJH1e29Qxz3Irv2DMud2bXnGfrdbZ2ku
/dev/disk/by-uuid/f2789b58-00cedb69-30281b13-7d3c18f4
/dev/disk/by-label/diskovy_prostor
  • Podobně jako u SW raid pole se u logických disků nevytváří symlink v subsystému /dev/disk/by-path.
  • V subsystému /dev/disk/by-uuid se vytvoří symlink pokud byl na raid poli vytvořen nějaký souborový systém
  • V subsystému /dev/disk/by-label se vytvoří symlink pouze tehdy, pokud byl souborový systém na raid poli vytvořen s návěštím ("label")
Upozornění Při zavádění systému, který je nad LVM lze využít pouze návěští v subsystému /dev/mapper které je schopen GRUB2 najít.

Ve výchozí konfiguraci GRUB2 ( obsah souboru /etc/default/grub ) je tedy nutno odkomentovat nastavení proměnné GRUB_DISABLE_LINUX_UUID.