到目前为止,很有可能在ZFS root-fs上运行Ubuntu 16.04. Ubuntu 16.04在默认的包管理器中有ZFS,而像
this这样的指南,它并不难开始.
但是,我看到的所有指南都需要能够从Ubuntu安装映像启动.对于Hetzner专用服务器,这是一种不常见的安装过程,因为它需要工程师访问服务器并插入远程KVM.
默认情况下,专用服务器启动到救援系统,该系统允许通过其“installiamge”脚本安装各种Linux发行版.但是,此脚本尚不支持ZFS.
如何在ZFS根目录上运行Hetzner专用服务器?
基本的想法是将Ubuntu安装在硬盘驱动器上的一个小分区上,对硬盘驱动器进行分区以使用剩余的空间用于ZFS,然后将安装复制过来.我主要使用
this guide指令如何做到这一点.
懒惰,和Ansible一起经历?我写了一小堆脚本来自动执行这些步骤.它们可在:https://github.com/tijszwinkels/hetzner-ubuntu-16.04-zfs-root-ansible/blob/master/hetzner-ubuntu-16.04.yml获得
请注意,这些脚本假设主机已启动进入Hetzner救援系统,他们将首先擦除您的驱动器.使用风险自负!
- # 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
现在,您应该拥有一个Hetzner专用服务器,可以使用ZFS根fs快乐地引导到Ubuntu 16.04.祝好运!