enjin carian bebas untuk VPS disusun mengikut harga

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:
# rsync -aqrxz root@target:/ backup.d
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:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
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.
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
VPS ini mempunyai partisi swap 2GB dalam /dev/vda2 yang cukup besar untuk menyimpan ISO. Cipta sistem fail EXT4, pasangkannya dan muat turun ISO ke atasnya:
# 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>
kemudian arahkan GRUB2 untuk boot dari ISO ini; edit /etc/grub.d/40_custom seperti berikut:
#!/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
}
dan terapkan konfigurasi dengan
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
Cipta partisi boot utama seluas 100MB dan tandakan ia sebagai boleh boot dengan asterisk (*), dengan ID partisi = 83 (Linux). Ia akan diformat sebagai EXT4 untuk keserasian dengan GRUB2, dan ia akan mengandungi data boot. Kemudian cipta satu lagi partisi utama untuk ZFS, dengan ID = bf (Solaris). Tulis perubahan ke cakera dan tutup fdisk. Sekarang cakera telah dipartisi dengan betul, anda boleh memformat partisi boot:
# 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
Set pilihan ini disyorkan oleh dokumentasi ZFS untuk keserasian tertinggi dengan cakera terkini dan masa hadapan. Pilihan compression=zstd membolehkan algoritma mampatan ZSTD yang mempunyai nisbah mampatan yang lebih tinggi berbanding LZ4 lalai, walaupun anda boleh menggunakan compression=lz4 untuk mengurangkan penggunaan CPU jika VPS anda mempunyai I/O cakera yang tinggi. Kolam dinamakan rpool yang merupakan nama yang paling biasa digunakan untuk kolam akar. Apabila arahan ini selesai, rpool akan dipasang pada direktori /mnt dalam persekitaran langsung, seperti yang ditentukan oleh pilihan -R /mnt di atas, tetapi ia akan dipasang secara automatik pada / pada setiap but seterusnya. Memasangnya pada /mnt adalah perlu untuk memulihkan sandaran anda ke atasnya dari persekitaran langsung.
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
Untuk kesederhanaan, aktifkan PermitRootLogin yes dalam /etc/ssh/sshd_config persekitaran langsung, kemudian tetapkan kata laluan root yang selamat dan mulakan semula OpenSSH:
# passwd
# service restart ssh
dan mulakan pemulihan data sandaran dari VPS sandaran, yang akan mengisi kolam root ZFS yang dipasang pada /mnt:
## dari VPS sandaran
# rsync -arxz backup.d/* root@target:/mnt/
atau jika anda menggunakan TAR untuk mencipta arkib sandaran, pulihkannya dengan:
## dari VPS sandaran
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
namun seperti yang saya tulis dalam Langkah 1, semasa pengekstrakan, TAR menukar laluan sasaran pautan simbolik mutlak kepada laluan relatif; pautan simbolik ini boleh dipulihkan dengan betul seperti berikut. Perhatikan bahawa pemulihan ini tidak diperlukan jika anda tidak menggunakan TAR untuk menyandarkan sistem fail root. Dari VPS sandaran, senaraikan semua pautan simbolik yang terkandung dalam arkib:
## dari VPS sandaran
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
kemudian salin senarai ke VPS sasaran ke dalam /mnt, yang kini mengandungi sistem fail root yang telah diisi semula daripada sandaran:
## dari VPS sandaran
# scp list_of_symlinks.txt root@target:/mnt/root/
Dari VPS sasaran, chroot ke dalam /mnt dan jalankan skrip Bash ini untuk memulihkan semua symlink mutlak:
## 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
Sistem fail root anda kini telah dipulihkan sepenuhnya daripada sandaran dan boleh diboot, tetapi anda memerlukan bootloader yang berfungsi terlebih dahulu.
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
Anda boleh memilih untuk menyalin sebarang kandungan yang sedia ada dari /mnt/boot/ ke partition boot yang baru. Chroot ke dalam kolam root, dan dari dalamnya, pasang hook initramfs ZFS, modul kernel ZFS, dan alat pengguna ZFS yang diperlukan untuk menjana initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
kemudian pasang pakej GRUB2:
# apt install grub-pc
# update-initramfs -u -k all
edit /etc/default/grub untuk menetapkan kolam ZFS sebagai peranti akar, dengan mengubah pembolehubah GRUB_CMDLINE_LINUX:
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
kemudian aplikasikan konfigurasi:
# update-grub
dan akhirnya pasang GRUB2 ke MBR:
# 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
Anda kini boleh mengalih keluar imej ISO daripada panel kawalan VPS, jika anda menggunakan pilihan ini, atau memadamkan ISO daripada cakera keras, dan but semula sistem ke dalam kolam akar ZFS:
# reboot
Penukaran sistem fail akar VPS daripada EXT4 kepada ZFS telah selesai, dan VPS akan boot ke dalam sistem yang dipasang lama seperti biasa.

Baca lebih banyak artikel
Bahasa Arab Bahasa Indonesia Bahasa Inggeris Bahasa Jerman Bahasa Vietnam Bengali Cina Filipino Jepun Korea Melayu Perancis Poland Portugis Rusia Sepanyol Turki
Bantuan  –  Indeks  –  Dasar Privasi  –  Hubungi  –