um mecanismo de busca independente para VPSs classificados por preço

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:
# rsync -aqrxz root@target:/ backup.d
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:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
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.
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
Este VPS possui uma partição de swap de 2GB em /dev/vda2, que é grande o suficiente para armazenar a ISO. Crie o sistema de arquivos EXT4, monte-o e faça o download da ISO nele:
# 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>
em seguida, instrua o GRUB2 a inicializar a partir desta ISO; edite /etc/grub.d/40_custom da seguinte forma:
#!/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
}
e aplique a configuração com
update-grub2
Quando você reiniciar o VPS, o menu do GRUB2 oferecerá a opção de inicializar a partir da imagem live. Prossiga a partir daí usando o console de resgate VNC oferecido pelo painel de controle do provedor.
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
Agora, o sistema operacional live possui o módulo do kernel ZFS e os utilitários ZFS necessários para formatar o sistema de arquivos raiz do seu VPS.
Passo 4: Particione o disco do VPS
Existem dois cenários alternativos para particionar o disco do VPS:
  1. 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.
  2. 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
    Crie uma partição de inicialização primária com 100MB de largura e marque-a como inicializável com um asterisco (*), com um ID de partição = 83 (Linux). Ela será formatada como EXT4 para compatibilidade com o GRUB2 e conterá os dados de inicialização. Em seguida, crie outra partição primária para o ZFS, com ID = bf (Solaris). Escreva as alterações no disco e feche o fdisk. Agora que o disco está corretamente particionado, você pode formatar a partição de inicialização:
    # 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
Este conjunto de opções é recomendado pela documentação do ZFS para a maior compatibilidade com os discos mais novos e futuros. A opção compression=zstd habilita o algoritmo de compressão ZSTD, que possui uma taxa de compressão maior que o LZ4 padrão, embora você possa usar compression=lz4 para reduzir o uso da CPU se o seu VPS tiver alto I/O de disco. O pool é nomeado rpool, que é o nome mais comumente usado para pools raiz. Quando este comando for concluído, rpool será montado no diretório /mnt do ambiente live, conforme especificado pela opção -R /mnt acima, mas será montado automaticamente em / em todas as inicializações subsequentes. Montá-lo em /mnt é necessário para restaurar seu backup nele a partir do ambiente live.
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
Para simplificar, habilite PermitRootLogin yes em /etc/ssh/sshd_config do ambiente ativo, defina uma senha root segura e reinicie o OpenSSH:
# passwd
# service restart ssh
e inicie a restauração dos dados de backup do VPS de backup, que irá preencher o pool raiz ZFS montado em /mnt:
## from the backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
ou, se você usou TAR para criar um arquivo de backup, restaure-o com:
## from the backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
no entanto, como escrevi em Passo 1, ao extrair, o TAR converte o caminho de destino dos links simbólicos absolutos em caminhos relativos; esses links simbólicos podem ser todos corretamente restaurados da seguinte forma. Observe que essa restauração não é necessária se você não usou o TAR para fazer backup do sistema de arquivos raiz. Do VPS de backup, liste todos os links simbólicos contidos no arquivo:
## from the backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
então copie a lista para o VPS de destino em /mnt, que agora contém o sistema de arquivos raiz repovoado a partir do backup:
## from the backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
A partir do VPS de destino, chroot em /mnt e execute este script Bash para restaurar todos os links simbólicos absolutos:
## 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
Seu sistema de arquivos raiz agora está totalmente restaurado a partir do backup e pode ser inicializado, mas você precisa de um gerenciador de inicialização funcional primeiro.
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
Você pode optar por copiar qualquer conteúdo pré-existente de /mnt/boot/ para a nova partição de boot. Entre no chroot do pool raiz e, a partir dele, instale o hook initramfs do ZFS, o módulo do kernel ZFS e as ferramentas de espaço do usuário do ZFS necessárias para gerar o initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
então instale o pacote GRUB2:
# apt install grub-pc
# update-initramfs -u -k all
edite /etc/default/grub para definir o pool ZFS como o dispositivo raiz, modificando a variável GRUB_CMDLINE_LINUX:
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
então aplique a configuração:
# update-grub
e finalmente instale o GRUB2 no MBR:
# 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
Agora você pode remover a imagem ISO do painel de controle do VPS, se você usou essa opção, ou excluir a ISO do disco rígido, e reiniciar o sistema no pool raiz ZFS:
# reboot
A conversão do sistema de arquivos raiz do VPS de EXT4 para ZFS está concluída, e o VPS será inicializado no seu sistema instalado anteriormente, como de costume.

Leia mais artigos
Alemão Árabe Bengali Chinês Coreano Espanhol Filipino Francês Indonésio Inglês Japonês Malaio Polonês Português Russo Turco Vietnamita
Ajuda  –  Índice  –  Política de Privacidade  –  Contato  –