Post em Destaque

Analisando o tráfego web com awstats no FreeBSD

Uma vez que seu servidor web está funcionando, é importante analisar os logs para ver o que tipo de pesquisas os usuários estão acessando, quanto tempo eles estão conectados, e quais links ou páginas que eles estão entrando e saindo. Uma das mais populares ferramentas de código aberto para essa...

Leia mais...

File System ZFS na Raiz com FreeBSD 9

Postado por gondim | Categoria FreeBSD | Dia 12-04-2012

Tags:, ,

21

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!

Comments (21)

Ola.
Bom dia.

Parabéns pela iniciativa e pelo Blog tbm, ficou show de bola.

Achei um erro na execução deste How-to.
Ao descompactar as bases vc esta ultilizando -unlink !
do (cat $file | tar –unlink -xpJf – -C ${DESTDIR:-/}); done

o correto seria –unlink.
do (cat $file | tar -–unlink -xpJf – -C ${DESTDIR:-/}); done

Do mais tudo certo.

Grande abraço.

Olá Flávio.. O texto está correto…porém o WordPress formata dois hifens seguidos (“–”) como um traço (“–”). Isso pode confundir o leitor … Bastou apenas editar o array “static_characters”, contido no arquivo wp-includes/formatting.php e tudo voltou ao normal…Obrigado pela dica ae…

Pois é depois que vi que até no meu comentário a formatação ficou igual a do how-to.
Mas agora esta ok.

Valeu.
Abraço.

Oi Flavio, na verdade tava certo foi a formatação do blog rsrsrsr mas já acertamos. :)

Ola Gondim, bom dia !
tudo certo.

Depois de instalar o FreeBSD 9 seguindo o how-to acima, fui atualizar o mesmo, processos normais:
make buildworld
make buildkernel, make installkernel, mergermaster etc.

Na hora do reboot o bicho pegou rssss a maquina não sobe.
Para no erro:
“mounting from zfs:zroot failed with error 2″

To dando uma googleada e to vendo que ja tem mais gente com o mesmo problema o erro é exatamente este (http://people.apache.org/~danielsh/infra/loki-20120215-mountfrom.png)

Já passou por isso ?

Abraço.

Olá Flávio,

Provavelmente no mergemaster você deve ter sobrescrito os arquivos /boot/loader.conf e/ou /etc/rc.conf. Faz um boot com o DVD/CD de instalação entra em sigle mode e checa conforme abaixo:

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

Detalhe que agora não tem mais o /mnt antecedendo os diretórios. 99,9999% de ser esse o problema.
Eu costumo sempre fazer um backup do /etc antes do mergemaster e uso assim:

mergemaster -i -F

Grande abraço

Pior que não é não.

O loader.conf esta ok, rc.conf tbm, fstab ok.

Eu tbm faço o backup do /etc antes de rodar o mergemaster e depois volto os aquivos mais criticos ex: rc.conf, fstab, etc.

chequei aqui e esta tudo certo.

Que raios sera que tá pegando heim.

Quando dá o erro lá você coloca: ? qual lista aparece de devices?

Aparece assim:

mountroot> ?
List of GEOM managed disk devices:

mountroot>

não é de Deus não hauahuahaa.

Seu /etc/fstab está vazio?

Sim Vasio Vasio. :(

Estranho, eu já atualizei vários servidores e não tive problema algum com isso. Recentemente até atualizei um stable. Ainda acho que teve algum processo errado. :)

Pois é to pensando seriamente em reinstalar, pra ver.

Mais tarde vou fazer uma nova instalação em uma VM aqui e testar atualizar para stable. Aí te digo.

Bom dia Gondim tudo certo por ai ?

Bom por aqui agora esta tudo 1000 maravilhas. huhuahaua
Descobri que o problema era com kernel.
Estava acostumado com o FreeBSD 8 e no 9 entrou alguns itens a mais. (ATA_CAM dentre outros )
Ai quando fui dar aquela enjugada no kernel tirei coisas a mais.

Do mais esta indo tudo certo.

Abraço e obrigado pela atenção.

Obs: Vou subir umas Jails e quanto tiver tudo certo mando um how-to pra vc postar.

Βuеnaѕ,
Seguramentе es la unicа ocaѕіon que he entrаdo еl blοg y debo comentar que me eѕta gustandο y сгеο
quе me ѵerаѕ mas а mеnuԁo pог tu blog.

Un ѕaludo!

Good day! Do you use Twitter? I’d like to follow you if that would be okay. I’m undoubtedly enjoying your
blog and look forward to new updates.

Check out my site :: movers Boulder

WOW just what I was looking for. Came here by searching for San Francisco best moving companies

My weblog Sherrie

This is really interesting, You are a very skilled blogger.
I’ve joined your rss feed and look forward to seeking more of your wonderful post. Also, I’ve shared your site in my
social networks!

Also visit my homepage: furniture moving companies San Francisco

Awesome issues here. I am very satisfied to peer your article.
Thank you so much and I’m looking ahead to contact you. Will you please drop me a mail?

Visit my site; San Francisco moving companies

At this time it looks like WordPress is the preferred blogging platform available right now.
(from what I’ve read) Is that what you are using on your blog?

my page – Claude

Write a comment