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:
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:
# rsync -aqrxz root@target:/ backup.d
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.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- 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:
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:
# 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
kemudian instruksikan GRUB2 untuk boot dari ISO ini; edit /etc/grub.d/40_custom sebagai berikut:# 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>
dan terapkan konfigurasi dengan#!/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
}
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.update-grub2
- Langkah 3: Instal ZFS pada lingkungan OS live
-
Boot live image OS dan akses terminalnya. Kemudian instal paket ZFS pada lingkungan OS live:
Sekarang OS live memiliki modul kernel ZFS dan utilitas ZFS yang diperlukan untuk memformat sistem file root VPS Anda.
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- Langkah 4: Partisi disk VPS
-
Ada dua skenario alternatif untuk mempartisi disk VPS:
- 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.
-
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:
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:
# 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: Instal ZFS pada disk VPS
-
Format /dev/vda1 sebagai volume ZFS:
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.
# 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: Memulihkan cadangan ke sistem file root ZFS baru
-
Pasang server OpenSSH pada lingkungan live untuk menerima data cadangan dari VPS cadangan:
Untuk mempermudah, aktifkan PermitRootLogin yes di /etc/ssh/sshd_config pada lingkungan live, lalu atur kata sandi root yang aman dan mulai ulang OpenSSH:
# apt install openssh-server
dan mulai pemulihan data cadangan dari VPS cadangan, yang akan mengisi pool root ZFS yang terpasang di /mnt:# passwd
# service restart ssh
atau jika Anda menggunakan TAR untuk membuat arsip cadangan, pulihkan dengan:## dari VPS cadangan
# rsync -arxz backup.d/* root@target:/mnt/
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
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
kemudian salin daftar ke VPS target ke dalam /mnt, yang sekarang berisi sistem berkas root yang telah diisi ulang dari cadangan:## dari VPS cadangan
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
Dari VPS target, chroot ke dalam /mnt dan jalankan skrip Bash ini untuk memulihkan semua symlink absolut:## dari VPS cadangan
# scp list_of_symlinks.txt root@target:/mnt/root/
Sistem berkas root Anda sekarang telah sepenuhnya dipulihkan dari cadangan dan dapat di-boot, tetapi Anda memerlukan bootloader yang berfungsi terlebih dahulu.## 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
- 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:
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:
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount /dev/vda2 /mnt/boot
kemudian pasang paket GRUB2:# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
edit /etc/default/grub untuk mengatur pool ZFS sebagai perangkat root, dengan memodifikasi variabel GRUB_CMDLINE_LINUX:# apt install grub-pc
# update-initramfs -u -k all
kemudian terapkan konfigurasi:## this is /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
dan akhirnya instal GRUB2 ke MBR:# update-grub
# 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:
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:
# exit # keluar dari chroot rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
Konversi sistem file root VPS dari EXT4 ke ZFS telah selesai, dan VPS akan boot ke sistem yang terinstal lama seperti biasa.# reboot
Baca lebih banyak artikel
