GRUB (bloková zařízení)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání


Aby bylo zřejmé, jak probíhá proces zavedení systému, je třeba něco vědět co jsou bloková zařízení a jak je "vidí" GRUB2. Je to důležité znát především proto, aby bylo jasné:

  • kam se instaluje GRUB2
  • kde lze najít soubory potřebné pro zavedení OS
  • odkud a jak zjistit parametry, s nimiž pak lze pracovat v souboru grub.cfg
Poznámka Bloková zařízení jsou taková, která komunikují po blocích dat. Tj. i když z nich chceme přečíst pouze jeden bajt, musíme načíst celý blok dat najednou. Totéž platí i pro zápis. Při práci s nimi se tedy využívá vyrovnávací paměť (tzv. buffer). Veškeré operace s daty se provádí v něm a k jejich uložení (opět po celých blocích) dochází teprve až když k tomu systém vydá příkaz.

GRUB shell se velmi podobá klasickému unixovému shellu. I jeho přístup k blokovým zařízením je podobný. Ovšem GRUB2 není - vzhledem k omezením BIOSu - schopen rozlišit, zda je blokové zařízení typu SATA nebo IDE. Proto jsou všechny pevné disky, ať již připojené přes USB, nebo některé ze zmíněných rozhraní identifikovány jako hd. Disketová mechanika fd a CD mechanika - cd. Podle toho jak jsou postupně tato zařízení rozpoznávány, jim jsou přidělovány i pořadová čísla.

MBR.svg

Poznámka Při bezdiskovém zavedení GRUB2 po síti, je-li zaveden příslušný modul, se síťové rozhraní objeví jako zařízení pxe.

Jak vidí bloková zařízení linux

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.

Upozornění Tento subsystém však nelze využít při zavádění systé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")