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. Klasik iki kopyalı yapısında, 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 (redundant array of independent disks) anlamına gelir. Tek bir görevi vardır: bir disk bozulduğunda veya değiştirilirken makinenin servis vermeye devam etmesini sağlamak. Bu görevin adı erişilebilirliktir; erişilebilirlik ise veri güvenliği ile aynı şey değildir.
RAID, yazma işlemlerinizi çoğaltır. 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 temiz (sağlıklı) olarak raporlamaya devam eder.
Bu cümleyi unutmayın. Bu sayfanın geri kalanı, her seviyenin neleri tolere edebileceğini 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ü aynı 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 sürücünün kapasitesini elde edersiniz ve dizi tam olarak bir sürücü arızasına dayanabilir. 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 genellikle P ve Q olarak yazılan ikinci, bağımsız bir eşlik bloğu ekler. Aynı anda herhangi iki sürücünün bozulmasına dayanabilir. 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 toplam ham kapasitenin yarısıdır, buna ek olarak şeritlemenin paralelliği de mevcuttur.
Bunu RAID 1+0 olarak yazılmış halde de görebilirsiniz; 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ın kopyalanmasını gerektirir.
Linux, bilinmesi gereken özel bir durumdur. Çekirdeğin raid10 yapısı, iki katmanlı bir yapıdan ziyade 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 sunucusundaki durum satırının iki dizi ismi vermek yerine 2 near-copies demesinin nedeni budur.
Bu grafiğin arkasındaki veriler
[
{
"label": "RAID 1 (eight copies)",
"usable_tb": 1,
"worst_case_drives_lost": 7,
"best_case_drives_lost": 7
},
{
"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 dayanabilir. RAID 10 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ızaya dayanabilir, ancak bu bir tasarım özelliğinden ziyade şanstır.
Her yazma işleminde her seviyenin maliyeti
Bir mirror üzerine yapılan yazma işlemi, her iki üyeye aynı anda gönderilen iki yazma işlemidir. Parity stripe üzerine yapılan yazma işlemi daha fazla iş yükü gerektirir; çünkü o stripe için mevcut olan parity bloğu artık hatalıdır ve yeniden hesaplanması gerekir.
Read-modify-write (oku-değiştir-yaz) işleminde denetleyici önce eski veriyi ve eski parity bilgisini okur. RAID 5 üzerinde önbelleğe alınmamış tek blokluk bir üzerine yazma işlemi; okuma, okuma, yazma, yazma şeklinde gerçekleşir. RAID 6 iki parity bloğu tuttuğu için read-modify-write işlemi; okuma, okuma, okuma, yazma, yazma, yazma halini alır. Linux ayrıca parity hesaplamak için değişmemiş verileri okuyan reconstruct-write yöntemini de kullanır. Üç sürücülü bir RAID 5 üzerinde bu üzerine yazma işlemi bir veri okuma ve iki yazma ile tamamlanabilir; dört sürücülü RAID 6 üzerinde ise bir veri okuma ve üç yazma gerektirir. Dört ve altı değerleri read-modify-write sayılarıdır, her küçük rastgele yazma için sabit maliyetler değildir.
Bu grafiğin arkasındaki veriler
[
{
"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, fixed mirror pairs)",
"write_ops_per_host_write": 2,
"drives_read_to_rebuild": 1
}
]Önbelleğe alınmamış tek blokluk bir read-modify-write işlemi, RAID 6 üzerinde 6 aygıt işlemi maliyeti getirirken, iki kopyalı RAID 10 üzerinde aynı üzerine yazma işlemi için bu maliyet 2 seviyesindedir. Bu sayılar gecikme farkını tam olarak yansıtmaz. İki mirror yazma işlemi paralel olarak gönderilir, bu nedenle konuk sistem ikisinden yavaş olanı bekler. Read-modify-write yolu, yeni parity hesaplanmadan önce tamamlanması gereken bir okuma işlemi içerir; bu nedenle konuk sistem önce bir okuma, ardından bir yazma işlemini sırayla bekler. Yoğun bir ana makinede bu okuma işlemi, diğer tüm I/O işlemlerinin arkasında kuyruğa girer.
Önemli bir istisna mevcuttur. Tüm stripe'ı dolduracak kadar büyük bir yazma işlemi eski veriye ihtiyaç duymaz, çünkü stripe içindeki her blok değiştirilmektedir. Parity, halihazırda bellekte bulunan veriden hesaplanır ve ek yük, RAID 5 için stripe başına bir parity yazma işlemine, RAID 6 için ise iki parity yazma işlemine düşer; ön okuma (preread) gerekmez. RAID 5'in sıralı (sequential) benchmark testlerinde iyi görünmesinin ancak birçok kiracıdan gelen küçük yazma işlemlerinin olduğu karma yükler altında kötü performans göstermesinin nedeni budur. Gerçekte çalıştırdığınız modeli test edin: VPS diskini doğru şekilde benchmark etmek, tek bir büyük dd ile değil, gerçekçi bir kuyruk derinliğinde rastgele I/O yapmak anlamına gelir.
Yeniden oluşturma işleminin neden tehlikeli olduğu
Tam bir RAID 5 yeniden oluşturma işlemi, eksik sürücüyü diğer her şeyden yola çıkarak yeniden inşa etmek zorundadır; bu nedenle sekiz sürücülü örnekte, ilk bloktan sonuncusuna kadar 7 adet çalışan sürücüyü okur. Sabit iki kopyalı yansıtma çiftlerinde ise RAID 10 yeniden oluşturma işlemi 1 adet sürücü okur: sadece ölü sürücünün yansıtma ortağı okunur, başka hiçbir şey okunmaz. Diğer Linux RAID10 düzenleri kopyaları farklı şekilde dağıtır: üç cihazlı yakın düzenin bir üyesini yeniden oluşturmak, hayatta kalan her iki üyeyi de okur.
Buradan iki maliyet doğar. Birincisi zamandır; çünkü yeniden oluşturma işlemi, hayatta kalan sürücüler, yeniden inşa iş yükü ve kurtarma hızı hedefleri ile sınırlıdır. İkincisi ise yüktür. Bir eşlik (parity) yeniden oluşturma işlemi, I/O yükünü hayatta kalan tüm sürücülere yayar. Sabit yansıtma çiftlerinde ise RAID 10 yeniden oluşturma işlemi, bu I/O yükünü tek bir çift üzerinde yoğunlaştırır; paylaşılan denetleyici ve ana bilgisayar kaynakları diğer çiftleri etkilemeye 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 hayatta kalan sürücülerden herhangi birindeki okunamaz bir sektör artık kurtarılamaz durumdadır. Yeniden oluşturma işlemi, bir yıldır kimsenin dokunmadığı sektörler de dahil olmak üzere her sektörü okuyan tek işlemdir. Yayınlanan veri sayfası rakamları, tüketici tipi bir sabit diskin 10^14 bit okumada yaklaşık bir adet 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ı tarama (scrubbing) yaparak bulun. Debian ve Ubuntu, md dizileri için periyodik bir tarama mekanizması ile gelir; bu mekanizma sürümler arasında farklılık gösterir, bu nedenle 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 durumuna döner ve mismatch_cnt değerinin 0 olması gerekir. Bir yansıtma üzerinde sıfırın üzerindeki bir sayı, iki yarının 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 dizisindeki artan bir sayı, inceleme gerektirir; sadece sayıya bakarak değiştirilmesi gereken sürücü tespit edilemez.
VPS sağlayıcılarının NVMe için neden RAID 10 standardını kullandığı
Bir hipervizör düğümü tek bir iş yükü çalıştırmaz. Birbirinden bağımsız onlarca konuk sistem çalıştırır ve bunların G/Ç işlemleri, aralarında yerellik bulunmayan küçük yazma akışları şeklinde iç içe geçer. Bu, eşlik (parity) okuma-değiştirme-yazma döngüsünün en maliyetli olduğu ve paylaşımlı bir düğümün gün boyu maruz kaldığı tam olarak bu örüntüdür.
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ü, hayatta kalan tüm sürücüler üzerinde yeniden yapılandırma iş yükü oluşturur. Sabit yansıtılmış çiftler (mirror pairs) ile RAID 10 düğümünde bozulan bir sürücü, yeniden oluşturma G/Ç yükünü yalnızca bir çifte ekler; Linux MD ise başka etkinlikler gerçekleştiğinde kurtarma işlemini yavaşlatır. Sağlayıcılar ani yükselmeler yaşamayan bir gecikme süresi sattıkları için, bunu kapasite ile satın alırlar: ham NVMe kapasitesinin yarısı yansıtma için ayrılır.
Sürücü boyutları da aynı yönde baskı yapar. Sürücüler büyüdükçe yeniden oluşturma penceresi uzar; RAID 5 yapısında bu pencere, yeniden yapılandırmanın yük eklediği ve hiçbir yedekliliğin kalmadığı riskli süredir. RAID 6 ise bir sürücü arızasına karşı daha koruma sağlar. Sanallaştırma için yapılan ZFS kurulumlarında geniş raidz grupları yerine yansıtılmış vdev havuzlarının kullanılmasının nedeni de aynıdır: bir yansıtma 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 olduğu anlamına gelmez. Bir yedekleme hedefi uzun sıralı yazmalarla yazılır ve nadiren okunur; bu nedenle RAID 6 orada daha iyi bir seçenektir. İki arızaya karşı dayanıklıdır ve kapasitenin büyük kısmını geri kazandırır. Kararı veren sayı değil, iş yüküdür. Bugün seçtiğiniz bir plan için ortam genellikle üzerindeki yerleşim düzeninden daha önemlidir ve SATA SSD'den NVMe'ye geçiş, her iki yapılandırmadaki RAID farkından çok 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 edeceğiniz çıktının yapısıyla 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 dizisi 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>Bunun 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 üyeden sonra gelen
(F), hatalı olduğu anlamına gelir.(S), yedek olduğu anlamına gelir: mevcut, boşta, bir şeyin bozulmasını bekliyor. 3906764800 blocks super 1.2, 1 KiB blok cinsinden kullanılabilir boyut ve ardından meta veri formatıdır.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 sayıdır.[UUUU], yuva sırasına göre yuva başına bir karakterdir.U, çalışır durumda ve senkronize bir yuvadır._, içinde hiçbir şey çalışmayan bir yuvadır.bitmap:, yazma amacı bit eşlemidir (write intent bitmap). Hangi bölgelere yazıldığını kaydeder, böylece devre dışı kalan ve geri dönen 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 hangisinin bozuk olduğunu belirtir; yani 2. yuva devre dışıdır. (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 isim satırdan kaybolur, ancak alt çizgi kalır.
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 hissetmez. 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çinden MAILADDR dosyasını okuyan bir izleme arka plan programı (daemon) kurar. Birim adı sürümler arasında değiştiği için, tahmin etmek yerine son komutla bulun. --test çalıştırması, dizi başına hemen bir mesaj gönderir. Bundan sonra boş bir gelen kutusu, posta yolunun bozuk olduğu anlamına gelir; bu nedenle aslında önemsemeniz gereken 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 yeniden oluşturmadır. resync, ilk geçiş ve temiz olmayan bir kapatmadan kurtarma dahil olmak üzere bir tutarlılık geçişidir. check, yukarıda tetiklediğiniz temizleme (scrub) işlemidir. Parantez içindeki çift, aygıt başına toplam miktara karşı 1 KiB blok cinsinden ilerlemedir ve finish, çekirdeğin mevcut hıza göre tahminidir. Linux MD, /proc/sys/dev/raid/speed_limit_min ve speed_limit_max değerlerini kurtarma hızı hedefleri olarak kullanır; dizi başına geçersiz kılmalar sync_speed_min ve sync_speed_max içindedir. Varsayılan maksimum hedef, aygıt başına 200.000 KiB/s'dir; bu hedefler kurtarma işleminin üretim G/Ç'sine (I/O) öncelik vermesini sağlar ve katı hız sınırları değildir.
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ı çiftten bir set-A üyesi ve bir set-B ü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ından büyük olmalıdır; biraz daha küçük olan bir bölüm, not large enough to join array biçiminde 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 yedeklemeye ihtiyacım olmadığı anlamına mı gelir?
Hayır. RAID 10, çalışmayı durduran bir diske karşı koruma sağlar. Her geçerli yazma işlemini aynalamanın her iki yarısına 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 sonrasında kendini temiz olarak raporlar. Yine de makine dışında tutulan kopyalara ihtiyacınız vardır ve bunların çalıştığını kanıtlamak için ara sıra bir geri yükleme yapmanız gerekir.
VPS sağlayıcıları neden RAID 5 veya RAID 6 yerine RAID 10 tercih eder?
İkisi de küçük rastgele yazma işlemleriyle ilgili olan iki nedeni vardır. Önbelleğe alınmamış tek bloklu bir okuma-değiştirme-yazma işlemi, yeni eşliği hesaplamadan önce eski veriyi ve eşliği okur; bu da RAID 5 üzerinde 4, RAID 6 üzerinde 6 işlem maliyeti getirirken, iki kopyalı bir aynalamada bu maliyet 2 seviyesindedir. Yeniden yapılandırma-yazma işlemi bunun yerine değişmemiş veriyi kullanır ve tam şeritli yazma işlemleri eski veri veya eski eşlik ön okumalarına ihtiyaç duymaz. Tam bir RAID 5 yeniden oluşturma işlemi, hayatta kalan her diski baştan sona okurken, sabit ayna çiftlerine sahip geleneksel RAID 10, hayatta kalan ortaktan kopyalama yapar; diğer Linux RAID10 düzenleri birden fazla kaynak üye kullanır. Linux MD, başka etkinlikler gerçekleştiğinde kurtarma işlemini yavaşlatır. Sağlayıcılar bunun bedelini kapasite ile öder: ham NVMe alanının yarısı.
/proc/mdstat içindeki [U_] veya [UU_U] ne anlama gelir?
Her karakter, dizi içindeki bir yuvayı temsil eder; yuva sırasına göre her yuva için bir karakter bulunur. 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ı belirtir. İki diskli bir aynalamada [U_], ikinci yuvanın devre dışı olduğunu ve yedekliliğin kalmadığını gösterir. Bunu önündeki çiftle birlikte okuyun; örneğin [4/3], dizinin dört üye beklediğini ancak üç üyeye sahip olduğunu söyler. Yuva sırası, cihaz adlarının satırda göründüğü sırayla değil, mdadm --detail içindeki RaidDevice sütunuyla eşleşir.
Bir RAID 10 dizisi kaç disk kaybedebilir?
Sabit ayna çiftlerine sahip geleneksel iki kopyalı RAID 10 için, herhangi bir düzende bir disk kaybedilebilir. Bunun ötesinde durum, arızaların nereye denk geldiğine bağlıdır. Her ayna çifti, iki üyesinden birini kaybedebilir; bu nedenle sekiz diskli bir dizi, hiçbir çiftin iki üyesi de bozulmazsa dört arızaya kadar hayatta kalabilir, ancak her iki arıza da aynı çifte denk gelirse iki arızada çöker. Planlamanızı garanti edilen sayı olan bir disk üzerinden yapın ve bunun ötesindeki her şeyi korumadan ziyade şans olarak değerlendirin.
VPS'im içindeki iki birimi mdadm ile aynalamalı mıyım?
Genellikle hayır. Tek bir VPS'e bağlı iki birim genellikle aynı ana makinedeki aynı fiziksel dizi üzerinde bulunur; bu nedenle bunları aynalamak, 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ı, birimlerin ayrı hata etki alanlarında bulunduğunu belgelediğinde değerlidir. Aksi takdirde bu çabayı, makine dışına çıkan yedeklemelere harcayın.