ฉันสามารถสร้างซอฟต์แวร์ RAID 1 ด้วยอุปกรณ์เดียวได้ไหม


20

ฉันมีดิสก์เดียวที่ฉันต้องการสร้างมิเรอร์ เรียกดิสก์นี้sdaว่า ฉันเพิ่งซื้อดิสก์ขนาดเท่ากันซึ่งเราสามารถโทรหาsdbได้ sdaและsdbมีหนึ่งพาร์ติชันที่เรียกว่าsda1และsdb1ตามลำดับ

เมื่อมีการสร้างการโจมตีผมไม่ต้องการที่จะเช็ดของฉันที่สะอาดและเริ่มต้นอีกครั้งฉันเพียงแค่ต้องการที่จะเริ่มต้นกับมิเรอร์sda sdbรถไฟแห่งความคิดของฉันต้องทำ:

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

... เพื่อสร้างอาเรย์ที่ไม่มีsdbดิสก์แล้วเรียกใช้สิ่งที่ต้องการ (ฉันคิดว่าคำสั่งดังต่อไปนี้ออกมาเพราะฉันไม่แน่ใจว่าจะบรรลุขั้นตอนนี้ได้อย่างไร)

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

หมายเหตุsdb1จะถือว่ารูปแบบคล้ายกันsda1

เป็นไปได้ไหม


ใช่คุณสามารถ. มันไม่ตรงไปตรงมา--addและคุณต้องระวัง แต่มันไม่ซับซ้อนมาก ดูวิธีการตั้งค่าการทำมิเรอร์ดิสก์ใน Ubuntu (ฉันไม่สามารถเสนอคำถามนั้นซ้ำเพราะกฎใหม่)
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


28

คำตอบง่าย ๆ สำหรับคำถามในชื่อเรื่องคือ "ใช่" แต่สิ่งที่คุณต้องการทำจริงๆคือขั้นตอนต่อไปซึ่งจะทำให้ข้อมูลที่มีอยู่ถูกทำมิเรอร์

เป็นไปได้ที่จะแปลงดิสก์ที่มีอยู่ แต่มีความเสี่ยงตามที่กล่าวไว้เนื่องจากตำแหน่งเมทาดาทา ดีกว่ามากในการสร้างมิร์เรอร์ที่ว่าง (หัก) ด้วยดิสก์ใหม่และคัดลอกข้อมูลที่มีอยู่ลงไป จากนั้นถ้ามันไม่ทำงานคุณเพียงแค่บูตกลับไปที่ต้นฉบับที่ไม่ทำมิเรอร์

ก่อนอื่นให้เริ่มต้น/dev/sdb1ใหม่/dev/md0ด้วยไดรฟ์ที่หายไปและเริ่มต้นระบบไฟล์ (ฉันถือว่า ext3 แต่ตัวเลือกเป็นของคุณ)

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

ตอนนี้/dev/sda1น่าจะเป็นระบบไฟล์รูทของคุณ ( /) ดังนั้นเพื่อความปลอดภัยคุณควรทำขั้นตอนต่อไปจากซีดีสดแผ่นกู้ชีพหรือระบบบูตอื่น ๆ ที่สามารถเข้าถึงได้ทั้งคู่/dev/sda1และ/dev/md0แม้ว่าฉันจะทำสิ่งนี้สำเร็จแล้ว

คัดลอกเนื้อหาทั้งหมดของระบบแฟ้มในการ/dev/sda1 /dev/md0ตัวอย่างเช่น:

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

แก้ไข/etc/fstabหรือมิฉะนั้นมั่นใจว่าในการบูตถัดไปติดตั้งแทน/dev/md0 /dev/sda1ระบบของคุณอาจถูกตั้งค่าให้บูตจาก/dev/sda1และพารามิเตอร์การบูตอาจระบุสิ่งนี้เป็นอุปกรณ์รูทดังนั้นเมื่อรีบูตเครื่องคุณควรเปลี่ยนสิ่งนี้ด้วยตนเองเพื่อให้รูทนั้น/dev/md0(สมมติว่า/dev/sda1เป็นรูท) หลังจากรีบูตให้ตรวจสอบว่า/dev/md0ตอนนี้เมานท์ ( df) และมันกำลังทำงานเป็นมิเรอร์ที่เสื่อมสภาพ ( cat /proc/mdstat) เพิ่ม/dev/sda1ในอาร์เรย์:

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

เนื่องจากการสร้างใหม่จะเขียนทับ/dev/sda1เวอร์ชันข้อมูลเมตาที่คุณใช้จึงไม่เกี่ยวข้อง เช่นเคยเมื่อทำการเปลี่ยนแปลงที่สำคัญทำการสำรองข้อมูลทั้งหมด (ถ้าเป็นไปได้) หรืออย่างน้อยให้แน่ใจว่าสิ่งที่ไม่สามารถสร้างใหม่มีความปลอดภัย

คุณจะต้องสร้างการตั้งค่าการบู๊ตใหม่เพื่อใช้/dev/md0เป็นรูท (ถ้า/dev/sda1เป็นรูท) และอาจจำเป็นต้องสร้างใหม่mdadm.confเพื่อให้แน่ใจว่า/dev/md0เริ่มต้นได้เสมอ


สมบูรณ์แบบในสิ่งที่ฉันต้องการ: D
whoami

2
อย่าใช้cpเพื่อคัดลอกระบบไฟล์คุณจะพลาดบางสิ่งเช่นฮาร์ดลิงก์คุณสมบัติเพิ่มเติม ... ใช้tarหรือrsyncด้วยตัวเลือกที่เหมาะสม เมื่อบูต Live CD ระวังว่าการจับคู่กับผู้ใช้ uid นั้นแตกต่างกัน (ดูตัวเลือก --numeric-owner ของ tar / rsync) ดูเพิ่มเติม clone2fs สำหรับการโคลนระบบไฟล์ extx
Stéphane Chazelas

1
ตัวเลือกในการcpจัดการลิงก์รักษา (-d), โหมด, ความเป็นเจ้าของและเวลา (-p), ทำซ้ำ (-R) และอยู่ในระบบไฟล์เดียว (-x) แต่ฉันคิดว่าคุณอาจจะถูกลิงค์ยากและขยาย คุณลักษณะ.
StarNamer

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/เป็นตัวเลือกที่ดี เพิ่ม-vih --progressถ้าคุณต้องการที่จะเห็นสิ่งที่มันทำ
rudolfbyker

4

แน่นอนว่าคุณสามารถสร้างมันโดยระบุว่าดิสก์ที่สองนั้นอยู่ในขณะนี้missing:

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

น่าเสียดายที่ฉันเป็นโรค OCD ที่นี่ แต่มีเหตุผลที่คุณเพิ่มสิ่งที่ขาดหายไปก่อนหน้า / dev / sda1 คำสั่งนั้นสำคัญหรือไม่?
whoami

ฉันคิดว่าคำสั่งซื้อไม่สำคัญ
eppesuig

3
ระวังด้วย! ด้วย --metadata = 1.2 (ค่าเริ่มต้นใหม่) ข้อมูลเมตา RAID (1MB) จะถูกแทรกเมื่อเริ่มต้น (แทนที่เนื้อหานั้น) และการเริ่มต้นของ md array จะเริ่มต้น 1MB ภายใน / dev / sda1 (/ dev / md0 จะสั้นกว่า / dev / sda1 1MB) ด้วย metadata = 0.9 (ค่าเริ่มต้นเก่า) ข้อมูลเมตา (64kB) จะถูกแทรกเมื่อสิ้นสุดการแทนที่สิ่งที่มี ดังนั้นใช้ --metadata = 0.9 และปรับขนาด FS ก่อน ไม่ว่าคุณจะทำอะไรให้สำรองข้อมูลไว้ล่วงหน้า
Stéphane Chazelas

3

คุณสามารถทำได้ คุณต้องระวังนิดหน่อย แต่มันไม่เป็นอันตราย¹ถ้าคุณระมัดระวังอย่างมากที่จะไม่พิมพ์ผิดอะไรและมันจะไม่ปล่อยให้ gotchas อยู่ในการตั้งค่า

ฉันขอแนะนำว่าอย่าทำการเปลี่ยนแปลงใด ๆ ในระบบจริง เป็นไปได้ในบางกรณี แต่ต้องการการดูแลเป็นพิเศษ Boot จาก LiveCD / LiveUSB เช่นแยกหรือSystemRescueCd

ขั้นแรกคุณจะต้องลดระดับเสียงลงเล็กน้อยเพื่อให้มีที่ว่างสำหรับ mdraid metadata (superblock) มีรูปแบบเมทาดาทาหลายรูปแบบคุณต้องใช้รูปแบบที่ทำให้เมทาดาทาที่ส่วนท้ายของดิสก์ (ในการตั้งค่าบางอย่างคุณอาจมีพื้นที่มากพอที่จะวางซุปเปอร์บล็อกไว้ในตอนต้น แต่มันซับซ้อนและมีความเสี่ยงมากกว่าดังนั้นฉันจึงเข้าไปในนั้น)

คุณต้องตรวจสอบให้แน่ใจว่าไม่ได้ใช้ 128KB สุดท้ายจากอุปกรณ์บล็อกเพื่อให้มีที่ว่างสำหรับ superblock /dev/sda1ดังนั้นคุณจะต้องหดระบบแฟ้มบน หากนี่เป็นระบบไฟล์ ext2 / ext3 / ext4 ให้รับขนาดระบบไฟล์ปัจจุบันด้วยtune2fs /dev/sda1จากนั้นรันresize2fs /dev/sda1 NNNโดยที่ NNN คือขนาดนั้นลบ 128kB คุณสามารถทำได้ด้วยPartedแทน หากคุณต้องการย่อขนาดระบบไฟล์ extN คุณจะต้องยกเลิกการต่อเชื่อมก่อน ระบบไฟล์ btrfs สามารถหดสดได้

เมื่อคุณมั่นใจได้ว่า 128kB สุดท้ายของอุปกรณ์บล็อกนั้นว่างแล้วให้โทรmdadm --createเพื่อสร้างโวลุ่ม RAID-1 นี่ไม่ได้แตะส่วนใดส่วนหนึ่งของเสียงนอกเหนือจาก superblock เริ่มแรกระดับเสียงจะมีองค์ประกอบเดียว: ส่วนอื่น ๆ ทั้งหมดจะถูกตั้งค่าเป็นล้มเหลว คุณต้องผ่าน--level=1(หรือเทียบเท่า-n 1) (วิธีนี้ใช้ได้กับ RAID-1 เท่านั้น) และ--metadata=0.9หรือ--metadata=1.0(รูปแบบ superblock เริ่มต้นที่ 1.2 จะวาง superblock ไว้ใกล้กับจุดเริ่มต้นของอุปกรณ์ซึ่งอาจเขียนทับข้อมูล) อาร์กิวเมนต์ to --raid-devices( -n) คือจำนวนของส่วนประกอบ (รวมที่ขาดหายไป) ในโวลุ่ม RAID

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

ตอนนี้คุณสามารถเปิดใช้งานอาร์เรย์และเพิ่มส่วนประกอบอื่น ๆ

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

หมายเหตุเกี่ยวกับ bootloaders: Grub2 เข้าใจ Linux RAID-1 และสามารถบู๊ตได้ Bootloaders เช่น Grub1 ที่ไม่เข้าใจ RAID อ่านอย่างโปร่งใสจากมิเรอร์โวลุ่ม แต่ระบบของคุณจะไม่บูตหากไดรฟ์ที่ bootloader อ่านนั้นล้มเหลว หากโวลุ่ม RAID อยู่บนพาร์ติชันให้ตรวจสอบให้แน่ใจว่าได้ติดตั้งบูทเซกเตอร์สำหรับการบู๊ตของ Grub ในทั้งสองไดรฟ์

¹ ต้องแน่ใจว่าได้สำรองข้อมูลแล้ว “ ไม่อันตราย” หมายถึง“ คุณอาจไม่ต้องการมัน” ไม่ใช่“ เดิมพันข้อมูลของคุณ”

โพสต์และปรับเปลี่ยนเล็กน้อยจากวิธีการตั้งค่าการทำมิเรอร์ดิสก์ (RAID-1)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.