... h1. 5.2.1. ZFS alapú _jail_ Minden _jail_ alapja egy olyan FreeBSD alaprendszer, amelyhez a későbbiekben nem igazán nyúlunk hozzá, leszámítva a biztonsági frissítéseket, illetve bosszantó hibák kijavítását. Mivel a hasonlóság nagyfokú, azért jól ki tudjuk használni a ZFS fájlrendszer klónozó képességét: {code:title=Parancssor} [root@freebsd:~]$ zfs create bpool/jails [root@freebsd:~]$ zfs create bpool/jails/v7.1.0 [root@freebsd:~]$ zfs create bpool/jails/v7.1.0/template [root@freebsd:~]$ zfs set compression=gzip-9 bpool/jails/v7.1.0/template [root@freebsd:~]$ df -h Filesystem Size Used Avail Capacity Mounted on [...] bpool/jails 3.5G 0B 3.5G 0% /bpool/jails bpool/jails/v7.1.0 3.5G 0B 3.5G 0% /bpool/jails/v7.1.0 bpool/jails/v7.1.0/template 3.5G 0B 3.5G 0% /bpool/jails/v7.1.0/template {code} Mint látni, létrehoztunk egy _template_ jail könyvtárat, mégpedig a _jails_ fájlrendszer alá, a két fájlrendszer közé pedig egy v7.1.0 fájlrendszert, amely a _jail_ *verziója*. A verzió mondja meg, hogy az adott _jail_ 7.1-es alaprendszerből készült, és az általunk "kiadott" első verzió. A _template_ fájlrendszerbe a klasszikus módszerekkel beleteszünk egy alaprendszert: {code:title=Parancssor} [root@freebsd:~]$ cd /usr/src [root@freebsd:/usr/src]$ make world DESTDIR=/bpool/jails/v7.1.0/template -------------------------------------------------------------- >>> make world started on Wed Jan 14 11:54:34 CET 2009 -------------------------------------------------------------- -------------------------------------------------------------- >>> World build started on Wed Jan 14 11:54:35 CET 2009 -------------------------------------------------------------- [...] -------------------------------------------------------------- >>> make world completed on Wed Jan 14 13:16:22 CET 2009 (started Wed Jan 14 11:54:34 CET 2009) -------------------------------------------------------------- [root@freebsd:/usr/src]$ make distribution DESTDIR=/bpool/jails/v7.1.0/template [...] [root@freebsd:/usr/src]$ df -h Filesystem Size Used Avail Capacity Mounted on [...] bpool/jails/v7.1.0 3.5G 0B 3.5G 0% /bpool/jails/v7.1.0 bpool/jails/v7.1.0/template 3.5G 94M 3.5G 3% /bpool/jails/v7.1.0/template [root@freebsd:/usr/src]$ cp /etc/localtime /bpool/jails/v7.1.0/template/etc/ [root@freebsd:/usr/src]$ cp /etc/login.conf /bpool/jails/v7.1.0/template/etc/ [root@freebsd:/usr/src]$ cp /etc/make.conf /bpool/jails/v7.1.0/template/etc/ [root@freebsd:/usr/src]$ cp /etc/profile /bpool/jails/v7.1.0/template/etc/ [root@freebsd:/usr/src]$ cp /etc/resolv.conf /bpool/jails/v7.1.0/template/etc/ [root@freebsd:/usr/src]$ touch /bpool/jails/v7.1.0/template/etc/fstab [root@freebsd:/usr/src]$ mkdir /bpool/jails/v7.1.0/template/usr/ports [root@freebsd:/usr/src]$ echo 'keymap="hu.iso2.101keys"' >/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'network_interfaces=""' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'rpcbind_enable="NO"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo '' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'syslogd_enable="NO"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'syslog_ng_enable="YES"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'sendmail_enable="NO"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'munin_node_enable="YES"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo 'sshd_enable="YES"' >>/bpool/jails/v7.1.0/template/etc/rc.conf [root@freebsd:/usr/src]$ echo '' >>/bpool/jails/v7.1.0/template/etc/rc.conf {code} Alapvetően kész vagyunk, elkészült az első _jail_ fájlrendszere, amelyet nem fogunk használni, hanem egyszerűen klónozni fogjuk ezt, de előtte megtöltjük kényelmes csomagokkal, amelyeket már megismertünk az alaprendszer használata közben. Ehhez fel kell csatolnunk a _ports_ fájlrendszert, amelyet előtte célszerű frissíteni: {code:title=Parancssor} [root@freebsd:/usr/src]$ zfs create bpool/jails/ports [root@freebsd:/usr/src]$ zfs set compression=gzip-9 bpool/jails/ports [root@freebsd:/usr/src]$ portsnap fetch extract -p /bpool/jails/ports/ Looking up portsnap.FreeBSD.org mirrors... 2 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Jan 14 14:59:46 CET 2009 to Wed Jan 14 16:09:42 CET 2009. [...] Building new INDEX files... done. [root@freebsd:/usr/src]$ zfs set mountpoint=/bpool/jails/v7.1.0/template/usr/ports/ bpool/jails/ports [root@freebsd:/usr/src]$ ln -s /tmp /bpool/jails/v7.1.0/template/usr/ports/distfiles [root@freebsd:/usr/src]$ ls -l /bpool/jails/v7.1.0/template/usr/ports/distfiles lrwxr-xr-x 1 root wheel 4 Jan 14 17:31 /bpool/jails/v7.1.0/template/usr/ports/distfiles -> /tmp {code} A _jail_ elindítása egyszerű dolog, a _jail_ parancsot tudjuk használni, s értelemszerűen a megfelelő paramétereket (_jail_ könyvtára, a _jail_ _host_ neve, a _jail_ IP címe illetve a használandó _shell_): {code:title=Parancssor} [root@freebsd:/usr/src]$ cd ~ [root@freebsd:~]$ mount -t devfs devfs /bpool/jails/v7.1.0/template/dev [root@freebsd:~]$ ifconfig bge1 alias 192.168.2.1 netmask 255.255.255.0 [root@freebsd:~]$ jail /bpool/jails/v7.1.0/template template 192.168.2.1 /bin/csh template# df -h Filesystem Size Used Avail Capacity Mounted on bpool/jails/v7.1.0/template 3.7G 94M 3.6G 3% / template# ps aux USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 22015 0.0 0.0 7056 1820 p0 SJ 7:04PM 0:00.02 /bin/csh root 22508 0.0 0.0 6788 820 p0 R+J 7:05PM 0:00.00 ps aux template# exit {code} {info} A _jail_ IP címének léteznie kell, a fenti esetben a _192.168.2.1_ a gép egyik létező interfészére felhúzott IP cím alias. {info} Automatikusan nem lesz hálózatuk a _jail_ben, ehhez egy NAT-ot kell beállítanunk, ezt (meglepően beszédes formában) a _/etc/ipnat.rules_ fájlban tudjuk megtenni (a _bge1_ az interfész neve, a _91.83.48.130_ pedig a gépünk külső -- publikus -- IP címe): {code:title=/etc/ipnat.rules} map bge1 192.168.2.0/24 -> 91.83.48.130/32 {code} Ezek után indítsuk el az _ipnat_ programot: {code:title=Parancssor} [root@freebsd:~]$ echo 'ipnat_enable="YES"' >>/etc/rc.conf [root@freebsd:~]$ /etc/rc.d/ipnat start Installing NAT rules. 0 entries flushed from NAT table 0 entries flushed from NAT list {code} Lépjünk bele a _jail_-be és próbaképpen telepítsünk fel egy _portupgrade_ csomagot: {code:title=Parancssor} template# cd /usr/ports/ports-mgmt/portupgrade template# make && make install && make clean [...] ===> Registering installation for portupgrade-2.4.6,2 ===> Cleaning for ruby-1.8.6.287,1 ===> Cleaning for ruby18-bdb-0.6.4 ===> Cleaning for db41-4.1.25_4 ===> Cleaning for portupgrade-2.4.6,2 template# df -h Filesystem Size Used Avail Capacity Mounted on bpool/jails/v7.1.0/template 3.7G 110M 3.6G 3% / {code}
|
... template# df -h Filesystem Size Used Avail Capacity Mounted on bpool/jails/v7.1.0/template 3.7G 584M 3.1G 16% / template# exit {code} Picit felhízott a _jail_, amit részben az okoz, hogy a fenti 15 csomagot telepítettünk fel (amelyek jó része függőség okán feltelepített további csomagokat, amelyek úgyis kellenek majd az egyedi csomagok fordításához), másrészt az okoz, hogy a /tmp alá linkeltük a /usr/ports/distfiles könyvtárat, érdemes pár dolgot kitakarítani, mielőtt klónozzuk a _jail_ fájlrendszerét: {code:title=Parancssor} [root@freebsd:~]$ rm -Rf /bpool/jails/v7.1.0/template/tmp/* [root@freebsd:~]$ rm /bpool/jails/v7.1.0/template/root/.history [root@freebsd:~]$ rm /bpool/jails/v7.1.0/template/root/.cshrc [root@freebsd:~]$ rm /bpool/jails/v7.1.0/template/root/.profile [root@freebsd:~]$ zfs list NAME USED AVAIL REFER MOUNTPOINT [...] bpool/jails/ports 156M 3.41G 156M /bpool/jails/v7.1.0/template/usr/ports/ bpool/jails/v7.1.0 254M 3.41G 19K /bpool/jails/v7.1.0 bpool/jails/v7.1.0/template 254M 3.41G 254M /bpool/jails/v7.1.0/template {code} Elkészítettünk egy közel 250MBájt helyet foglaló _jail_ mintát, amelyet klónozva kevés helyet foglaló - különféle szolgáltatásokat futtató - _jail_ rendszereket fogunk készíteni. ---- [Előző fejezet|FREEBSD:Jails] [Tartalomjegyzék|FREEBSD:FreeBSD in my server] [Következő fejezet|FREEBSD:Jail philosophy] ---- Auth Gábor [auth.gabor@javaforum.hu|mailto:auth.gabor@javaforum.hu] ----
|