mesin pencari independen untuk VPS yang diurutkan berdasarkan harga

tidak ada layanan yang cocok ditemukan

Memasang ZFS pada Root di VPS yang Sedang Berjalan

Panduan ini menjelaskan cara memasang ZFS sebagai sistem berkas root dari VPS yang sudah memiliki instalasi Linux tanpa menyebabkan kehilangan data. VPS akan memiliki partisi boot EXT4 kecil untuk GRUB2 dengan kernel dan initrd, serta pool ZFS besar yang dipasang pada root dengan kompresi diaktifkan. Sebagian besar perintah akan dijalankan dari gambar live CD dan solusi alternatif akan ditunjukkan jika VPS tidak mendukung pemasangan gambar ISO.

Indeks:
1. Cadangkan data
2. Boot gambar OS live
3. Pasang ZFS pada lingkungan OS live
4. Partisi disk VPS
5. Pasang ZFS pada disk VPS
6. Pulihkan cadangan ke sistem berkas root ZFS baru
7. Pasang GRUB2
8. Boot ke dalam ZFS root pool
Langkah 1: Cadangkan data
Jika Anda memiliki VPS kedua atau komputer rumah dengan ruang yang cukup untuk menyimpan data cadangan, dari dalam komputer tersebut jalankan:
# rsync -aqrxz root@target:/ backup.d
di mana target adalah nama host dari VPS yang sedang dikonversi. Ini akan menyalin seluruh sistem berkas root melalui SSH ke mesin cadangan, dan memulihkan cadangan ini ke VPS target nantinya akan menjadi mudah. Jika Anda perlu mengompres cadangan karena kekurangan ruang, Anda dapat membuat arsip TGZ terkompresi:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
Namun, saat memulihkan sistem berkas root dari arsip TAR, akan diperlukan untuk membuat ulang semua symlink yang memiliki nama jalur target absolut, karena TAR mengubah target mereka menjadi nama jalur relatif, jadi menggunakan rsync adalah alternatif yang lebih sederhana. Cara memulihkan arsip TAR dengan benar akan ditunjukkan nanti.
Langkah 2: Boot gambar OS live
Konversi ke ZFS akan dilakukan dari sistem operasi live CD. Bergantung pada seberapa canggih panel kontrol VPS Anda, mungkin sudah ada gambar OS live yang siap untuk di-boot. Alternatifnya, Anda dapat mengunduh ISO live Debian dari mirror Debian dan mengunggahnya ke panel kontrol VPS Anda, lalu boot ISO tersebut dari sana; ini akan berfungsi dengan baik bahkan jika VPS Anda menjalankan distribusi yang berbeda. Hati-hati untuk menggunakan gambar ISO live OS, bukan ISO instalasi, karena gambar instalasi tidak memiliki apt dan tidak dapat menginstal perangkat lunak yang diperlukan ke lingkungan live. Jika panel kontrol VPS Anda mendukung booting dari gambar ISO yang disediakan pengguna, lanjutkan ke Langkah 3, jika tidak, Anda masih dapat melakukan booting ISO yang diunduh dengan mengonversi partisi swap, jika ada, menjadi EXT4 dan menyimpan ISO di ruang penyimpanan yang telah diklaim tersebut, kemudian GRUB2 dapat dikonfigurasi untuk melakukan booting dari ISO tersebut. Ini dilakukan sebagai 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 memiliki partisi swap 2GB di /dev/vda2 yang cukup besar untuk menyimpan ISO. Buat sistem file EXT4, mount, dan unduh ISO di dalamnya:
# swapoff /dev/vda2     # nonaktifkan partisi swap
# mkfs.ext4 /dev/vda2   # buat sistem file EXT4
# mount /dev/vda2 /mnt  # mount ruang yang telah diklaim
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
kemudian instruksikan GRUB2 untuk boot dari ISO ini; edit /etc/grub.d/40_custom sebagai berikut:
#!/bin/sh
exec tail -n +3 $0
# File ini menyediakan cara mudah untuk menambahkan entri menu kustom. Cukup ketik
# entri menu yang ingin Anda tambahkan setelah komentar ini. Berhati-hatilah 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
Ketika Anda me-reboot VPS, menu GRUB2 akan menawarkan opsi untuk boot dari live image. Lanjutkan dari sana menggunakan konsol rescue VNC yang disediakan oleh panel kontrol penyedia.
Langkah 3: Instal ZFS pada lingkungan OS live
Boot live image OS dan akses terminalnya. Kemudian instal paket ZFS pada lingkungan OS live:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
Sekarang OS live memiliki modul kernel ZFS dan utilitas ZFS yang diperlukan untuk memformat sistem file root VPS Anda.
Langkah 4: Partisi disk VPS
Ada dua skenario alternatif untuk mempartisi disk VPS:
  1. Jika Anda menyimpan live ISO di /dev/vda2, Anda tidak boleh mengubah partisi tersebut sekarang karena sistem live bergantung padanya, dan tidak ada partisi apa pun yang akan dilakukan pada disk VPS. ZFS akan diformat pada partisi /dev/vda2 yang ada, dan /dev/vda1 akan tetap seperti semula dan nantinya akan digunakan kembali sebagai partisi boot permanen Anda untuk menyimpan kernel dan initrd. Lewati ke Langkah 5.
  2. Jika lingkungan live Anda tidak bergantung pada file ISO yang disimpan di disk VPS, partisi ulang disk dengan membuat satu partisi boot kecil untuk GRUB2, dan satu partisi besar untuk root ZFS yang mencakup semua ruang disk yang tersisa. 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
    Buat partisi boot primary dengan ukuran 100MB dan tandai sebagai bootable dengan tanda bintang (*), dengan ID partisi = 83 (Linux). Partisi ini akan diformat sebagai EXT4 untuk kompatibilitas dengan GRUB2, dan akan berisi data boot. Kemudian buat partisi primary lain untuk ZFS, dengan ID = bf (Solaris). Tulis perubahan ke disk dan tutup fdisk. Sekarang setelah disk dipartisi dengan benar, Anda dapat memformat partisi boot:
    # mkfs.ext4 /dev/vda2
Langkah 5: Instal ZFS pada disk VPS
Format /dev/vda1 sebagai volume 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
Kumpulan opsi ini direkomendasikan oleh dokumentasi ZFS untuk kompatibilitas tertinggi dengan disk terbaru dan masa depan. Opsi compression=zstd mengaktifkan algoritma kompresi ZSTD yang memiliki rasio kompresi lebih tinggi daripada LZ4 default, meskipun Anda dapat menggunakan compression=lz4 untuk mengurangi penggunaan CPU jika VPS Anda memiliki I/O disk yang tinggi. Pool diberi nama rpool yang merupakan nama yang paling umum digunakan untuk root pool. Ketika perintah ini selesai, rpool akan di-mount pada direktori /mnt dari lingkungan live, seperti yang ditentukan oleh opsi -R /mnt di atas, tetapi akan secara otomatis di-mount pada / di setiap boot berikutnya. Mounting pada /mnt diperlukan untuk memulihkan cadangan Anda ke dalamnya dari lingkungan live.
Langkah 6: Memulihkan cadangan ke sistem file root ZFS baru
Pasang server OpenSSH pada lingkungan live untuk menerima data cadangan dari VPS cadangan:
# apt install openssh-server
Untuk mempermudah, aktifkan PermitRootLogin yes di /etc/ssh/sshd_config pada lingkungan live, lalu atur kata sandi root yang aman dan mulai ulang OpenSSH:
# passwd
# service restart ssh
dan mulai pemulihan data cadangan dari VPS cadangan, yang akan mengisi pool root ZFS yang terpasang di /mnt:
## dari VPS cadangan
# rsync -arxz backup.d/* root@target:/mnt/
atau jika Anda menggunakan TAR untuk membuat arsip cadangan, pulihkan dengan:
## dari VPS cadangan
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
namun seperti yang saya tulis di Langkah 1, saat ekstraksi, TAR mengubah jalur target dari symlink absolut menjadi jalur relatif; symlink ini dapat dipulihkan dengan benar sebagai berikut. Perhatikan bahwa pemulihan ini tidak diperlukan jika Anda tidak menggunakan TAR untuk mencadangkan sistem file root. Dari VPS cadangan, daftar semua symlink yang terdapat dalam arsip:
## dari VPS cadangan
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
kemudian salin daftar ke VPS target ke dalam /mnt, yang sekarang berisi sistem berkas root yang telah diisi ulang dari cadangan:
## dari VPS cadangan
# scp list_of_symlinks.txt root@target:/mnt/root/
Dari VPS target, chroot ke dalam /mnt dan jalankan skrip Bash ini untuk memulihkan semua symlink absolut:
## dari lingkungan chroot
while read -r row; do
  src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
  tgt=$(echo "$row" | grep -Po '(?<= -> ).+')

  echo "menghubungkan: $src -> $tgt"
  ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
Sistem berkas root Anda sekarang telah sepenuhnya dipulihkan dari cadangan dan dapat di-boot, tetapi Anda memerlukan bootloader yang berfungsi terlebih dahulu.
Langkah 7: Pasang GRUB2
Jika Anda berada di dalam chroot, keluar darinya dan kembali ke lingkungan live. Kemudian ikat sistem file virtual ke /mnt dan pasang partisi boot:
# mount --bind /dev  /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys
# mount /dev/vda2 /mnt/boot
Anda dapat memilih untuk menyalin konten yang sudah ada sebelumnya dari /mnt/boot/ ke partisi boot yang baru. Chroot ke dalam root pool, dan dari dalamnya, pasang hook initramfs ZFS, modul kernel ZFS, dan alat pengguna ZFS yang diperlukan untuk menghasilkan initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
kemudian pasang paket GRUB2:
# apt install grub-pc
# update-initramfs -u -k all
edit /etc/default/grub untuk mengatur pool ZFS sebagai perangkat root, dengan memodifikasi variabel GRUB_CMDLINE_LINUX:
## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
kemudian terapkan konfigurasi:
# update-grub
dan akhirnya instal GRUB2 ke MBR:
# grub-install /dev/vda
Langkah 8: Boot ke dalam pool root ZFS
Sistem sudah siap, sepenuhnya dipulihkan dari cadangan, dan dapat di-boot. Keluar dari chroot dan umount semua sistem file virtual, lalu ekspor pool root ZFS:
# exit # keluar dari chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
Anda sekarang dapat menghapus gambar ISO dari panel kontrol VPS, jika Anda menggunakan opsi ini, atau menghapus ISO dari hard drive, dan me-reboot sistem ke dalam ZFS root pool:
# reboot
Konversi sistem file root VPS dari EXT4 ke ZFS telah selesai, dan VPS akan boot ke sistem yang terinstal lama seperti biasa.

Baca lebih banyak artikel
Bahasa Arab Bengali Cina Filipino Indonesia Inggris Jepang Jerman Korea Melayu Polandia Portugis Prancis Rusia Spanyol Turki Vietnam
Bantuan  –  Indeks  –  Kebijakan Privasi  –  Kontak  –