ติดตั้ง ubuntu 10.04 server บน software raid 1

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 1-08-2555

ดูแลโดย WIBOON

เขียนครั้งแรกโดยวิภัทร ศรุติพรหม


สภาพแวดล้อมตัวอย่างการติดตั้งของตัวอย่างนี้

  • เป็น RAID ราคาประหยัด ไม่ต้องใช้ hardware RAID controller เป็นแบบ software raid ใช้กับ hard disk บน PC ทั่วไปได้
  • เป็น ubuntu รุ่น server เวอร์ชั่น 10.0.4
  • ติดตั้งบน hard disk ทั้งลูก ซึ่งจะทำลายข้อมูลเก่าที่มีอยู่เดิม
  • ใช้ hard disk ชนิด SATA ขนาด 120 GB จำนวน 2 ลูก
  • จัดทำเป็นแบบ software raid 1 (mirroing) ให้มีพื้นที่สำหรับ / ขนาด 10 GB และพื่นที่สำหรับ swap ขนาด 1 GB


  1. ให้ scan memory ว่ายังคงอยู้ในสภาพดี ตามคำแนะนำใน การ scan memory ด้วย sysresccd
  2. ให้ scan hard disk ว่ายังคงอยู่ในสภาพดี ตามคำแนะนำในเวบ การ scan hard disk ด้วย sysresccd
  3. ลบ partition ใน hard disk ทั้งหมด ตามคำแนะนำในเวบ ใช้ fdisk ด้วย sysresccd
  4. บูท PC ด้วยแผ่นซีดี ubuntu ที่เตรียมไว้ต้นฉบับจาก http://ftp.psu.ac.th/pub/ubuntu-releases/iso/10.04/ubuntu-10.04.4-server-i386.iso
  5. ได้หน้าต่าง Language ให้เลือก English เหมือนเดิม
    ได้หน้าต่าง ubuntu ให้เลือก Install Ubuntu server

    ระบบจะทำงานต่อ ให้รอจนได้หน้าต่างว่า Choose language
    ที่หัวข้อ "Choose a language:" ให้คงค่าเดิมคือ English แล้วกดแป้น Enter
    ที่หัวข้อ "Choose a country, territory or area:" ให้เปลี่ยนไปเลือกเป็น other แล้วกดแป้น Enter
    ได้หน้าต่างใหม่ที่หัวข้อ "Choose a country, territory or area:" ให้เปลี่ยนเลื่อนไปหา -- Asia -- เลือก Thailand แล้วกดแป้น Enter

    ได้หน้าต่างว่า "Ubuntu installer menu" แสดงออกมา
    ที่หัวข้อ "Detect keyboard layout?" ให้เลือกเปลี่ยนเป็น <No> แล้วกดแป้น Enter
    ที่หัวข้อ "The origin of the keyboard:" ให้เลือกเปลี่ยนเป็น Thailand แล้วกดแป้น Enter
    ที่หัวข้อ "Keyboard layout:" ให้คงค่าเดิมคือ Thailand แล้วกดแป้น Enter
    ที่หัวข้อ "Method for toggling betwenn national and Latin mode:" ให้คงค่าเดิมคือ Alt+Shift ไว้เหมือนเดิม แล้วกดแป้น Enter

    ระบบจะทำงานต่อไปเรื่อยๆ
    หากได้หน้าจอเตือนว่า "Network autoconfiguration failed" ไม่ต้องทำอะไรให้กดแป้น Enter ได้เลย
    จะ ได้หน้าต่างที่หัวข้อให้ "Network configuration method:" ให้เลือกเปลี่ยนเป็น "Do not configure the network at this time" แล้วกดแป้น Enter
    ที่หัวข้อ "Hostname:" ให้เปลี่ยนชื่อโฮสต์ตามใจชอบ แล้วกดแป้น Enter

    ได้หน้าต่าง "Partitioning method:" ให้เลือก "Manual" แล้วกดแป้น Enter
  6. (ขั้นตอนต่อไปนี้เป็นการสร้าง partition บน hard disk sda แบบ raid ขนาด 10 GB เพื่อเตรียมใช้เป็น software raid 1 สำหรับพื้นที่ /)
    ได้หัวข้อ "Partition disks" ให้เลือกพืนที่ของ hard disk ชื่อ sda
    โดยไปเลือกบรรทัดข้อความตัวอย่างว่า "pri/log 120.0 GB FREE SPACE" แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this free space:" ให้เลือก "Create a new partition" แล้วกดแป้น Enter
    ได้หัวข้อ "New partition size:" ตัวอย่างนี้ให้ป้อนว่า 10.0 GB แล้วกดแป้น Enter
    ได้หัวข้อ "Type for the new partition:" ให้เลือก "Primary" แล้วกดแป้น Enter
    ได้หัวข้อ "Location for the new partition:" ให้เลือก "Beginning" แล้วกดแป้น Enter
    ได้หัวข้อ "Partition settings:" ให้เลื่อนไปเลือกบรรทัดว่า "Use as:" แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this partition:" ให้เปลี่ยนไปเลือกเป็นบรรทัดว่า "physical volume for RAID" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition settings:" ให้เลือกไปเลือกบรรทัดว่า "Bootable flag:" แล้วกดแป้น Enter จะได้ค่าเปลี่ยนเป็นว่า "on"
    ต่อไปให้เลื่อนไปเลือกบรรทัดว่า "Done setting up the partition" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition disks" จะได้บรรทัดเพิ่มขึ้นตัวอย่างว่า "#1 primary 10.0 GB B K raid"
  7. (ขั้นตอนต่อไปนี้เป็นการสร้าง partition บน hard disk sda แบบ raid ขนาด 1 GB เพื่อเตรียมใช้เป็น software raid 1 สำหรับพื้นที่ swap)
    ยังคงให้เลือกพืนที่ของ hard disk ชื่อ sda แล้วเลือกบรรทัดข้อความตัวอย่างว่า "pri/log 110.0 GB ที่ว่าง แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this free space:" ให้เลือก "Create a new partition" แล้วกดแป้น Enter
    ได้หัวข้อ "New partition size:" ตัวอย่างนี้ให้ป้อนว่า 1.0 GB แล้วกดแป้น Enter
    ได้หัวข้อ "Type for the new partition:" ให้เลือก "Primary" แล้วกดแป้น Enter
    ได้หัวข้อ "Location for the new partition:" ให้เลือก ""Beginning แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this partition:" ให้เปลี่ยนไปเลือกเป็นบรรทัดว่า "physical volume for RAID" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition settings:" ปล่อยให้ "Bootable flag:" เป็น "off" เหมือนเดิม
    ให้เลื่อนไปเลือกบรรทัดว่า "Done setting up the partition" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition disks" จะได้บรรทัดเพิ่มขึ้นตัวอย่างว่า "#2 primar 1.0 GB K raid"
  8. ถึงตอนนี้การสร้าง partition บน hard disk sda เพื่อเตรียมใช้เป็น software raid 1 สำหรับพื้นที่ / และ swap สำเร็จแล้ว
    ต่อไปต้องสร้าง partition บน hard disk sdb เพื่อเตรียมใช้เป็น software raid 1 สำหรับพื้นที่ / และ swap ด้วย
    ให้ใช้วิธีการทำนองเดียวกันกับการสร้างบน sda เพียงแต่เปลี่ยนการค่าจาก sda ให้เป็น sdb เท่านั้น
    หลังจาก hard disk ทั้ง sda และ sdb สำเร็จทั้ง 2 ลูก จะกลับมาได้หัวข้อ "แบ่งพาร์ทิชั่นในดิสก์"
  9. (ขั้นตอนต่อไปเป็นการสร้าง partition แบบ software raid 1 เตรียมไว้สำหรับพื้นที่ / )
    ให้เลื่อนขึ้นไปเลือกบรรทัดบนสุดว่า "Configure software RAID" แล้วกดแป้น Enter
    ได้หัวข้อ "Write the changes to the storage devices and configure RAID" ให้เลื่อนไปเลือกว่า "<Yes>" แล้วกดแป้น Enter
    ได้หัวข้อ "Multidisk configuration action" ให้เลือก "Create MD device" แล้วกดแป้น Enter
    ได้หัวข้อ "Multidisk device type:" ให้เลื่อนไปเลือก "RAID1" แล้วกดแป้น Enter
    ได้หัวข้อ "Number of active devices for the RAID1 array:" ปล่อยให้เป็นค่า 2 เหมือนเดิม แล้วกดแป้น Enter
    ได้หัวข้อ "Number of spare devices for the RAID1 array:" ปล่อยให้เป็นค่า 0 เหมือนเดิม แล้วกดแป้น Enter
    ได้หัวข้อ "Active devices for the RAID1 multidisk device:" ให้เลือก /dev/sda1 และ /dev/sdb1
    โดยไปที่ /dev/sda1 ให้กดแป้น space แล้วไปที่ /dev/sdb1 ให้กดแป้น space
    จะมีอักษร * เพิ่มขึ้นข้างหน้าบรรทัดที่ถูกเลือก เสร็จแล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Multidisk configuration action"
  10. (ขั้นตอนต่อไปเป็นการสร้าง partition แบบ software raid 1 เตรียมไว้สำหรับพื้นที่ swap )
    ให้เลือก "Create MD device" แล้วกดแป้น Enter
    ได้หัวข้อ Multidisk device type:" ให้เลื่อนไปเลือก "RAID1" แล้วกดแป้น Enter
    ได้หัวข้อ "Number of active devices for the RAID1 array:" ปล่อยให้เป็นค่า 2 เหมือนเดิม แล้วกดแป้น Enter
    ได้หัวข้อ "Number of spare devices for the RAID1 array:" ปล่อยให้เป็นค่า 0 เหมือนเดิม แล้วกดแป้น Enter
    ได้หัวข้อ "Active devices for the RAID1 multidisk device:" ให้เลือก /dev/sda2 และ /dev/sdb2
    โดยไปที่ /dev/sda2 ให้กดแป้น space แล้วไปที่ /dev/sdb2 ให้กดแป้น space
    จะมีอักษร * เพิ่มขึ้นข้างหน้าบรรทัดที่ถูกเลือก เสร็จแล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Multidisk configuration action" ให้เลือก "Finish"
    จะกลับมาได้หัวข้อ "Partition disks" อีกครั้ง
  11. (ขั้นตอนต่อไปเป็นการกำหนดพื้นที่บน software raid 1 ให้เป็นพื้นที่ /)
    ให้ด้านล่างของ RAID1 ขื่อ device #0 ไปเลือกบรรทัดข้อความตัวอย่างว่า "#1 10.0 GB" แล้วกดแป้น Enter
    ได้หัวข้อ "Partition settings:" ให้เลื่อนไปเลือกบรรทัดว่า "Use as:" แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this partition:" ให้เปลี่ยนไปเลือกเป็นบรรทัดว่า "Ext4 journaling file system" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition settings:" ให้เลือกบรรทัด(ถ้ามี)ว่า "Format the partition:" แล้วกดแป้น Enter จะได้ค่าเปลี่ยนเป็น yes, format it
    ต่อไปให้ไปเลือกบรรทัดว่า "Mount point:" แล้วกดแป้น Enter
    ได้หัวข้อ "Mount point for this partition:" ให้เลือกบรรทัดว่า "/ - the root file system" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition settings:" ให้เลื่อนไปเลือกบรรทัดว่า "Done setting up the partition" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition disks" จะได้บรรทัดเปลี่ยนแปลงตามตัวอย่างว่า "#1 10.0 GB f ext4 /"
  12. (ขั้นตอนต่อไปเป็นการกำหนดพื้นที่บน software raid 1 ให้เป็นพื้นที่ swap)
    ให้ด้านล่างของ RAID1 ขื่อ device #1 ไปเลือกบรรทัดข้อความตัวอย่างว่า "#1 1.0 GB" แล้วกดแป้น Enter
    ได้หัวข้อ "Partition settings:" ให้เลื่อนไปเลือกบรรทัดว่า"Use as:" แล้วกดแป้น Enter
    ได้หัวข้อ "How to use this partition:" ให้เปลี่ยนไปเลือกเป็นบรรทัดว่า "swap area" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition settings:" ให้เลื่อนไปเลือกบรรทัดว่า "Done setting up the partition" แล้วกดแป้น Enter
    กลับมาได้หัวข้อ "Partition disks" จะได้บรรทัดเปลี่ยนแปลงตามตัวอย่างว่า "#1 10.0 GB f swap swap"
  13. ที่หัวข้อ "Partition disks" ให้เลื่อนไปเลือกหัวข้อล่างสุดว่า "Finish paritioning and write changes to disk" แล้วกดแป้น Enter
    ได้หัวข้อว่า "Do you want to boot your system if your RAID become degraded?" ให้เปลี่ยนไปเลือก "<Yes>" แล้วกดแป้น Enter
    ได้หัวข้อ "Write the changes to disk:" ให้เลือก "<Yes>" แล้วกดแป้น Enter

    หากได้คำเตือนเกี่ยวกับการจัดการอุปกรณ์ /dev/md/0 และ /dev/md/1 ไม่ต้องทำอะไร ให้กดแป้น Enter ต่อไป
  14. ระบบจะทำการติดตั้งซอฟต์แวร์ ซึ่งก็จะเหมือนๆกับการติดตั้ง ubuntu server ทั่วไป ดูตามคำแนะนำใน ติดตั้ง ubuntu 10.04 server
  15. หลังจากติดตั้งสำเร็จแล้ว ให้ login เข้าไป อ่านค่าสถานะของ software raid
    ด้วยคำสั่ง sudo mdadm --detail /dev/md0 และ sudo mdadm --detail /dev/md1
    ตัวอย่างผลข้อความที่แสดงออกมา
    Update Time : Thu Apr 9 10:07:20 2009
    State : active
    ....
    Number Major Minor RaidDevice State
    0 8 17 0 active sync /dev/sdb1
    1 8 1 1 active sync /dev/sda1
    แสดงว่าอยู่ในสภาพปรกติ

    ตัวอย่างการอ่านค่าสถานะด้วยคำสั่ง cat /proc/mdstat
    Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
    md1 : active raid1 sda2[0] sdb2[1]
    1951808 blocks [2/2] [UU]
    md0 : active raid1 sda1[0] sdb1[1]
    239255936 blocks [2/2] [UU]
    unused devices: <none>
  16. ดูข้อมูล hard disk ว่ามี error ที่แฟ้ม /var/log/kern.log ตัวอย่างมีข้อมูลว่า
    Jun 21 10:00:33 myhost kernel: ata4.00: status: { DRDY ERR }
    ...
    Jun 21 10:00:33 myhost kernel: sd 3:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
    แสดงว่าเป็น hard disk ที่เป็น ata4 หรือ /dev/sdb

    ต่อไปให้ดูข้อมูลเพิ่มเติมด้วยคำสั่ง
    dmesg|grep ata4 ได้ผลข้อความประมาณว่า
    ata4: SATA max UDMA/133 cmd 0xb880 ctl 0xb800 bmdma 0xb488 irq 22
    ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
    ata4.00: ATA-8: ST3250310NS, SN05, max UDMA/133
    ata4.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 0/32)
    ata4.00: configured for UDMA/133
    แสดงว่าเป็น hard disk นี้รุ่น ST3250310NS ต่อไว้บน SATA4
  17. ตัวอย่างการจัดการเปลี่ยน hard disk แทนของเดิมที่อาการไม่ดี สมมติว่าของเดิมต่อเป็น /dev/sdb
    ให้ปลด /dev/sdb ออกจากของระบบเดิมก่อน ด้วยคำสั่งประมาณว่า
    sudo mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
    sudo mdadm /dev/md1 --fail /dev/sdb2 --remove /dev/sdb2
    จัดการ shutdown server แล้วถอดเปลี่ยนเอา hard disk ลูกใหม่ใส่ให้เรียบร้อย

    บูท server ใหม่ จนระบบทำงานแล้ว จัดการ hard disk ดังนี้
    sudo dd if=/dev/sda bs=512 count=63 of=/dev/sdb
    sudo sfdisk -d /dev/sda > /tmp/mydisk.part
    sudo sfdisk --force /dev/sdb < /tmp/mydisk.part
    เสร็จแล้วให้รีบูท server ใหม่

    บูท server ใหม่ จนระบบทำงานแล้ว จัดการ hard disk raid ดังนี้
    sudo mdadm --add /dev/md1 /dev/sdb2
    sudo mdadm --add /dev/md0 /dev/sdb1
    ทำแค่นี้ระบบก็คืนตัวมาให้ใช้งาน
    หมายเหตุ การ rebuild อาจใช้เวลานาน แต่ก็ใช้งานได้ เพียงแต่ระบบอาจช้าบ้าง
  18. การนำ hard disk /dev/sdb ลูกใหม่มาใช้แทนที่ hard disk ของเดิมที่เสียไป
    หลังจากระบบบูทได้เป็นสภาพ bootdegraded แล้ว
    ให้คัดลอก partition จาก hard disk /dev/sda ที่ยังคงสภาพดีอยู่
    ไปใส่ไว้ใน hard disk /dev/sdb ที่ใส่เข้าไปใหม่ ใช้คำสั่งดังต่อไปนี้
    sudo dd if=/dev/sda bs=512 count=63 of=/dev/sdb
    sudo sfdisk -d /dev/sda > /tmp/mydisk.part
    sudo sfdisk --force /dev/sdb < /tmp/mydisk.part
    sudo mdadm --add /dev/md0 /dev/sdb1
    sudo mdadm --add /dev/md1 /dev/sdb2
  19. รอจนระบบ rebuild ก็จะใช้งานได้ตามปรกติ


เพิ่มเติม

จากการทดสอบ 2 กรณี สำหรับการทำ RAID1 เฉพาะพาร์ทิชัน /

กรณีที่ 1

เมื่อถอดฮาร์ดดิสก์ออก 1 ลูก แล้วรันให้ทำงานด้วยฮาร์ดดิสก์ลูกเดียว

จากนั้นจะนำลูกเดิมที่ถอดออกนั้นใส่กลับเนื่องจากลูกที่ถอดออกไม่ได้เสียจริง

เมื่อใส่ฮาร์ดดิสก์ทั้งสองลูกแล้วเปิดเครื่อง

login เข้าทำงานในโหมด command line

ดูว่า active sync เป็น /dev/sda1 หรือ /dev/sdb1 ด้วยคำสั่ง

sudo mdadm -D /dev/md0

สมมติว่า active sync เป็น /dev/sda1

ฮาร์ดิสก์ลูกที่เรานำมาใส่กลับเป็น /dev/sdb1

ให้ทำดังนี้

sudo mdadm --zero-superblock /dev/sdb1

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

ดูว่ามันจะเข้าสู่การ rebuild หรือไม่ด้วยคำสั่ง

sudo mdadm -D /dev/md0

รอจนระบบ rebuild ก็จะใช้งานได้ตามปรกติ


กรณีที่ 2

เมื่อถอดฮาร์ดดิสก์เสียออก 1 ลูก แล้วรันให้ทำงานด้วยฮาร์ดดิสก์ลูกเดียว

แล้วจะนำลูกใหม่ใส่

เมื่อใส่ฮาร์ดดิสก์ทั้งสองลูกแล้วเปิดเครื่อง

login เข้าทำงานในโหมด command line

ดูว่า active sync เป็น /dev/sda1 หรือ /dev/sdb1 ด้วยคำสั่ง

sudo mdadm -D /dev/md0

สมมติว่า active sync เป็น /dev/sda1

ฮาร์ดิสก์ลูกที่เรานำมาใส่กลับเป็น /dev/sdb

ต้องคัดลอกพาร์ทิชันจากฮาร์ดดิสก์ที่ดี

sudo dd if=/dev/sda bs=512 count=63 of=/dev/sdb

sudo sfdisk -d /dev/sda > /tmp/mydisk.part

sudo sfdisk --force /dev/sdb < /tmp/mydisk.part

sudo reboot

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

ดูว่ามัน rebuild ถึงไหน

watch -n1 cat /proc/mdstat

เบรคด้วย Ctrl+C

รอจนระบบ rebuild ก็จะใช้งานได้ตามปรกติ