Category Archives: ZFS

How tout casser chez tout le monde épisode 1

Afin de m'assurer que lorsque je joue avec mes ports, je casse bien tout, càd sur toutes les version supportées : 7.3, 8.0, 8.1 et celles à venir. Pour pouvoir bien vérifier que je mets le dawa aussi bien sur i386 que amd64, je me suis enfin décidé à poser une tinderbox.

La tinderbox officielle de freebsd ne me convient pas. Je la trouve démeusurément complexe pour ne pas dire tordu rapport à mes besoins, Elle a besoin d'une base de données (bon à la rigueur un petit postgresql ne me dérangerai pas plus que ça) mais pour la webui il faut aussi PHP et là faut pas déconner, je n'ai pas envie de me faire chier avec du PHP sur mes machines (comment ça je suis obtu ?).

Je suis donc parti pour me pondre la mienne. Je ferai ici l'état de l'avancée de ma tinderbox maison.

Episode 1 : principe et création des environnements.

Ma tinderbox sera moins automatisée que la tinderbox officielle, il faudra se faire à la main ses jails souches etc.

concepts :

  • une jail sur un ZFS dédié par version et par architecture
  • un snapshot de l'état neuf de la jail pour toujours repartir de quelque chose de propre
  • du nullfs pour l'arbo des ports
  • du nullfs pour les packages
  • un joli script maison pour lier le tout. (Pour le moment ce script est en ZSH, peut être un jour il deviendra un shell POSIX propre)

Que va faire le script :

  • démarrage de la jail
  • un etat des lieux de la jail avant construction (mais après installation des dépendances)
  • installation des dépendances depuis des packages si ils existent, sinon compilation depuis les ports (et construction du package comme ça au prochain tour le package sera là)
  • construction du ports avec possibilité de changer les options
  • installation/desinstallation/construction de packages, bref la tambouille habituelle pour s'assurer que le ports est tout joli comme il faut.
  • état des lieux après désinstallation du ports histoire de s'assurer que celui ci ne laisser rien traîner comme un gros cochon.

maintenant que les concepts sont présentés passons à l'étape préparation des jails.

ici les jails sont dans /home/jails/tinderboxes celui ci étant un FS ZFS : system/jails/tinderboxes pour être précis. pour créer ces jails nous allons avoir besoin de : lftp et de zsh.

Oui comme je suis une loutre, je ne vais pas me lancer dans une compilation des sources pour créer mes jails, je vais directement partir des sets officiels.

for arch (i386 amd64) {
	for version (7.3-RELEASE 8.0-RELEASE 8.1-RC2)  {
		zfs create system/jails/tinderboxes/${version%-*}-$arch
		cd /home/jails/tinderboxes/${version%-*}-$arch
		export DESTDIR=/home/jails/tinderboxes/${version%-*}-$arch
		/usr/local/bin/lftp -c "open ftp://ftp.free.org/pub/FreeBSD/releases/$arch/$version/; mirror base"
		/usr/local/bin/lftp -c "open ftp://ftp.free.org/pub/FreeBSD/releases/$arch/$version/; mirror src"
		cd base
		yes | ./install.sh
		cd ../src
		./install.sh all
	}
}

J'ai donc maintenant à ma disposition 6 FS contenant chacun des images minimales freebsd il faut maintenant finir la config et les mettre à jours avec freebsd-update

pour chacune des jails il faudra forcer des variables d'environnement pour qu'elles sachent quel est leur version. Pour cela il faut modifier le login.conf de chacune d'entre elles et remplacer :

:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\

par

:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES,UNAME_r=7.3-RELEASE,OSVERSION=703000,UNAME_v=FreeBSD 7.3-RELEASE:\

Il faut adapter le 7.3-RELEASE pour chacune des jails.

Pour déterminer la bonne valeure pour OSVERSION, un petit awk à la racine de la jail va pouvoir nous aider :

awk '/\#define __FreeBSD_version/ { print $3 }' usr/include/sys/param.h

Pour les jails i386 il faut rajouter dans la ligne du login.conf

UNAME_m=i386,UNAME_p=i386

Pour que tout ceci soit pris en compte, ne pas oublier :

cap_mkdb login.conf

Toujours pour les jails i386, il ne faut pas oublier de mettre dans etc/make.conf

MACHINE=i386
MACHINE_ARCH=i386

Avant de démarrer les jails on ajoute 2 lignes sur le etc/rc.conf de chacunes d'entres elles afin qu'elles ne démarrent ni sendmail ni cron dont nous n'avons pas besoin. Pour le moment on garde la syslog pour que la jail reste fonctionnelle.

sendmail_enable="NO"
cron_enable="NO"

sur la machine hôte on peut ajouter les lignes nécessaires au démarrage des jails dans le rc.conf :

jail_73i386_rootdir=/home/jails/tinderboxes/7.3-i386
jail_73i386_hostname="tinder73i386"
jail_73i386_ip="192.168.1.51"
jail_73i386_interface="nfe0"
jail_73i386_devfs_enable="YES"
jail_73i386_devfs_ruleset="devfsrules_jail"
jail_73i386_flags="-n tinder73i386"

faire de même pour chacune des jails.

une fois les jails démarrées, il faut effectuer les mises à jours, toujours aider de zsh :

for arch (i386 amd64) {
	for version (73 80 81) {
		jexec -U root tinder${version}${arch} /usr/sbin/freebsd-update fetch install
	}
}

Le -U root est important pour que login.conf soit pris en compte.

Un fois les mises à jours faites il est possible d'actualiser les fichiers login.conf afin de refléter les nouvelle version 7.3-RELEASE-p1 par exemple, mais ce n'est pas obligatoire.

maintenant il faut arrêter toutes les jails et faire un snapshot zfs qui nous servira de référence et permettera de repartir de bases propres :

zfs snapshot system/jails/tinderboxes/7.3-amd64@propre

recommencer l'opération pour toutes les jails.

Ceci est la fin du premier épisode (je sais ça a un air de déjà vue avec un post précédent, mais la suite sera différente :))

Florent Thoumie » FreeBSD 2010-06-25 09:01:01

I had a nice surprise reading my Facebook timeline this morning: Matt Olander announcing that Warner Losh committed the PC-BSD installer backend to the FreeBSD SVN repository.

I didn’t know anything about it before BSDCan this year, so here’s a quick summary of what I remember (and is of interest, to me at least):

  • Can install either PC-BSD or vanilla FreeBSD

  • Supports ZFS and GELI partitions

  • The backend is all shell and quite easy to read/modify to suit your needs

  • There are at least two frontends: a QT one (default for PC-BSD) and a dialog/curses (not quite sure, fairly recent in any case) one that looks like it would be a good drop-in replacement for sysinstall.

  • It supports a configuration file that isn’t dissimilar to the one you can use with sysinstall at the moment: the frontend actually only generates a config file and the backend does the job without intervention.

So really, how is that for morning awesomeness?

Help test ZFS v15

The most recently ported ZFS version in HEAD and 8-stable (which includes 8.1) is 14, and now a call for testers was issued for v15. This new version brings in user and group quotas and there is a hint toward importing the latest ZFS version.

A good thing about this patch / CFT is that ready-made minimal ISO images are provided for potential testers, which can be used to install new systems on real or virtual machines. Very convenient!

Read more...

Help test ZFS v15

The most recently ported ZFS version in HEAD and 8-stable (which includes 8.1) is 14, and now a call for testers was issued for v15. This new version brings in user and group quotas and there is a hint toward importing the latest ZFS version.

A good thing about this patch / CFT is that ready-made minimal ISO images are provided for potential testers, which can be used to install new systems on real or virtual machines. Very convenient!

Read more...

Nicer things in life – VMWare 4, ZFS, virtual hot-plugs

Sometimes, when things go right, they are really beautiful to watch. Like adding a virtual (SCSI) drive to a running virtual machine freshly copied from ESXi 3.5 to vSphere 4, seeing that drive simply appear in the guest system in a hot-plug fashion, creating a ZFS pool on it and watching iostat as data is migrated from the old drive which has gotten to be too small (and uses UFS), to the new one on which the magic of ZFS will allow the file system to grow indefinitely (as the damn application is greedy in a stupid way), and seeing that "pausing" problems ZFS caused on ESXi 3.5 really are solved in 4.

Read more...

VMWare + FreeBSD + ZFS soft-raid with SATA drives – performance

VMWare ESXi is a great free-as-in-beer product bringing professional virtualization within everyone's grasp. Contrasted to VMWare Server 2, I'm yet to find something really serious in ESXi, to rant about, but the lack of software RAID support comes very near. For some strange reason ESXi doesn't support software RAID configurations (officially it's all about "reliability" but I suspect they're either not interested in building management products for sw RAID into the various management "consoles", because sw RAID appears to be at the low end of the market or it's something to do with the ESX's dubious interaction with the GPL).

Read more...