tiada perkhidmatan yang sepadan ditemui
Memasang ZFS pada Root dalam VPS yang Sedang Berjalan
Panduan ini menerangkan cara memasang ZFS sebagai sistem fail root bagi VPS yang mengandungi pemasangan Linux sedia ada tanpa menyebabkan kehilangan data. VPS akan mempunyai partisi boot EXT4 kecil untuk GRUB2 dengan kernel dan initrd, serta kolam ZFS besar yang dipasang pada root dengan mampatan diaktifkan. Kebanyakan arahan akan dikeluarkan daripada imej CD langsung dan penyelesaian alternatif akan ditunjukkan jika VPS tidak menyokong pemasangan imej ISO.
- Indeks:
- 1. Sandarkan data
- 2. Boot imej OS langsung
- 3. Pasang ZFS pada persekitaran OS langsung
- 4. Partisikan cakera VPS
- 5. Pasang ZFS pada cakera VPS
- 6. Pulihkan sandaran ke sistem fail root ZFS baru
- 7. Pasang GRUB2
- 8. Boot ke dalam kolam root ZFS
- Langkah 1: Cadangkan data
-
Jika anda mempunyai VPS kedua atau komputer rumah dengan ruang yang mencukupi untuk menyimpan data sandaran, dari dalam komputer tersebut jalankan:
di mana target adalah nama hos VPS yang sedang ditukar. Ini akan menyalin keseluruhan sistem fail root melalui SSH ke mesin sandaran, dan memulihkan sandaran ini ke VPS sasaran pada masa akan datang adalah mudah. Jika anda perlu memampatkan sandaran kerana kekurangan ruang, anda boleh sebagai alternatif mencipta arkib TGZ yang dimampatkan:
# rsync -aqrxz root@target:/ backup.d
Walau bagaimanapun, apabila memulihkan sistem fail root dari arkib TAR, adalah perlu untuk mencipta semula semua pautan simbolik yang mempunyai nama laluan mutlak, kerana TAR menukar sasaran mereka kepada nama laluan relatif, jadi menggunakan rsync adalah alternatif yang lebih mudah. Cara untuk memulihkan arkib TAR dengan betul akan ditunjukkan kemudian.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- Langkah 2: Boot imej OS live
-
Penukaran kepada ZFS akan dilakukan daripada sistem pengendalian CD live. Bergantung pada keupayaan panel kawalan VPS anda, ia mungkin sudah mempunyai imej OS live sedia untuk boot. Sebagai alternatif, anda boleh memuat turun ISO live Debian dari cermin Debian dan memuat naiknya ke panel kawalan VPS anda, kemudian boot ISO tersebut dari sana; ini akan berfungsi dengan baik walaupun VPS anda menjalankan pengedaran yang berbeza. Berhati-hati untuk menggunakan imej ISO OS live, bukan ISO pemasangan, kerana imej pemasangan tidak mempunyai apt dan tidak dapat memasang perisian yang diperlukan ke dalam persekitaran live. Jika panel kawalan VPS anda menyokong boot dari imej ISO yang dibekalkan pengguna, teruskan ke Langkah 3, jika tidak, anda masih boleh boot ISO yang dimuat turun dengan menukar partition swap, jika ada, kepada EXT4 dan menyimpan ISO dalam ruang storan yang diperoleh semula itu, kemudian GRUB2 boleh dikonfigurasi untuk boot dari ISO tersebut. Ini dilakukan seperti berikut:
# 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 # lumpuhkan partisi swap
# mkfs.ext4 /dev/vda2 # cipta sistem fail EXT4
# mount /dev/vda2 /mnt # pasangkan ruang yang telah diambil semula
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
#!/bin/sh
exec tail -n +3 $0
# Fail ini menyediakan cara mudah untuk menambah entri menu tersuai. Cuma taipkan
# entri menu yang anda ingin tambah selepas komen ini. Berhati-hati untuk tidak mengubah
# baris 'exec tail' di atas.
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
Jika persekitaran langsung anda tidak bergantung pada fail ISO yang disimpan pada cakera VPS, partition semula cakera dengan membuat satu partisi boot kecil untuk GRUB2, dan satu partisi besar untuk akar ZFS yang meliputi semua ruang cakera yang tinggal. Jalankan fdisk untuk membuat dua partisi berikut:# 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
- Langkah 5: Pasang ZFS pada cakera VPS
- Format /dev/vda1 sebagai volum ZFS:
# 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
- Langkah 6: Pulihkan sandaran ke sistem fail akar ZFS yang baru
- Pasang pelayan OpenSSH pada persekitaran langsung untuk menerima data sandaran dari VPS sandaran:
# apt install openssh-server
# passwd
# service restart ssh
## dari VPS sandaran
# rsync -arxz backup.d/* root@target:/mnt/
## dari VPS sandaran
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## dari VPS sandaran
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## dari VPS sandaran
# scp list_of_symlinks.txt root@target:/mnt/root/
## dari persekitaran chroot
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
- Langkah 7: Pasang GRUB2
- Jika anda berada di dalam chroot, keluar daripadanya dan kembali ke persekitaran live. Kemudian ikat sistem fail maya ke /mnt dan pasang partition boot:
# 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
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# grub-install /dev/vda
- Langkah 8: Boot ke dalam kolam akar ZFS
- Sistem sudah siap, sepenuhnya dipulihkan daripada sandaran, dan boleh diboot. Keluar dari chroot dan umount semua sistem fail maya, kemudian eksport kolam akar ZFS:
# exit # keluar dari chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
Baca lebih banyak artikel