V květnu tohoto roku jsem konečně podlehl výzvám kámoše, abych vážně zkusil FreeBSD a dal mu chvíli šanci. Nebylo to pro mě první setkání, kdysi (2010) jsem zvažoval přechod na BSD a mít tak možnost používat ZFS, ale nakonec po testech zvítězilo BTRFS. Proč? O tom třeba někdy jindy.
V květnu mi na stole přistál vhodný HW (vrácený neužitý x86 desktop hw), vyhradil jsem si víkend na instalaci a otevřel handbook. Chtěl jsem si to projít opravdu poctivě. Mno, víkend jsem nakonec využil k jiným činnostem, protože za několik málo hodin v pátek po práci jsem měl nainstalované vše, co jsem chtěl a lecos navíc. :-) Prostě vše rychle, bez jediného problému.
V té době jsem řešil nedostatek diskového prostoru, resp nedostatek místa, kam připojit další disky. Na stávajícím serveru je obsazeno všech 6 diskových pozic. Do krabice by se sice další disky vešly, ale neexistuje schopný PCI-E HBA adaptér. Takže ve chvíli, kdy tam bylo 10 disků – 6 interních a 4 na dalším HBA řadiči, tak se adaptér rozhodl sám sebe vypnout a to ještě postupně: „jeden port teď a další potom“. Ke cti BTRFS je nutno uvést, že i přes notnou dávku „recovered error“ v logu, se podařilo všechna data bez chybičky zkopírovat. (Data byla přirozeně i na zálohách, chtěl jsem je zkusit, co to vydrží.)
S tímto novým strojem jsem tak současně vyřešil i problém kam s dalšími disky. Z toho nakonec plynou i služby, které na FreeBSD provozuji: NFS, iSCSI (v desktopu mám jen SSD o menších kapacitách, velké věci mám roky na iSCSI – ať mi v kompu nehlučí mechanický disk). Časem ještě přibylo minidlna. A barman pro zálohování PostgreSQL z hlavního serveru. Vše se týká ukládání dat.
Mimochodem, pokud máte chvilku času, tak doporučuju vyzkoušet toto. Na Linuxu. Takové konfigurační rozhraní jsem dosud neviděl. Je to silný, kulturní, trvalý, zážitek. :-D
Roky jsem zvyklý na konfiguraci iscsi stylem:
target iqn.2016-05.cz.domain:target0 { lun 1 { path /dev/zvol/zroot/iscsi } }Borci v Dateře asi usoudili, že to až příliš jednoduché a že místo dvou řádků je potřeba v TUI klikat na desítky položek. Na druhou stranu, ten soft poskytuje jednotné konfigurační rozhraní pro více protokolů, než jen iSCSI (no vlastně jen Fibre Channel).
Distribuce?
Tady bych měl asi vysvětlit ten provokativní nadpis. Nechci se pouštět do diskusí, co je to OS, co je to distribuce OSS apod. Tím nadpisem jsem chtěl jen naznačit, že pro linux admina není FreeBSD nejmenší problém (až mě mrzí, že jsem se k tomu dokopal až tak pozdě). Jistě, je jiný kernel, jiné FS, to je pravda. Jenže kfreebsd kernel můžete používat v na Debianu. Debian je OS a vůbec se nemusí jednat o linux.
Mno takže, stejně jako u jiné distribuce se admin musí naučit nové základní příkazy pro vytvoření uživatele, spuštění služby, instalaci a update software apod. Tady to skutečně není jiné, než když Redhaťák přejde na Debian nebo na ArchLinux.
Z hlediska uživatele už je to potom úplně jedno. Má tam bash, vim, pgsql, imagemagick, ffmpeg, prostě úplně stejný software, jaký má i na linuxu. Z hlediska uživatele je tedy úplně jedno, zda pracuje na linuxu nebo na bsd. Nepozná to.
Z pohledu admina
Asi největším kulturním šokem bylo rozdělení na kernel + base a programy. V distribucích linuxu jsem zvyklej, že vše je balíček. Tady ne, tady je základní systém distribuován jako jeden celek kernel + base a aplikace jsou bokem. Kernel a base jsou vyvíjeny jedním týmem, userspace je tak maximálně kompatibilní s jádrem.
Nevím, jestli se mi to líbí víc, než linuxové řešení, ale to není podstatné. Podstatné je, že nainstalovaný kernel+base má něco kolem 300MB. A je tam kde co všechno.
Například jsem hledal balíček (port – k tomu ještě později) na NFS. Žádný jsem nenašel. NFS server je totiž rovnou v base. Stejně tak iSCSI target. Taky v base. Stejně tak dns resolver.
Zkrátka v těch 300MB máte plně funkční systém vhodný pro provoz jako NAS (no teda kromě Samby no, ehm), firewall, router a kde co dalšího. A společně s kernelem je to od jednoho týmu.
Porty
Další software se instaluje buď z binárních balíčků. Tady je to vlastně stejné jako u kterékoliv jiné distribuce linuxu, která používá balíčky. Pokud se tím dále nechcete zabývat, tak pro vás zde práce končí.
Další a mnohem lepší možnost je instalace z portů. BSD porty převzaly i některé linuxové distribuce, např. Gentoo. Programy v portech jsou ve formě zdrojového kódu a musí se před instalací sestavit. To adminovi pokytuje možnost nastavit si, jak to chce zkompilovat. Jednak optimalizační volby a jednak závislosti. Zatímco u binárních balíčků v distribucích jsou závislosti dány správcem distribuce, tady je to zcela na vás. Nepotřebujete v ffmpeg renderovat titulky? Fajn, odškrtněte příslušnou volbu. Ušetříte čas na tahání a kompilaci knihoven pro rendering fontů a také fonty samotné. A tak dále. V tomto krátkém návodu na APC UPSd je vidět, že jsem při instalaci klienta nechal zkompilovat pouze klienta. Nic dalšího nepotřebuji.
Porty jsou kompatibilní s instalací binárních balíčků (ostatně na konci kompilace portu se vytvoří standardní instalační balíček), takže můžete kombinovat instalaci pomocí portmaster
a pkg
.
Hierarchie FS
Další, spíše kosmetickou, změnou pro admina linuxových os je hierarchie fs. Base systém si žije tam, kde jste zvyklí z linuxu, tedy /etc /bin /usr /var apod. Jakýkoliv další software se instaluje do struktury v /usr/local.
Takže třeba konfig minidlna nenajdete v /etc/minidlna.conf
(tak jak třeba na debu), ale v /usr/local/etc/minidlna.conf
. Což v začátcích sice trochu mate, ale po chvíli si na to zvyknete. Prostě systémové věci v /etc
a další software v /usr/local/etc
. Nic na tom není.
Služby
Správa služeb je přímo požehnání. Na Linuxu roky trval stav zbytečně přesložitělých rc skriptů v /etc/init.d
, runlevelů apod., což nakonec vyústilo v systemd…
Na FreeBSD seznam služeb spouštěných při bootu vypadá takto (soubor /etc/rc.conf
):
# ISCSI Target ctld_enable="YES" # NAMED named_enable="YES" smartd_enable="YES" # Samba samba_server_enable="YES" apcupsd_enable="YES" minidlna_enable=YES
Zkrátka, na jednom místě, krásně a přehledně admin vidí, co se bude spouštět. Nic dalšího netřeba dodávat.
I samotné rc skripty jednotlivých služeb jsou krásně přehledné a krátké.
Pár slov nakonec
Tady bych to asi ukončil. Hlavní myšlenkou tohoto článku bylo: nebojte se FreeBSD. Je to mnohem jednodušší, než si možná myslíte. Pro admina linuxu to nepředstavuje žádný problém (pár základních příkazů a naučit se, kdo kde na fs je). Konfigurace software je potom už zcela stejná, jako na linuxu. Stejný software.
Proč to vyzkoušet? Osobně rád zkouším nové věci, jestli správně počítám, tak toto je asi osmý OS, který používám (Basic na osmibitech, DOS, Win NT + celá řada až po 10, Win 9x, OS2, iOS, Linux, FreeBSD).
Další důvod je, nevsázet vše na jednu kartu. Linux tady nemusí být věčně a i když třeba bude, tak se vám nemusí za nějaký čas líbit, kam směřuje. Já k tomu mám silné výhrady už teď. Zatím se mě některé věci týkají spíše méně než více, ale otázkou je, jak dlouho tomu tak bude a jak dlouho budu ochoten před tím uhýbat.
Dalším důvodem může být třeba vyzkoušet si ZFS. ZFS je dobrý, vyspělý systém souborů, můžete si na tom postavit levný a výkonný storage. (Ano vím, že zfs je i na linuxu, ale prostě nevidím důvod, proč kličkovat před nekompatibilitou licencí CDDL a GPL, obzvláště, když její autor na to má jasný názor, za situace, když můžete ZFS používat nativně a bez licenčních problémů.)