Jails and filesystems

Rob rob at deathbeforedecaf.net
Sat Jun 11 11:35:41 GMT 2005


Fellow BSDers,

I'm trying to figure out the best layout for multiple jails.

I'd like to share binaries across jails - patches and packages only 
need to be installed once, and it saves a lot of space. So these 
directories would be shared and read-only:
	/bin
	/sbin
	/usr (except /usr/local/etc)
	/var/db/pkg

And these would be private:
	/etc
	/usr/local/etc
	/var (except /var/db/pkg)

The current plan is to move all the shared stuff into /shared, and 
mount it read-only into each jail with nullfs. Then /usr/local/etc is 
moved into /private. This is how it looks inside the jail:

> root at tak /tmp/3569/root # env - /usr/sbin/chroot `pwd` /usr/bin/login 
> -f root
> Last login: Sat Jun 11 09:16:11 on tty??
> Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
>         The Regents of the University of California.  All rights 
> reserved.
>
> root at tak ~ # cd /
> root at tak / # ll
> total 27
> drwxr-xr-x  13 root  wheel   512 Jun  9 14:38 .
> drwxr-xr-x  13 root  wheel   512 Jun  9 14:38 ..
> -rw-r--r--   1 root  wheel   802 Jan 21 15:46 .cshrc
> -rw-r--r--   1 root  wheel   251 Jan 21 15:46 .profile
> -r--r--r--   1 root  wheel  6117 Jan 21 15:46 COPYRIGHT
> lrwxr-xr-x   1 root  wheel    11 Jun  9 14:38 bin -> /shared/bin
> drwxr-xr-x   3 root  wheel   512 Jan 21 15:46 boot
> drwxr-xr-x   3 root  wheel  1536 Jun  9 14:01 dev
> drwxr-xr-x  16 root  wheel  2048 Jun  9 14:27 etc
> -rw-r--r--   1 root  wheel     0 Jun  9 14:01 kernel
> drwxr-xr-x   2 root  wheel   512 Jun  9 14:37 mnt
> drwxr-xr-x   2 root  wheel  4608 Jun  9 14:01 modules
> drwxr-xr-x   3 root  wheel   512 Jun  9 14:37 private
> dr-xr-xr-x   2 root  wheel   512 Jan 21 15:45 proc
> drwxr-xr-x   2 root  wheel   512 Jun 11 09:12 root
> lrwxr-xr-x   1 root  wheel    12 Jun  9 14:38 sbin -> /shared/sbin
> drwxr-xr-x   6 root  wheel   512 Jun  9 14:47 shared
> drwxrwxrwt   2 root  wheel   512 Jan 21 15:45 tmp
> lrwxr-xr-x   1 root  wheel    11 Jun  9 14:38 usr -> /shared/usr
> drwxr-xr-x  20 root  wheel   512 Jun  9 14:01 var
> root at tak / # ll usr/local var/db
> usr/local:
> total 2
> drwxr-xr-x   2 root  wheel  512 Jun  9 14:38 .
> drwxr-xr-x  14 root  wheel  512 Jun  9 14:26 ..
> lrwxr-xr-x   1 root  wheel   12 Jun  9 14:38 etc -> /private/etc
>
> var/db:
> total 3
> drwxr-xr-x   3 root    wheel  512 Jun  9 14:47 .
> drwxr-xr-x  20 root    wheel  512 Jun  9 14:01 ..
> drwx------   2 root    wheel  512 Jan 21 15:45 ipf
> -rw-r--r--   1 nobody  wheel    0 Jan 21 15:46 locate.database
> -rw-r--r--   1 root    wheel    0 Jun  9 14:01 mountdtab
> lrwxr-xr-x   1 root    wheel   11 Jun  9 14:47 pkg -> /shared/pkg
> root at tak / # ll shared private
> private:
> total 3
> drwxr-xr-x   3 root  wheel  512 Jun  9 14:37 .
> drwxr-xr-x  13 root  wheel  512 Jun  9 14:38 ..
> drwxr-xr-x   2 root  wheel  512 Jun  9 14:27 etc
>
> shared:
> total 7
> drwxr-xr-x   6 root  wheel   512 Jun  9 14:47 .
> drwxr-xr-x  13 root  wheel   512 Jun  9 14:38 ..
> drwxr-xr-x   2 root  wheel  1024 Jun  9 14:26 bin
> drwxr-xr-x   2 root  wheel   512 Jun  9 14:47 pkg
> drwxr-xr-x   2 root  wheel  2048 Jun  9 14:26 sbin
> drwxr-xr-x  14 root  wheel   512 Jun  9 14:26 usr

I think this will work, but it seems kind of messy. Am I missing a 
simpler way?

Thanks
Rob.



More information about the freebsd-questions mailing list