nenhum serviço correspondente encontrado
Instalando o ZFS na Raiz de um VPS em Execução
Este guia explica como instalar o ZFS como o sistema de arquivos raiz de um VPS que contém uma instalação Linux existente sem causar perda de dados. O VPS terá uma pequena partição de inicialização EXT4 para o GRUB2 com o kernel e initrd, e um grande pool ZFS montado na raiz com compressão habilitada. A maioria dos comandos será emitida a partir de uma imagem de live CD e será mostrada uma solução alternativa se o VPS não suportar a montagem de imagens ISO.
- Índice:
- 1. Faça backup dos dados
- 2. Inicialize uma imagem de live OS
- 3. Instale o ZFS no ambiente de live OS
- 4. Particione o disco do VPS
- 5. Instale o ZFS no disco do VPS
- 6. Restaure o backup para o novo sistema de arquivos raiz ZFS
- 7. Instalar o GRUB2
- 8. Inicializar no pool raiz ZFS
- Passo 1: Fazer backup dos dados
-
Se você tiver um segundo VPS ou um computador doméstico com espaço suficiente para armazenar os dados de backup, a partir desse computador, execute:
onde target é o nome do host do VPS que está sendo convertido. Isso copiará todo o sistema de arquivos raiz via SSH para a máquina de backup, e restaurar esse backup no VPS de destino posteriormente será direto. Se você precisar compactar o backup por falta de espaço, pode, alternativamente, criar um arquivo TGZ compactado:
# rsync -aqrxz root@target:/ backup.d
No entanto, ao restaurar um sistema de arquivos raiz a partir de um arquivo TAR, será necessário recriar todos os links simbólicos cujos destinos tenham nomes de caminho absolutos, porque o TAR converte seus destinos em nomes de caminho relativos, então usar o rsync é a alternativa mais simples. Como restaurar corretamente o arquivo TAR será mostrado mais adiante.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- Passo 2: Inicialize uma imagem de sistema operacional live
-
A conversão para ZFS será feita a partir de um sistema operacional live CD. Dependendo da capacidade do painel de controle do seu VPS, ele pode já ter uma imagem de sistema operacional live pronta para inicialização. Alternativamente, você pode baixar um ISO live do Debian do espelho do Debian e enviá-lo para o painel de controle do seu VPS, então inicializar o ISO a partir daí; isso funcionará bem mesmo que seu VPS execute uma distribuição diferente. Tenha cuidado para usar uma imagem ISO de sistema operacional live, não uma ISO de instalação, porque as imagens de instalação não possuem apt e não conseguem instalar o software necessário no ambiente live. Se o painel de controle do seu VPS suportar a inicialização a partir de uma imagem ISO fornecida pelo usuário, pule para o Passo 3, caso contrário, você ainda pode inicializar o ISO baixado convertendo uma partição de swap, se existir, em EXT4 e armazenando o ISO nesse espaço de armazenamento recuperado, então o GRUB2 pode ser configurado para inicializar a partir desse ISO. Isso é feito da seguinte forma:
# fdisk --list /dev/vda
Disco /dev/vda: 35 GiB, 37580963840 bytes, 73400320 setores
Unidades: setores de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: dos
Identificador do disco: 0x495b5ce4
Dispositivo Inicialização Início Fim Setores Tamanho Id Tipo
/dev/vda1 * 2048 69203583 69201536 33G 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
# swapoff /dev/vda2 # desabilitar partição de swap
# mkfs.ext4 /dev/vda2 # criar sistema de arquivos EXT4
# mount /dev/vda2 /mnt # montar o espaço recuperado
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
#!/bin/sh
exec tail -n +3 $0
# Este arquivo fornece uma maneira fácil de adicionar entradas personalizadas ao menu. Basta digitar as
# entradas de menu que você deseja adicionar após este comentário. Tenha cuidado para não alterar
# a linha 'exec tail' acima.
menuentry "Live ISO" {
set ISOFile="/images/image_file.iso"
loopback loop (hd0,2)$ISOFile
linux (loop)/live/vmlinuz boot=live findiso=$ISOFile
initrd (loop)/live/initrd.img
}
update-grub2
- Passo 3: Instale o ZFS no ambiente do sistema operacional live
-
Inicialize a imagem do sistema operacional live e acesse seu terminal. Em seguida, instale os pacotes do ZFS no ambiente do sistema operacional live:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- Passo 4: Particione o disco do VPS
-
Existem dois cenários alternativos para particionar o disco do VPS:
- Se você armazenou a ISO live em /dev/vda2, você não deve alterar essa partição agora, pois o sistema live depende dela, e nenhuma particionamento será feito no disco do VPS. O ZFS será formatado na partição existente /dev/vda2, e /dev/vda1 permanecerá como está e posteriormente será reutilizado como sua partição de boot permanente para armazenar o kernel e o initrd. Pule para Passo 5.
-
Se o seu ambiente ao vivo não depender de um arquivo ISO armazenado no disco do VPS, reparticione o disco criando uma pequena partição de inicialização para o GRUB2 e uma partição grande para a raiz do ZFS que se estenda por todo o espaço restante do disco. Execute o fdisk para criar as duas seguintes partições:
# fdisk /dev/vda
Command (m for help): p
Disk /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x495b5ce4
Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 69203583 69201536 33G bf Solaris
/dev/vda2 * 69203584 73397887 4194304 2G 83 Linux
# mkfs.ext4 /dev/vda2
- Passo 5: Instale o ZFS no disco do VPS
-
Formate /dev/vda1 como um volume ZFS:
# zpool create -o ashift=12 \
-O acltype=posixacl -O canmount=on -O compression=zstd \
-O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \
-O mountpoint=/ -R /mnt \
rpool /dev/vda1
- Passo 6: Restaurar o backup para o novo sistema de arquivos ZFS raiz
-
Instale o servidor OpenSSH no ambiente live para receber os dados de backup do VPS de backup:
# apt install openssh-server
# passwd
# service restart ssh
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## from the backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
## from the chroot environment
while read -r row; do
src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
tgt=$(echo "$row" | grep -Po '(?<= -> ).+')
echo "linking: $src -> $tgt"
ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
- Passo 7: Instale o GRUB2
-
Se você estiver dentro do chroot, saia dele e retorne ao ambiente live. Em seguida, vincule os sistemas de arquivos virtuais a /mnt e monte a partição de boot:
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount /dev/vda2 /mnt/boot
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
# apt install grub-pc
# update-initramfs -u -k all
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# grub-install /dev/vda
- Passo 8: Inicialize no pool ZFS raiz
-
O sistema está pronto, totalmente restaurado a partir do backup, e pode ser inicializado. Saia do chroot e desmonte todos os sistemas de arquivos virtuais, então exporte o pool ZFS raiz:
# exit # saia do chroot do rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
Leia mais artigos