MergerFS

S každým novým SSD diskem, která jsem pomohl nainstalovat do počítače nějakému příslušníkovi rodiny, nebo širšího přátelstva mi doma zbyl nějaký ten další vyběhaný plotnový disk. Chvilku jsem s nimi plnil rámečky a dělal z nich externí disky, ale rychle jsem ztratil přehled o tom na kterém disku je vlastně co? Když máte doma pět a více externích disků a polovina z nich je menší než 320GB, uchováváte na nich tucet seriálů, které jste poctivě ukradli na Uložtu, tak vám zaručuji, že netušíte co je kde. Hledal jsem nějaké lepší řešení. Běžný postup když jsem něco sháněl byl najít disky, postupně je připojovat k počítači a zjišťovat co na nich není.

NAS!

Rozhodl jsem se vydat uložiště připojeného k internetu. Válel si mi pod postelí můj starý notebook x220T s ulomeným displejem a vrypy na šasi, v místech kde si o něj Mára otevřel pivo. Ideální kandidát na domácí server! ThinkPady mají úžasnou možnost v BIOSu, která umožnuje nastavit, že se má počítač spustit kdykoliv ho připojíte k napájení. Vypadne sít, připojí se napájení. Vhůůů. Počítač se sám znovu zapne. Něco nejde. Vytáhnu kabel, zapojím ho znovu. Vhůůů. Počítač se sám znovu zapne. Ještě jsem to vyšperkoval zásuvkou s dálkovým ovladačem, takže jsem ani nemusel lest pod televizi. Někde jsem k počítači splašil ještě ultrabay dok, kterému jsem vyměnil mechaniku za slot na disk. x220 má 2.5” SATA III slot a taky mSATA, takže můžete bootovat z mSATA disku a když dáte počítač do dokiny, tak máte dva volné plotnové disky, na kterých mohou být jen data. To není vůbec špatné na deset let starý 12” notebook.

Takže disky budou připojené do sítě a přístupné přes SaMBu. Dva disky dvakrát tolik samb? A nešlo by to jednodušeji? Šlo!

Linux má velmi šikovný prográmek mergerfs, který jak již název napovídá spojuje FS (file systémy). Normálně by jste hledali něco co se jmenuje softwarový RAID 0, ale to má své nevýhody. Třeba tu že takové zapojení disků musíte inicializovat v jeden okamžik na prázdných discích. Disky se nesmí rozpojit a když jeden umře, tak jste o všechno přišli.

Ale s Mergerfs ne! Pojďme se na to blíže podívat do tabulky:

Technologie RAID 0 RAID 1 Mergerfs
inicializace na prázdných discích ano ano ne
kapacita 2x 1x 2x
rychlost zápisu 2x 1x 1x
rychlost čtení 2x 2x 1x
disky se rozpojí mimo provoz mám všechny data mám některá data
jeden odejde jsem hajzlu mám všechny data mám některá data

Každý má něco. Když chci mít hodně filmů na “jednom” disku, nevadí mi že o půlku filmů přijdu, když se rozpojí/jeden odejde, nebo menší rychlost. Nemůžu si dovolit disky vyprázdnit, předtím než je spojím. Tak Mergerfs je jasná volba.

Zajímavé je že při běžném používání máme disky připojené jak samostatně, tak i jako jeden celek. Pokud na jeden disk cokoliv nakopírujeme, tak se to objeví i v jednotném disku. Jsou to prostě furt samostatné disky, které se jen tváří pro systém a aplikace, jako jedno uložiště.

Instalace

Nainstalujte si do svého Linuxu aplikaci mergerfs:

sudo apt-get install mergerfs -y

Základní nastavení

Pokud nevíte, že máte speciální použití, začněte jedním z následujících nastavení.

cache.files=off,dropcacheonclose=true,category.create=mfs

Command Line

Pro jednorázové otestování aplikace lze program spustit z příkazového řádku:

mergerfs -o cache.files=partial,dropcacheonclose=true,category.create=mfs /mnt/hdd0:/mnt/hdd1 /media

/etc/fstab

Aneb tam kde se připojují disky. Více informací se můžete dočíst v mém předchozim článku Připojování disků pod Linuxem. Pro nastavení pokaždé, když se zapíná počítač, si můžete zavést záznam v /etc/fstab.

/mnt/hdd0:/mnt/hdd1 /media fuse.mergerfs cache.files=partial,dropcacheonclose=true,category.create=mfs 0 0

Moje nastavení v /etc/fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# Toshiba 1TB
UUID=ECD47EC9D47E9614 /mnt/Toshiba_1TB ntfs-3g defaults,permissions,auto,users,rw,nofail 0 0

# WD 1TB
UUID=2CB29D9CB29D6B5A /mnt/WD_1TB ntfs-3g defaults,permissions,auto,users,rw,nofail 0 0

# Mergerfs
/mnt/Toshiba_1TB:/mnt/WD_1TB /media/NAS fuse.mergerfs allow_other,use_ino,cache.files=partial,dropcacheonclose=true,category.create=mfs,fsname=NAS 0 0

První co vidíte je připojování disků do mount pointů. Disky jsou rozpoznány podle jejich UUID a připojeny do správného adresáře ve stromě.

Dále si povšimněte záznamu pro Mergerfs, blíže si projdeme co se kde nastavuje.

Mount pointy pro jednotlivé dílčí disky:

  • /mnt/Toshiba_1TB
  • /mnt/WD_1TB

Výsledný mount point:

  • /media/NAS

Formát disky:

  • fuse.mergerfs

systemd mount

[Unit]
Description=mergerfs service

[Service]
Type=simple
KillMode=none
ExecStart=/usr/bin/mergerfs \
  -f \
  -o cache.files=partial \
  -o dropcacheonclose=true \
  -o category.create=mfs \
  /mnt/hdd0:/mnt/hdd1 \
  /media
ExecStop=/bin/fusermount -uz /media
Restart=on-failure

[Install]
WantedBy=default.target

Současnost

Můj NAS od té doby co jsem to nastavoval již odešel do křemíkového nebe (přesněji k Machovi do sklepa, kde se na něm něco učili prváci). Ale když jsem ho používal, tak sloužil jako chytrá televize s Kodi, stroj s virtuálkou Ubunta na kterou se dalo vzdáleně připojit a NAS.

Dnes jsem bohužel o NAS chudší, ale za to mně trápí prostory uložišť pod win11.

Zdroje: