isang malayang Search Engine para sa mga VPS na naka-rank ayon sa presyo

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:
# rsync -aqrxz root@target:/ backup.d
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:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
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.
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
Ang VPS na ito ay may 2GB na swap partition sa /dev/vda2 na sapat na malaki para mag-imbak ng ISO. Gumawa ng EXT4 filesystem, i-mount ito at i-download ang ISO dito:
# 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>
pagkatapos ay i-instruct ang GRUB2 na mag-boot mula sa ISO na ito; i-edit ang /etc/grub.d/40_custom tulad ng sumusunod:
#!/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
}
at ilapat ang configuration gamit ang
update-grub2
Kapag nag-reboot ka ng VPS, ang GRUB2 menu ay mag-aalok ng opsyon para mag-boot mula sa live image. Magpatuloy mula doon gamit ang VNC rescue console na inaalok ng control panel ng provider.
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
Ngayon, ang live OS ay mayroon nang ZFS kernel module at ZFS utilities na kinakailangan para i-format ang iyong VPS root filesystem.
Step 4: I-partition ang VPS disk
Mayroong dalawang alternatibong senaryo para sa pag-partition ng VPS disk:
  1. 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 .
  2. 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
    Lumikha ng primary boot partition na may lapad na 100MB at markahan ito bilang bootable gamit ang asterisk (*), na may partition ID = 83 (Linux). Ito ay ifo-format bilang EXT4 para sa compatibility sa GRUB2, at ito ay maglalaman ng boot data. Pagkatapos, lumikha ng isa pang primary partition para sa ZFS, na may ID = bf (Solaris). Isulat ang mga pagbabago sa disk at isara ang fdisk. Ngayon na ang disk ay wastong na-partition, maaari mong i-format ang boot partition:
    # 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
Ang hanay ng mga opsyon na ito ay inirerekomenda ng dokumentasyon ng ZFS para sa pinakamataas na pagkakatugma sa pinakabago at mga hinaharap na disk. Ang opsyon compression=zstd ay nagpapagana ng algorithm ng ZSTD compression na may mas mataas na ratio ng compression kaysa sa default na LZ4, bagaman maaari mong gamitin ang compression=lz4 upang bawasan ang paggamit ng CPU kung ang iyong VPS ay may mataas na disk I/O. Ang pool ay pinangalanang rpool na siyang pinakakaraniwang ginagamit na pangalan para sa mga root pool. Kapag natapos ang command na ito, ang rpool ay mai-mount sa direktoryo ng /mnt ng live environment, gaya ng tinukoy ng opsyon na -R /mnt sa itaas, ngunit ito ay awtomatikong mai-mount sa / sa bawat kasunod na boot. Ang pag-mount nito sa /mnt ay kinakailangan upang maibalik ang iyong backup dito mula sa live environment.
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
Para sa pagiging simple, paganahin ang PermitRootLogin yes sa /etc/ssh/sshd_config ng live na kapaligiran, pagkatapos ay magtakda ng isang ligtas na root password at i-restart ang OpenSSH:
# passwd
# service restart ssh
at simulan ang pagbabalik ng backup na datos mula sa backup VPS, na pupunuan ang ZFS root pool na naka-mount sa /mnt:
## mula sa backup VPS
# rsync -arxz backup.d/* root@target:/mnt/
o kung gumamit ka ng TAR para gumawa ng backup archive, ibalik ito gamit ang:
## mula sa backup VPS
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
gayunpaman tulad ng aking isinulat sa Step 1, sa pag-extract, binabago ng TAR ang target path ng absolute symlinks sa mga relatibong path; ang mga symlink na ito ay maaaring maibalik nang maayos tulad ng sumusunod. Tandaan na ang pagbabalik na ito ay hindi kinakailangan kung hindi mo ginamit ang TAR para i-back up ang root file system. Mula sa backup VPS, ilista ang lahat ng symlink na nakapaloob sa archive:
## mula sa backup VPS
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
pagkatapos ay kopyahin ang listahan sa target na VPS sa /mnt, na ngayon ay naglalaman ng root filesystem na muling napuno mula sa backup:
## mula sa backup VPS
# scp list_of_symlinks.txt root@target:/mnt/root/
Mula sa target na VPS, chroot sa /mnt at isagawa ang Bash script na ito upang maibalik ang lahat ng absolute symlinks:
## 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
Ang iyong root filesystem ay ngayon ay ganap na naibalik mula sa backup at maaaring i-boot, ngunit kailangan mo muna ng gumaganang bootloader.
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
Maaari mong piliing kopyahin ang anumang pre-existing na content mula sa /mnt/boot/ patungo sa bagong boot partition. Chroot sa root pool, at mula sa loob nito, i-install ang ZFS initramfs hook, ang ZFS kernel module, at ang ZFS userspace tools na kinakailangan para makabuo ng initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
pagkatapos ay i-install ang GRUB2 package:
# apt install grub-pc
# update-initramfs -u -k all
i-edit ang /etc/default/grub upang itakda ang ZFS pool bilang root device, sa pamamagitan ng pagbabago sa variable na GRUB_CMDLINE_LINUX:
## ito ay /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
pagkatapos ay ilapat ang configuration:
# update-grub
at sa wakas ay i-install ang GRUB2 sa MBR:
# 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
Maaari mo na ngayong alisin ang ISO image mula sa VPS control panel, kung ginamit mo ang opsyon na ito, o burahin ang ISO mula sa hard drive, at i-reboot ang sistema sa ZFS root pool:
# reboot
Ang pag-convert ng VPS root filesystem mula sa EXT4 patungo sa ZFS ay tapos na, at ang VPS ay magbo-boot sa iyong dating naka-install na sistema tulad ng dati.

Magbasa pa ng mga artikulo
Aleman Arabic Bengali Espanyol Filipino Hapones Indonesian Ingles Koreano Malay Polako Portuguese Pranses Russian Tsino Turko Vietnamese
Tulong  –  Indeks  –  Patakaran sa Privacy  –  Kontak  –