.comment-link {margin-left:.6em;}

Orr' Weblog

ไม่ตายไม่เลิก...

วันศุกร์, กุมภาพันธ์ 09, 2007

Logical Volumn Management (LVM)

หลายวันก่อนซื้อ HD ขนาด 320 GB มาใหม่ เพราะเนื้อที่ของ HD เก่าเริ่มเต็ม ต้องเริ่มย้ายพวกไฟล์เก่าๆ ที่ไม่ค่อยได้ใช้้ไปลง DVD กับ CD หลังๆ เริ่มขี้เกียจเลยต้องแวะไปซื้อ HD มาเพิ่มดีกว่า

สาเหตุที่ต้องใช้ LVM ก็เพราะอยากรวมเนื้อที่จาก 2 HD เข้าด้วยกัน จะได้ไม่ไปต้องไปย้านไฟล์เวลา mount point เดิมเต็ม แล้วก็ทำให้เรามีอิสระเต็มที่ในการสร้าง เปลี่ยนขนาด หรือสร้าง LV (Logical Volumn) ที่จะไปเป็นแต่ละ mount point ได้

สำหรับวิธีการสร้าง แนะนำให้แบ่งพาติชันสำหรับ HD ใหม่ตามปกติไปก่อน จริงๆ จะสร้างสำหรับทั้งดิสก์ไก็ได้ แต่ไม่แนะนำครับ เพราะ โปรแกรมอื่นๆ จะเห็นดิสก์นั้นเป็นดิสก์ว่างๆ ซึ่งอาจทำให้เขียนทับดิสก์นั้นโดยไม่ได้ตั้งใจได้

สำหรับส่วนประกอบของ LVM ตามลำดับจากล่างขึ้นไปบน คือ
  • Physical Volumn (PV)
    เป็นส่วนที่เกี่ยวข้องกับดิสก์มากที่สุด ซึ่งเป็นส่วนที่ใช้เก็บข้อมูลจริง
    • Physical Extent (PE)
      ส่วนที่เก็บข้อมูลเล็กๆ ภายใน PV
  • Volumn Group (VG)
    เป็นการนำหลาย PV มารวมกลุ่มกันเพื่อให้ง่ายต่อการจัดการ
  • Logical Volumn (LV)
    • Physical Extent (PE)
      ส่วนที่เก็บข้อมูลเล็กๆ ภายใน LV



คำเตือน **ก่อนทำอย่าลืมแบกอัพข้อมูลกันไว้่ก่อนนะครับ เพราะหลังจากทำแล้วจะทำให้ข้อมูลในพาร์ติชันเดิมสูญหาย

มาเริ่มกันเลย
  • สร้าง PV
    pvcreate /dev/hda2
    <- พาร์ติชันเดิมที่ได้ย้ายข้อมูลไปเก็บที่อื่นก่อนแล้ว ซึ่งสำหรับผมคือ hdc2 ซึ่งสร้างไว้ใหญ่พอที่จะเก็บข้อมูลเดิมได้ pvcreate /dev/hda1 <- พาร์ติชันของดิสก์ฺใหม่

    ดูราละเอียดของ PV ที่สร้างด้วย
pvdisplay

  • สร้าง VG
    vgcreate datavg /dev/hda2 /dev/hdc1
    <-สร้าง VG ใหม่ โดยจะมีเนื้อทีรวมเท่ากับขนาดของ hda2 และ hdc1 รวมกัน
vgchange -a y atavg <- activate VG ดูราละเอียดของ VG ที่สร้างด้วย vgdisplay datavg

  • สร้าง Logical Volumn (LV)
    ซึ่งจะต้องมีการกำหนดขนาดที่ต้องการด้วย -l ซึ่งจะกำหนดขนาดเป็นจำนวนของ PV หรือ -L ที่กำหนดขนาดเป็นหน่วย ของไบท์หรือ k, K, m, M, g, G, t หรือ T ที่มีหน่วยเป็น กิโลบิต, กิโลไบท์, เมกกะบิต, เมกกะไบท์, กิกะบิต, กิกะไบท์, เทระบิตหรือเทระไบท์ ตามลำดับ ซึ่งสามารถดูข้อมูลได้จากคำสั่ง vgdisplay
lvcrete -l 50493 datavg -n homelv

  • ฟอร์แมต LV
    mkfs.xfs /dev/datavg/datalv

  • เมาท์ LV
    mount /dev/datavg/datalv /home
  • ย้ายข้อมูลกลับ
    จากนั้นผมก็ย้ายข้อมูลจาก hdc2 กลับไปที่ /home แล้วจัด unmount /home, สร้าง PV ใหม่} ขยายขนาด VG และขยายขนาดไฟล์ซิสเต็มด้วย
    umount /dev/hdc2
    pvcreate /dev/hdc2
    vgextend datavg /home/hdc2
    lvextend -l 50932 /dev/datavg/datalv
    xfs_growfs -D 52154368 /home


แค่นี้เราก็ได้เนื้อที่ใหม่มาอีกเยอะแล้วครับ