Tek bir cihazla RAID 1 yazılımı oluşturabilir miyim


20

Bir ayna oluşturmak istediğiniz tek bir disk var; diyelim bu diski sda. Arayabileceğimiz aynı boyutta bir disk daha aldım sdb. sdave sırasıyla ve olarak sdbadlandırılan bir bölümünüz var .sda1sdb1

Bir baskın oluştururken, sdatemizlememi silmek ve tekrar başlamak istemiyorum, sadece aynalamaya başlamasını istiyorum sdb. Düşünce trenim şunları yapmaktı:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

... disksiz dizi oluşturmak sdb, sonra bir şey çalıştırmak (aşağıdaki komutu yüksek sesle düşünüyorum, çünkü bu adıma nasıl ulaşacağımdan emin değilim)

mdadm /dev/md0 --add /dev/sdb1

Notun sdb1, benzer şekilde biçimlendirildiği varsayılırsda1

Mümkün mü?


Evet yapabilirsin. Bu kadar basit değil --addve dikkatli olmanız gerekiyor, ancak çok karmaşık değil . Bkz . Ubuntu'da disk yansıtma nasıl kurulur? (Bu soruyu yeni kurallar nedeniyle tekrarlayamıyorum.)
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


28

Başlıktaki sorunun basit cevabı "Evet". Ama gerçekten yapmak istediğiniz şey, mevcut verilerin yansıtılmasını sağlayan bir sonraki adımdır.

Mevcut diski dönüştürmek mümkündür, ancak meta veri konumu nedeniyle belirtildiği gibi risklidir. Yeni diskle boş (kırık) bir ayna oluşturmak ve mevcut verileri üzerine kopyalamak çok daha iyi. Ardından, işe yaramazsa, yansıtılmamış orijinale geri önyükleme yaparsınız.

İlk /dev/sdb1olarak, /dev/md0eksik bir sürücü ile yeni olarak başlatın ve dosya sistemini başlatın (ext3 olduğunu varsayıyorum, ancak seçim sizin)

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

Şimdi, /dev/sda1büyük olasılıkla kök dosya sistemidir ( /) böylece güvenlik için hem erişebileceğiniz bir canlı CD, kurtarma disk veya diğer önyüklenebilir sisteminden sonraki adımı yapmalıyım /dev/sda1ve /dev/md0başarıyla tek kullanıcı moduna bırakarak yapmış olmasına rağmen.

Üzerinde dosya sisteminin tüm içeriğini kopyalayın /dev/sda1için /dev/md0. Örneğin:

mount /dev/sda1 /mnt/a       # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a                    # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b

Düzenleme /etc/fstabveya başka bir sonraki açılışta sağlamak /dev/md0yerine monte edilir /dev/sda1. Sisteminiz muhtemelen önyükleme için ayarlanmıştır /dev/sda1ve önyükleme parametreleri muhtemelen bunu kök aygıt olarak belirtir, bu nedenle yeniden başlattığınızda kökün /dev/md0( kök olduğu varsayılırsa /dev/sda1) manuel olarak değiştirmeniz gerekir . Yeniden başlattıktan sonra /dev/md0, şimdi monte edildiğini ( df) ve bozulmuş ayna ( cat /proc/mdstat) olarak çalıştığını kontrol edin . /dev/sda1Diziye ekle :

mdadm /dev/md0 --add /dev/sda1

Yeniden oluşturma üzerine yazacağından /dev/sda1, kullandığınız meta veri sürümü önemsizdir. Her zaman olduğu gibi büyük değişiklikler yaparken, tam bir yedek alın (mümkünse) veya en azından yeniden oluşturulamayan her şeyin güvenli olduğundan emin olun.

/dev/md0Kök ( /dev/sda1root ise) kullanmak için önyükleme yapılandırmanızı yeniden mdadm.confoluşturmanız ve muhtemelen /dev/md0her zaman başlatıldığından emin olmak için yeniden oluşturmanız gerekir .


Tam olarak ihtiyacım olan şey: D
whoami

2
cpDosya sistemlerini kopyalamak için kullanmayın , sabit bağlantılar, genişletilmiş özellikler gibi bazı şeyleri kaçırırsınız ... tarveya rsyncuygun seçeneklerle kullanın . Canlı CD önyüklerken uid-user eşlemesinin farklı olduğuna dikkat edin (tar / rsync'in --numeric-owner seçeneklerine bakın). Extx dosya sistemlerini klonlamak için ayrıca clone2fs dosyasına bakın.
Stéphane Chazelas

1
Koruma cpbağlantıları (-d), mod, sahiplik ve zaman damgalarını (-p) yönetme, yinelemeli (-R) yapma ve bir dosya sisteminde (-x) kalma seçenekleri, ancak sabit bağlantılar ve genişletilmiş haklı olabileceğinizi düşünüyorum Öznitellikler.
StarNamer

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/iyi bir seçenektir. -vih --progressGerçekten ne yaptığını görmek istiyorsanız ekleyin .
rudolfbyker

4

Elbette, ikinci diskin şu anda olduğunu belirterek oluşturabilirsiniz missing:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1

Tatlı teşekkürler, muhtemelen burada OKB olmam, ancak / dev / sda1'den önce eksik olanı eklemenizin bir nedeni var mı, sipariş önemli mi?
whoami

Bence düzen önemli değil.
eppesuig

3
Dikkatli ol! --metadata = 1.2 (yeni varsayılan) ile, RAID meta verileri (1MB) başlangıçta eklenir (içeriği orada geçersiz kılar). Ve md dizisinin başlangıcı / dev / sda1 içinde 1MB başlayacaktır (/ dev / md0 / dev / sda1'den 1MB daha kısa olacaktır). Meta veri = 0.9 (eski varsayılan) ile, meta veri (64kB) sonuna orada eklenir. Bu yüzden --metadata = 0.9 kullanın ve önce FS'yi yeniden boyutlandırın. Ne yaparsanız yapın, önceden bir yedek alın.
Stéphane Chazelas

3

Bunu yapabilirsin. Biraz dikkatli olmanız gerekir, ancak bu tehlikeli değildir not hiçbir şeyi yanlış yazmamaya çok dikkat ediyorsanız ve kurulumda herhangi bir gotchas bırakmaz.

Canlı bir sistemde herhangi bir manipülasyon yapmamanızı şiddetle tavsiye ederim. Bazı durumlarda mümkündür, ancak ekstra bakım gerektirir. Parted veya SystemRescueCD gibi bir liveCD / liveUSB'den önyükleme yapın .

İlk olarak, mdraid meta verilerine (süper blok) yer açmak için hacmi biraz küçültmeniz gerekir. Orada birkaç Meta veri biçimleri , disk sonunda meta koyar birini kullanmak zorundadır. (Bazı kurulumlarda, süper bloğu başlangıçta koymak için yeterli alanınız olabilir, ancak bu daha karmaşık ve riske yatkın, bu yüzden buna giriyorum.)

Süperblok için yer açmak için blok cihazdan son 128kB değerinin kullanılmadığından emin olmalısınız. Yani dosya sistemini küçültmeniz gerekecek /dev/sda1. Bu bir ext2 / ext3 / ext4 dosya sistemiyse, geçerli dosya sistemi boyutunu edinin ve tune2fs /dev/sda1ardından resize2fs /dev/sda1 NNNNNN'nin eksi 128kB olduğu yerde çalıştırın . Bunun yerine Parted ile yapabilirsiniz . Bir extN dosya sistemini küçültmeniz gerekiyorsa, önce bağlantısını kesmeniz gerekir; btrfs dosya sistemi canlı olarak daraltılabilir.

Blok aygıtının son 128 kb'sinin boş olduğundan emin olduktan sonra, mdadm --createbir RAID-1 birimi oluşturmak için arayın . Bu, süper blok dışında birimin herhangi bir bölümüne dokunmaz. Başlangıçta, birimin tek bir bileşeni olacaktır: diğerlerinin tümü başarısız olarak ayarlanır. Geçmelisiniz --level=1(veya eşdeğerde -n 1) (bu yaklaşım yalnızca RAID-1 için çalışır) ve --metadata=0.9veya --metadata=1.0(varsayılan süper blok biçimi 1.2, süper bloğu cihazın başlangıcına koyar, verilerin üzerine yazabilir). --raid-devices( -n) Argümanı RAID birimindeki bileşenlerin (eksik olanlar dahil) sayısıdır.

mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing

Şimdi diziyi etkinleştirebilir ve başka bileşenler ekleyebilirsiniz.

mdadm --add /dev/md0 /dev/sdb1

Önyükleyiciler hakkında bir not: Grub2, Linux RAID-1'i anlar ve ondan önyükleme yapabilir. Grub1 gibi RAID'i yansıtma düzeylerinden saydam olarak okuyan önyükleyiciler, ancak önyükleyicinin okuduğu sürücü başarısız olursa sisteminiz önyükleme yapmaz. RAID birimi bir bölümdeyse, Grub'un önyükleme kesimini her iki sürücüye de yüklediğinizden emin olun.

Backup Yedek aldığınızdan emin olun. “Tehlikeli değil”, “verilerinize kumar oynayın” değil, “muhtemelen onlara ihtiyacınız olmayacak” anlamına gelir.

Disk yansıtma nasıl kurulur (RAID-1) öğesinden yeniden yayınlandı ve biraz uyarlandı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.