Post em Destaque

Instalação AMP

Sei que para muitos parece simples, mas para os que estão chegando também temos que dar atenção. Neste guia será apresentada uma instalação básica de Apache, MySQL e PHP no FreeBSD MYSQL Acessar o  ports do MySQL cd /usr/ports/databases/mysql50-server 2. Compilar e instalar o port make &&...

Leia mais...

File System ZFS na Raiz com FreeBSD 9

Posted by gondim | Posted in FreeBSD | Posted on 12-04-2012

Tags:, ,

31

ZFS é um Sistema de Arquivos brilhante! Extremamente seguro, rápido e com recursos que outros filesystems gostariam de ter. O ZFS vem no FreeBSD 9.0 com uma nova atualização e novos recursos. Infelizmente no instalador do FreeBSD 9.0 ainda não temos a opção de instalação do ZFS, todavia isso pode ser contornado usando ou o PC-BSD 9.0 ou fazendo o processo manualmente. O que mostrarei aqui neste post é uma configuração feita pelo George Kontostanos em seu post original ZFS Root.

A configuração à seguir usa um esquema com GPT e swap em ZFS:

1º Para iniciar nossa instalação precisaremos ter em mãos o DVD de instalação do FreeBSD. Precisa ser o DVD que pode ser baixado daqui:

FreeBSD 9.0 64 bits
FreeBSD 9.0 32 bits

2º Começaremos então a nossa configuração. Nesse post teremos a configuração para 1 disco apenas e a opção com 2 discos, nesse caso para fazer um mirroring.

a) Criando a partição GPT e adicionando o código de inicialização do ZFS no boot no 1º disco apenas:

gpart create -s gpt ada0
gpart add -b 34 -s 94 -t freebsd-boot ada0
gpart add -t freebsd-zfs -l disk0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

 

b) Criando a partição GPT e adicionando o código de inicialização do ZFS no boot no 2º disco para mirroring:

gpart create -s gpt ada1
gpart add -b 34 -s 94 -t freebsd-boot ada1
gpart add -t freebsd-zfs -l disk1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

 

3º Vamos criar o pool.

a) Para um disco apenas:

gnop create -S 4096 /dev/gpt/disk0
zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot /dev/gpt/disk0.nop
zpool export zroot
gnop destroy /dev/gpt/disk0.nop
zpool import -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot

 

b) Para um segundo disco no caso de mirroring:

gnop create -S 4096 /dev/gpt/disk0
gnop create -S 4096 /dev/gpt/disk1
zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot mirror /dev/gpt/disk0.nop /dev/gpt/disk1.nop
zpool export zroot
gnop destroy /dev/gpt/disk0.nop
gnop destroy /dev/gpt/disk1.nop
zpool import -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot

 

4º Vamos setar aqui o bootfs e checksum do nosso ZFS.

zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot

 

5º Agora vamos criar nossos filesystems. Aqui vale também a imaginação e a criatividade. No meu caso fiz algumas adições mas estou mantendo a configuração original. Essa é uma das grandes vantagens do ZFS, a flexibilidade, como podem notar. Reparem que podemos comprimir um filesystem com ‘compression’, também podemos dizer se nesse filesystem podemos executar binários com ‘exec’ e ainda se vai desligar o suid com ‘setuid’. O ‘quota’, embora não apareça nesse nosso exemplo, também é muito útil para limitações de espaço.

zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

 

6º Criaremos nosso swap de 4Gb mas faça de acordo com a sua necessidade.

zfs create -V 4G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap

 

7º Abaixo a criação do link simbólico do home e acerto nas permissões do /tmp e /var/tmp.

chmod 1777 /mnt/tmp
cd /mnt ; ln -s usr/home home
chmod 1777 /mnt/var/tmp

 

8º Chegamos na instalação propriamente dita do nosso FreeBSD 9.0 na sua forma mais crua.

sh
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
do (cat $file | tar –unlink -xpJf – -C ${DESTDIR:-/}); done

 

9º Essa parte agora é IMPORTANTÍSSIMA. Não esqueça de fazer ou sofrerá as conseqüências. rsrsrs

cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache

 

10º Aqui vamos habilitar o ZFS no boot, dizer quem vai ser nosso raiz do sistema e criar um fstab vazio. Sim vazio porque o ZFS não usa o fstab mas ele precisa existir para que não dê erro no boot do sistema.

echo ‘zfs_enable=”YES”‘ >> /mnt/etc/rc.conf
echo ‘zfs_load=”YES”‘ >> /mnt/boot/loader.conf
echo ‘vfs.root.mountfrom=”zfs:zroot”‘ >> /mnt/boot/loader.conf
touch /mnt/etc/fstab

 

Reinicie agora e assim que carregar ajuste o time zone info com tzsetup, coloque uma senha para o root com o passwd e adicione um usuário seu de acesso usando o adduser. Feito isso… be happy!

Share Button