walang natagpuang katugmang serbisyo
Pag-install ng ZFS sa Root sa Isang Gumaganang VPS
Ang gabay na ito ay nagpapaliwanag kung paano i-install ang ZFS bilang root filesystem ng isang VPS na mayroon nang Linux installation nang hindi nagdudulot ng pagkawala ng data. Ang VPS ay magkakaroon ng maliit na EXT4 boot partition para sa GRUB2 kasama ang kernel at initrd, at isang malaking ZFS pool na naka-mount sa root na may compression na pinagana. Karamihan sa mga command ay ipapalabas mula sa isang live CD image at ipapakita ang isang workaround kung ang VPS ay hindi sumusuporta sa pag-mount ng ISO images.
- Index:
- 1. I-back up ang data
- 2. Mag-boot ng live OS image
- 3. I-install ang ZFS sa live OS environment
- 4. I-partition ang disk ng VPS
- 5. I-install ang ZFS sa disk ng VPS
- 6. I-restore ang backup sa bagong ZFS root filesystem
- 7. I-install ang GRUB2
- 8. Mag-boot sa ZFS root pool
- Hakbang 1: I-back up ang data
-
Kung mayroon kang pangalawang VPS o home computer na may sapat na espasyo para sa backup data, mula sa loob ng computer na iyon, patakbuhin ang:
kung saan ang target ay ang hostname ng VPS na kino-convert. Kokopyahin nito ang buong root filesystem sa pamamagitan ng SSH papunta sa backup machine, at ang pag-restore ng backup na ito sa target na VPS sa ibang pagkakataon ay magiging diretso. Kung kailangan mong i-compress ang backup dahil sa kakulangan ng espasyo, maaari mong alternatibong gumawa ng compressed TGZ archive:
# rsync -aqrxz root@target:/ backup.d
Gayunpaman, kapag nagre-restore ng root filesystem mula sa TAR archive, kinakailangang muling likhain ang lahat ng symlinks na may absolute pathnames, dahil kinokonvert ng TAR ang kanilang mga target sa relative pathnames, kaya ang paggamit ng rsync ay ang mas simpleng alternatibo. Ipapakita sa ibang pagkakataon kung paano maayos na i-restore ang TAR archive.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- Step 2: Mag-boot ng live OS image
-
Ang pag-convert sa ZFS ay gagawin mula sa isang live CD operating system. Depende sa kakayahan ng iyong VPS control panel, maaaring mayroon na itong live OS image na handa nang i-boot. Bilang alternatibo, maaari kang mag-download ng Debian live ISO mula sa Debian mirror at i-upload ito sa iyong VPS control panel, pagkatapos ay i-boot ang ISO mula doon; gagana ito nang maayos kahit na ang iyong VPS ay nagpapatakbo ng ibang distribusyon. Mag-ingat na gumamit ng live OS ISO image, hindi isang installation ISO, dahil ang mga installation image ay walang apt at hindi makakapag-install ng mga kinakailangang software sa live environment. Kung ang iyong VPS control panel ay sumusuporta sa pag-boot mula sa isang user-supplied ISO image, magpatuloy sa Step 3, kung hindi, maaari mo pa ring i-boot ang na-download na ISO sa pamamagitan ng pag-convert ng isang swap partition, kung mayroon, sa EXT4 at iimbak ang ISO sa na-reclaim na storage space na iyon, pagkatapos ay maaaring i-configure ang GRUB2 para mag-boot mula sa ISO na iyon. Ito ay ginagawa tulad ng sumusunod:
# fdisk --list /dev/vda
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 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
# swapoff /dev/vda2 # i-disable ang swap partition
# mkfs.ext4 /dev/vda2 # gumawa ng EXT4 filesystem
# mount /dev/vda2 /mnt # i-mount ang na-reclaim na espasyo
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
#!/bin/sh
exec tail -n +3 $0
# Ang file na ito ay nagbibigay ng madaling paraan para magdagdag ng custom menu entries. I-type lamang ang
# menu entries na nais mong idagdag pagkatapos ng komentong ito. Mag-ingat na huwag baguhin ang
# 'exec tail' na linya sa itaas.
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
- Step 3: I-install ang ZFS sa live OS environment
-
I-boot ang live OS image at i-access ang terminal nito. Pagkatapos, i-install ang mga ZFS package sa live OS environment:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- Step 4: I-partition ang VPS disk
-
Mayroong dalawang alternatibong senaryo para sa pag-partition ng VPS disk:
- Kung itinago mo ang live ISO sa /dev/vda2, hindi mo maaaring baguhin ang partisyon na iyon ngayon dahil ang live system ay umaasa dito, at walang pag-partition ang gagawin sa VPS disk. Ang ZFS ay i-format sa umiiral na /dev/vda2 partition, at ang /dev/vda1 ay mananatili bilang is at sa dakong huli ay gagamitin bilang iyong permanenteng boot partition para sa pag-iimbak ng kernel at initrd. Lumaktaw sa Step 5 .
-
Kung ang iyong live environment ay hindi umaasa sa isang ISO file na nakaimbak sa VPS disk, muling hatiin ang disk sa pamamagitan ng paggawa ng isang maliit na boot partition para sa GRUB2, at isang malaking partition para sa ZFS root na sumasaklaw sa lahat ng natitirang espasyo sa disk. Isagawa ang fdisk upang gumawa ng dalawang sumusunod na partition:
# 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
- Step 5: I-install ang ZFS sa VPS disk
-
I-format ang /dev/vda1 bilang isang ZFS volume:
# 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
- Hakbang 6: Ibalik ang backup sa bagong ZFS root filesystem
-
I-install ang OpenSSH server sa live environment upang matanggap ang backup data mula sa backup VPS:
# apt install openssh-server
# passwd
# service restart ssh
## mula sa backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
## mula sa backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## mula sa backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## mula sa backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
## mula sa 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
- Hakbang 7: I-install ang GRUB2
-
Kung nasa loob ka ng chroot, lumabas ka at bumalik sa live environment. Pagkatapos, i-bind ang mga virtual filesystem sa /mnt at i-mount ang boot partition:
# 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
## ito ay /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# grub-install /dev/vda
- Hakbang 8: Mag-boot sa ZFS root pool
-
Ang sistema ay handa na, ganap na naibalik mula sa backup, at maaari nang i-boot. Lumabas sa chroot at i-umount ang lahat ng virtual filesystems, pagkatapos ay i-export ang ZFS root pool:
# exit # lumabas sa rpool chroot
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
Magbasa pa ng mga artikulo