eşleşen hizmet bulunamadı
Çalışan Bir VPS'de Kök Dizine ZFS Kurulumu
Bu rehber, mevcut bir Linux kurulumu içeren bir VPS'de veri kaybına neden olmadan ZFS'nin kök dosya sistemi olarak nasıl kurulacağını açıklamaktadır. VPS, GRUB2 için çekirdek ve initrd ile birlikte küçük bir EXT4 önyükleme bölümüne ve sıkıştırma etkin olarak kök dizine bağlanmış büyük bir ZFS havuzuna sahip olacaktır. Çoğu komut bir live CD görüntüsünden verilecek ve VPS ISO görüntülerini bağlamayı desteklemiyorsa bir çözüm gösterilecektir.
- İçindekiler:
- 1. Verileri yedekleyin
- 2. Bir live OS görüntüsü ile önyükleme yapın
- 3. Live OS ortamına ZFS kurun
- 4. VPS diskini bölümlendirin
- 5. VPS diskine ZFS kurun
- 6. Yedeği yeni ZFS kök dosya sistemine geri yükleyin
- 7. GRUB2'yi Kur
- 8. ZFS kök havuzuna önyükleme yap
- Adım 1: Verileri yedekle
-
Eğer yedek verileri depolamak için yeterli alana sahip ikinci bir VPS veya ev bilgisayarınız varsa, bu bilgisayardan şu komutu çalıştırın:
Burada target, dönüştürülen VPS'in ana bilgisayar adıdır. Bu komut, kök dosya sisteminin tamamını SSH üzerinden yedek makineye kopyalar ve bu yedeği daha sonra hedef VPS'e geri yüklemek oldukça kolaydır. Eğer yer sıkıntısı nedeniyle yedeği sıkıştırmanız gerekiyorsa, alternatif olarak sıkıştırılmış bir TGZ arşivi oluşturabilirsiniz:
# rsync -aqrxz root@target:/ backup.d
Ancak, bir TAR arşivinden kök dosya sistemini geri yüklerken, mutlak yol adlarına sahip tüm sembolik bağlantıları yeniden oluşturmak gerekecektir, çünkü TAR bunların hedeflerini göreli yol adlarına dönüştürür, bu nedenle rsync kullanmak daha basit bir alternatiftir. TAR arşivinin nasıl doğru şekilde geri yükleneceği daha sonra gösterilecektir.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- Adım 2: Canlı bir işletim sistemi görüntüsü ile önyükleme yapın
-
ZFS'e dönüştürme işlemi, bir canlı CD işletim sistemi üzerinden gerçekleştirilecektir. VPS kontrol panelinizin yeteneklerine bağlı olarak, zaten önyüklemeye hazır bir canlı işletim sistemi görüntüsü bulunabilir. Alternatif olarak, Debian yansısından bir Debian canlı ISO'su indirebilir ve bunu VPS kontrol panelinize yükleyebilir, ardından bu ISO'dan önyükleme yapabilirsiniz; bu, VPS'iniz farklı bir dağıtım çalıştırsa bile sorunsuz çalışacaktır. Canlı işletim sistemi ISO görüntüsü kullanmaya dikkat edin, kurulum ISO'su değil, çünkü kurulum görüntüleri apt içermez ve gerekli yazılımları canlı ortama yükleyemez. Eğer VPS kontrol paneliniz kullanıcı tarafından sağlanan bir ISO görüntüsünden önyüklemeyi destekliyorsa, Adım 3'e geçin, aksi takdirde indirilen ISO'yu bir takas bölümünü, eğer varsa, EXT4'e dönüştürerek ve bu geri kazanılan depolama alanında ISO'yu saklayarak önyükleyebilirsiniz, ardından GRUB2 bu ISO'dan önyüklemeyi yapmak üzere yapılandırılabilir. Bu işlem şu şekilde yapılır:
# 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 # takas bölümünü devre dışı bırak
# mkfs.ext4 /dev/vda2 # EXT4 dosya sistemini oluştur
# mount /dev/vda2 /mnt # geri kazanılan alanı bağla
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
#!/bin/sh
exec tail -n +3 $0
# Bu dosya, özel menü girişleri eklemek için kolay bir yol sağlar. Sadece bu yorumdan sonra
# eklemek istediğiniz menü girişlerini yazın. Yukarıdaki 'exec tail' satırını değiştirmemeye
# dikkat edin.
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
- Adım 3: Canlı OS ortamına ZFS kurun
-
Canlı OS görüntüsünü başlatın ve terminaline erişin. Ardından canlı OS ortamına ZFS paketlerini kurun:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- Adım 4: VPS diskini bölümleyin
-
VPS diskini bölümlemek için iki alternatif senaryo vardır:
- Canlı ISO'yu /dev/vda2'de sakladıysanız, şu anda bu bölümü değiştiremezsiniz çünkü canlı sistem buna bağlıdır ve VPS diskine herhangi bir bölümleme yapılmayacaktır. ZFS, mevcut /dev/vda2 bölümü üzerinde biçimlendirilecek ve /dev/vda1 olduğu gibi kalacak ve daha sonra çekirdek ve initrd'yi depolamak için kalıcı önyükleme bölümü olarak yeniden kullanılacaktır. Adım 5'e atlayın.
-
Canlı ortamınız VPS diskinde depolanan bir ISO dosyasına bağlı değilse, diski GRUB2 için küçük bir önyükleme bölümü ve kalan tüm disk alanını kaplayacak büyük bir ZFS kök bölümü oluşturarak yeniden bölümlendirin. Aşağıdaki iki bölümü oluşturmak için fdisk komutunu çalıştırın:
# 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
- Adım 5: VPS diski üzerine ZFS kurun
-
/dev/vda1'i bir ZFS birimi olarak biçimlendirin:
# 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
- Adım 6: Yedekleme yeni ZFS kök dosya sistemine geri yükle
-
Yedekleme verilerini yedekleme VPS'inden almak için canlı ortama OpenSSH sunucusunu yükleyin:
# apt install openssh-server
# passwd
# service restart ssh
## yedek VPS'ten
# rsync -arxz backup.d/* root@target:/mnt/
## yedek VPS'ten
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## yedek VPS'ten
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## yedek VPS'ten
# scp list_of_symlinks.txt root@target:/mnt/root/
## chroot ortamından
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
- Adım 7: GRUB2'yi Kurun
-
Eğer chroot içindeyseniz, çıkın ve canlı ortama geri dönün. Ardından sanal dosya sistemlerini /mnt'ye bağlayın ve önyükleme bölümünü bağlayın:
# 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
- Adım 8: ZFS kök havuzuna önyükleme yapın
-
Sistem hazır, yedekten tamamen geri yüklendi ve önyükleme yapılabilir. chroot'tan çıkın ve tüm sanal dosya sistemlerini bağlantıyı kaldırın, ardından ZFS kök havuzunu dışa aktarın:
# exit # rpool chroot'tan çık
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
Daha fazla makale oku