Portál AbcLinuxu, 5. května 2025 18:20
Sdílení diskových oddílů připadá v úvahu v případě, že máte na počítači nainstalováno několik operačních systémů - např. BSD a Linux nebo třeba Windows 9x a Windows XP. My se ale podíváme na zoubek situaci, v níž máte několik různých distribucí Linuxu.
Na takto položenou otázku lze sice jednoduše odpovědět, ale pokud se má administrátor správně rozhodnout, musí si uvědomit pro a proti, která to přináší:
Pro | Proti |
---|---|
Obrana proti DoS útokům (např. zaplněním kořenového adresáře). | Se zvyšujícím se počtem disk. oddílů se zvyšuje poměr nevyužitého volného místa k diskové kapacitě. |
Možnost optimalizace přístupu k jednotlivým diskovým oddílům. | |
Snazší správa - zejména zálohování. | |
Pohodlí při práci - máme k dispozici všechna svá data. | |
Úspora diskového prostoru. |
Z tabulky je vidět, že existuje několik důvodů Pro. Jsem zastáncem dělení disku na oddíly, tak je možné, že mě nějaké zápory nenapadly. Laskaví čtenáři je mohou doplnit v diskusi pod článkem. Rozhodnutí je v každém případě na konkrétním administrátorovi.
Odkládací oddíl je nepochybně přirozeným kandidátem. Současně není spuštěno více distribucí, takže v tomto směru není důvod swap nesdílet.
Samozřejmě existují případy, kdy takové sdílení možné není. Jedním z nich je situace, která je naznačena v předchozím odstavci - totiž ta, kdy běží více distribucí současně, tj. v případě virtuálních strojů. Dalším případem je situace, kdy používáme swap partition na hibernaci.
Pokud tedy můžeme sdílet odkládací oddíl, zapíšeme do souboru
/etc/fstab
následující řádek:
/dev/hda5 none swap
Použití zajistíme příkazem swapon nebo restartem stroje.
Dalším oddílem, který můžeme celkem bez problémů sdílet, je adresář
/tmp
.
Zabránit nám v tom může jediná věc - pokud je adresář používán pro ukládání uživatelských dat, tj. dokumentů, zdrojových souborů, atd. V takovém případě je třeba zvážit, zda je to vhodné.
Vlastní sdílení pak není nic složitého, stačí přidat stejný řádek
do souboru /etc/fstab
ve všech distribucích. Osobně ještě při spouštění systému adresář /tmp
vymažu.
Sdílení předchozích dvou oddílů bylo víceméně přirozené. Sdílení adresáře
/boot
již vyžaduje trošku plánování. Přinese nám ale mnohem snazší správu bootování - budeme mít pouze jednu instalaci zavaděče a jednu konfiguraci.
V Linuxu se používá většinou buď LILO, nebo GRUB. Pokud chceme mít pouze jeden konfigurační soubor, musíme jej uložit na sdílenou partition - přirozené umístění bude v adresáři /boot
(sdílet adresář /etc
nedoporučuji). V případě LILO je tento proces poněkud násilný, proto doporučuji zaměřit se na GRUB - ten budu popisovat v následujícím textu.
Myšlenka je prostá - potřebujeme partition, na které budou všechny soubory potřebné pro zavedení všech systémů a konfigurační soubor pro boot loader.
GRUB čte konfiguraci z /boot/grub/menu.lst
. Takže už zbývá jen sdílet partition s adresářem /boot
. Ale když si např. v ArchLinuxu aktualizujete kernel, zapíše se do /boot/vmlinuz26
. V případě, že byste v tomto adresáři již měli takto pojmenovaný soubor určený navíc pro jinou distribuci, přidělali byste si zbytečné problémy.
Proto je vhodné ukládat soubory specifické pro jednotlivé distribuce
do samostatných adresářů. Vlastní mapování adresáře /boot
pro konkrétní distribuci pak bude bohužel o něco složitější, ale není to nic hrozného.
Do adresáře /mnt/boot_partition
si připojíme
diskový oddíl - do /etc/fstab
přidáme:
/dev/hda1 /mnt/boot_partition ext2 defaults 0 0
V tomto oddílu vytvoříme samostatné adresáře pro každou distribuci:
/mnt/boot |-- arch |-- gentoo |-- grub |-- initrd-tree | |-- bin | |-- dev | |-- etc | |-- lib | | `-- modules | | `-- 2.6.12.1 | |-- mnt | `-- proc |-- lost+found `-- slack
Obsah původního adresáře /boot
nakopírujeme do příslušného adresáře v /mnt/boot_partition
:
# cp -R /boot/* /mnt/boot_partition/arch
Adresář /boot
nalinkujeme na konkrétní adresář v /mnt/boot_partition
příkazem (např.)
# rm -rf /boot # ln -s /mnt/boot_partition /boot # ls -l /boot lrwxrwxrwx 1 root root 15 2006-04-24 23:27 /boot -> /mnt/boot_partition/arch/
Nakonec upravíme konfiguraci GRUBu v souboru /mnt/boot_partition/grub/menu.lst
:
title ArchLinux 0.7.1 Noodle root (hd0,8) kernel (hd0,0)/arch/vmlinuz26 root=/dev/hda9 ro vga=normal initrd (hd0,0)/arch/initrd26.img
Na tomto místě se spokojíme pouze s výčtem adresářů a se stručným zdůvodněním.
/etc
je uložena konfigurace, která může být specifická pro konkrétní distribuci.Uvedený postup je možná zajímavou ukázkou možností úspory místa, ale zase tolik toho nepřináší. V tabulce v úvodu byl jako důvod "Pro" uveden jeden zásadní: máme k dispozici všechna svá data.
Ale my je zatím k dispozici nemáme! Adresář /home
přece nesdílíme!
Ano, to je pravda. Existují speciální případy adresářů, které je příjemné
sdílet, ačkoli se běžně neumísťují na samostatné oddíly. Pro takové adresáře doporučuji vytvoření jednoho oddílu, říkejme mu třeba datový, který bude připojen do /mnt
, a jednotlivé adresáře budou nalinkovány do adresářové struktury.
Obvykle se jedná o adresáře s webovými stránkami, adresáře s CVS repository, adresáře s multimediálními soubory a samozřejmě zejména o adresáře s uživatelskými daty.
Popisovat posledně jmenovaný případ by bylo nošením dříví do lesa. Princip
je stejný jako v případě adresáře /boot
- do /mnt/data_partition
připojíme zmíněný datový oddíl...
mount -t auto /dev/sda5 /mnt/data_partition
... a uživatelé si pak ve svých domovských adresářích mohou vytvořit link na svůj adresář v tomto oddíle:
link -s /mnt/data_partition/users/camlost ~/data
Je zřejmé, že by bylo nutné nastavit připojení oddílu v souboru /etc/fstab
, aby byl připojen při každém spuštění systému.
Umístění jmenovaných souborů na jeden společný datový oddíl má také zajímavé vedlejší efekty - při reinstalaci Linuxu nepřijdete o data a je snadné jej zálohovat.
V tomto článku jsme si ukázali, co je nutné pro sdílení diskových oddílů mezi distribucemi Linuxu. Nyní vám již nic nebrání zkoušet nové verze vaší oblíbené distribuce nebo distribuce úplně nové.
Jedná se o můj první článek pro ABCLinuxu. Doufám, že vám přinesl něco nového. Pokud budete mít dotazy nebo připomínky, napište je do diskuse k článku, pokusím se alespoň na několik z nich reagovat.
My 2 cents: Doporucuji vynechat uplne /tmp a pouzit pro nej tmpfs. Napr radkou do /etc/fstab :
none /tmp tmpfs defaults ,size=1500m 0 0
nebo date link do /dev/shm, ale ja mam lepsi zkusenosti s timhle.
Defaultni velikost tmpfs je pulka fyzicke pameti, coz casto staci pro normalni provoz, ale pro napr. kompilace na gentoo ne .
Dokud mate aspon nejakou volnou pamet, tak ctete a ukladate primo z ni, jinak se to, co se zrovna neuziva dava do swapu a ani to neni o moc pomalejsi, nez normalni disk. Ze zkusenosti na gentoo mohu potvrdit, ze prumerne velke preklady uz jen preklad uvnitr tmpfs docela dost urychli. Pak uz vam staci sdilet jen swap odpovidajici velikosti, nebo muzete mit jen zakladni maly swap a tmpfs a pokud potrebujete vetsi tmpfs, tak si ho na tu chvili rozsirite (dejme tomu, ze mate dost mista na /data a jen zakladni velikost tmpfs, napr 256MB, chcete pridat tolik, abyste meli pres 1GB v /tmp).
root> dd if=/dev/zero of=/data/swapfile001.swp bs=1024 count=524288
root> dd if=/dev/zero of=/data/swapfile002.swp bs=1024 count=524288
root> mkswap -L swap001 /data/swapfile001.swp && swapon /data/swapfile001.swp
root> mkswap -L swap002 /data/swapfile002.swp && swapon /data/swapfile002.swp
root> mount -o remount,size=1024m /tmp
Pochopitelne je lepsi to udelat skriptem a spojovani vice mensich swapsouboru mam ve zvyku kvuli kratsi dobe jejich znovuvytvareni, kdyz jeden z nich smazu a lepsimu chovani, krom toho nemusim mazat vsechno, pokud zrovna na /data potrebuji o pul GB vic mista na neco, co pozdeji zase zrusim. Vytvorit swapsoubory potrebujete pochopitelne jen jednou a slouzit mohou, dokud je nesmazete. Za beznych okolnosti si system dal vesele swapuje na partition, jen pokud se rozsoupnete v /tmp, tak pouzije i soubory. A pokud se rozsupujete stale, tak uz je stejne lepsi mit radeji vetsi tu swap partition a hratky s pridavnymi soubory vam odpadnou. Obecne ale na vasem desktopu staci tohle, a na serveru na swapu setrit vlastne nemusite a nechcete .
Jako dodatecny benefit pak pouziti tmpfs pro /tmp je to, ze po rebootu je v /tmp vzdycky cisto . Vlaste je to ucinne proti uzivatelum a programum, kteri ignoruji rozdily v urceni mezi /tmp, /var/tmp a dlouhodobym datovym ulozistem.
Tmpfs je jen v pameti. Takze nikdy zadne disky, nikdy zadne cekani na hlavicky, nikdy zadne zapisy do logu metadat, nikdy nic takoveho. BTW, sync se dela tusim kazdych 30 sekund. Vytvareni a opetovne ruseni tisicu malych souboru poruznu ve filesystemu je skutecne radikalne rychlejsi v tmpfs. Jak spravne rikate, veci se maji uzivat k tomu, k cemu jsou. Vsimnete si, ze nenavrhuju si tam zridit ftp uloziste nebo tam umistit databazi .
Proc to prosim nezkusite, nez me smetete ze stolu kategorickym tvrzenim zalozenym na predpokladu, ze "se to preci takhle ma chovat" a na predpokladu, ze snad mam na mysli uziti /tmp k necemu jinemu, nez je, to jest k docasnym souborum, ktere vetsinou byvaji kratkodobe a znacne male, za to jich ale byva mraky. Zkusil jste treba u sendmailu (na hodne zatizenem stroji, samozrejme) dat nekdy xf subfrontu do tmpfs a porovnat to se stavem, kdy je xf na disku? Ja fakt nemohu za to, ze temporary filesystem je vytecna vec prave pro temporary filesystemy . Hadat se nebudu a nechci, neni to zapotrebi. Kdo chce, zkusi nebo aspon zagoogli a uvidi sam. Kdo nechce, toho nepresvedci nic. Hezky den.
Jeste male upresneni, mozna to vyznelo jinak, nez jsem chtel: tmpfs NENI ramdisk. Tedy melo byt nikoli pouze "je jen v pameti", ale "je jen ve virtualni pameti". Procesum misto nijak zvlast neubira, a pokud skutecne pocitate kazdy byte fyzicke pameti pro procesy, tak opravdu neni pro vas nic, co pameti jakkoli plytva, ale o extremech se snad nebavime (a i tehdy vam tmpfs pomuze, jen v nem asi nebudete nic prekladat .
Pokud nekdo chce odkazy na zkusenosti, at zagoogli a hlavne zkusi.
BTW, sync se dela tusim kazdych 30 sekund.
Pán je na první pohled odborník No zbytek nemá asi ani cenu číst. Ta doba je mnohem delší. Doporučuji si ji zjistit. To vaše řešení může některé operaci zrychlit jen a pouze při splnění několika podmínek. 1) Ty soubory musí být uloženy déle než je sync interval jádra, protože jen tehdy se skutečně fyzicky uloží na disk. Pokud je totiž smažete dřív, tak se na disk nezapíšou ani nesmažou. Prostě se to celé odehraje v paměti. A ta doba je rozhodně víc než 30s. 2) Jejich objem musí být menší než velikost dostupné RAM pro tmpfs, protože jinak by se musely stejně uložit na disk tak jako tak. Prostě by se odswapovaly. Akorát si tak domršíte memmory management jak už jsem popsal v předchozím přízpěvku.
OK. Takže pokud máte hodně nevyužité RAM při běžném provozu a potřebujete do /tmp uložit data, která jsou menší než tato nevyužitá RAM (aby se neodswapovaly) na dobu delší než je sync interval (jinak by se to stejně nezapsalo), tak si skutečně pomůžete. Pak jste šťastný muž. Z toho my vyplývá, že jste hodně bohatý, nebo provádíte nějakou hodně časově náročnou operaci s relativně malým objemem dat.
Já jsem měl na mysli hlavně tu možnost specifikovat si kódování pro ext oddíl.To já taky, s joliet sice sem-tam problémy jsou, ale pokud používám ext3 jako datovou partišnu pro W i L, tak prostě diakritiku použít nesmím. Sám sebe ohlídám, ale to přejmenovávání všeho, co mi dojde, mě nebaví.
/etc/rc.d/rc.local
(pokud se moc nepletu).
/etc/rcS.d
(v SysV initu) hned za mount věcí z fstabu - potom tam už mohou být soubory běžících programů a ty není záhodno mazat...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.