Bu yanıta yanlışlıkla rastladım, ancak merak edilen biri varsa, deneylerle desteklenen bir cevap.
Kısa Versiyon
Bonus Soru: md(4)
Eşit boyuttaki blok cihazlardan bir RAID dizisi oluşturabilir miyim ? Evet, ancak RAID dizisi en küçük blok aygıtının boyutuna sahip olacaktır (ayrıca kendi temizliği için bazı ek yükler). Cihaz boyutları birbirinin% 1'i içinde değilse bir uyarı alırsınız.
Soru 1: Mevcut bir md(4)
RAID dizisine en küçük geçerli üyeden daha küçük bir aygıt ekleyebilir miyim ? Hayır üzgünüm. mdadm
verilerinizi korumak için bunu yapmayı reddedecektir.
Soru 2: Mevcut bir md dizisini yeniden boyutlandırabilir misiniz? Evet (mdadm
manipülasyonu !), Ama çabaya değmeyebilir. Her şeyi yedeklemeniz, ardından RAID cihazının içeriğini yeniden boyutlandırmanız ve ardından cihazın kendisini yeniden boyutlandırmanız gerekir - bunların hepsi hatalara, yanlış hesaplamalara ve verilerinize mal olacak diğer şeylere oldukça yatkındır (acı verici konuşma deneyimi) .
Risk ve çabaya değmez. Yeni, boş bir diskiniz varsa, diski nasıl yeniden boyutlandıracağınız ve tüm verilerinizin bir ila iki kopyasını her zaman bozulmadan tutabilirsiniz (2 diskli RAID1'iniz varsa):
md(4)
Üzerinde yeni bir dizi oluşturun (bir disk eksik).
- Dizi içeriğinin yapısını yeniden oluşturun (Kripto, LVM, bölüm tabloları, bunların herhangi bir kombinasyonu, teknenizde ne olursa olsun).
- Mevcut diskteki verileri yenisine kopyalayın.
- Yeni diski kullanarak yeniden başlatın.
- Eski diskin bölüm tablosunu silin (veya
md(4)
süper bloğu sıfırlayın ). Gerekirse, yeni diskteki şema ile eşleşmesi için gerekli bölümleri oluşturun.
- Eski diski yeni diziye ekleyin.
- Dizi üyelerinin senkronize edilmesini bekleyin. Biraz kahve al. Latin Amerika'ya uçun ve bu konuda kendi kahve çekirdeklerinizi seçin. :) ( Latin Amerika'da yaşıyorsanız , bunun yerine Afrika'ya uçun).
Not: evet, bu cevabı 0xC0000022L ile aynı tekniktir.
Soru 3. Sürücü 1G kısasa ne olur? :) Endişelenme. Muhtemelen yedek sürücünüz daha büyük olacaktır. Aslında, yukarıdaki gibi bir strateji ile, başarısız olduğunda (veya daha ucuz bir yükseltme için) daha ucuz daha büyük sürücüler elde etmek için ödeme yapar . Aşamalı yükseltme alabilirsiniz.
Deneysel Kanıt
Deneysel kurulum
İlk olarak, bazı blok cihazları taklit edelim. Biz kullanacağız /tmp/sdx
ve /tmp/sdy
(her 100M) ve /tmp/sdz
(99M).
cd /tmp
dd if=/dev/zero of=sdx bs=1M count=100
sudo losetup -f sdx
dd if=/dev/zero of=sdy bs=1M count=100
sudo losetup -f sdy
dd if=/dev/zero of=sdz bs=1M count=99 # Here's a smaller one!
sudo losetup -f sdz
: Üç geri döngü blok cihazları olarak üç dosya kadar bu setleri /dev/loop0
, /dev/loop1
ve /dev/loop2
, için haritalama sdx
, sdy
ve sdz
sırasıyla. Boyutları kontrol edelim:
sudo grep loop[012] /proc/partitions
7 0 102400 loop0
7 1 102400 loop1
7 2 101376 loop2
Beklendiği gibi, tam 100M (102400 KiB = 100 MiB) ve 99M'den (tam olarak 99 × 1024 1K blok) biri olan iki döngü cihazımız var.
Aynı Boyuttaki Aygıtlardan RAID Dizisi Oluşturma
İşte gidiyor:
sudo mdadm --create -e 1.2 -n 2 -l 1 /dev/md100 /dev/loop0 /dev/loop1
mdadm: array /dev/md100 started.
Boyutunu kontrol:
sudo grep md100 /proc/partitions
9 100 102272 md100
Bu tam olarak beklediğimiz şeydir: mdadm kılavuzuna bir bakış, 1.2 meta verilerinin 128K: 128 + 102272 = 102400'ü kapladığını hatırlatıyor. Şimdi ikinci denemeye hazırlanırken imha edelim.
sudo mdadm --stop /dev/md100
sudo mdadm --misc --zero-superblock /dev/loop0
sudo mdadm --misc --zero-superblock /dev/loop1
Eşsiz Olarak Boyutlandırılmış Aygıtlardan RAID Dizisi Oluşturma
Bu sefer küçük blok cihazı kullanacağız.
sudo mdadm --create -e 1.2 -n 2 -l 1 /dev/md100 /dev/loop0 /dev/loop2
mdadm: largest drive (/dev/loop0) exceeds size (101248K) by more than 1%
Continue creating array? y
mdadm: array /dev/md100 started.
Uyardık, ama dizi yapıldı. Boyutunu kontrol edelim:
sudo grep md100 /proc/partitions
9 100 101248 md100
Burada elde ettiğimiz şey 101.248 blok. 101248 + 128 = 101376 = 99 × 1024. Kullanılabilir alan en küçük cihazın alanıdır (artı 128K RAID meta verileri). Son denememiz için hepsini tekrar indirelim:
sudo mdadm --stop /dev/md100
sudo mdadm --misc --zero-superblock /dev/loop0
sudo mdadm --misc --zero-superblock /dev/loop2
Son olarak: Çalışan Diziye daha küçük bir Aygıt Ekleme
İlk olarak, 100M disklerden sadece bir tanesiyle RAID1 dizisi oluşturalım. Dizi bozulacak, ama gerçekten umursamıyoruz. Sadece bir istiyorum başladı dizi. missing
Anahtar kelimeler 'Ben, henüz hediye bir cihaz var şimdi o diziyi başlatmak ve daha sonra bir ekleyeceksiniz yok' diyor bir yer tutucudur.
sudo mdadm --create -e 1.2 -n 2 -l 1 /dev/md100 /dev/loop0 missing
Yine, boyutu kontrol edelim:
sudo grep md100 /proc/partitions
9 100 102272 md100
Elbette, 102400 bloktan 128K kısa. Daha küçük disk ekleme:
sudo mdadm --add /dev/md100 /dev/loop2
mdadm: /dev/loop2 not large enough to join array
Boom! Bize izin vermez ve hata çok açıktır.