เปรียบเทียบ RAID-0 จากคำสั่ง mdadm และ lvm ตอนที่ 1

เกิดความสงสัยขึ้นมา ขณะคอนฟิกเซิร์ฟเวอร์ที่มีดิสก์หลายๆ ก้อน เพื่อทำหน้าที่เป็น file server ว่า ระหว่างการใช้ mdadm และ lvm เพื่อรวมดิสก์แต่ละก้อนเข้าด้วยกันทำเป็น RAID-0 อย่างไหนจะเร็วกว่ากัน เลยทดสอบและนำผลลัพธ์แต่ละคอนฟิกมาเปรียบเทียบกัน

และเพื่อความครบถ้วนของการเปรียบเทียบ เลยทดสอบคอนฟิกทั้งเป็นแบบ linear และ stripe (RAID-0) จากการใช้คำสั่งทั้งสองด้วย โดยแยกเป็นสองบทความ ในตอนแรกจะใช้คำสั่ง mdadm ก่อน

หมายเหตุ

  • โดยทั่วไป คำว่า RAID-0 หมายถึงการคอนฟิกแบบ stripe
  • ข้อควรระวังการเลือกใช้คอนฟิก RAID-0 เพียงอย่างเดียว ถ้าดิสก์ก้อนใดก้อนนึงเสียไป มีโอกาสทำให้ข้อมูลบางส่วนหรือทั้งหมดเสียหายได้ โดยทั่วไปนิยมคอนฟิก RAID-0 ทับไปบนคอนฟิก RAID-1 หรือ RAID-5 เพื่อทำเป็น RAID-10, หรือ RAID-50
  • ความเสียหายของข้อมูลเมื่อดิสก์ก้อนหนึ่งเสีย ในการคอนฟิกแต่ละแบบจะไม่เหมือนกันเช่น ถ้าคอนฟิกเป็นแบบ “linear” การกู้ข้อมูลกลับคืนมาจะมีโอกาสมากกว่า เพราะข้อมูลส่วนใหญ่จะถูกเขียนลงบนดิสก์ก้อนเดียว แต่ข้อเสียของ “linear” คือความเร็วในการเขียนข้อมูลจะน้อยกว่าแบบ “stripe”

ทดสอบดิสก์แต่ละก้อน

ก่อนจะเริ่มคอนฟิก RAID-0 ขอเริ่มทดสอบดิสก์ทีละตัว เพื่อดูความเร็วคร่าวๆ ในการเขียนข้อมูล

ตัวอย่างการสร้างพาร์ทิชั่นของดิสก์แต่ละก้อน

[root@fc10-disk ~]# fdisk -l /dev/sdc
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       24321   195358401   83  Linux
[root@fc10-disk ~]# fdisk -l /dev/sdd
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       24321   195358401   83  Linux

สร้าง filesystem เป็นแบบ xfs ในแต่ละพาร์ทิชั่น และ mount เข้ากับพาธที่สร้าง

[root@fc10-disk ~]# mkfs.xfs -f /dev/sdc1
[root@fc10-disk ~]# mkfs.xfs -f /dev/sdd1
[root@fc10-disk ~]# mkdir /mnt/sdc1
[root@fc10-disk ~]# mkdir /mnt/sdd1
[root@fc10-disk ~]# mount /dev/sdc1 /mnt/sdc1
[root@fc10-disk ~]# mount /dev/sdd1 /mnt/sdd1

ทดสอบการเขียนไฟล์ขนาด 2 GB ในแต่ละพาร์ทิชั่น

[root@fc10-disk sdc1]# cd /mnt/sdc1/
[root@fc10-disk sdc1]# dd if=/dev/zero of=file-2g.bin bs=1000000 count=2000
2000+0 records in
2000+0 records out
2000000000 bytes (2.0 GB) copied, 38.4796 s, 52.0 MB/s
[root@fc10-disk sdd1]# cd /mnt/sdd1/
[root@fc10-disk sdd1]# dd if=/dev/zero of=file-2g.bin bs=1000000 count=2000
2000+0 records in
2000+0 records out
2000000000 bytes (2.0 GB) copied, 42.4467 s, 47.1 MB/s

ได้ความเร็วประมาณ 50 MB/s

ยกเลิกการ mount ดิสก์แต่ละก้อน

[root@fc10-disk sdd1]# cd
[root@fc10-disk ~]# umount /mnt/sdc1
[root@fc10-disk ~]# umount /mnt/sdd1

คำสั่ง mdadm สร้างดิสก์แบบ linear

คอนฟิกแรกจะใช้คำสั่ง mdadm เพื่อสร้างดิสก์เป็นแบบ “linear” ซึ่งเป็นการนำพื้นที่ดิสก์ทั้งสองก้อนมาต่อเรียงกัน เวลาเขียนข้อมูลจะเขียนบนดิสก์ตัวเดียวก่อน ถ้าก้อนแรกเต็มถึงจะเขียนดิสก์อีกก้อน

[root@fc10-disk ~]# mdadm --create --verbose /dev/md0 --level=linear --raid-devices=2 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.

ตรวจสอบสถานะของดิสก์

[root@fc10-disk ~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Jun  7 12:35:05 2009
     Raid Level : linear
     Array Size : 390716672 (372.62 GiB 400.09 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent
    Update Time : Sun Jun  7 12:35:05 2009
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Rounding : 64K
           UUID : 450c959b:c5d34b87:792b422a:65152846
         Events : 0.1
    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1

สร้าง filesystem เป็นแบบ xfs และ mount เข้ากับพาธที่สร้าง

[root@fc10-disk ~]# mkfs.xfs -f /dev/md0
[root@fc10-disk ~]# mkdir /mnt/md0
[root@fc10-disk ~]# mount /dev/md0 /mnt/md0/
ดูขนาด filesystem ที่สร้างได้
[root@fc10-disk ~]# cd /mnt/md0/
[root@fc10-disk md0]# df -k .
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0             390585600      4256 390581344   1% /mnt/md0

ทดสอบการเขียนไฟล์ขนาด 2 GB บนคอนฟิก “linear”

[root@fc10-disk md0]# dd if=/dev/zero of=file-2g.bin bs=1000000 count=2000
2000+0 records in
2000+0 records out
2000000000 bytes (2.0 GB) copied, 37.9349 s, 52.7 MB/s

ความเร็วที่ได้จะใกล้เคียงกับการเขียนไฟล์ลงดิสก์ก้อนเดียว

ยกเลิกการ mount ดิสก์ และปิด (stop) การใช้ดิสก์แบบ linear

[root@fc10-disk md0]# cd
[root@fc10-disk ~]# umount /mnt/md0
[root@fc10-disk ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@fc10-disk ~]# cat /proc/mdstat
Personalities : [linear]
unused devices: <none>

คำสั่ง mdadm สร้างดิสก์แบบ  stripe (RAID-0)

คอนฟิกที่สอง จะใช้คำสั่ง mdadm เพื่อคอนฟิกดิกส์สองกันเป็นแบบ stripe หรือ RAID-0 เวลาเขียนข้อมูลจะเขียนลงบนดิสก์ทั้งสองก้อนพร้อมกัน ทำให้ความเร็วเพิ่มขึ้น

หมายเหตุ การระบุออปชั่น “–level” เป็นแบบ “stripe” หรือ “raid-0”  ให้ผลเหมือนกัน

[root@fc10-disk ~]# mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=linear devices=2 ctime=Sun Jun  7 13:28:06 2009
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=linear devices=2 ctime=Sun Jun  7 13:28:06 2009
Continue creating array? y
mdadm: array /dev/md0 started.

ตรวจสอบสถานะของดิสก์

[root@fc10-disk ~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Jun  7 13:40:02 2009
     Raid Level : raid0
     Array Size : 390716672 (372.62 GiB 400.09 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent
    Update Time : Sun Jun  7 13:40:02 2009
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
     Chunk Size : 64K
           UUID : 1ee50769:2becc762:fb9a3596:c284b115
         Events : 0.1
    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1

สร้าง filesystem เป็นแบบ xfs และ mount เข้ากับพาธที่สร้างไว้

[root@fc10-disk ~]# mkfs.xfs -f /dev/md0
[root@fc10-disk ~]# mount /dev/md0 /mnt/md0/
ดูขนาด filesystem ที่สร้างได้
[root@fc10-disk ~]# cd /mnt/md0/
[root@fc10-disk md0]# df -k .
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0             390585344      4640 390580704   1% /mnt/md0

ทดสอบความเร็วการเขียนข้อมูลบนดิสก์ RAID-0

[root@fc10-disk md0]# dd if=/dev/zero of=file-2g.bin bs=1000000 count=2000
2000+0 records in
2000+0 records out
2000000000 bytes (2.0 GB) copied, 20.7292 s, 96.5 MB/s

ความเร็วที่ได้ใกล้เคียงกับผลรวมของความเร็วในการเขียนข้อมูลลงดิสก์แต่ละก้อน

ยกเลิกการ mount ดิสก์ และปิด (stop) การใช้ดิสก์แบบ “stripe”

[root@fc10-disk md0]# cd
[root@fc10-disk ~]# umount /mnt/md0
[root@fc10-disk ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@fc10-disk ~]# cat /proc/mdstat
Personalities : [linear] [raid0]
unused devices: <none>

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.