RAID 10 nedir ve VPS sunucularda neden tercih edilir?
RAID 1, 5, 6 ve 10 seviyelerinin veri kaybı risklerini, disk yeniden oluşturma maliyetlerini ve /proc/mdstat raporlarını okuma yöntemlerini bu rehberde bulabilirsiniz.
RAID 10 nedir ve VPS sağlayıcıları neden bunu kullanır
RAID 10, çoğu VPS sağlayıcısının sanallaştırılmış NVMe (non-volatile memory express) sürücüler üzerinde kullandığı depolama düzenidir. Her sürücüyü bir eşiyle aynalar ve ardından veriyi bu aynalanmış çiftler üzerinde şeritler (striping) halinde dağıtır. Bir sürücü arızalandığında dizi durmaz; onarım işlemi, tüm dizideki diğer sürücüleri okuyarak yeniden hesaplama yapmak yerine, hayatta kalan eşten doğrudan kopyalama yapılarak gerçekleştirilir.
RAID, bağımsız disklerin yedekli dizisi anlamına gelir. Tek bir görevi vardır: bir disk arızalandığında veya değiştirilirken makinenin hizmet vermeye devam etmesini sağlamak. Bu görev sürekliliktir (availability); süreklilik ise veri güvenliği (safety) ile aynı şey değildir.
RAID, yazma işlemlerinizi kopyalar. rm -rf /srv bir yazma işlemidir. Aynanın her iki yarısı da dizini aynı milisaniye içinde siler ve dizi sonrasında kendini sorunsuz olarak raporlamaya devam eder.
Bu cümleyi unutmayın. Bu sayfanın geri kalanı, her seviyenin hangi durumlara karşı koruma sağladığını ve her yazma işleminde size maliyetinin ne olduğunu açıklar. Son bölümler, sahip olduğunuz bir makinede dizinin durumunu okumak için kullanılan komutları ve RAID'in hiçbir zaman kapsamadığı arıza türlerini içerir.
Bir barındırma hizmeti alıcısının gerçekte karşılaştığı seviyeler: 1, 5, 6 ve 10
Bir plan sayfası bir sayı belirtir ve orada durur. Bu sayı iki soruyu yanıtlar: kaç sürücü bozulabilir ve her yazma işleminin maliyeti nedir.
RAID 1 bir aynalamadır. İki sürücü özdeş blokları tutar. Her yazma işlemi her ikisine de gider. Her iki sürücü de okuma isteğini karşılayabilir. Bir sürücü veri kaybı olmadan bozulabilir ve ham kapasitenin yarısı kullanılabilir durumdadır. Hesaplanacak bir eşlik (parity) verisi yoktur, bu nedenle yazma yolu kısadır.
RAID 5, şerit başına bir eşlik bloğu ile şeritlemedir. n adet sürücü ile n-1 adet sürücünün kapasitesini elde edersiniz ve dizi tam olarak bir arızayı tolere edebilir. Eşlik verisi tek bir özel sürücüde bulunmaz. Tüm sürücüler arasında döner, böylece her sürücü hem veri hem de eşlik verisi taşır.
RAID 6, her şeride ikinci ve bağımsız bir eşlik bloğu ekler, genellikle P ve Q olarak yazılır. Aynı anda herhangi iki sürücünün bozulmasına karşı dayanıklıdır. Bu, kulağa geldiğinden daha önemlidir; çünkü ikinci arıza genellikle ilkinin onarımı sırasında meydana gelir.
RAID 10, aynaların şeritlemesidir. Sürücüler çiftler halinde aynalanır ve veriler bu çiftler arasında dağıtılır. Kullanılabilir kapasite, RAID 1 ile aynı şekilde ham toplamın yarısıdır, buna ek olarak şeritlemenin paralelliği de mevcuttur.
Bunu RAID 1+0 olarak da yazıldığını göreceksiniz; bu dürüst bir tanımdır: önce aynala, sonra aynalar üzerinde şeritle. RAID 0+1 diğer sıradır; önce şeritle, sonra iki şeridi aynala. Bu daha kötüdür, çünkü bir sürücü arızası tüm şeridi devre dışı bırakır ve onarım işlemi diğer tarafın tamamını kopyalamak zorundadır.
Linux, bilinmesi gereken özel bir durumdur. Çekirdeğin raid10 yapısı, iki katmanlı bir yapı yerine tek bir kişiliğe sahiptir; bu nedenle tek sayıda sürücü üzerinde çalışır ve iç içe geçmiş bir kurulumun ifade edemeyeceği düzenlere (near, far, offset) sahiptir. Linux makinesindeki durum satırının iki dizi ismi vermek yerine 2 near-copies demesinin nedeni budur.
The data behind this chart
[
{
"label": "RAID 1 (four mirrored pairs)",
"usable_tb": 4,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 4
},
{
"label": "RAID 5",
"usable_tb": 7,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 1
},
{
"label": "RAID 6",
"usable_tb": 6,
"worst_case_drives_lost": 2,
"best_case_drives_lost": 2
},
{
"label": "RAID 10",
"usable_tb": 4,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 4
}
]Sekiz adet 1 TB sürücü, RAID 5 altında 7 TB, RAID 10 altında ise 4 TB kullanılabilir alan sağlar. Bu fark gerçek bir maliyettir ve eşlik verisinin sürekli önerilmesinin nedeni budur. RAID 6, herhangi bir düzende 2 arızaya karşı dayanıklıdır. RAID 10 ise yalnızca 1 arızayı garanti eder; çünkü tehlikeli olan ikinci arıza, zaten bozulmuş olan sürücünün eşine denk gelen arızadır. Hiçbir iki arıza aynı çifti paylaşmadığında 4 adede kadar arızayı tolere edebilir, ancak bu bir tasarım özelliğinden ziyade şanstır.
Her yazma işleminde her seviyenin maliyeti
Bir mirror (yansıtma) işlemine yapılan yazma, her iki üyeye aynı anda gönderilen iki yazma işlemidir. Bir parity (eşlik) şeridine yapılan yazma daha fazla iş yükü gerektirir; çünkü o şeride ait eşlik bloğu artık hatalıdır ve yeniden hesaplanması gerekir.
Denetleyici, eşliği yalnızca yeni bloktan yola çıkarak yeniden hesaplayamaz. Öncelikle eski veri bloğuna ve eski eşlik bloğuna ihtiyaç duyar. Bu nedenle RAID 5 üzerindeki küçük ve rastgele bir yazma işlemi; okuma, okuma, yazma, yazma şeklinde gerçekleşir. RAID 6'nın korunması gereken ikinci bir sendromu olduğu için aynı yazma işlemi; okuma, okuma, okuma, yazma, yazma, yazma şeklinde gerçekleşir.
The data behind this chart
[
{
"label": "RAID 1 (2 drives)",
"write_ops_per_host_write": 2,
"drives_read_to_rebuild": 1
},
{
"label": "RAID 5 (8 drives)",
"write_ops_per_host_write": 4,
"drives_read_to_rebuild": 7
},
{
"label": "RAID 6 (8 drives)",
"write_ops_per_host_write": 6,
"drives_read_to_rebuild": 7
},
{
"label": "RAID 10 (8 drives)",
"write_ops_per_host_write": 2,
"drives_read_to_rebuild": 1
}
]Küçük ve rastgele bir yazma işlemi, RAID 6 üzerinde 6 cihaz işlemine, RAID 10 üzerinde ise 2 cihaz işlemine mal olur. Bu sayılar, gecikme süresindeki farkı tam olarak yansıtmaz. İki mirror yazma işlemi paralel olarak gönderilir, bu nedenle konuk sistem ikisinden yavaş olanın tamamlanmasını bekler. Eşlik yolu ise yeni eşlik hesaplanmadan önce bitmesi gereken bir okuma işlemi içerir; bu yüzden konuk sistem önce bir okuma, ardından bir yazma işleminin tamamlanmasını bekler. Yoğun bir sunucuda bu okuma işlemi, diğer tüm G/Ç (I/O) işlemlerinin arkasında kuyruğa girer.
Önemli bir istisna mevcuttur. Tüm şeridi dolduracak kadar büyük bir yazma işlemi için eski veriye ihtiyaç duyulmaz; çünkü şeritteki her blok değiştirilmektedir. Eşlik, halihazırda bellekte bulunan verilerden hesaplanır ve maliyet fazladan bir yazma işlemine düşer. RAID 5'in sıralı (sequential) performans testlerinde iyi görünmesinin ancak birçok kiracıdan gelen küçük yazma işlemlerinin olduğu karma yüklerde kötü performans göstermesinin nedeni budur. Gerçekte çalıştırdığınız modeli test edin: bir VPS diskini doğru şekilde kıyaslamak, tek bir büyük dd ile değil, gerçekçi bir kuyruk derinliğinde rastgele G/Ç (I/O) yapmak anlamına gelir.
Yeniden oluşturma işleminin neden tehlikeli olduğu
Bir parite yeniden oluşturma işlemi, eksik sürücüyü diğer her şeyden yola çıkarak yeniden inşa etmek zorundadır; bu nedenle ilk bloktan son bloğa kadar 7 adet çalışan sürücüyü okur. Bir RAID 10 yeniden oluşturma işlemi ise sadece 1 adet sürücüyü okur: ölü sürücünün ayna eşi ve başka hiçbir şey.
Bu durumdan iki maliyet doğar. Birincisi zamandır; çünkü yeniden oluşturma işlemi, en yavaş çalışan sürücü ve üzerine eklenen parite hesaplamaları ile sınırlıdır. İkincisi ise yüktür. Bir parite kümesindeki her sürücü, işlem süresi boyunca meşguldür; bu nedenle o düğümdeki her konuk sistem, işlem bitene kadar daha yüksek gecikme süreleri yaşar. RAID 10 yapısında ise sadece bir çift meşguldür ve diğer çiftler normal hızlarında hizmet vermeye devam eder.
Aynı zaman aralığında bir doğruluk riski de mevcuttur. Bir sürücüsü ölü olan RAID 5 dizisinin artık yedekliliği kalmamıştır; bu nedenle çalışan sürücülerden herhangi birindeki okunamaz bir sektör artık kurtarılamaz durumdadır. Yeniden oluşturma, bir yıldır kimsenin dokunmadığı sektörler de dahil olmak üzere her sektörü okuyan tek işlemdir. Yayınlanan veri sayfaları, tüketici sınıfı bir sabit diskin 10^14 bit okumada yaklaşık bir kurtarılamaz okuma hatası verdiğini, kurumsal bir NVMe sürücünün ise 10^17 veya daha iyi bir orana sahip olduğunu belirtir. Bunlar ölçümden ziyade üretici spesifikasyonlarıdır; ancak bu oran, RAID 5 yeniden oluşturma işleminin başarısız olacağına dair eski uyarının neden büyük dönen diskler için yazıldığını ve NVMe üzerinde neden çok daha zayıf kaldığını açıklar. Yük argümanı ise her ortam için geçerlidir.
Yeniden oluşturma işlemi bulmadan önce gizli hataları bulmak için scrubbing işlemini kullanın. Debian ve Ubuntu, md dizileri için periyodik bir scrub işlemi ile gelir; mekanizma sürümler arasında farklılık gösterdiğinden hangisine sahip olduğunuzu kontrol edin ve ardından manuel olarak bir tarama başlatın.
systemctl list-timers --all | grep -i mdcheck
ls -l /etc/cron.d/mdadm
echo check | sudo tee /sys/block/md0/md/sync_action
cat /sys/block/md0/md/mismatch_cntsync_action, tarama bittiğinde idle değerine döner ve mismatch_cnt, 0 değerini göstermelidir. Bir ayna üzerinde sıfırdan büyük bir sayı, iki yarının birbiriyle uyuşmadığı ve çekirdeğin hangisinin doğru olduğunu söyleyemediği anlamına gelir; çünkü kopyaların hiçbiri sağlama toplamı (checksum) taşımaz. Bazı uyuşmazlıklar zararsızdır ve genellikle takas (swap) bölümleri bunun kaynağıdır: çekirdek, altında değişen bir sayfayı yazıyor olabilir. Bir veri dizisinde artan bir sayı, değiştirilmesi gereken bir sürücüye işaret eder.
VPS sağlayıcıları NVMe için neden standart olarak RAID 10 kullanır
Bir hipervizör düğümü tek bir iş yükü çalıştırmaz. Birbiriyle ilişkisiz düzinelerce konuk sistemi çalıştırır ve bunların G/Ç işlemleri, aralarında yerellik bulunmayan küçük yazma akışları şeklinde birbirine karışmış olarak gelir. Bu, eşlik (parity) okuma-değiştirme-yazma döngüsünün en yüksek maliyete yol açtığı tam modeldir ve paylaşımlı bir düğümün gün boyu maruz kaldığı model de budur.
Yeniden oluşturma (rebuild) davranışını da eklediğinizde seçim kendiliğinden ortaya çıkar. Eşlik tabanlı bir düğümde bozulan bir sürücü, sunucudaki her konuğun performansını saatlerce yavaşlatır. RAID 10 düğümünde bozulan bir sürücü ise sadece bir çifti yavaşlatır ve kopyalama işlemi sürücü hızında ardışık olarak gerçekleşir. Sağlayıcılar ani yükselmeler göstermeyen bir gecikme süresi sattıkları için, bunu kapasite ile satın alırlar: ham NVMe kapasitesinin yarısı yansıtma (mirror) için ayrılır.
Sürücü boyutları da aynı yönde bir zorunluluk yaratır. Sürücüler büyüdükçe yeniden oluşturma süresi uzar; eşlik tabanlı yapılarda bu süre, her şeyin yavaşladığı ve hiçbir verinin korunmadığı bir aralıktır. Sanallaştırma için yapılan ZFS kurulumlarında geniş raidz yapıları yerine yansıtılmış vdev havuzlarının tercih edilmesinin nedeni de budur: bir yansıtma yeniden gümüşleme (resilver) işlemi, yalnızca kullanımda olan blokları tek bir çift üzerinde kopyalar.
Bunların hiçbiri RAID 10'un her yerde doğru çözüm olduğu anlamına gelmez. Bir yedekleme hedefi uzun ardışık yazmalarla yazılır ve nadiren okunur, bu nedenle orada RAID 6 daha iyi bir seçenektir. İki sürücü arızasına karşı koruma sağlar ve kapasitenin büyük kısmını geri kazandırır. Kararı sayı değil, iş yükü belirler. Bugün seçtiğiniz bir plan için, genellikle ortamın kendisi üzerindeki yerleşim düzeninden daha önemlidir ve SATA SSD'den NVMe'ye geçiş, her iki taraftaki herhangi bir RAID farkından daha büyüktür.
/proc/mdstat dosyasını okuma
Bu komutları, dizinin sahibi olduğunuz bir makinede çalıştırın: özel bir sunucu, evdeki bir cihaz veya kendinizin oluşturduğu iki bağlı birime sahip bir VPS. Kendi çıktınızı okuyun. Aşağıdaki bloklar, elde ettiğiniz çıktının biçimiyle eşleştirebilmeniz için yazılmış örneklerdir.
cat /proc/mdstat
sudo mdadm --detail /dev/md0
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTSSağlıklı, dört sürücülü bir RAID 10 buna yakın bir çıktı verir.
Personalities : [raid1] [raid10]
md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2] nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 0/30 pages [0KB], 65536KB chunk
unused devices: <none>Bu çıktının her parçası bilgi taşır.
Personalities, çalışan çekirdeğin yüklediği md modüllerini listeler. Oradaraid10görünmesi, kodun kullanılabilir olduğu anlamına gelir, başka bir anlam taşımaz.md0 : active raid10, dizi aygıtı, durumu ve seviyesidir.- Ondan sonra gelen isimler üyelerdir. Köşeli parantez içindeki sayı, satırdaki konumu değil, dizi meta verisindeki aygıt dizinidir ve her zaman yuva numarasını göstermez.
- Bir sürücü değişiminden sonra yeni üye genellikle doldurduğu yuvadan daha yüksek bir dizin numarasını korur, bu nedenle
nvme4n1p3[4], 2. yuvada oturuyor olabilir.mdadm --detail, gerçek yuvayıRaidDevicesütununda yazdırır, bu yüzden farkın önemli olduğu durumlarda bunu kullanın. - Bir üyenin yanındaki
(F), hatalı olduğu anlamına gelir.(S)ise yedek demektir: mevcuttur, boştadır ve bir şeyin bozulmasını bekliyordur. 3906764800 blocks super 1.2, 1 KiB blok cinsinden kullanılabilir boyut ve ardından meta veri biçimidir.512K chunks 2 near-copies, şerit yığın (stripe chunk) boyutu ve RAID 10 düzenidir; burada her bloğun iki kopyası yan yana tutulur.[4/4], dizinin beklediği üye sayısı ve ardından şu anda senkronize olan üye sayısıdır.[UUUU], yuva sırasına göre yuva başına bir karakterdir.U, çalışan ve senkronize bir yuvadır._ise içinde hiçbir şeyin çalışmadığı bir yuvadır.bitmap:, yazma amacı bit eşlemidir (write intent bitmap). Hangi bölgelerin yazıldığını kaydeder, böylece sistemden düşen ve geri gelen bir üye tüm sürücü yerine sadece bu bölgeleri yeniden senkronize eder.
Bir şeyler yanlış gittiğinde [4/3] ve [UU_U] ne anlama gelir
Bozulmuş bir dizi şu şekilde görünür.
md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2](F) nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]İki parantezi birlikte okuyun. [4/3], dört yuvadan birinin katkıda bulunmadığını söyler. [UU_U], alt çizgi üçüncü karakter olduğu ve yuvalar sıfırdan numaralandırıldığı için 2. yuvanın devre dışı olduğunu belirtir. (F) bayrağı, aygıtı yalnızca başarısız sürücü hala bağlıyken isimlendirir. Sürücüyü makineden çıkardığınızda, alt çizgi kalırken isim satırdan kaybolur.
Dizi tüm bu süreç boyunca hizmet vermeye devam eder ve RAID 10 üzerinde genellikle tam hıza yakın çalışır; bu yüzden kimse durumu hissederek fark etmez. Bir şeyin sizi uyarması gerekir.
grep -i mailaddr /etc/mdadm/mdadm.conf
sudo mdadm --monitor --scan --oneshot --test
systemctl list-units --all | grep -i mdmdadm paketi, /etc/mdadm/mdadm.conf içindeki MAILADDR dosyasını okuyan bir izleme daemon'ı kurar. Birim ismi sürümler arasında değiştiği için, tahmin etmek yerine son komutla bulun. --test çalıştırması, her dizi için hemen bir mesaj gönderir. Bundan sonra gelen boş bir gelen kutusu, posta yolunun bozuk olduğu anlamına gelir; dolayısıyla aslında ilgilendiğiniz mesaj da aynı şekilde kaybolmuş olur.
Bir değişim sırasında yeniden oluşturma (rebuild) yapılıyorsa, dizinin altında bir ilerleme satırı görünür.
md0 : active raid10 nvme4n1p3[4] nvme3n1p3[3] nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]
[==>..................] recovery = 12.4% (242012928/1953382400) finish=63.1min speed=452000K/secrecovery, yedek bir sürücüye yapılan yeniden oluşturmadır. resync, yeni oluşturulan bir dizideki ilk tutarlılık geçişidir. check, yukarıda tetiklediğiniz tarama (scrub) işlemidir. Parantez içindeki çift, aygıt başına toplam değere karşı 1 KiB blok cinsinden ilerlemedir ve finish, çekirdeğin mevcut hıza göre tahmini süresidir. Bu hız /proc/sys/dev/raid/speed_limit_min ve speed_limit_max ile sınırlandırılmıştır; bu sınırlamalar, yeniden oluşturma işleminin üretim I/O'sunu tüketmemesi için mevcuttur.
Yeniden oluşturma sırasında tam bir mdadm --detail
/dev/md0:
Version : 1.2
Creation Time : Tue Mar 10 09:14:22 2026
Raid Level : raid10
Array Size : 3906764800 (3.64 TiB 4.00 TB)
Used Dev Size : 1953382400 (1.82 TiB 2.00 TB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Aug 5 11:02:41 2026
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Rebuild Status : 12% complete
Name : storage:0
Events : 4184
Number Major Minor RaidDevice State
0 259 3 0 active sync set-A /dev/nvme0n1p3
1 259 7 1 active sync set-B /dev/nvme1n1p3
4 259 11 2 spare rebuilding /dev/nvme4n1p3
3 259 15 3 active sync set-B /dev/nvme3n1p3Number sütunu, /proc/mdstat içindeki parantezlerde yazdırılan meta veri dizinidir. RaidDevice sütunu, [UU_U] dizisindeki konum olan yuvadır. Burada farklılık gösterirler çünkü aygıt 4, 2. yuvayı tutan sürücünün yerini almıştır. set-A ve set-B, her aynanın iki yarısını isimlendirir; bu nedenle, aynı veriyi tutan aynı çift içindeki set-A'nın bir üyesi ve set-B'nin bir üyesi, birlikte kaybetmemeniz gereken şeydir.
Sahibi olduğunuz bir dizide sürücü değiştirmek dört komuttan oluşur ve sonuncusu kontroldür.
sudo mdadm --manage /dev/md0 --fail /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --remove /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --add /dev/nvme4n1p3
cat /proc/mdstatKurtarma satırı bir veya iki saniye içinde görünmelidir. Yedek bölüm, mdadm --detail içindeki Used Dev Size değerinden en az o kadar büyük olmalıdır; biraz daha küçük bir bölüm bile not large enough to join array biçimindeki bir mesajla reddedilir. Yeni sürücüyü eklemeden önce eski sürücüyle eşleşecek şekilde bölümleyin.
Bir VPS içerisinden neleri görüp neleri göremeyeceğiniz
Çoğu konuk sistem, ana makinenin RAID yapısını göremez; bu durum tasarım gereğidir. Hipervizör size tek bir sanal disk sunar. Bu diskin NVMe sürücülerinden oluşan bir RAID 10 havuzundan mı ayrıldığı yoksa tek bir sürücü üzerinde mi bulunduğu ana makinenin bir özelliğidir ve konuk sisteminiz içerisinde görünmez.
systemd-detect-virt
lsblk -d -o NAME,SIZE,ROTA,MODEL
cat /proc/mdstatsystemd-detect-virt komutu, bir KVM konuğunda kvm, lxc gibi bir konteyner türünde konteyner yapısını ve bare metal üzerinde none çıktısını verir. Bir KVM konuğunda genellikle lsblk içerisinde tek bir vda veya sda görürsünüz ve /proc/mdstat içerisinde hiçbir dizi (array) bulunmaz; çünkü konuk sistemin içinde böyle bir yapı yoktur.
Konteyner tabanlı bir VPS üzerinde okunan veriler güvenilir değildir. Konteynerler ana makine çekirdeğini paylaşır ve /proc bölümlerinin bazı kısımları ad alanlarına (namespaced) ayrılmamıştır; bu nedenle orada okuduğunuz bilgiler size ayrılan dilimden ziyade ana makineyi tanımlıyor olabilir. Bunların hiçbirini kendi depolama alanınızla ilgili bir gerçek olarak kabul etmeyin. Düzenin ne olduğunu sağlayıcınıza sorun ve sizin için önemliyse yanıtı yazılı olarak alın.
İçeriden kontrol edebileceğiniz şey, size verilen diskin davranışıdır. VPS diskinizin gerçekten NVMe olup olmadığını kontrol etme konusu, gerçek verileri raporlayan komutları ele alır; bir SSD VPS'in aslında neleri içerdiği konusu ise plan sayfasındaki etiketin neyi iddia ettiğini açıklar.
VPS içinde RAID kullanmalı mısınız?
Genellikle hayır; bunun nedeni hata etki alanlarıdır (failure domains). Bir VPS'e iki birim (volume) bağlayıp bunları mdadm ile yansıtırsanız, her iki birim de aynı fiziksel dizide, aynı düğümde ve aynı güç kaynağının arkasında bulunabilir. Zaten sahip olduğunuz bir yedeklilik için her yazma işleminin maliyetini ikiye katlamış olursunuz ve yine de tek bir kritik arızada her iki kopyayı da kaybedersiniz.
Bu işlem, sağlayıcınız birimlerin farklı hata etki alanlarında bulunduğunu belgelediğinde veya doğrudan erişebildiğiniz disklere sahip bir dedicated sunucu üzerinde çalıştığınızda anlamlıdır. Aksi takdirde harcanan çaba, makine dışına alınan yedeklemeler için kullanıldığında daha verimli olur.
RAID'in sizi korumadığı durumlar
RAID yalnızca tek bir olayı kapsar: düzgün çalışmayı durduran bir disk. Aşağıdaki tüm işlemler geçerli bir yazma işlemi olarak kabul edildiğinden, dizi bunları her kopyaya uygular ve kendini sağlıklı olarak raporlar.
- Silme işlemleri. Yanlış dizin içinde yapılan bir
rm -rfveya yol değişkeni tanımlanmamış bir dağıtım betiği. Dizi, geçerli bir yazma işlemi görür ve bunu iki kez gerçekleştirir. - Fidye yazılımları. Şifreleme bir yazma işlemidir. Sağlıklı bir dizi, şifrelenmiş sürümü yansıtılan her iki tarafa da kaydeder.
- Hatalı bir uygulama. Veritabanınıza çöp veri yazan bir hata, aynı çöp veriyi yedekli diske de yazar.
- Düğümün tamamı. Başarısız olan bir ana makine veya yanlışlıkla askıya alınan bir hesap. Bir dizi aynı anda hem kusursuz çalışıp hem de erişilemez olabilir.
- Bir hafta sonraki siz. Pazartesi günü sildiğiniz dosya, Pazartesi günü tüm disklerden silinmiş olur. Dosyayı yalnızca o tarihten önce alınmış bir kopya geri getirebilir.
Aynı depolama birimi üzerindeki anlık görüntüler (snapshots) de çözüm değildir. Silme işlemlerine karşı yardımcı olurlar ancak üzerinde bulundukları diziyle birlikte yok olurlar. Bir yedeği yedek yapan özellik, başka bir yerde bulunmasıdır. restic ile şifrelenmiş sunucu dışı yedekler, bu sayfanın diğer yarısını oluşturur: dizi, bozulan bir diskte bile hizmet vermeye devam etmenizi sağlar; restic ise dizinin memnuniyetle gerçekleştirdiği bir yazma işlemi sonucunda oluşan hasarı geri almanıza yardımcı olur.
FAQ
RAID 10 kullanmak yedekleme ihtiyacını ortadan kaldırır mı?
Hayır. RAID 10, bir diskin çalışmayı durdurmasına karşı koruma sağlar. Geçerli her yazma işlemini yansıtılan (mirror) her iki tarafa da uygular; bu nedenle bir silme işlemi veya fidye yazılımı saldırısı, yedekli diske aynı anda ulaşır. Dizi, kendi bakış açısından hiçbir şey başarısız olmadığı için kendini temiz olarak raporlar. Makine dışında tutulan kopyalara hala ihtiyacınız vardır ve bunların çalıştığını kanıtlamak için zaman zaman bir geri yükleme testi yapmanız gerekir.
VPS sağlayıcıları neden RAID 5 veya RAID 6 yerine RAID 10 tercih eder?
Bunun, her ikisi de küçük rastgele yazma işlemleriyle ilgili iki nedeni vardır. Bir eşlik (parity) yazma işlemi, yeni eşlik verisi hesaplanmadan önce eski verinin ve eski eşliğin geri okunmasını gerektirir. Bu durum, RAID 5 üzerinde 4, RAID 6 üzerinde 6 işlem maliyeti yaratırken, bir yansıtma (mirror) üzerinde sadece 2 işlem maliyeti oluşturur. Bir eşlik yeniden oluşturma (rebuild) işlemi, hayatta kalan her diski baştan sona okur ve bu durum düğüm üzerindeki her konuk (guest) makineyi saatlerce yavaşlatır. RAID 10 yeniden oluşturma işlemi ise sadece bir diski diğerine kopyalar ve diğer çiftleri rahat bırakır. Sağlayıcılar bunun bedelini kapasite ile öder: ham NVMe alanının yarısı kullanılır.
/proc/mdstat dosyasındaki [U_] veya [UU_U] ne anlama gelir?
Her karakter, dizi içindeki bir yuvayı (slot) temsil eder ve yuva sırasına göre dizilir; her yuva için bir karakter kullanılır. U, o yuvanın çalışır durumda ve eşzamanlı bir üye barındırdığı anlamına gelir. _, yuvada çalışan hiçbir şey olmadığını gösterir. İki diskli bir yansıtma üzerindeki [U_], ikinci yuvanın devre dışı olduğunu ve yedekliliğin kalmadığını belirtir. Bunu, önündeki çiftle birlikte okuyun; örneğin [4/3], dizinin dört üye beklediğini ancak üç üyenin mevcut olduğunu söyler. Yuva sırası, cihaz adlarının satırda göründüğü sıraya değil, mdadm --detail içindeki RaidDevice sütununa karşılık gelir.
Bir RAID 10 dizisi kaç disk kaybına dayanabilir?
Herhangi bir düzende bir disk kaybına dayanabilir. Bunun ötesinde durum, arızaların nerede gerçekleştiğine bağlıdır. Her yansıtma çifti, iki üyesinden birini kaybedebilir; bu nedenle sekiz diskli bir dizi, hiçbir çiftin iki üyesi de bozulmadığı sürece dört arızaya kadar hayatta kalabilir. Ancak her iki arıza da aynı çifti vurursa dizi iki arızada çöker. Planlamanızı garanti edilen sayı olan bir disk kaybına göre yapın ve bunun ötesindeki her durumu korumadan ziyade şans olarak değerlendirin.
VPS'im içindeki iki birimi mdadm ile yansıtmalı mıyım?
Genellikle hayır. Bir VPS'e bağlı iki birim genellikle aynı ana makine (host) üzerindeki aynı fiziksel dizide bulunur. Bu nedenle bunları yansıtmak, her yazma işleminin maliyetini ikiye katlar ve ana makinenin kendi RAID yapısının zaten kapsamadığı hiçbir şeye karşı koruma sağlamaz. Bu işlem, yalnızca sağlayıcının birimlerin farklı hata alanlarında (failure domains) bulunduğunu belgelediği durumlarda yapılmaya değerdir. Aksi takdirde bu çabayı, makine dışına çıkan yedeklemeler için harcayın.