ฉันมีพาร์ติชั่น /dev/sdb2 ที่ฟอร์แมตเป็น fd และติดตั้งเป็น /var ฉันต้องทำให้พาร์ติชั่นนี้พร้อมที่จะจู่โจม 1 (สำหรับตัวอย่างนี้ /dev/md1 ) ฉันยังไม่มี HD ตัวที่สอง แต่ต้องการเตรียมพร้อมในแบบที่เมื่อ HD มาถึง ก็แค่เสียบปลั๊กและเพิ่มเข้าไปใน Raid Array

เนื่องจากพาร์ติชั่นนี้คือ /var ของฉัน ฉันจึงรีบูทระบบด้วย live cd และพยายามสร้างด้วยคำสั่งต่อไปนี้:

mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/sdc2 missing

มันบ่นว่าสิ่งนี้เป็นส่วนหนึ่งของอาร์เรย์ แต่ฉันยอมรับและสร้าง md1 แล้ว ฉันใช้:

mdadm --examine --scan >> /mnt/sdc1/etc/mdadm.conf

เพื่อคัดลอกข้อมูล mdadm ไปยัง / hd. นอกจากนี้ ฉันเปลี่ยน fstab เพื่อใช้ /dev/md1

ปัญหาคือเมื่อฉันรีบูต ฉันได้รับข้อผิดพลาดเนื่องจากความแตกต่างระหว่างขนาดจริงและระบบไฟล์ ข้อผิดพลาดแบบเต็มคือ:

The filesystem size (according to the superblock is 52428127 blocks
The physical size of the device is 52428096 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort(y)?

ความคิดใด ๆ เกี่ยวกับสาเหตุของสิ่งนี้?

หลังจากนั้น วิธีเดียวที่จะทำให้ระบบกลับมาคือการรีบูตอีกครั้งเป็น live cd และรันสิ่งนี้บนพาร์ติชั่น:

mdadm --zero-superblock /dev/sdc2

ขอบคุณ.

answer

MD จำเป็นต้องจัดเก็บข้อมูลเมตาเกี่ยวกับสถานะ RAID เพื่อให้ข้อมูลมีความสอดคล้องกัน ด้วยเวอร์ชันซูเปอร์บล็อกเริ่มต้น (0.90) และเวอร์ชัน 1.0 ข้อมูลนี้จะถูกเก็บไว้ที่ส่วนท้ายของอุปกรณ์ ซึ่งจะช่วยลดจำนวนพื้นที่ที่ระบบไฟล์สามารถใช้ได้ ในการแก้ไขปัญหานี้ ก่อนอื่นให้ย่อขนาดระบบไฟล์ให้มีขนาดโดยรวม (ฉันจะลบ 100 MB หรือมากกว่านั้นเพื่อความปลอดภัย) เพิ่มข้อมูลเมตาตามที่คุณทำ จากนั้นปรับขนาดอีกครั้งเป็นขนาดใหม่จริง ตัวอย่างเช่น หากคุณมีระบบไฟล์ ext3 ขนาด 5 GB ดังนั้น

resize2fs /dev/sdc2 4900M
mdadm --create, --examine as above
resize2fs /dev/md1 # This resizes the filesystem to the actual size of the device

เมื่อคุณคำนวณขนาด ตรวจสอบให้แน่ใจว่าคุณใช้ขนาดฐาน 2 หรือฐาน 10 อย่างสม่ำเสมอ