FreeBSD jails cz.2
W drugiej części cyklu FreeBSD jails postaram się przybliżyć współpracę narzędzia ezjail z systemem plików ZFS.
Począwszy od wersji FreeBSD 8.0 RC1 implementacja ZFS straciła status eksperymentalnej, o czym możemy się przekonać czytając raport prac za okres 2009-04 – 2009-09:
We believe that the ZFS file system is now production-ready in FreeBSD 8.0. Most (if not all) reported bugs were fixed and ZFS is no longer tagged as experimental
(źródło: http://www.freebsd.org/news/status/report-2009-04-2009-09.html#FreeBSD/ZFS)
Stwarza to okazję rozbudowania wcześniej opisywanego narzędzia ezjail o współpracę z systemem plików ZFS co zaowocować może m.in. szybszym tworzeniem nowych instancji jails oraz łatwiejszym wykonywaniem kopii zapasowych. Na potrzeby tego projektu stworzyłem prosty skrypt ezjail-zfs w bash’u, który realizuje następujące funkcję:
- integruje się z ezjail wykorzystując wspólny plik konfiguracyjny
- tworzy podstawową hierarchię systemu plików ZFS
- wspomaga tworzenie instancji jails
- wykonuje snapshoty wybranych jails’ów
- wspomaga tworzenie clone’ów podanych jails’ów
- tworzy kopie zapasowe całego systemu ezjails lub wybranych instancji jails
Konfiguracja samego skryptu ezjail-zfs wymaga podania lokalizacji plików konfiguracyjnych poszczególnych jails’ów, samego ezjail.conf oraz określenia nazwy naszego podstawowego systemu ZFS:
zfs_root="jail"
ezjail_confdir="/usr/local/etc/ezjail"
ezjail_conf="/usr/local/etc/ezjail.conf"
Po przeprowadzonej konfiguracji możemy zainicjować wymagane systemy plików ZFS poleceniem:
# ezjail-zfs init
stworzy on na podstawie zmiennych ezjail_jaildir oraz ezjail_jailbase odpowiednie systemy plików ZFS. Dopiero wtedy możemy wydać polecenie ezjail-admin install. Narzędzie ezjail-zfs wspomaga tworzenie instancji jails i tak:
# ezjail-zfs create
po podaniu nazwy nowego jail’sa otwiera się automatycznie edytor vi, dodajemy wybrane przełączniki do ezjail-admin create oraz podajemy adres IP po zatwierdzeniu tworzy się nowy system plików ZFS w podanej lokalizacji. Nowy jail jest gotowy do uruchomienia.
Przełącznik snapshot w ezjail-zfs, stworzy migawkę wybranego z listy jails’a:
:::bash
# ezjail-zfs snapshot
[ snapshot ]
List of jails:
----------------------------
jail1
Make snapshot of which jail: jail1
NAME USED AVAIL REFER MOUNTPOINT
jail/jails/jail1@1255864344 0 - 1.57M -
Zapisana migawka może posłużyć np. do odtworzenia stanu jail’a sprzed update’u lub odzyskania utraconych plików. Nazwa migawki to unix timestamp, najprościej zdekodować go można poleceniem:
:::bash
$ date -r <timestamp>
W celu stworzenia nowego jails’a możemy posłużyć się już istniejącym i na bazie jego stworzyć nową instancję jails. Aby to uczynić należy skorzystać:
:::bash
# ezjail-zfs clone
...
NAME USED AVAIL REFER MOUNTPOINT
jail/jails/jail1_clone 0 2.79G 1.57M /usr/jails/jail1_clone
w efekcie uzyskujemy nowego jails’a, który początkowo nie zajmuje żadnej przestrzeni dyskowej, dopiero wraz z jego rozwojem będzie zajmował miejsce na dysku. Tworzenie klonów jest korzystniejsze niż operowanie flavours, gdyż wystarczy, że stworzymy coś na wzór template’u jails’a do określnego celu i po prostu go sklonujemy zamiast tak jak to jest w przypadku flavours mozolnie opisywać funkcjonalność w formie skryptu, który każdorazowo będziemy wywoływać.
Ostatnią cechą skryptu ezjail-zfs jest wykonywanie kopii zapasowych
pojedynczych instancji jails bądź całego środowiska wraz z plikami
konfiguracyjnymi:
# ezjail-zfs backup
[ backup ]
Which backup do you want to perform:
1. Only one jail with config files
2. Full backup of your all jails and config files
Your choice [1]:
w przypadku backup’u pojedynczego jails’a w lokalizacji ezjail_archivedir (konfiguracja ezjail.conf) znajdziemy kopię zapasową:
:::bash
Backup of jail1 created:
-rw-r--r-- 1 root wheel 333K Oct 18 13:35 /root/jail1.tar.gz
zaś w przypadku całościowego backup’u:
:::bash
Full jail backup created:
-rw-r--r-- 1 root wheel 53M Oct 16 19:09 /root/fulljail.tar.gz
Backup’y zawierają pliki konfiguracyjne, backup został wykonany poleceniem zfs send, odtworzenie wymaga użycia polecenia zfs receive oraz przegrania/zmodyfikowania plików konfiguracyjnych.
Za pośrednictwem prostego skryptu uzyskujemy jeszcze większą łatwość zarządzania oraz migracji naszej infrastrukturą wirtualnej.
W następnej części cyklu FreeBSD jails, postaram się przedstawić niektóre ciekawsze parametry konfiguracyjne jails.
powered by Hugo and Noteworthy theme