Child pages
  • Jailed template
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

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:

Parancssor
[root@freebsd:~]$ zfs create dpool/jails
[root@freebsd:~]$ zfs set mountpoint=/jails dpool/jails
[root@freebsd:~]$ zfs create dpool/jails/template
[root@freebsd:~]$ df -h
Filesystem                   Size    Used   Avail Capacity  Mounted on
[...]
dpool/jails                   14G    128K     14G     0%    /jails
dpool/jails/template          14G    128K     14G     0%    /jails/template

Mint látni, létrehoztunk egy template jail könyvtárat, mégpedig a jails fájlrendszer alá, ide a klasszikus módszerekkel beleteszünk egy alaprendszert:

Parancssor
[root@freebsd:~]$ cd /usr/src
[root@freebsd:/usr/src]$ make world DESTDIR=/jails/template/
--------------------------------------------------------------
>>> make world started on Sat Aug  9 00:19:06 CEST 2008
--------------------------------------------------------------
[...]
--------------------------------------------------------------
>>> make world completed on Sat Aug  9 01:44:34 CEST 2008
                   (started Sat Aug  9 00:19:06 CEST 2008)
--------------------------------------------------------------
[root@freebsd:/usr/src]$ make distribution DESTDIR=/jails/template/
[...]
[root@freebsd:/usr/src]$ df -h
Filesystem                   Size    Used   Avail Capacity  Mounted on
[...]
dpool/jails                   14G      0B     14G     0%    /jails
dpool/jails/template          14G    174M     14G     1%    /jails/template
[root@freebsd:/usr/src]$ cp /etc/resolv.conf /jails/template/etc/
[root@freebsd:/usr/src]$ mkdir /jails/template/usr/ports
[root@freebsd:/usr/src]$ cp /etc/make.conf /jails/template/etc/
[root@freebsd:/usr/src]$ touch /jails/template/etc/fstab
[root@freebsd:/usr/src]$ cp /etc/profile /jails/template/etc/
[root@freebsd:/usr/src]$ cp /etc/login.conf /jails/template/etc/
[root@freebsd:/usr/src]$ echo "keymap=\"hu.iso2.101keys\"
>network_interfaces=\"\"
>rpcbind_enable=\"NO\"" >/jails/template/etc/rc.conf

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, illetve ennek egy klónját:

Parancssor
[root@freebsd:/usr/src]$ zfs create dpool/jails/ports
[root@freebsd:/usr/src]$ zfs create dpool/jails/ports/template
[root@freebsd:/usr/src]$ zfs set compression=gzip-9 dpool/jails/ports/template
[root@freebsd:/usr/src]$ portsnap extract -p /jails/ports/template
/jails/ports/template/.cvsignore
/jails/ports/template/CHANGES
[...]
/jails/ports/template/x11/yelp/
/jails/ports/template/x11/zenity/
Building new INDEX files... done.
[root@freebsd:/usr/src]$ zfs set mountpoint=/jails/template/usr/ports dpool/jails/ports/template

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

Parancssor
[root@freebsd:/usr/src]$ jail /jails/template/ template 192.168.195.128 /bin/csh
template# df -h
Filesystem              Size    Used   Avail Capacity  Mounted on
dpool/jails/template     14G    174M     14G     1%    /
template# ps aux
USER   PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root 25760  0,0  0,4  4504  1916  p0  SJ   11:42de   0:00,10 /bin/csh
root 25793  0,0  0,2  3244   772  p0  R+J  11:44de   0:00,01 ps aux

Láthatjuk, hogy csak magunk vagyunk, próbaképpen telepítsünk fel egy portupgrade csomagot:

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.111_4,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
dpool/jails/template     14G    202M     14G     1%    /

Tegyünk fel néhány fontosabb csomagot, ezek nem fognak túl sok helyet elfoglalni, hiszen ezeket is klónozzuk majd:

Parancssor
template# portinstall -i mc bash
template# portinstall -i mc bash
--->  Session started at: Sat, 09 Aug 2008 12:55:59 +0000
Install 'misc/mc'? [yes]
[Gathering depends for misc/mc ............................... done]
Install 'shells/bash'? [yes]
[Gathering depends for shells/bash . done]
[...]
--->  Packages processed: 15 done, 0 ignored, 0 skipped and 0 failed
--->  Session ended at: Sat, 09 Aug 2008 13:39:02 +0000 (consumed 00:43:03)
template# df -h
Filesystem              Size    Used   Avail Capacity  Mounted on
dpool/jails/template     14G    412M     13G     3%    /
template# exit

Picit felhízott a jail, amit részben az okoz, hogy legalább 15 csomagot telepítettünk fel (amelyek jó része úgyis kell 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:

Parancssor
[root@freebsd:~]$ rm -Rf /jails/template/tmp/*
[root@freebsd:~]$ rm /jails/template/root/.history
[root@freebsd:~]$ rm /jails/template/.cshrc
[root@freebsd:~]$ rm /jails/template/.
[root@freebsd:~]$ rm /jails/template/.profile

Elkészítettünk egy közel 400MBá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 Tartalomjegyzék Következő fejezet


Auth Gábor auth.gabor@javaforum.hu


      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels