Obtendo o Ubuntu 16.04 em uma raiz ZFS em um servidor dedicado Hetzner

3

Por enquanto, é bem possível obter o Ubuntu 16.04 rodando em um ZFS root-fs. O Ubuntu 16.04 tem o ZFS no gerenciador de pacotes padrão e, com guias como isso , não é difícil começar.

No entanto, todos os guias que vi requerem a inicialização de uma imagem de instalação do Ubuntu. Para um servidor dedicado Hetzner, esse é um procedimento de instalação incomum, pois exige que os engenheiros visitem o servidor e conectem um KVM remoto.

Por padrão, os servidores dedicados são inicializados em um sistema de recuperação, o que permite instalar uma variedade de distribuições Linux através do script 'installiamge'. No entanto, esse script ainda não suporta o ZFS.

Como obter um servidor dedicado Hetzner em execução em uma raiz ZFS?

    
por TinkerTank 18.09.2017 / 22:36

1 resposta

8

A idéia básica é instalar o Ubuntu em uma pequena partição no disco rígido, particionar o disco rígido para usar o restante do espaço para o ZFS e depois copiar a instalação. Estou usando principalmente este guia em instruções sobre como faça isso.

Preguiça e experiência com Ansible? Eu escrevi uma pequena pilha de scripts para automatizar essas etapas. Eles estão disponíveis em: link Tenha cuidado, esses scripts assumem que o host é inicializado no sistema de recuperação do Hetzner e eles limparão suas unidades como uma primeira etapa. Use a seu próprio risco!

# SSH into the host.

# Wipe the drives. Assuming SSDs on 'sda' and 'sdb'.
/sbin/blkdiscard /dev/sda
/sbin/blkdiscard /dev/sdb

# Install Ubuntu 16.04 on a 4G partition using the Hetzner 'installimage' script
/root/.oldroot/nfs/install/installimage -a -n my-hostname -r yes -l 1 -p /:ext4:4G -K /root/.ssh/robot_user_keys -i /root/.oldroot/nfs/install/../images/Ubuntu-1604-xenial-64-minimal.tar.gz

# Reboot the system.
/sbin/shutdown -r now

# Wait for the host to come back up, and SSH in.

# Install the 'parted' parition editor
apt-get update && apt-get install -y parted

# Run parted on the first drive, create a partition in all remaining space. (UNTESTED!)
sudo parted /dev/sda
(parted) mkpart primary 4097MB -1s
(parted) quit

# Run parted on the second drive, create a partition in all remaining space. (UNTESTED!)
sudo parted /dev/sdb
(parted) mkpart primary 4097MB -1s
(parted) quit

# Install required ZFS packages
apt-get install -y zfs-dkms zfs-initramfs

# Create a ZFS pool named 'tank'
# Please note that I'm using the /dev/disk/by-id interface. This is more resilient than /dev/sda and /dev/sdb
zpool create -f -o ashift=13 -O atime=off -O dedup=off -O compression=lz4  tank mirror 'ls /dev/disk/by-id/ata-*-part2' 

# Create OS partiton
zfs create tank/os

# Rsync the current system to the new partition.
rsync -a --one-file-system / /tank/os/

# Chroot into the system
cd /tank/os
mount --bind /dev dev
mount --bind /proc proc
mount --bind /sys sys
mount --bind /run run
chroot .

# Install GRUB into the drives
export ZPOOL_VDEV_NAME_PATH=YES
update-grub
grub-install /dev/sda
grub-install /dev/sdb

Agora, você deve ter um servidor dedicado Hetzner que seja bem-vindo ao Ubuntu 16.04 com um fs raiz do ZFS. Boa sorte!

    
por 18.09.2017 / 22:36