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:
# 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 # 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>
#!/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
}
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:
# 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:
# 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:
# 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:
# apt install openssh-server
# passwd
# service restart ssh
## dari VPS cadangan
# rsync -arxz backup.d/* root@target:/mnt/
## dari VPS cadangan
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## dari VPS cadangan
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## dari VPS cadangan
# scp list_of_symlinks.txt root@target:/mnt/root/
## 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:
# 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 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
# reboot
Baca lebih banyak artikel