Hlavní navigace

Spojte několik souborových systému do jednoho s mhddfs

Petr Krčmář 28. 5. 2008

Navýšení diskové kapacity pouhým přidáním disku je v Linuxu zhola nemožná věc. Někdy ale prostě potřebujete snadno spojit několik disků a sečíst jejich kapacitu. Pokud nepoužíváte Solaris a ZFS, budete potřebovat nějaké nové řešení. Jedno takové jednoduché s rychlé si představíme – je jím mhddfs.

Předpokládejme, že máte tři disky o velikostech 80, 40 a 60 GB. A máte 150 GB hudebních souborů, které na tyto disky musíte uložit. Jak to uděláte?

Vím o dvou řešeních:

  • buď jednoduše vytvoříte tři samostatné hudební adresáře – jeden na každém disku,
  • nebo vytvoříte nějaký RAID, který spojí všechny disky do jednoho pole.

První řešení je docela otravné, protože se musíte rozhodnout, jak data rozdělíte a pamatovat si, co kde máte. Například se rozhodnu uložit veškerou klasickou hudbu na první disk a rockovou na ten druhý. Pak se první disk zaplní a na druhém bude hromada místa. Budu muset soubory složitě přesouvat mezi disky nebo používat symlinky.

Metoda s RAID sice tento problém řeší, ale zase snižuje spolehlivost pole nebo vás naopak připraví o část použitelného diskového prostoru.

Anketa

Kolik máte ve svém počítači disků (i externích)?

Nedávno jsem ale objevil lepší řešení všech podobných problémů: mhddfs. Jedná se o modul pro souborový systém FUSE, který dovoluje kombinovat několik menších svazků do jednoho velkého virtuálního, který obsahuje všechny soubory uložené na jednotlivých discích a zároveň sloučí volné místo. Navíc na rozdíl od ostatních podobných modulů (unionfs?) tento neomezuje možnost přidávání dalších souborů a dovoluje spravovat i to, kde budou soubory fyzicky uloženy.

Balíček se jmenuje mhddfs a je k dispozici v Debian Testing a Unstable. Vypadá to, že v současné chvíli není dostupný v Ubuntu.

Spojujeme disky

Řekněme, že zmíněné tři disky máte připojené do /mnt/hdd1, /mnt/hdd2 a /mnt/hdd3. Pak máte zřejmě něco takového:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/sda1              80G   50G   30G  63% /mnt/hdd1
/dev/sdb1              40G   35G    5G  88% /mnt/hdd2
/dev/sdc1              60G   10G   50G  17% /mnt/hdd3

Poté, co nainstalujete balíček mhddfs za pomocí vašeho oblíbeného správce balíčků, můžete vytvořit mount point, nazvěme ho třeba /mnt/virtual, ve kterém se pro vás spojí všechny tři disky dohromady. Krása FUSE spočívá v tom, že nemusíte být root (postačí, budete-li členy skupiny fuse), ale v tomto případě pro jednoduchost předpokládejme, že jsme přihlášeni jako root.

# mkdir /mnt/virtual
# mhddfs /mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual -o allow_other

option: allow_other (1)
mhddfs: directory '/mnt/hdd1' added to list
mhddfs: directory '/mnt/hdd2' added to list
mhddfs: directory '/mnt/hdd3' added to list
mhddfs: move size limit 4294967296 bytes
mhddfs: mount point '/mnt/virtual'

Volba -o allow_other znamená, že výsledný souborový systém bude k dispozici všem uživatelům, nejen tomu, který jej vytvořil.

Výsledek bude vypadat následovně:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/sda1              80G   50G   30G  63% /mnt/hdd1
/dev/sdb1              40G   35G    5G  88% /mnt/hdd2
/dev/sdc1              60G   10G   50G  17% /mnt/hdd3
mhddfs                180G   95G   85G  53% /mnt/virtual

Jak vidíte, byl vytvořen nový souborový systém. Sloučil celkovou velikost disků dohromady (180 GB), spojil i využité místo na discích (95 GB) a sečetl volné místo (85 GB). Podíváte-li se na soubory v /mnt/virtual, zjistíte, že se jedná o soubory ze všech disků a že se adresářové struktury „překryly“ do jedné společné.

Přidání souborů

Ale co když se pokusíte přidat nové soubory někam do /mnt/virtual? No, to je docela složitý problém a musím říct, že se s ním autor mhddfs vypořádal velmi dobře. Když vytvoříte nový soubor na virtuálním disku, modul mhddfs vyhledá volný prostor, který se nachází na některém z disků. Pokud je dostatek místa hned na prvním disku, bude soubor vytvořen tam. Pokud na něm místo už není, (tedy je ho méně než určuje volba mlimit, která je standardně nastavena na 4 GB), bude použit druhý disk. Pokud ani na něm není místo, použije se třetí a tak dále. Pokud je na všech discích méně než mlimit místa, pak bude použit disk s největším volným místem.

Je to ale ještě lepší: pokud na disku dojde místo během zápisu (snažíte se na něm vytvořit příliš velký soubor), celý proces neselže, ale mhddfs jednoduše přenese zapsaná data na jiný disk (na kterém je více místa) a pokračuje v zápisu na něm. Vše proběhne pro zapisující aplikaci zcela transparentně (ani nebude vědět, že k něčemu došlo).

Nyní můžete jednoduše pracovat se soubory v /mnt/virtual a nestarat se o to, co bude čteno ze kterého disku. Výhodou je také velký diskový prostor, což znamená, že můžete ukládat jakékoliv soubory do zmíněného adresáře a (dokud je na některém disku místo) neřešit, který soubor se kam ukládá.

Správa virtuálního disku

Pokud se rozhodnete mount point aktivovat automaticky po startu, stačí přidat do souboru  /etc/fstab:

mhddfs#/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual fuse defaults,allow_other 0 0

Pro další informace si prostudujte man mhddfs.

Poslední, ale důležitá informace, kterou zmíním, je, že je velmi snadné přestat mhddfs používat, pokud se tak později rozhodnete – neztratíte totiž žádná data nebo adresářovou strukturu. Řekněme, že si časem pořídáte nový 500 GB disk a rozhodnete se prodat ty menší třeba na eBay. Stačí jen připojit nový disk, zkopírovat na něj všechno z /mnt/virtual a pak odstranit mhddfs mount point a odpojit staré disky. Všechny vaše adresáře, které byly předtím spojeny ve virtuálu s pomocí mhddfs, budou nyní spojeny doopravdy na novém disku.

Navíc díky tomu, že soubory nejsou doopravdy nijak interně rozsekané a rozptýlené po discích, můžete vždy, i když vám třeba mhddfs nebude fungovat (nebo projekt přestane existovat), zkopírovat soubory a adresáře ze všech disků do jednoho adresáře a získáte stejnou strukturu, jakou jste předtím měli v /mnt/virtual.


Původním autorem článku je Romam Mamedov. Článek byl z anglického originálu přeložen s jeho laskavým svolením a je vydán pod licencí CC Attribution-Share Alike 3.0.

Našli jste v článku chybu?

28. 5. 2008 8:31

Ačkoliv by se článku možná dalo lecos vytknout (absence zmínky o LVM, apod.), mě se obsah líbí a je mi fuk, že jde o pouhý překlad. Získal jsem informace o existenci a základním použití mhddfs, o němž jsem dosud neměl ani tušení. Až to budu chtít použít, přečtu si podrobnosti v dokumentaci, důležitější IMHO je že už budu o této možnosti vědět. Pokud tu bude více podobně užitečných článků, root.cz se mi opět začne lépe číst.

28. 5. 2008 10:32

Atom321 (neregistrovaný)
1) Pan Krčmář článek nepsal, nýbrž přeložil.
2) V úvodu jsou zmíněna i jiná řešení (ZFS, RAID). Možností je spousta - LVM, EVMS, symbolické odkazy křížově mezi filesytémy. Ovšem toto je článek o mhddfs, ne disertační práce o možnostech vytváření diskových polí v Linuxu.
3) Instalace LVM, pokud už není naistalované od počátku, není pouhé přidání disku. Musíte přerozdělit disky a vytvořit na nich nový filesystém.
4) LVM a mhddfs řeší jiný trochu jiný problém.

Příklad:

Mát…


DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi