Com base em um sistema Debian Testing já instalado em um Virtualbox faço uma abordagem simples sobre estes dois excelentes sistemas de arquivos.
Para ficar divertido adicionei mais 4 discos de 1GB usando o Vbox.
# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00001c8c
Dispositivo Boot Start End Blocks Id System
/dev/sda1 * 1 303 2433816 83 Linux
/dev/sda2 304 1044 5952082+ 5 Estendida
/dev/sda5 304 344 329301 82 Linux swap / Solaris
/dev/sda6 345 1044 5622718+ 83 Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Dispositivo Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Dispositivo Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 83 Linux
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Dispositivo Boot Start End Blocks Id System
/dev/sdd1 1 130 1044193+ 83 Linux
Disk /dev/sde: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Dispositivo Boot Start End Blocks Id System
/dev/sde1 1 130 1044193+ 83 Linux
com base nisso, vamos ao que interessa.
Atualizando a base APT:
# echo "deb http://http.us.debian.org/debian testing main contrib non-free" >> /etc/apt/sources.list && apt-get update
Atualizando o Kernel:
# apt-get install linux-image-2.6.32-3-686 linux-headers-2.6.32-3-686 -y && reboot
ZFS-Fuse [Zeta Byte File System]
Criei um diretório /home/zfs para este exemplo.
# apt-get install zfs-fuse
Opa, o zfs sobe automáticamente:
# ps -aux | grep fuse
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root 1487 0.1 1.8 1165316 7160 ? Ssl 11:19 0:04 /sbin/zfs-fuse
caso não suba:
# zfs-fuse & >> /dev/null
Indo direto ao que interessa.
Resolvi disponibilizar 3 discos para ZFS, bom .. poderia ser um disco solitário, mas testar crash tem mais graça.
# zpool create ZFS raidz /dev/sdb1 /dev/sdc1 /dev/sdd1
# zpool status
pool: ZFS
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
ZFS ONLINE 0 0 0
raidz1 ONLINE 0 0 0
sdb1 ONLINE 0 0 0
sdc1 ONLINE 0 0 0
sdd1 ONLINE 0 0 0
errors: No known data errors
Com o status conseguimos enxergar informações sobre o pool.
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
ZFS 2,97G 43,6M 2,93G 1% ONLINE -
Listagem de pools é com list (dã).
Caso necessite alterar o caminho do pool.
# zfs set mountpoint=/home/ZFS ZFS
E seu pool troca de caminho...
# zfs create ZFS/joaocep
E eu crio um novo volume "joaocep" dentro de "ZFS"
é interessante possuir áreas dentro dos Pools.
# zfs set compression=on ZFS/joaocep
E seu pool ganha compactação
# zfs set shareiscsi=on ZFS/joaocep
E seu pool NÃO ganha um compartilhamento iscsi simples, isso mesmo... no linux a bagaça ainda não foi implementada --- mas no Opensolaris basta um pkg install SUNWisgt.
Ok, vamos aos snapshots, a parte mais interessante de um sistema inteligente.
Uma cosisa legal - sintaxe
# zfs snapshot NOMEDOPOOL@NOME-DO-BACKUP
# zfs snapshot ZFS@backup-raiz1
# zfs snapshot ZFS/joaocep@backup-subdir1
Acima dois exemplos de formas de backup, de pastas e sub-pastas.
Tá, e o restore?
# zfs rollback ZFS@backup-raiz1
feito, ele retorna o backup de ZFS.
Para verificar os seus volumes, use o comando list (dã)
# zfs list
# zfs list -t snapshot
# zfs list -t all
Clonando subvolumes:
# zfs clone ZFS/joaocep@backup-subdir1 ZFS/joaomancy
Note, antes de criar um "clone" faça um snapshot - o clone só será feito usando um snapshot anterior.
Infelizmente nem todas as funções foram portadas para zfs-fuse -- a grosso modo, no Linux.
BTRFS [B-tree File System]
O Btrfs possui uma grande vantagem, ele converte filesystem ext3 em btrfs usando uma lógica simples ( https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3 )
Criei um diretório /home/brtfs para este exemplo.
Instalando e Convertendo:
# apt-get install btrfs-tools -y && fsck.ext3 -f -y /dev/sde1 && btrfs-convert /dev/sde1
Montando a Partição
# mount -t btrfs /dev/sde1 /home/btrfs
Onboot
# echo "/dev/sde1 /home/btrfs btrfs defaults 0 0" >> /etc/fstab
Vamos a parte boa!
Uma dica importante, lembra dos POOL do ZFS, então. um snapshot só poderá ser montando dentro do próprio POOL ( Slice no BSD, Volume Novel, Partição Extendinda com Volume Lógico... como seu cérebro entender )
Criando um Subvolume ( -S cria, -D Destroi):
# btrfsctl -S arquivos /home/brtfs/
Criando um Snapshot do subvol arquivos:
# btrfsctl -s bkarquivos /home/brtfs/arquivos
Voltando um "backup" do btrfs - rollback:
Esta tarefa é simples, ele guarda a imagem na "raiz" do pool no caso um diretório /home/btrfs/bkarquivos - copie o arquivo e pronto.
Verificando o seu sistema de arquivos:
# btrfs-show
Label: none uuid: 7c36bf25-6c45-48bf-adaf-73f9dab93b42
Total devices 1 FS bytes used 93.11MB
devid 1 size 1019.72MB used 1019.72MB path /dev/sde1
Btrfs Btrfs v0.19
Se quiser voltar para ext3 ( rollback de filesystem )
# umount /home/btrfs
# btrfs-convert -r /dev/sde1
Não esqueça de trocar o btrfs da fstab e montar com ext3
Criação de Raid usando btrfs:
https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices
Pensou que eu fosse reinventar a roda é...
Minhas Conclusões:
Sinceramente prefiro o ZFS, há muito mais opções e sua sintaxe é simples, btrfs não esconde os snapshots o que atrapalha caso "metidos a admin" queiram visualizar os documentos contidos em seus sistemas.
Há implementações boas no btrfs que superam o zfs-fuse, como o resize de volumes (LVM faz isso) e "QUOTAS" de disco.
ZFS para Opensolaris possui tudo isso com Plus -- Solaris Zones dentro de um subvol é violento , ou shareiscsi=on .
Claro, alguém vai querer Benchmark veja nos links abaixo:
http://oss.oracle.com/projects/btrfs/dist/documentation/benchmark.html
http://www.linux-mag.com/id/7308
Independente de "Velocidade" para minha pessoa ZFS é muito melhor, mas cada caso é um caso e eu penso sinceramente testar btrfs em um Zimbra -- por exemplo.
Grande abraço a todos.
Referências:
https://btrfs.wiki.kernel.org
http://zfs-on-fuse.blogspot.com/
OBS: Esta abordagem não credencia você a sair destruindo o seu disco para usar ZFS ou Btrfs.
Assinar:
Postar comentários (Atom)
Olá João Luis. Talvez você possa me ajudar. Recentemente instalei numa VM o aptosid com a / em btrfs. Contudo estou com algumas dúvidas de como proceder a cópia e a restauração. Além disso tenho uma dúvida que pode ser bem estúpida. Por exemplo se eu realizar uma snapshot da / ou da /home/ se por acaso eu deletasse todos os usuários da /home/ voltando o snapshot anterior tudo voltaria ao normal? as pastas dos usuários dentro do /home/ ?
ResponderExcluirOi Hilton,
ResponderExcluirA Cópia que você menciona seria o Snapshot
# btrfsctl -s backup-barra-home /home/
O brtfs criará uma "pasta" com esse nome, que é uma "imagem" dos seus arquivos, basta acessar essa pasta e copiá-los.
Se você fizer o backup antes de usar um userdel e após restaurar estes arquivos, provalvemente ele perderá as permissões dos usuários, carregando somente as "id sem dono".
Não sei se entendeste, mas na dúvida retorne a pergunta.