FreeBSD jails cz.2

Sun 18 October 2009 by admin

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:

# 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:

$ 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ć:

# 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ą:

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:

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.


FreeBSD jails cz.1

Sun 11 October 2009 by admin

Tym wpisem zapoczątkowuje kilku odcinkową serię poświeconą usłudze jails w systemie FreeBSD. W pierwszej części po krótkim omówieniu zagadnienia postaram się przybliżyć narzędzie ezjail wspomagające zarządzenie system jails.

Począwszy od wersji 4.0 we FreeBSD pojawia się opcja jails wirtualizacji na poziomie samego systemu operacyjnego czyli tworzenia niezależnych systemów w ...

read more