İçeriğe geçmek için "Enter"a basın

Debian Kök Dosya Sistemi olarak ZFS

Son güncelleme tarihi 10 Nisan 2022

Yazı İçeriği

Dosya sistemi nedir?

ZFS dosya sistemine giriş yapmadan önce dosya sisteminin ne olduğuna bakalım, şu anda okuduğunuz yazıyı web tarayıcımız ile açıp görebilmemiz için bir yerlere kaydedilmiş olması gerekmekte değil mi? Evet demek için düşünmemize gerek bile yok.

Peki kaydedilen bu veri, nereye ve nasıl kaydedildi sorularını sorarsak verilecek cevaplar ne olacaktır?
Bunda da fazla düşünmeye gerek yok, hızlıca söyleyelim “Bir sunucu bilgisayar sistemi üzerindeki işletim sistemi aracılığıyla o bilgisayarın depolama alanına, diskinde bir yerlere.”

Hımmm… Bir yerlere ama nereye?

İşte bu sorunun cevabı tam olarak “Dosya Sistemi” kavramını açıklamak için başlangıç noktası. Dosya Sistemi kavramı ve çeşitleri üzerine buradan yazdığım yazılara erişebilirsiniz, yoksa merak etmeyin yakında ekleyeceğim demektir.

Bir bilgisayar sisteminde işletim sistemi ile depolama alanındaki bir verinin nereye kaydedildiği bilgisi, temelde dosya boyutu, ve disk üzerindeki yeri gibi bilgileri tutmak dosya sisteminin temel vazifelerindendir. Bir dosyaya erişebilmek için dosya sisteminde nerede olduğuna bakılarak hareket edilir.
Ana konumuz dosya sistemi ve veri erişim yöntemleri ile birlikte çeşitleri olmadığından burada bırakıyorum, daha sonra linux üzerinde fstab ile mount işlemlerini yazdığımda biraz daha detayına girmeye fırsat bulacağım.
ZFS dosya sistemi diğerlerine nazaran oldukça güzel kabiliyetlere sahip ve bu yazıda da öncelikli olarak raidz ve raid kabiliyetleri ardından dosya sistemi özelliklerine odaklanmak niyetindeyim.

ZFS nedir?

ZFS (Zettabyte File System) Sun Microsystems tarafından kapalı olarak geliştirilmeye başlanmış ve Open Solaris (Şu anda Oracle Solaris ZFS) ile birlikte kaynak kodu erişime açılmış, zamanla çeşitli alternatifleri (fork/derivative) türetilmiş bir dosya sistemidir, OpenZFS bunlardan biri ve bu yazının temelinde yer alıyor.
Tüm geliştirme aşamalarının tarihçesine bakmak isteyen buradan detaylarını inceleyebilir, ben olayın daha çok Debian Bullseye üzerinde root dosya sistemi olarak ZFS nasıl kullanılır, nasıl RAID yapılır kısmındayım.

ZFS dosya sisteminin bize sunduklarına kısaca bakacak olursak;

  • Yüksek depolama alanı desteği (İsminden de anlaşılacağı üzere Zettabyte),
  • Pool bazlı otomatik disk genişlemesi (autoexpand)
  • Filesystem bazlı kota yönetimi (quota)
  • Etkili veri sıkıştırma (gzip[1-9], lz4 …),
  • Anlık görüntü alma (Snapshot),
  • Yazarken kopyalama (copy on write),
  • Sürekli veri bütünlüğü kontrolü ve veri bozulmalarına karşı otomatik onarım (scrubbing),
  • Kriptolama (encryption),
  • Uzak sunucuya replika oluşturma (send/receive)
  • RAID-Z
    • stripe
    • mirror
    • mirror + stripe
    • raidz1
    • raidz2
    • raidz3
    • raidz1 + stripe
    • raidz2 + stripe
    • raidz3 + stripe

Yukarıdaki maddeler üzerine sırasıyla örneklemeler yapmaya çalışacağım, aşağıdaki ekran görüntüsünde ise paramızın kapasite testine yetmeyeceğini görerek devam ediyoruz 🙂

ZFS-Addressable-Capacity

Open ZFS

Gayet güzel dökümente edilmiş bir web siteleri var, detaylarını incelemek isteyen OpenZFS sitesini inceleyerek yola çıkabilir, az önce de belirttiğim gibi bu yazıda kurulum, ve ufak sürprizim ile birlikte ağırlıklı olarak kullanım ön planda olacak.

Ufak Sürpriz, şahsen otur yaz deseydiniz $300 ödemek zorunda kalacağınız installer script hediyemdir, 3 oturumda test ede ede 12 saat gibi bir sürede eğlene eğlene yazıldı. Böylece kullanım kısmına odaklanmak daha kolay olacaktır. Hali hazırda kurulum dökümanını işleri kolaylaştırsın diyerekten bash script haline çevirdim. Çalıştır, enter, enter … root ZFS dosya sistemine sahip Bullseye tamamdır 🙂

installer.sh kullanarak ZFS root dosya sistemi olan Debian Bullseye yazısında açıklandı. Aşağıdaki yazıda kendi sisteminizi kurup oynayabilirsiniz.

Kuruluma başlamadan önce bilinmesi gerekenler;

  • LiveCD ile Linux kurulumunu / kullanımını biliyor olmalısınız. (Sonraki adımda aynı işi kurduğumuz sistem ile de yapabileceğimiz için konu bir alt maddeye dayanıyor.)
  • Linux terminaline aşina olmalısınız, Live CD ile sistemi aç, openzfs dökümanındaki adımları izle veya paylaştığım scripti çalıştır, kurulum bittikten sonraki sistem açılışında /root dizininde after-reboot.sh scripti var onu da çalıştırdıktan sonra sisteminiz kullanıma hazır olacaktır. Script nasıl kullanılır kurulum nasıl yapılır sorularını başka bir yazıda cevaplamayı düşünüyorum,
  • Öncelikle Sanallaştırma sistemi üzerinde denemelisiniz ki fiziki diskinizin üstündeki tüm veri ve partition yapısı silindiğinde üzülmeyin, kısaca “use at on your own risk!” ben sorumlu değilim,
  • Bir sorun ile karşılaştığınızda bana sorabilirsiniz ama an itibariyle $25 saat + KDV üzerinden fatura keserim, zamanımı kiralıyorsanız paramı da peşin isteyeceğimi bilin 🙂
  • Gerisi çok basit, “next, next, next , reboot,”

OpenZFS -Debian Bullseye Root on ZFS dökümanı içerisindeki adımları içeren ve işleri kolaylaştıracak birkaç özellik ile birlikte hazırladığım bash script.

Bullseye üzerinde kök dosya sistemi olarak ZFS kullanımı için : installer.sh

Bu scriptin kullanımını anlatan ayrıca bir yazı hazırlayacağım hazırlandı. Söylemeye çalıştığım şey bu işlemler giriş seviye Linux kullanıcıları için biraz ağır, hali hazırda bu yazıya bakarak ZFS hakkında giriş seviye bir döküman dememe rağmen bu böyle!

Linux üzerinde, Network, Sistem Kurulumu, Kernel Modülü, Dosya Sistemi, Depolama Yönetimi, Sanallaştırma sistemi, RAID konfigürasyonu, Terminal/Konsol, Versiyon Kontrol Sistemi … gibi kavramlara aşina olmayan birisi bir hata ile karşılaştığında işin içinden çıkamayacaktır…

Raid nedir?

Uygulamalara Dön

ZFS dosya sisteminin özellikleri araasında raid topolojileri de yer almakta ve bunların uygulamasını yapacağımdan kısaca bahsetmek istedim.

RAID (Redundant Array of Inexpensive Disks) ile amaca bağlı olarak birçok diski, hız, kapasite ve veri güvenliği arasında veya üçünü bir arada kullanabileceğimiz şekilde yapılandırmamızı sağlayan kavramdır.

Uygulamada tek bir disk kullandığı denetleyiciye bağlı bir hıza ve kapasiteye sahiptir. Peki disk hızını, kapasitesini, güvenliğini artırmak istersek, bunu yaparken milyar dolarlık ar-ge bütçesi ayırmak istemezsek nasıl bir yol izlemeliyiz ? Bu ihtiyaca karşılık olarak ortaya tam olarak RAID çıkar. Üretim maliyeti olarak karşılanabilir diskleri bir arada kullanmamızı sağlar ve sanki elimizde tek bir disk varmış gibi sisteme ekleyebiliriz. Diskleri ekleme şekline bağlı olarak hız, kapasite, veri güvenliği veya üçüne birden ulaşmamızı sağlar.

  • RAID-0 seri şekilde birbirine eklenmiş disklerdir, hız, kapasite artışı sağlar ancak veri güvenliği tehlikeli boyutta düşüktür.
    İki adet 1TB diski bu şekilde eklersek toplam kapasitemiz 2TB, hızımızda teorik olarak x 2 olacak şekilde artacaktır. ancak disklerden 1 tanesi arıza verdiği anda tüm veriyi kaybetme olasılığımız yüksek.
  • RAID-1 paralel şekilde birbirine eklenmiş disklerdir, teorik olarak hızı tek bir diskin hızına eşittir, kapasitesi tek bir diskin kapasitesine eşittir ancak bir diske yazılan veri aynen ikinci diske de yazılır, anlık klonlama işlemi diyelim. Veri güvenliği iki diskin aynı anda bozulmasına bağlıdır ve görece olarak güvenlidir. 1TB iki adet diskimizi bu şekilde eklersek toplam kapasite ve hız değişmez ancak güvenli bir yapı oluşturmuş oluruz.
  • RAID-5 minimum 3 disk ile gerçekleştirilen, 1. 2. ve 3. disklerin paralel bağlı halinin eklenmesidir. Her disk üzerinde veri ile doğrulama biti disklere eşit şekilde dağıtılır. Disklerden birisinin hata vermesi sonucu diğer disklerdeki veriler kullanılarak veri yeniden oluşturulabilir, okuma hızı x2 olur ancak yazma hızı tek disk hızında kalacaktır, veri güvenliği ve kapasite artışını bir arada sunar. 3 adet 1TB disk ile 2TB kapasitede güvenli, hızlı bir yapı kurmuş oluruz.
  • RAID-6 Raid-5 ile aynı yapıdadır ancak disklere ilave doğrulama biti eklenir, veri güvenliğini artırdığı gibi disk hata payı da düşer aynı anda 2 disk hatasında da sistem çalışmaya devam edecektir, minimum 4 disk gereklidir. Okuma hızı x2 artar ancak yazma hızı değişmez.
  • RAID-10 Raid1 ve Raid 0 birleşimidir, minimum 4 adet disk ile kurulur okuma hızı x4 yazma hızı x2 artış sağlar veri güvenliği 2 diskin (non-mirror) arızalanmasına kadar tölere eder, aynı anda mirror edilmiş iki disk arızalanırsa veri kaybı demek. 1TB 4 adet disk ile 2TB kapasitede hızlı güvenli bir yapı kurmuş oluruz, kişisel tercihim bu yönde.
  • RAID-50 Raid0 ve Raid5 birleşimidir, minimum 6 adet disk gerekir ve hız, kapasite, güvenlik açısından gayet iyi bir konfigürasyondur.
  • RAID-60 Raid0 ve Raid6 birleşimidir, minimum 8 adet disk gerekir ve hız, kapasite, güvenlik açısından oldukça iyi bir konfigürasyondur.

Başkaca RAID topolojileri de mevcut ancak yukarıda sıraladıklarım piyasadaki RAID Controller ekipmanlarının büyük kısmının fiziki olarak sundukları. Yani en çok karşılaştıklarımız.

RAID nedir kısaca açıkladık, peki ZFS ile RAID nedir ona da bir bakalım.

stripe pool RAID-0 karşılığıdır, diskleri/dosyaları pool içerisine doğrudan ekleyip kullanabildiğimiz yöntem. Minimum 1 disk.

mirror RAID-1 karşılığıdır, diskleri/dosyaları mirror olarak pool içerisine ekleyip kullandığımız yöntem. Minimum 2 disk.

RAIDZ1 (Single Parity) RAID-5 karşılığıdır, diskleri/dosyaları raidz olarak pool içerisine ekleyip kullandığımız yöntem. Minimum 2 tavsiye edilen 3 disk.

RAIDZ2 (Double Parity) RAID-6 karşılığıdır, diskleri/dosyaları raidz2 olarak pool içerisine ekleyip kullandığımız yöntem. Minimum 3 tavsiye edilen 4 disk.

RAIDZ3 (Triple Parity) RAID karşılığı yok, diskleri/dosyaları raidz3 olarak pool içerisine ekleyip kullandığımız yöntem. Minimum 4 tavsiye edilen 5 disk.

mirror ile stripe pool bir arada kullanımı RAID-10 karşılığıdır, diskleri/dosyaları ;
mirror <disk0> <disk2>
mirror <disk1> <disk3>
şeklinde pool içerisine ekleyip kullandığımız yöntemdir. Minimum 4 disk.

raidz1 çoğul kullanımı RAID-50 karşılığıdır, diskleri/dosyaları ;
raidz <disk0> <disk2> <disk4>
raidz <disk1> <disk3> <disk5>
şeklinde pool içerisine ekleyip kullandığımız yöntemdir. Minimum 4 tavsiye edilen 6 disk.

raiadz2 çoğul kullanımı RAID-60 karşılığıdır, diskleri/dosyaları ;
raidz2 <disk0> <disk2> <disk4> <disk6>
raidz2 <disk1> <disk3> <disk5> <disk7>
şeklinde pool içerisine ekleyip kullandığımız yöntemdir. Minimum 6 tavsiye edilen 8 disk.

raiadz3 çoğul kullanımı veya kendisinin raid karşılığı yoktur, diskleri/dosyaları ;
raidz3 <disk0> <disk2> <disk4> <disk6> <disk8>
raidz3 <disk1> <disk3> <disk5> <disk7> <disk9>
şeklinde pool içerisine ekleyip kullandığımız yöntemdir. Minimum 8 tavsiye edilen 10 disk.

RAID için karşılaşacağımız ve uygulamalarını yapacağım tanımlar yukarıdaki gibi, hadi uygulamalarımızı yapalım.

ZFS ile RAID Uygulamaları

Uygulamaları yapmaya başlamadan önce kullandığım araç setini paylaşayım.

  • Debian Bullseye GNU/Linux Host İşletim Sistemi
  • DELL Precision M4800 Workstation Notebook, bana sağladığı avantaj e-sata ile birlikte şu anda 4 adet fiziki SSD disk sistemime takılı durumda, sanallaştırma ile birlikte fazla bir performans kaybı yaşamadan yukarıdaki örneklerin tümünü yapabileceğim manasına geliyor (8 adet sanal disk).
  • QEMU/KVM Sanallaştırma altyapısı, libvirt ile birlikte Virt Manager arayüzü kullanarak rahatlıkla VM işlemlerini yapmamı sağlıyor.
    • Yukarıda linkini verdiğim installer scripti, Debian Bullseye için hazırladım, farklı Debian sürümleri için düzenlemek isterseniz script 1002. satırda installBaseSystem fonksiyonunda ve ilaveten sürüme bağlı paket isimlerinde de değişiklik varsa tespit edip apt install satırlarında kurulan paketleri kullanacağınız sürüme göre düzenlemelisiniz.
  • Oluşturduğum sanal makinede
    • 2 x SCSI controller,
    • 8 adet sanal disk
    • 4 core CPU paylaşımı
    • 4GB ram paylaşımı
    • UEFI boot aktive edilmiş (EFI kullanımı tavsiye edilmediğinden yalnızca UEFI kurulumu yaptım, aynını tavsiye ederim.)
    • Script ile ZFS dosya sistemi üzerine kurulu Debian Bullseye (Döküman ile de kurabilirsiniz)
      mevcut durumda.
    • Özellikle Desktop (KDE) kurdum ki gündelik hayat örneklerini yapabileyim.
virsh ile VM üzerindeki sanal disklere bir bakalım.
virsh domblklist --domain 0ZFS-Testing
VM içerisinden sistemdeki disklere bakalım.
 lsblk
ZFS dosya sistemindeki aktif pool yapımıza bakalım
zpool list
ZFS dosya sistemimizdeki pool listemize mountpoint ile birlikte bakalım.
zfs list

Bu kadar bakınmak yeter haydi biraz uygulama yapalım.

İlk olarak disklerimizi kullanım amacımıza göre biçimlendirmemiz gerekiyor. Biçimlendirme işlemini hangi türde raid yapacaksak o şekilde yapıyoruz, stripe pool veya mirror farklı şekilde yapacağız. Eğer boot sektörü barındıran disk için boot partition dahil mirror ekleyeceksek partition yapısını aynen kopyalayacağız.

Burada stripe pool (raid0) veya mirror (raid1) ve diğerleri için aslen dikkat etmemiz gereken şey pool kavramı olacak, sonuç olarak pool için ekleme yapıyoruz.

Raid yapılarından burada bahsettiğimizden aşağıda doğrudan uygulamalarını yapacağız.

İşlemlere başlamadan önce özet olarak,
* zfs ve zpool komutlarını root kullanıcısı ile çalıştırıyoruz,

* disklerin bağlandığı aygıtları seçerken sdX, vdX yerine disk/by-id veya disk/by-uuid değerleri ile işlem yapıyoruz, sda, sdb, sdX gibi isimler sistemi her yeniden başlatmanızda farklı diskleri işaret edebilmekte. id veya uuid sabit! id diski çıkartmadığımız sürece değişmiyor, uuid ise diski partitionlamadığımız sürece görüntülenemiyor. Partition + UUID bizim uygulayacağımız yöntem.

* Komut tamamlama ile ilgili ufak bir bug var sanırım, zfs bash_completion çalışıyor ancak zpool completion çalışabilmesi için ilk olarak zfs [Tab][Tab] yaparak zfs alt komutlarını listelemek gerekiyor.

Bir süre sistem açılışında zfs tetikleyip ardından zpool completion çalıştırmayı denedim ama olmadı, en son hızlı çözüm olarak :

/usr/share/bash-completion/completions/

klasörü içerisindeki zfs dosyasını (completion bilgilerini içeriyor) zpool olarak aynı dizine kopyaladım ve sorun çözüldü…

zfs ve zpool komut parametreleri

Örnek ekran görüntüsünde partition işlemi yapılmamış diskte uuid değerimiz yok ancak id değerimiz var.

Disk Dosya Sistemi Temizleme İşlemi

Test için olsun, yeni kurulum olsun kullanacağımız disklerin üzerinde ne var ne yok temizledikten sonra işlem yapmak zorundayız.

root@debian:~# ls -l /dev/disk/by-id/
toplam 0
lrwxrwxrwx 1 root root  9 Mar 19 22:19 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Mar 19 22:19 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Mar 19 22:19 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 19 22:19 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4 -> ../../sda4
lrwxrwxrwx 1 root root  9 Mar 19 21:52 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1 -> ../../sdg
root@debian:~#

Yukarıdaki çıktıda da görüldüğü üzere bölümleme yapılmamış diskimiz :
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1
örneklemeyi bu disk üzerinden yapacağız, disk yüzeyi temizleme ve bölümleme işlemlerini uygulamalarda bir daha kullanmayacağım, yapılması gerekmekte ve ortak nokta olduğundan sadece burada açıklıyorum.

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1

root@debian:~# zpool labelclear -f "${DISK}"
failed to clear label for /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1

root@debian:~# wipefs -a "${DISK}"

root@debian:~# sgdisk --zap-all "${DISK}"
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

root@debian:~# 

zpool labelclear komutunun hata verme sebebi, disk daha önceden zfs pool için kullanılmamış bir disk.

Disk Partition (Disk Bölümleme) işlemi.

Partition (Bölümleme) işlemi, dökümanda belirtilen komutlar kullanılarak ilk disk oluşturulduğundan diğer diskler için de işlem benzer şekilde olacak. Az önce temizlediğimiz diski kullanalım.

Boot bölümü ile birlikte disk bölümleme işlemi.

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1

root@debian:~# sgdisk -n2:1M:+512M -t2:EF00 $DISK
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
The operation has completed successfully.

root@debian:~# sgdisk -n3:0:+1G -t3:BF01 $DISK
The operation has completed successfully.

root@debian:~# sgdisk -n4:0:0 -t4:BF00 $DISK
The operation has completed successfully.

root@debian:~# lsblk /dev/sdg 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdg      8:96   0   20G  0 disk 
├─sdg2   8:98   0  512M  0 part 
├─sdg3   8:99   0    1G  0 part 
└─sdg4   8:100  0 18,5G  0 part 

root@debian:~# 

Tek bölüm içeren bölümleme işlemi.

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1

root@debian:~# sgdisk -n1:0:0 -t1:BF00 $DISK
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
The operation has completed successfully.

root@debian:~# lsblk /dev/sdg 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdg      8:96   0  20G  0 disk 
└─sdg1   8:97   0  20G  0 part 

root@debian:~# 

Buraya kadar temel sistemimizi ve disklerimizi hazırladık, bundan sonrası işin eğlenceli tarafı.

Stripe Pool (RAID-0) yapılandırması.

İlk olarak disk üzerinde stripe pool oluşturalım, var olan diskimizi ikinci disk ile birleşecek şekilde pool oluşturalım. Ekleyeceğimiz kısım yeni diskimizin partition kısmı bu yüzden DISK değişkenine dikkat!

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1

root@debian:~# zpool add rpool $DISK

root@debian:~# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:14 with 0 errors on Fri Mar 18 03:22:53 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zfs list rpool
NAME    USED  AVAIL     REFER  MOUNTPOINT
rpool  5.64G  30.7G       96K  /

root@debian:~# s

Not: Hangi pool üzerine stripe disk ekleyeceksek o pool ve eklenecek diskleri sırasıyla yanına yazmak yeterlidir, örnekte 1 adet disk eklendi ancak elinizdeki tüm diskleri de ekleyebilirsiniz. Bu durumda komutumuz aşağıdaki şekilde olacaktır.

zpool add rpool <disk1> <disk2> <disk3> <disk4> <disk5> … <diskX>

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1

root@debian:~# zpool remove rpool $DISK

root@debian:~# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:14 with 0 errors on Fri Mar 18 03:22:53 2022
remove: Removal of vdev 1 copied 6.66M in 0h0m, completed on Sun Mar 20 15:57:47 2022
    2.98K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Not: Pool içerisinden ekli bir diski çıkartmak istediğimizde de durum basit, örneğimizde eklediğimiz diski yukarıda stripe pool üzerinden remove komutuyla ayırdık. Birden fazla disk üzerinde bu işlemi yapmak isteseydik aynı şekilde,

zpool remove rpool <disk1> <disk2> <disk3> <disk4> <disk5> … <diskX>

Bu işlemden sonra zpool status rpool komutu ile pool durumuna bakarak sistemi yeniden başlatmak mantıklı olan, otomatik olarak diğer diskler üzerine yazılmış veriyi pool üzerindeki aktif disklere çekecektir.

RAID-0 oluşturmak bu kadar basit 🙂 dez avantajı, yeni eklediğim diski çıkartacak olursam (arızalanacak olursa) kesinlikle data kaybı demek ve geri dönüşü mümkün olmayan cinsten kayıptan bahsediyorum. Gündelik hayatta mecbursanız ve yedeklemeniz sağlamsa kullanın. Avantajı x2 performans (Okuma/Yazma) ve kapasite kaybı yok.

Peki stripe pool olarak eklenmiş disk üzerinde veri varsa ve buna rağmen ayırmak istersem? hadi bakalım.

İlk olarak diskimizin kapasitesine bakalım (benim test için kullandığım 20G) ve random img dosyaları oluşturarak sistem diskinin dışına çıktığımızdan emin olalım 🙂 Mesela 16 adet random 1G dosya oluşturalım böylece 2. diski kesinlikle kullanmış olacağız, random oluşturma sebebimize daha sonra geleceğim anahtar kelimemiz dedup, eğer dosya sisteminin bu özelliği pool üzerinde aktifse aynı hash değerine sahip dosyanın dosya sisteminde kopyasına izin yok demek oluyor, /dev/zero içerisinden isterseniz 1TB kopyalayın dosya 50M seviyelerinde kalıyor.

root@debian:/home/yasin# for i in $(seq 1 16); do dd if=/dev/urandom of=test$i.img bs=1M count=1024 status=progress; done

root@debian:/home/yasin# df -h /home/yasin/
Dosyasistemi       Boy  Dolu   Boş Kull% Bağlanılan yer
rpool/home/yasin   31G   17G   15G   53% /home/yasin

root@debian:/home/yasin# zpool list rpool 
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
rpool  37.5G  21.7G  15.8G        -         -     9%    57%  1.00x    ONLINE  -

root@debian:/home/yasin# 

Hadi 2. diski pool üzerinden çıkaratalım.

root@debian:/home/yasin# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:41 with 0 errors on Sun Mar 20 16:40:56 2022
remove: Removal of vdev 2 copied 28.0M in 0h0m, completed on Sun Mar 20 16:06:45 2022
    5.88K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin# zpool remove rpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1
cannot remove scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1: out of space

root@debian:/home/yasin# 

cannot remove scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1: out of space

Bu diskin üzerine yazdım ve tek diske düşebileceğim alan yok dedi, hadi tek diske sıkışacak seviyeye düşelim ve 8G değerinde dosyayı silip tekrar deneyelim.

root@debian:/home/yasin# rm -f test1.img test2.img test3.img test4.img test5.img test6.img test7.img test8.img

root@debian:/home/yasin# df -h /home/yasin/ 
Dosyasistemi       Boy  Dolu   Boş Kull% Bağlanılan yer
rpool/home/yasin   31G  9,1G   22G   30% /home/yasin

root@debian:/home/yasin# zpool list rpool 
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
rpool  37.5G  14.7G  22.8G        -         -     5%    39%  1.00x    ONLINE  -

root@debian:/home/yasin# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:41 with 0 errors on Sun Mar 20 16:40:56 2022
remove: Removal of vdev 2 copied 28.0M in 0h0m, completed on Sun Mar 20 16:06:45 2022
    5.88K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin# zpool remove rpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1

root@debian:/home/yasin# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:41 with 0 errors on Sun Mar 20 16:40:56 2022
remove: Evacuation of /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 in progress since Sun Mar 20 16:45:19 2022
    2.29G copied out of 5.15G at 75.6M/s, 44.47% done, 0h0m to go
    5.88K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:41 with 0 errors on Sun Mar 20 16:40:56 2022
remove: Removal of vdev 3 copied 5.15G in 0h0m, completed on Sun Mar 20 16:46:03 2022
    25.2K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin# 

Disk üzerindeki veriyi diğer disklere dağıtabileceği alanı gördüğünden evacuation işlemini başlattı ve ayrılacak diskin yüzeyindeki veriyi taşıdıktan sonra diski ayırdı. Disk üzerindeki veri boyutuna göre işlem bir miktar zaman alacaktır, 20G disk üzerinde yaklaşık olarak 1dk içerisinde diski ayırdı. Eğer bu diskimiz arızalanmış olsaydı ve yedekleme sistemi kurmamış olsaydık yapabileceğimiz hiçbir şey yoktu ne yazık ki, kalıcı veri kaybı ile karşılaşmış olurduk!

Şimdi dosyalar üzerinde aynısını yapalım. Evet yanlış duymadınız oluşturacağımız dosyaları da raid gibi kullanabiliyoruz. Kullanım örneklerinde ne işe yaradığına bakacağız (zvol). Burada sadece işleme değineceğim.

2 adet img dosyası oluşturup bunları stripe pool olarak birbirine bağlayalım ardından destroy komutu ile pool yapısını silelim.

root@debian:/home/yasin/test-imgs# for i in $(seq 1 2); do dd if=/dev/zero of=test$i.img bs=1M count=2048 status=progress; done

root@debian:/home/yasin/test-imgs# ls
test1.img  test.img

root@debian:/home/yasin/test-imgs# zpool list 
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
bpool   960M  61.9M   898M        -         -     1%     6%  1.00x    ONLINE  -
rpool    18G  5.64G  12.4G        -         -     7%    31%  1.00x    ONLINE  -

root@debian:/home/yasin/test-imgs# zpool create testpool /home/yasin/test-imgs/test.img /home/yasin/test-imgs/test1.img

root@debian:/home/yasin/test-imgs# zpool list 
NAME       SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
bpool      960M  61.9M   898M        -         -     1%     6%  1.00x    ONLINE  -
rpool       18G  5.65G  12.4G        -         -     7%    31%  1.06x    ONLINE  -
testpool  3.75G   126K  3.75G        -         -     0%     0%  1.00x    ONLINE  -
root@debian:/home/yasin/test-imgs# zpool status testpool 
  pool: testpool
 state: ONLINE
config:

        NAME                               STATE     READ WRITE CKSUM
        testpool                           ONLINE       0     0     0
          /home/yasin/test-imgs/test.img   ONLINE       0     0     0
          /home/yasin/test-imgs/test1.img  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin/test-imgs# zpool destroy testpool

Mirror Pool (RAID-1) yapılandırması.

Sırada mirror pool var, diskimizi ikinci disk ile birlikte mirror çalışacak şekilde pool oluşturalım. Boot içeren diski boot pool ile birlikte mirror yapacağımızdan disk bölümleme işlemi sistemi kurarken kullandığımızın aynısı olacak, hadi başlayalım.

mirror olacak diskimizdeki partition yapısını temizleyelim ardından sistem diskindeki ile aynı yapıda bölümleyelim ve mirror konumdaki disk için de boot dosya sistemini kopyalayıp grub-install yapalım.

UYARI: Burada belirli durumlarda disk sök-tak işlemi yaptığımdan disklerin isimleri değişebiliyor, sisteminizde hangi disk sistem diski, hangisi sonradan eklediğiniz disk kendiniz takip etmelisiniz !!! kopyala yapıştır yapmayın kısacası.

Ctrl + C & Ctrl + V & Enter … aaaa Sistem diski gitti 🙂
root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2
root@debian:~# BOOT_DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0                 

root@debian:~# zpool labelclear -f "${DISK}"                                  
root@debian:~# wipefs -a "${DISK}"
root@debian:~# sgdisk --zap-all "${DISK}"

root@debian:~# sgdisk -n2:1M:+512M -t2:EF00 $DISK
root@debian:~# sgdisk -n3:0:+1G -t3:BF01 $DISK
root@debian:~# sgdisk -n4:0:0 -t4:BF00 $DISK

root@debian:~# umount /boot/efi 
root@debian:~# dd if=$BOOT_DISK-part2 of=$DISK-part2 status=progress
root@debian:~# efibootmgr -c -g -d $DISK -p 2 -L "debian-2" -l '\EFI\debian\grubx64.efi'
root@debian:~# mount /boot/efi

Ardından zpool attach komutu ile mirror pool olacak disklerimizi sisteme ekleyelim.

root@debian:~# ls -l /dev/disk/by-id/ | grep -P "^.*[^\d]+$"
lrwxrwxrwx 1 root root  9 Mar 20 18:15 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0 -> ../../sda
lrwxrwxrwx 1 root root  9 Mar 20 18:29 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2 -> ../../sdb

root@debian:~# zpool status bpool
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
config:

        NAME                                                STATE     READ WRITE CKSUM
        bpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool attach bpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3

root@debian:~# zpool status bpool
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: resilvered 63.4M in 00:00:00 with 0 errors on Sun Mar 20 18:43:10 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        bpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:14 with 0 errors on Fri Mar 18 03:22:53 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool attach rpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4

root@debian:~# zpool status rpool 
  pool: rpool
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Sun Mar 20 18:44:28 2022
        5.62G scanned at 1.41G/s, 751M issued at 188M/s, 5.62G total
        827M resilvered, 13.05% done, 00:00:26 to go
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4  ONLINE       0     0     0  (resilvering)

errors: No known data errors
root@debian:~# 

zpool status rpool komutundan takip ederek (resilvering) işleminin bittiğinden emin olalım, disk içerisindeki veriyi mirror edilen diske birebir kopyalama işlemi bittikten sonra sistem diskini doğrudan çıkartabiliriz ve sistemimiz çalışmaya devam edecektir, hadi 1. diski çıkartalım 🙂 1. sistem diskini sökmeden önceki zpool status komutunun çıktısı.

root@debian:~# zpool status
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: resilvered 63.4M in 00:00:00 with 0 errors on Sun Mar 20 18:43:10 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        bpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
  scan: resilvered 5.90G in 00:00:31 with 0 errors on Sun Mar 20 18:44:59 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Sistem diskini söktükten sonraki zpool status komutunun çıktısı. Burada bpool ONLINE görünecektir çünkü boot pool içerisinde sistem açılışı haricinde genelde bir işlem yapılmamakta, okuma yoksa disk durumu hakkında bilgilendirme de yok demektir. Sistemi kandırmak için bpool üzerinde scrub komutunu çalıştıracağım. Ardından zpool status komutunu çalıştıracağım DEGRADE durumu okuyabiliriz.

root@debian:~# zpool scrub bpool 

root@debian:~# zpool scrub rpool 

root@debian:~# zpool status
  pool: bpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 00:00:01 with 0 errors on Sun Mar 20 18:51:01 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        bpool                                                 DEGRADED     0     0     0
          mirror-0                                            DEGRADED     0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  UNAVAIL      0     0   313
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub in progress since Sun Mar 20 18:51:04 2022
        5.62G scanned at 1.41G/s, 1.01G issued at 258M/s, 5.62G total
        0B repaired, 17.91% done, 00:00:18 to go
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rpool                                                 DEGRADED     0     0     0
          mirror-0                                            DEGRADED     0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  UNAVAIL      3   116 18.3K
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Diski sistem çalışırken çıkarttım ve sistem olağan şekilde çalışmaya devam ediyor, yukarıdaki komut çıktılarından diskin artık sistemde takılı olmadığını görebiliyoruz. Sistemi yeniden başlatıp bir daha bakalım. Böylece mirror yapımız çalışıyor mu görelim. UEFI boot shell ekranına düşebiliriz korkmayın yazının başında attığımız adımlara göre uefi boot kaydı ekleyip devam etmemiz yeterli olacaktır.

Sistemi yeniden başlattıktan sonraki zpool status komutunun çıktısı aşağıdaki gibi.

root@debian:~# zpool status 
  pool: bpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 00:00:01 with 0 errors on Sun Mar 20 18:51:01 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        bpool                                                 DEGRADED     0     0     0
          mirror-0                                            DEGRADED     0     0     0
            2631372970255669592                               UNAVAIL      0     0     0  was /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 00:00:16 with 0 errors on Sun Mar 20 18:51:20 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rpool                                                 DEGRADED     0     0     0
          mirror-0                                            DEGRADED     0     0     0
            6518433092302664021                               UNAVAIL      0     0     0  was /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Diski hali hazırda çıkarttık, hadi komple mirror yapıdan da çıkartalım ve mirror olarak kullandığımız disk artık bizim sistem diskimiz olarak VM üzerinde çalışmaya devam etsin. mirror yapı kurmak için attach kullanmıştık, ayırmak için ise detach kullanacağız, ufak bir farkla, UNAVAIL olarak işaretli disk id bilgisinin olduğu yerdeki sayıyı kullanarak bu işlemi yapacağız.

root@debian:~# zpool detach bpool 2631372970255669592

root@debian:~# zpool detach rpool 6518433092302664021

root@debian:~# zpool status 
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: scrub repaired 0B in 00:00:01 with 0 errors on Sun Mar 20 18:51:01 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        bpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:16 with 0 errors on Sun Mar 20 18:51:20 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Komut çıktısında gördüğünüz gibi artık bir mirror (RAID-1) yapımız yok. Sistem ilk halindeki gibi ancak artık sonradan eklediğimiz disk ile sistemi kullanıyoruz 🙂

Dosyalar üzerinde de aynı işlemi tekrarlayalım 2 adet img dosyası oluşturup bunları mirror olarak birbirine bağlayalım ardından destroy komutu ile pool yapısını silelim.

root@debian:/home/yasin/test-imgs# for i in $(seq 1 2); do dd if=/dev/zero of=test$i.img bs=1M count=2048 status=progress; done
2048+0 kayıt girdi
2048+0 kayıt çıktı
2147483648 bytes (2,1 GB, 2,0 GiB) copied, 0,796254 s, 2,7 GB/s
2048+0 kayıt girdi
2048+0 kayıt çıktı
2147483648 bytes (2,1 GB, 2,0 GiB) copied, 0,732331 s, 2,9 GB/s

root@debian:/home/yasin/test-imgs# zpool create testpool mirror /home/yasin/test-imgs/test1.img /home/yasin/test-imgs/test2.img
root@debian:/home/yasin/test-imgs# zpool status testpool 
  pool: testpool
 state: ONLINE
config:

        NAME                                 STATE     READ WRITE CKSUM
        testpool                             ONLINE       0     0     0
          mirror-0                           ONLINE       0     0     0
            /home/yasin/test-imgs/test1.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test2.img  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin/test-imgs# zpool destroy testpool

mirror yapısı bu şekilde çalışmakta, add ve attach komutlarını bir arada kullanarak RAID-10 dizisi oluşturabiliyoruz, sırada bu var.

Mirrored Stripe Pool (RAID-10) yapılandırması.

stripe pool ve mirror pool oluşturduk, sırada bu ikisinin birleşimi olan yapı var, minimum 4 adet disk kullanarak bu yapıyı kurabiliriz. Sistemi hazır hale getirip başlıyorum.

root@debian:~# ls -alh /dev/disk/by-id/ | grep -P "^.*[^\d]+$"
drwxr-xr-x 2 root root 200 Mar 20 19:14 .
drwxr-xr-x 7 root root 140 Mar 20 19:14 ..
lrwxrwxrwx 1 root root   9 Mar 20 19:14 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2 -> ../../sdc
lrwxrwxrwx 1 root root   9 Mar 20 19:14 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3 -> ../../sdb
lrwxrwxrwx 1 root root   9 Mar 20 19:14 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4 -> ../../sda
lrwxrwxrwx 1 root root   9 Mar 20 19:14 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5 -> ../../sdd

root@debian:~# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part /boot/efi
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

root@debian:~# 

Komut çıktılarından da görüleceği üzere /dev/sdc -> /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2 diskimiz sistem diski konumunda. Diğer disklerde birkaç işlem yapacağız.

  1. Yeni eklenen disklerin üzerindeki label ve partition yapısını temizleyeceğiz,
  2. mirror olarak eklenecek diski sistem diski ile aynı şekilde bölümlendireceğiz,
  3. grub-install işlemini bu disk üzerindeki boot pool üzerinde gerçekleştireceğiz,
  4. stripe olarak kullanılacak diskleri ise tek bölüm içerecek şekilde bölümleyeceğiz,
  5. Bölümleme işlemleri bittikten sonra diskleri mirror + stripe olarak ekleyeceğiz.

Diskleri temizleme işleminde kolaylık sağlaması için ufak bir shell script, sdc benim sistem diskimin kurulu olduğu yapı bu yüzden scripti çağırırken sistem diskini argüman olarak veriyorum, diğer disklerin tümünün yüzeyindeki label ve partition yapısını silecek bu yüzden dikkatli kullanın.

wipedisks.sh

#!/usr/bin/env bash

if [ -z $1 ]; then
        echo -e "Sistem diskinin [ sdX | vdX ] türünden ismini girin.\n"
        lsblk
        exit 1
fi

for i in $(ls -l /dev/disk/by-id/ | grep -v $1 | grep -P "^.*[^\d]+$" | awk '{print "/dev/disk/by-id/"$9}'); do
        echo -e "$i\n"
        zpool labelclear -f $i
        wipefs -a $i
        sleep 1
        sgdisk --zap-all $i
        sleep 1
done

partprobe

lsblk
root@debian:~# ./wipedisks.sh sdc

/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3

failed to clear label for /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4

failed to clear label for /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5

failed to clear label for /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part /boot/efi
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

root@debian:~# 

Disk yüzeylerimizi temizledik, sırada partition yapısı oluşturmak var, bunun için de script hazırladım,

partdisks.sh

#!/usr/bin/env bash


if [[ $# -eq 0 ]]; then
        for i in $(ls -l /dev/disk/by-id/ | grep -P "^.*[^\d]+$" | awk '{print "/dev/disk/by-id/"$9 $11}'); do
                echo $i
        done

        echo -e "Bölümlenecek disk(ler)i [ sdX sdY | vdX vdY ] şeklinde argüman olarak girin.\n"
        lsblk
        exit 1
fi

read -r -p "Bölümleme türü [ Mirror (m) (default) / stripe (s) ] : " partitionType

if [ -z "${partitionType}" ] || [ "${partitionType}" == "m" ] || [ "${partitionType}" == "M" ]; then
        partitionType="mirror"
else
        partitionType="stripe"
fi


for i in "$@"; do
        DISK=$(ls -l /dev/disk/by-id/ | grep "$i" | grep -P "^.*[^\d]+$" | awk '{print "/dev/disk/by-id/"$9}')

        if [ "${partitionType}" == "mirror" ]; then
                echo -e "\n DISK=$DISK"
                sgdisk -n2:1M:+512M -t2:EF00 $DISK
                sgdisk -n3:0:+1G -t3:BF01 $DISK
                sgdisk -n4:0:0 -t4:BF00 $DISK
                sleep 2
        fi

        if [ "${partitionType}" == "stripe" ]; then
                echo -e "\n DISK=$DISK"
                sgdisk -n1:0:0 -t1:BF00 $DISK
                sleep 2
        fi
done

partprobe
sleep 2
echo -e "\n"
lsblk

Disk bölümleme işlemlerinin çıktısı

root@debian:~# ./partdisks.sh 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part /boot/efi
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2../../sdc
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3../../sdb
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4../../sda
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5../../sdd

Bölümlenecek disk(ler)i [ sdX sdY | vdX vdY ] şeklinde argüman olarak girin.

root@debian:~# ./partdisks.sh sdb
Bölümleme türü [ Mirror (m) (default) / stripe (s) ] : m

DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3

Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
The operation has completed successfully.
The operation has completed successfully.
The operation has completed successfully.

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
sdb      8:16   0   20G  0 disk 
├─sdb2   8:18   0  512M  0 part 
├─sdb3   8:19   0    1G  0 part 
└─sdb4   8:20   0 18,5G  0 part 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part /boot/efi
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

root@debian:~# ./partdisks.sh sda sdd
Bölümleme türü [ Mirror (m) (default) / stripe (s) ] : s

DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4
 
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
The operation has completed successfully.

DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5

Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Warning: Partition table header claims that the size of partition table
entries is 0 bytes, but this program  supports only 128-byte entries.
Adjusting accordingly, but partition table may be garbage.
Creating new GPT entries in memory.
The operation has completed successfully.


NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
└─sda1   8:1    0   20G  0 part 
sdb      8:16   0   20G  0 disk 
├─sdb2   8:18   0  512M  0 part 
├─sdb3   8:19   0    1G  0 part 
└─sdb4   8:20   0 18,5G  0 part 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part /boot/efi
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
└─sdd1   8:49   0   20G  0 part 
sr0     11:0    1 1024M  0 rom  

root@debian:~# 

Bölümleme işlemimiz tamamlandı, mirror olacak disk için boot klonlama ve grub install işlemlerini yapalım.

root@debian:~# DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3

root@debian:~# BOOT_DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2

root@debian:~# umount /boot/efi 

root@debian:~# dd if=$BOOT_DISK-part2 of=$DISK-part2 status=progress

root@debian:~# efibootmgr -c -g -d $DISK -p 2 -L "debian-2" -l '\EFI\debian\grubx64.efi'

root@debian:~# mount /boot/efi

root@debian:~# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
└─sda1   8:1    0   20G  0 part 
sdb      8:16   0   20G  0 disk 
├─sdb2   8:18   0  512M  0 part /boot/efi
├─sdb3   8:19   0    1G  0 part 
└─sdb4   8:20   0 18,5G  0 part 
sdc      8:32   0   20G  0 disk 
├─sdc2   8:34   0  512M  0 part 
├─sdc3   8:35   0    1G  0 part 
└─sdc4   8:36   0 18,5G  0 part 
sdd      8:48   0   20G  0 disk 
└─sdd1   8:49   0   20G  0 part 
sr0     11:0    1 1024M  0 rom 

root@debian:~#

Raid-10 yapımızı oluşturma vakti geldi.

root@debian:~# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda2   8:2    0  512M  0 part /boot/efi
├─sda3   8:3    0    1G  0 part 
└─sda4   8:4    0 18,5G  0 part 
sdb      8:16   0   20G  0 disk 
├─sdb2   8:18   0  512M  0 part 
├─sdb3   8:19   0    1G  0 part 
└─sdb4   8:20   0 18,5G  0 part 
sdc      8:32   0   20G  0 disk 
└─sdc1   8:33   0   20G  0 part 
sdd      8:48   0   20G  0 disk 
└─sdd1   8:49   0   20G  0 part 

root@debian:~# ls -l /dev/disk/by-id/ | grep -P "^.*[^\d]+$"
lrwxrwxrwx 1 root root  9 Mar 20 20:29 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0 -> ../../sda
lrwxrwxrwx 1 root root  9 Mar 20 20:29 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1 -> ../../sdb
lrwxrwxrwx 1 root root  9 Mar 20 20:29 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2 -> ../../sdc
lrwxrwxrwx 1 root root  9 Mar 20 20:29 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3 -> ../../sdd

root@debian:~# zpool status 
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
config:

        NAME                                                STATE     READ WRITE CKSUM
        bpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:14 with 0 errors on Fri Mar 18 03:22:53 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool attach bpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part3

root@debian:~# zpool attach rpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part4

root@debian:~# zpool add rpool mirror scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1

resilvering işlemi tamamlandıktan sonraki pool yapımızı kontrol edelim.

root@debian:~# zpool status 
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: resilvered 63.3M in 00:00:03 with 0 errors on Sun Mar 20 20:32:05 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        bpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
  scan: resilvered 5.93G in 00:03:43 with 0 errors on Sun Mar 20 20:36:05 2022
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rpool                                                 ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part4  ONLINE       0     0     0
          mirror-1                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Sistem diskine ait 1 adet mirror ve rpool üzerinde stripe pool olarak ekli iki adet disk. Hayırlı olsun.

Şimdi de yaptığımızı bozalım ve sistemi eski haline getirelim 🙂

root@debian:~# zpool remove rpool mirror-1

root@debian:~# zpool detach rpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part4

root@debian:~# zpool status rpool 
  pool: rpool
 state: ONLINE
  scan: resilvered 5.93G in 00:03:43 with 0 errors on Sun Mar 20 20:36:05 2022
remove: Removal of vdev 1 copied 2.48M in 0h0m, completed on Sun Mar 20 20:40:16 2022
    1.31K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool detach bpool scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part3

root@debian:~# zpool status bpool 
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: resilvered 63.3M in 00:00:03 with 0 errors on Sun Mar 20 20:32:05 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        bpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zpool status 
  pool: bpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: resilvered 63.3M in 00:00:03 with 0 errors on Sun Mar 20 20:32:05 2022
config:

        NAME                                                STATE     READ WRITE CKSUM
        bpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part3  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
  scan: resilvered 5.93G in 00:03:43 with 0 errors on Sun Mar 20 20:36:05 2022
remove: Removal of vdev 1 copied 2.48M in 0h0m, completed on Sun Mar 20 20:40:16 2022
    1.31K memory used for removed device mappings
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0-part4  ONLINE       0     0     0

errors: No known data errors

root@debian:~# 

Şimdi aynı işlemi 4 adet img dosyası üzerinde yapalım 🙂 dosyalarda boot kısmı olmadığından tek komutla işlemi tamamlayabiliriz.

root@debian:/home/yasin/test-imgs# for i in $(seq 1 4); do dd if=/dev/zero of=test$i.img bs=1M count=1024 status=progress; done

root@debian:/home/yasin/test-imgs# zpool create testpool mirror /home/yasin/test-imgs/test1.img /home/yasin/test-imgs/test2.img mirror /home/yasin/test-imgs/test3.img /home/yasin/test-imgs/test4.img

root@debian:/home/yasin/test-imgs# zpool status testpool 
  pool: testpool
 state: ONLINE
config:

        NAME                                 STATE     READ WRITE CKSUM
        testpool                             ONLINE       0     0     0
          mirror-0                           ONLINE       0     0     0
            /home/yasin/test-imgs/test1.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test2.img  ONLINE       0     0     0
          mirror-1                           ONLINE       0     0     0
            /home/yasin/test-imgs/test3.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test4.img  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin/test-imgs# zpool destroy testpool

RAIDZ1 (RAID-5 Single Parity) yapılandırması.

Minimum 2 tavsiye edilen 3 disk ile oluşturacağımız bu yapılandırmada yalnızca rpool veya bpool ve rpool dahil edebiliriz. Ben 3 diski de birbirinin eşiti olarak yapılandıracağım böylece hangi disk sökülürse sökülsün sistem yeniden başlatıldığında bile hatasız şekilde yoluna devam edebilecektir.

RAIDZ hakkında bilinmesi gereken şey ilk kurulum sırasında pool oluşturulurken raidz olarak oluşturulması gerekmekte, stripe veya mirror örneklerinde olduğu gibi ekleyerek bu yapılandırmayı kök dosya sistemi için yapamayız, installer içerisinde sorulduğunda mirror, raidz, raidz2 şeklinde belirterek bu kurulumu yapabilirsiniz.

Peki raidz olmayan bir sisteme 3 adet disk ekleyip yeni bir pool oluşturup o pool için aktif edebilir miyiz? evet, hadi yapalım.

Yukarıda wipedisks.sh ve partdisks.sh betiklerini kullanarak yoluma devam edeceğim,

root@debian:~# ./wipedisks.sh sda
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1
...
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2
...
/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3
...
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda2   8:2    0  512M  0 part /boot/efi
├─sda3   8:3    0    1G  0 part 
└─sda4   8:4    0 18,5G  0 part 
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 

root@debian:~# ./partdisks.sh sdb sdc sdd
Bölümleme türü [ Mirror (m) (default) / stripe (s) ] : s

 DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1
...
The operation has completed successfully.

 DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2
...
The operation has completed successfully.

 DISK=/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3
...
The operation has completed successfully.

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda2   8:2    0  512M  0 part /boot/efi
├─sda3   8:3    0    1G  0 part 
└─sda4   8:4    0 18,5G  0 part 
sdb      8:16   0   20G  0 disk 
└─sdb1   8:17   0   20G  0 part 
sdc      8:32   0   20G  0 disk 
└─sdc1   8:33   0   20G  0 part 
sdd      8:48   0   20G  0 disk 
└─sdd1   8:49   0   20G  0 part 
root@debian:~# 

Bölümlerimizi oluşturduk sırada bu bölümleri kullanarak raidz pool oluşturmak var. Pool oluşturulduktan sonra mountpoint belirtmemiz mount olması için yeterli.

root@debian:~# zpool create rzpool raidz /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 -f

root@debian:~# zpool status rzpool 
  pool: rzpool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rzpool                                                ONLINE       0     0     0
          raidz1-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# zfs set mountpoint=/home/yasin/rzpool rzpool

root@debian:~# zpool status rzpool 
  pool: rzpool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rzpool                                                ONLINE       0     0     0
          raidz1-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rzpool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rzpool           39G  128K   39G    1% /home/yasin/rzpool

root@debian:~# zpool destroy rzpool

Şu anda /home/yasin/rzpool klasörüm aktif durumda ve temelinde 3 adet diskle oluşturulmuş raidz var. Son verdiğim komutla rzpool yok edildi. zpool create -O mountpoint=… şeklinde pool oluşturulurken mountpoint belirtilebilir ancak yazının ilerleyen kısmında dosya sistemi üzerinde belirtilen pool için özellik açma, kapama örnekleri yapılacağından ayrı komut olarak işlemek istedim.

Aynı örneklemeyi 3 adet dosya ile gerçekleştirelim.

root@debian:/home/yasin/test-imgs# for i in $(seq 1 3); do dd if=/dev/zero of=test$i.img bs=1M count=1024; done

root@debian:/home/yasin/test-imgs# zpool create rzpool /home/yasin/test-imgs/test1.img /home/yasin/test-imgs/test2.img /home/yasin/test-imgs/test3.img

root@debian:/home/yasin/test-imgs# zpool status rzpool 
  pool: rzpool
 state: ONLINE
config:

        NAME                               STATE     READ WRITE CKSUM
        rzpool                             ONLINE       0     0     0
          /home/yasin/test-imgs/test1.img  ONLINE       0     0     0
          /home/yasin/test-imgs/test2.img  ONLINE       0     0     0
          /home/yasin/test-imgs/test3.img  ONLINE       0     0     0

errors: No known data errors

root@debian:/home/yasin/test-imgs# zpool destroy rzpool 

root@debian:/home/yasin/test-imgs# 

RAIDZ2 (RAID-6 Double Parity) yapılandırması.

Minimum 3 tavsiye edilen 4 disk gereken yapılandırmamız için sanal diskleri hazırladım, installer.sh içerisinde sorulduğunda raidz2 şeklinde raid level belirtilecek olursa kök dosya sistemi bu yapı üzerine kurulacaktır, sonradan yapma imkanımız olmadığından örneklememizi bu şekilde gerçekleştireceğim. installer script kullanımı için hazırlayacağım yazıda bunlara da değineceğimden burada bırakıyorum.

root@debian:~# ls -l /dev/disk/by-id/ | grep -P "^.*[^\d]+$"
lrwxrwxrwx 1 root root  9 Mar 21 00:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-0 -> ../../sda
lrwxrwxrwx 1 root root  9 Mar 21 00:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1 -> ../../sdb
lrwxrwxrwx 1 root root  9 Mar 21 00:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2 -> ../../sdc
lrwxrwxrwx 1 root root  9 Mar 21 00:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3 -> ../../sdd
lrwxrwxrwx 1 root root  9 Mar 21 00:20 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4 -> ../../sde

root@debian:~# zpool create -O mountpoint=/home/yasin/rz2pool rz2pool raidz2 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1

root@debian:~# zpool status rz2pool 
  pool: rz2pool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rz2pool                                               ONLINE       0     0     0
          raidz2-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rz2pool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rz2pool          39G  128K   39G    1% /home/yasin/rz2pool

root@debian:~# zpool destroy rz2pool

Dosyalar üzerinde de aynı işlemi yapalım

root@debian:/home/yasin/test-imgs# for i in $(seq 1 4); do dd if=/dev/zero of=test$i.img bs=1M count=1024; done

root@debian:/home/yasin/test-imgs# zpool create rz2pool raidz2 /home/yasin/test-imgs/test1.img /home/yasin/test-imgs/test2.img /home/yasin/test-imgs/test3.img /home/yasin/test-imgs/test4.img

root@debian:/home/yasin/test-imgs# zpool status rz2pool 
  pool: rz2pool
 state: ONLINE
config:

        NAME                                 STATE     READ WRITE CKSUM
        rz2pool                              ONLINE       0     0     0
          raidz2-0                           ONLINE       0     0     0
            /home/yasin/test-imgs/test1.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test2.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test3.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test4.img  ONLINE       0     0     0

errors: No known data errors
root@debian:/home/yasin/test-imgs# zpool destroy rz2pool 

root@debian:/home/yasin/test-imgs# 

RAIDZ3 (Triple Parity) yapılandırması.

Bu yapılandırmanın herhangi bir RAID karşılığı yok, nevi şahsına münhasır cinsten 🙂 uygulama olsun yapalım. Minimum 4 tavsiye edilen 5 disk disk ile yapılabiliyor.

root@debian:~# zpool create -O mountpoint=/home/yasin/rz3pool rz3pool raidz3 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1

root@debian:~# zpool status rz3pool 
  pool: rz3pool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rz3pool                                               ONLINE       0     0     0
          raidz3-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rz3pool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rz3pool          20G  128K   20G    1% /home/yasin/rz3pool

root@debian:~# zpool destroy rz3pool

Aynı işlemi dosyalara ile de yapalım.

root@debian:/home/yasin/test-imgs# for i in $(seq 1 4); do dd if=/dev/zero of=test$i.img bs=1M count=1024; done

root@debian:/home/yasin/test-imgs# zpool create rz3pool raidz3 /home/yasin/test-imgs/test1.img /home/yasin/test-imgs/test2.img /home/yasin/test-imgs/test3.img /home/yasin/test-imgs/test4.img

root@debian:/home/yasin/test-imgs# zpool status rz3pool 
  pool: rz3pool
 state: ONLINE
config:

        NAME                                 STATE     READ WRITE CKSUM
        rz3pool                              ONLINE       0     0     0
          raidz3-0                           ONLINE       0     0     0
            /home/yasin/test-imgs/test1.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test2.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test3.img  ONLINE       0     0     0
            /home/yasin/test-imgs/test4.img  ONLINE       0     0     0

errors: No known data errors
root@debian:/home/yasin/test-imgs# zpool destroy rz3pool 

root@debian:/home/yasin/test-imgs# 

Yukarıda raidz1, raidz2 ve raidz3 yapılandırmalarında özellikle mount klasörüne df -h ile boş alan kontrolü yaptım, raidz1 ile 3 diskten 1 tanesini, raidz2 ile 4 diskten 1 tanesini kaybediyoruz, raidz3 ile 4 diskten 3 tanesini kaybediyoruz, kaybettiğimiz diskler bize veri güvenliği olarak dönse de hız ve kapasite noktasında kayıp ve maliyet artışı demek oluyor. Şahsen mirror + stripe (RAID-10) kişisel tavsiyem ve tercihim, bu şekilde yapılandırılmış bir ZFS sistemde disk ekleme-çıkartma işlemleri oldukça kolay olduğu gibi fiyat/hız+performans+güvenlik denkleminde ortalamanın üzerinde bir değer sunuyor. İlave olarak raidzX konfigürasyona sahip bir sistemi yeniden kurmadan bazı işlemleri yapmamız mümkün değil ne yazık ki.

RAIDZ1 + stripe [ RAID-50 ] yapılandırması.

Bu işlem için minimum 4 tavsiye edilen 6 adet diske ihtiyacımız olacak, temelde birbirine seri şekilde eklenmiş 2 adet raidz yapılandırması oluşturulmuş olacak. RAID-10 yerine tercih edilebilecek bir yapılandırma, daha fazla kapasaite , performans ve veri güvenliği demek ancak kişisel tercihim halen daha değişmedi, bir arıza durumunda bakım sorunu yüzünden…

root@debian:~# zpool create -O mountpoint=/home/yasin/rzpool rzpool \
raidz \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 \
raidz \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1

root@debian:~# zpool status rzpool 
  pool: rzpool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rzpool                                                ONLINE       0     0     0
          raidz1-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0
          raidz1-1                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rzpool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rzpool           77G  128K   77G    1% /home/yasin/rzpool

root@debian:~# zpool destroy rzpool

RAIDZ2 + stripe [ RAID-60 ] yapılandırması.

Bu işlem için minimum 6 tavsiye edilen 8 adet diske ihtiyacımız olacak, temelde birbirine seri şekilde eklenmiş 2 adet raidz2 yapılandırması oluşturulmuş olacak.

root@debian:~# zpool create -O mountpoint=/home/yasin/rz2pool rz2pool \
raidz2 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-0-part1 \
raidz2 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-1-part1
        
root@debian:~# zpool status rz2pool 
  pool: rz2pool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rz2pool                                               ONLINE       0     0     0
          raidz2-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-0-part1  ONLINE       0     0     0
          raidz2-1                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rz2pool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rz2pool          77G  128K   77G    1% /home/yasin/rz2pool

root@debian:~# zpool destroy rz2pool

RAIDZ3 + stripe yapılandırması.

Bu işlem için minimum 8 tavsiye edilen 10 adet diske ihtiyacımız olacak, temelde birbirine seri şekilde eklenmiş 2 adet raidz3 yapılandırması oluşturulmuş olacak.

root@debian:~# zpool create -O mountpoint=/home/yasin/rz3pool rz3pool \
raidz3 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-0-part1 \
raidz3 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1 \
        /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-1-part1
        
root@debian:~# zpool status rz3pool 
  pool: rz3pool
 state: ONLINE
config:

        NAME                                                  STATE     READ WRITE CKSUM
        rz3pool                                               ONLINE       0     0     0
          raidz3-0                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-1-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-2-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-3-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-0-part1  ONLINE       0     0     0
          raidz3-1                                            ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-4-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-6-part1  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-0-0-1-part1  ONLINE       0     0     0

errors: No known data errors

root@debian:~# df -h /home/yasin/rz3pool/
Dosyasistemi     Boy  Dolu   Boş Kull% Bağlanılan yer
rz3pool          39G  128K   39G    1% /home/yasin/rz3pool

root@debian:~# zpool destroy rz3pool 

Yapılandırma Özeti :

  • stripe (RAID-0) = 2 x 20G (40G) disk : 40G kullanılabilir alan ( %100 ).
  • mirror (RAID-1) = 2 x 20G (40G) disk : 20G kullanılabilir alan ( %50 ).
  • RAIDZ1 (Single Parity) = 3 x 20G (60G) disk : 39G kullanılabilir alan ( %66 ).
  • RAIDZ2 (Double Parity) = 4 x 20G (80G) disk : 39G kullanılabilir alan ( %50 ).
  • RAIDZ3 (Triple Parity) = 4 x 20G (80G) disk : 20G kullanılabilir alan ( %25 ).
  • RAIDZ1 + stripe [RAID-50] (Single Parity) = 6 x 20G (120G) disk : 77G kullanılabilir alan ( %66 ).
  • RAIDZ2 + stripe [RAID-60] (Double Parity) = 8 x 20G (160G) disk : 77G kullanılabilir alan ( %50 ).
  • RAIDZ3 + stripe (Triple Parity) = 8 x 20G (160G) disk : 39G kullanılabilir alan ( %25 ).

Sonraki adım

Yazının bu seviyede uzayacağını tahmin etmemiştim, zfs komutları, dosya sistemi özellikleri, snapshot, send-receive, compression, quota, zvol, ayrıca hazırlamam gerekecek bir yazı halini aldı. installer script kullanımı ve dosya sisteminin gündelik kullanımı olmak üzere 1 adet yazı borcum var, takipte kalın.

ZFS dosya sistemine sahip bir sistemin kullanımı üzerine örnekleri ile yazım, söz verdiğim gibi yayında.

Allah’a emanet olun.

2 Yorum

Yorumlar kapatıldı ancak, geri izlemeler ve pingback'ler açık.