Advertisement
echoslider

finish_ubuntu_deployment_zfs_on_root

Jun 16th, 2021 (edited)
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 11.00 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #https://www.tomica.net/blog/2019/02/moving-ubuntu-to-root-on-zfs/
  4. #https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html#ubuntu-installer
  5.  
  6.  
  7.  
  8. sudo su
  9. setxkbmap de
  10.  
  11. apt-get update
  12.  
  13.  
  14. apt-get install --yes zfsutils-linux debootstrap gdisk zfs-initramfs
  15.  
  16. systemctl stop zed
  17.  
  18.  
  19.  
  20. blkdiscard /dev/sda
  21. blkdiscard /dev/sdb
  22. blkdiscard /dev/sdc
  23.  
  24. sgdisk --zap-all /dev/sda
  25. sgdisk --zap-all /dev/sdb
  26. sgdisk --zap-all /dev/sdc
  27.  
  28. #boot loader
  29. sgdisk     -n1:1M:+512M   -t1:EF00 /dev/sda
  30. sgdisk     -n1:1M:+512M   -t1:EF00 /dev/sdb
  31. sgdisk     -n1:1M:+512M   -t1:EF00 /dev/sdc
  32.  
  33. #boot pool
  34. sgdisk     -n2:0:+2G      -t2:BE00 /dev/sda
  35. sgdisk     -n2:0:+2G      -t2:BE00 /dev/sdb
  36. sgdisk     -n2:0:+2G      -t2:BE00 /dev/sdc
  37.  
  38. #swap
  39. sgdisk     -n3:0:+6G    -t3:8200 /dev/sda
  40. sgdisk     -n3:0:+6G    -t3:8200 /dev/sdb
  41. sgdisk     -n3:0:+6G    -t3:8200 /dev/sdc
  42.  
  43. #root
  44. sgdisk     -n4:0:0        -t4:BF00 /dev/sda
  45. sgdisk     -n4:0:0        -t4:BF00 /dev/sdb
  46. sgdisk     -n4:0:0        -t4:BF00 /dev/sdc
  47.  
  48.  
  49. zpool create \
  50.     -o cachefile=/etc/zfs/zpool.cache \
  51.     -o ashift=12 -o autotrim=on -d \
  52.     -o feature@async_destroy=enabled \
  53.     -o feature@bookmarks=enabled \
  54.     -o feature@embedded_data=enabled \
  55.     -o feature@empty_bpobj=enabled \
  56.     -o feature@enabled_txg=enabled \
  57.     -o feature@extensible_dataset=enabled \
  58.     -o feature@filesystem_limits=enabled \
  59.     -o feature@hole_birth=enabled \
  60.     -o feature@large_blocks=enabled \
  61.     -o feature@lz4_compress=enabled \
  62.     -o feature@spacemap_histogram=enabled \
  63.     -O acltype=posixacl -O canmount=off -O compression=lz4 \
  64.     -O devices=off -O normalization=formD -O relatime=on -O xattr=sa \
  65.     -O mountpoint=/boot -R /mnt -f bpool \
  66.     raidz /dev/sda2 /dev/sdb2 /dev/sdc2
  67.  
  68.  
  69.  
  70. zpool create \
  71.     -o ashift=12 -o autotrim=on \
  72.     -O acltype=posixacl -O canmount=off -O compression=lz4 \
  73.     -O dnodesize=auto -O normalization=formD -O relatime=on \
  74.     -O xattr=sa -O mountpoint=/ -R /mnt -f rpool \
  75.     raidz /dev/sda4 /dev/sdb4 /dev/sdc4
  76.  
  77.  
  78. zfs create -o canmount=off -o mountpoint=none rpool/ROOT
  79. zfs create -o canmount=off -o mountpoint=none bpool/BOOT
  80.  
  81.  
  82.  
  83. UUID=$(dd if=/dev/urandom bs=1 count=100 2>/dev/null |
  84.     tr -dc 'a-z0-9' | cut -c-6)
  85.  
  86. zfs create -o mountpoint=/ \
  87.     -o com.ubuntu.zsys:bootfs=yes \
  88.     -o com.ubuntu.zsys:last-used=$(date +%s) rpool/ROOT/ubuntu_$UUID
  89.  
  90. zfs create -o mountpoint=/boot bpool/BOOT/ubuntu_$UUID
  91.  
  92.  
  93. zfs create -o com.ubuntu.zsys:bootfs=no \
  94.     rpool/ROOT/ubuntu_$UUID/srv
  95. zfs create -o com.ubuntu.zsys:bootfs=no -o canmount=off \
  96.     rpool/ROOT/ubuntu_$UUID/usr
  97. zfs create rpool/ROOT/ubuntu_$UUID/usr/local
  98. zfs create -o com.ubuntu.zsys:bootfs=no -o canmount=off \
  99.     rpool/ROOT/ubuntu_$UUID/var
  100. zfs create rpool/ROOT/ubuntu_$UUID/var/games
  101. zfs create rpool/ROOT/ubuntu_$UUID/var/lib
  102. zfs create rpool/ROOT/ubuntu_$UUID/var/lib/AccountsService
  103. zfs create rpool/ROOT/ubuntu_$UUID/var/lib/apt
  104. zfs create rpool/ROOT/ubuntu_$UUID/var/lib/dpkg
  105. zfs create rpool/ROOT/ubuntu_$UUID/var/lib/NetworkManager
  106. zfs create rpool/ROOT/ubuntu_$UUID/var/log
  107. zfs create rpool/ROOT/ubuntu_$UUID/var/mail
  108. zfs create rpool/ROOT/ubuntu_$UUID/var/snap
  109. zfs create rpool/ROOT/ubuntu_$UUID/var/spool
  110. zfs create rpool/ROOT/ubuntu_$UUID/var/www
  111.  
  112. zfs create -o canmount=off -o mountpoint=/ \
  113.     rpool/USERDATA
  114. zfs create -o com.ubuntu.zsys:bootfs-datasets=rpool/ROOT/ubuntu_$UUID \
  115.     -o canmount=on -o mountpoint=/root \
  116.     rpool/USERDATA/root_$UUID
  117. chmod 700 /mnt/root
  118.  
  119. zfs create -o com.ubuntu.zsys:bootfs=no bpool/grub
  120.  
  121. mkdir /mnt/run
  122. mount -t tmpfs tmpfs /mnt/run
  123. mkdir /mnt/run/lock
  124.  
  125.  
  126. zfs create -o com.ubuntu.zsys:bootfs=no \
  127.     rpool/ROOT/ubuntu_$UUID/tmp
  128. chmod 1777 /mnt/tmp
  129.  
  130.  
  131.  
  132.  
  133.  
  134. debootstrap focal /mnt
  135.  
  136.  
  137.  
  138.  
  139. mkdir /mnt/etc/zfs
  140. cp /etc/zfs/zpool.cache /mnt/etc/zfs/
  141.  
  142.  
  143. echo fileserver > /mnt/etc/hostname
  144.  
  145. cat >> /mnt/etc/hosts << EOF
  146. 127.0.1.1       fileserver localhost
  147. EOF
  148.  
  149.  
  150.  
  151. cat >> /mnt/etc/netplan/01-netcfg.yaml << EOF
  152. network:
  153.   version: 2
  154.   ethernets:
  155.     enp1s0:
  156.       dhcp4: true
  157. EOF
  158.  
  159.  
  160.  
  161. cat > /mnt/etc/apt/sources.list << EOF
  162. deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
  163. deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
  164. deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
  165. deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
  166. EOF
  167.  
  168.  
  169. mount --rbind /dev  /mnt/dev
  170. mount --rbind /proc /mnt/proc
  171. mount --rbind /sys  /mnt/sys
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178. chroot /mnt /usr/bin/env UUID=$UUID bash --login
  179.  
  180. apt-get update
  181.  
  182.  
  183. dpkg-reconfigure locales tzdata keyboard-configuration console-setup
  184.  
  185. apt-get install --yes  nano vim dosfstools mdadm gdisk zfsutils-linux
  186.  
  187.  
  188. mkdosfs -F 32 -s 1 -n EFI /dev/sda1
  189. mkdosfs -F 32 -s 1 -n EFI /dev/sdb1
  190. mkdosfs -F 32 -s 1 -n EFI /dev/sdc1
  191.  
  192.  
  193. mkdir /boot/efi1
  194. mkdir /boot/efi2
  195. mkdir /boot/efi3
  196.  
  197. echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sda1) \
  198.     /boot/efi1 vfat defaults 0 0 >> /etc/fstab
  199.    
  200. echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdb1) \
  201.     /boot/efi2 vfat defaults 0 0 >> /etc/fstab    
  202.  
  203. echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdc1) \
  204.     /boot/efi3 vfat defaults 0 0 >> /etc/fstab    
  205.  
  206.  
  207. mount /boot/efi1
  208. mount /boot/efi2
  209. mount /boot/efi3
  210.  
  211. mkdir /boot/efi1/grub
  212. mkdir /boot/efi2/grub
  213. mkdir /boot/efi3/grub
  214.  
  215.  
  216. mkdir /boot/grub1
  217. mkdir /boot/grub2
  218. mkdir /boot/grub3
  219.  
  220.  
  221.  
  222. echo /boot/efi1/grub /boot/grub1 none defaults,bind 0 0 >> /etc/fstab
  223. echo /boot/efi2/grub /boot/grub2 none defaults,bind 0 0 >> /etc/fstab
  224. echo /boot/efi3/grub /boot/grub3 none defaults,bind 0 0 >> /etc/fstab
  225.  
  226.  
  227. mount /boot/grub1
  228. mount /boot/grub2
  229. mount /boot/grub3
  230.  
  231.  
  232. apt install --yes \
  233.     grub-efi-amd64 grub-efi-amd64-signed linux-image-generic \
  234.     shim-signed zfs-initramfs zsys
  235.  
  236.  
  237.  
  238. apt-get remove --yes --purge os-prober sudo
  239.  
  240.  
  241. passwd
  242.  
  243.  
  244. mdadm --create /dev/md0 --metadata=1.2 --level=mirror \
  245.     --raid-devices=3 /dev/sda3 /dev/sdb3 /dev/sdc3
  246. mkswap -f /dev/md0
  247. echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/md0) \
  248.     none swap discard 0 0 >> /etc/fstab
  249.  
  250.  
  251.  
  252. cp /usr/share/systemd/tmp.mount /etc/systemd/system/
  253. systemctl enable tmp.mount
  254.  
  255. addgroup --system lpadmin
  256. addgroup --system lxd
  257. addgroup --system sambashare
  258.  
  259. grub-probe /boot
  260.  
  261. update-initramfs -c -k all
  262.  
  263.  
  264.  
  265. cat > /etc/default/grub << EOF
  266. GRUB_DEFAULT=0
  267. GRUB_TIMEOUT=5
  268. GRUB_RECORDFAIL_TIMEOUT=5
  269. GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
  270. GRUB_CMDLINE_LINUX_DEFAULT="init_on_alloc=0"
  271. GRUB_CMDLINE_LINUX=""
  272. GRUB_TERMINAL=console
  273. EOF
  274.  
  275. update-grub
  276.  
  277. grub-install --target=x86_64-efi --efi-directory=/boot/efi1 \
  278.     --bootloader-id=ubuntu --recheck --no-floppy
  279.  
  280. grub-install --target=x86_64-efi --efi-directory=/boot/efi2 \
  281.     --bootloader-id=ubuntu --recheck --no-floppy
  282.  
  283. grub-install --target=x86_64-efi --efi-directory=/boot/efi3 \
  284.     --bootloader-id=ubuntu --recheck --no-floppy
  285.  
  286. systemctl mask grub-initrd-fallback.service
  287.  
  288.  
  289.  
  290. mkdir /etc/zfs/zfs-list.cache
  291. touch /etc/zfs/zfs-list.cache/bpool
  292. touch /etc/zfs/zfs-list.cache/rpool
  293. ln -s /usr/lib/zfs-linux/zed.d/history_event-zfs-list-cacher.sh /etc/zfs/zed.d
  294. zed -F &
  295.  
  296. cat /etc/zfs/zfs-list.cache/bpool
  297. cat /etc/zfs/zfs-list.cache/rpool
  298.  
  299.  
  300. fg
  301. #Press Ctrl-C.
  302.  
  303. sed -Ei "s|/mnt/?|/|" /etc/zfs/zfs-list.cache/*
  304.  
  305.  
  306. apt install --yes openssh-server mlocate
  307.  
  308.  
  309. nano /etc/ssh/sshd_config
  310. #PermitRootLogin yes
  311.  
  312. exit
  313.  
  314.  
  315. mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | \
  316.     xargs -i{} umount -lf {}
  317.    
  318.    
  319. zpool export -a
  320.  
  321.  
  322. reboot
  323.  
  324.  
  325.  
  326. dpkg-reconfigure grub-efi-amd64
  327.  
  328.  
  329.  
  330.  
  331. UUID=$(dd if=/dev/urandom bs=1 count=100 2>/dev/null |
  332.     tr -dc 'a-z0-9' | cut -c-6)
  333. ROOT_DS=$(zfs list -o name | awk '/ROOT\/ubuntu_/{print $1;exit}')
  334. zfs create -o com.ubuntu.zsys:bootfs-datasets=$ROOT_DS \
  335.     -o canmount=on -o mountpoint=/home/serveradmin \
  336.     rpool/USERDATA/serveradmin_$UUID
  337.  
  338.  
  339. adduser serveradmin
  340.  
  341. cp -a /etc/skel/. /home/serveradmin
  342. chown -R serveradmin:serveradmin /home/serveradmin
  343. chmod -R o-rwx /home/serveradmin
  344. usermod -a -G adm,cdrom,dip,lpadmin,lxd,plugdev,sambashare serveradmin
  345.  
  346. apt-get autoremove --purge sudo snapd
  347.  
  348. for file in /etc/logrotate.d/* ; do
  349.     if grep -Eq "(^|[^#y])compress" "$file" ; then
  350.         sed -i -r "s/(^|[^#y])(compress)/\1#\2/" "$file"
  351.     fi
  352. done
  353.  
  354.  
  355.  
  356.  
  357. nano /etc/ssh/sshd_config
  358. #PermitRootLogin no
  359.  
  360. systemctl reload sshd
  361.  
  362. #allow reboot/halt for all users.
  363. #chmod u+s /usr/sbin/reboot
  364. #chmod u+s /usr/sbin/halt
  365.  
  366.  
  367. ##############################################################################################
  368.  
  369.  
  370. #######################################################
  371. ####################terminal server####################
  372. #######################################################
  373. apt-get update
  374. apt install mate-core mate-desktop-environment mate-notification-daemon
  375. apt-get install x2goserver x2goserver-xsession
  376. apt-get install mate-tweak
  377. #disable composit
  378. #or install apt-get install ubuntu-mate-core
  379.  
  380. #######################################################
  381. ##################zfs storage + iscsi##################
  382. #######################################################
  383. ls /dev/sd*|sort
  384.  
  385. sgdisk --zap-all /dev/sdX
  386. sgdisk --zap-all /dev/sdY
  387. sgdisk --zap-all /dev/sdZ
  388.  
  389. #already created on install
  390. zpool add rpool raidz /dev/sdX /dev/sdY /dev/sdZ
  391.  
  392. zpool status
  393.  
  394. apt-get install tgt -y
  395.  
  396. zfs create -s -V 30G rpool/vol1
  397. zfs set dedup=verify rpool/vol1
  398.  
  399. cat >> /etc/tgt/conf.d/target01.conf << EOF
  400. <target iqn.2021-5.bitmaster.dedyn.io:vol1>
  401. backing-store /dev/zvol/rpool/vol1
  402. </target>
  403. EOF
  404.  
  405. systemctl reload tgt
  406.  
  407. #extend disk
  408. zfs set volsize=20G rpool/vol1
  409. systemctl restart tgt
  410.  
  411.  
  412. get infos
  413. zfs get all rpool/vol1
  414. zfs list rpool/vol1
  415. zdb -b rpool
  416. zfs get compressratio,refcompressratio
  417. zpool status
  418.  
  419.  
  420.  
  421.  
  422. #######################################################
  423. #####################recover disks#####################
  424. #######################################################
  425. zpool import -a
  426. zpool status
  427. ls /dev/sd*|sort
  428.  
  429.  
  430. sgdisk     -n1:1M:+512M   -t1:EF00 /dev/sdc
  431. sgdisk     -n2:0:+2G      -t2:BE00 /dev/sdc
  432. sgdisk     -n3:0:+6G    -t3:8200 /dev/sdc
  433. sgdisk     -n4:0:0        -t4:BF00 /dev/sdc
  434.  
  435. zpool status
  436.  
  437. #old ID (status)
  438. #/dev/sdc* new disk
  439. zpool replace bpool 3362238763736904232 /dev/sdc2
  440. zpool replace rpool 4417555474297722148 /dev/sdc4
  441.  
  442.  
  443. cat /proc/mdstat
  444. mdadm --stop /dev/md0
  445. rm /etc/mdadm/mdadm.conf
  446. mdadm --assemble --scan --verbose
  447. mdadm --manage /dev/md127 --add /dev/sdc3
  448.  
  449. #until raid recovery finish
  450. cat /proc/mdstat
  451. #until raid recovery finish
  452.  
  453.  
  454. mdadm --stop /dev/md127
  455. mdadm --assemble --update=name --name=md0 /dev/md0
  456.  
  457.  
  458.  
  459. mkdosfs -F 32 -s 1 -n EFI /dev/sdc1
  460.  
  461. blkid -s UUID -o value /dev/sdc1
  462.  
  463. nano /etc/fstab
  464.  
  465. mount /boot/efi3
  466.  
  467. update-initramfs -c -k all
  468. update-grub
  469.  
  470. grub-install --target=x86_64-efi --efi-directory=/boot/efi1 \
  471.     --bootloader-id=ubuntu --recheck --no-floppy
  472.  
  473.  
  474.  
  475. dpkg-reconfigure grub-efi-amd64
  476.  
  477.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement