เครื่องมือตัวต่อไปที่ต้องทำความรู้จักคือ loop device
คุณสามารถหาอ่านรายละเอียดได้ที่
http://en.wikipedia.org/wiki/Loop_device
คำอธิบายง่ายๆของ loop device
ให้ลองนึกถึงโปรแกรม daemon tool, alcohol 120%
โปรแกรมพวกนี้จะทำให้เราสามารถใช้งานไฟล์ image ได้
เช่นถ้าเราโหลดหนัง dvd ที่เป็นไฟล์ iso มาดูในเครื่อง
เราก็ต้องทำการ mount ตัวไฟล์ iso เข้าไปใน virtual drive
โดยโปรแกรม daemon tool หรืออื่นๆ
ซึ่งลักษณะจะเหมือนกับ การใส่แผ่น dvd หนังลงไปใน drive ปกติ
คุณมีไฟล์ image ซึ่งถ้าหากมองโดยทั่วไป
ก็คือไฟล์ธรรมดาๆ เค้าเรียกว่า ordinary file
เพียงแต่ข้อมูลภายในไฟล์นั้น มี file system อยู่ด้วย
ไม่ว่าจะเป็น NTFS, FAT32, EXT3, EXT4 ก็ตาม
ข้อมูลทั้งหมดบรรจุอยู่ใน image file
คุณสามารถใช้ loop device ประกอบเข้ากับ image file
เพื่อทำให้ ordinary file ธรรมดาๆ
สามารถถูกใช้งานได้เหมือนฮาร์ดดิสก์ลูกหนึ่ง หรืออุปกรณ์เก็บข้อมูลธรรมดาๆ
มาลองดูใน linux จะมองฮาร์ดดิสก์ เป็น device ประเภท block device
หรืออุปกรณ์เก็บข้อมูล ซึ่งจะสามารถถูกใช้ เขียน/อ่าน ข้อมูลภายในได้
โดยที่ linux จะใช้ชื่อว่า /dev/sda, /dev/sdb เป็นต้น
และเมื่อแบ่งพาร์ทิชั่น ก็จะแบ่งออกเป็น /dev/sda1, /dev/sda2 เป็นต้น
โดยที่คุณสามารถทำการสร้าง file system ลงใน partition พวกนี้ได้
สำหรับการจัดการฮาร์ดดิสก์นั้นสามารถหาอ่านได้ในอินเตอร์เน็ตทั่วไป
คำอธิบายของ loop device ตามศัพท์ทางเทคนิคก็คือ
การเปลี่ยนให้ ordinary file ธรรมดา
ให้สามารถถูกใช้งานในรูปแบบ block device
ผ่านทาง loop device ได้
ซึ่งเมื่อใช้ loop device เปลี่ยน image file ให้กลายเป็น block device
คุณจะสามารถใช้งานได้เหมือนฮาร์ดดิสก์ ที่เพิ่มเข้ามาในเครื่อง linux
ทำอย่างที่ block device ทั่วไป ทำได้
loop device ภายในเครื่องคุณสามารถตรวจสอบได้โดยใช้คำสั่ง
ls /dev/loop*
เครื่องจะแสดงรายการ loop device ออกมาเช่น
/dev/loop0 /dev/loop2 /dev/loop4 /dev/loop6
/dev/loop1 /dev/loop3 /dev/loop5 /dev/loop7
แสดงว่าตอนนี้เครื่องเตรียม loop device เอาไว้ 8 ไฟล์
คุณสามารถเพิ่มทีหลังได้
คำสั่งที่จะจัดการ loop device คือ losetup
คุณสามารถหา loop device ที่ว่างอยู่โดยใช้คำสั่ง
losetup -f
เครื่องจะแสดง loop device ที่ว่างอยู่ โดยถ้าหากคุณยังไม่ได้ใช้
ก็น่าจะแสดงเป็น /dev/loop0 ออกมาให้
คำสั่งที่จะประกอบ loop device เข้ากับ image file คือ
losetup [loop device] [image file]
เช่น ถ้าหากคุณมีไฟล์ชื่อว่า windows.img
ที่คุณทำการ dd เข้ามาจากบทความก่อนหน้านี้
และสามารถใช้ vbladed ทำการปล่อย image นั้นออกไปทาง aoe target
ในกรณีนั้น การใช้งาน aoe target การเขียน/อ่านไฟล์
จะถูกกระทำกับ windows.img โดยตรง
การเปลี่ยนแปลงใดๆ ก็จะเปลี่ยนในไฟล์ windows.img ไปด้วย
ทีนี้เราลองมาใช้ loop device มาช่วยเสริมดู
ลองประกอบ /dev/loop0 เข้ากับ windows.img
ด้วยคำสั่ง
losetup /dev/loop0 windows.img
(คุณสามารถตรวจสอบการเรียกใช้ loop device โดยคำสั่ง losetup -a)
เมื่อประกอบกันเสร็จแล้ว คุณสามารถเอา /dev/loop0 ไปปล่อยทาง vbladed ได้เลย
ซึ่งสามารถใช้งานได้เช่นเดียวกัน กับการ vblade กับ windows.img โดยตรง
... คุณอาจจะคิดว่า ถ้ามันใช้งานได้เหมือนกัน แล้วจะต้องเอา loop device มาใช้ทำไม?
ลองปรับเปลี่ยนนิดหน่อย ขั้นตอนการประกอบ loop device เข้ากับ image
เพิ่มคำสั่ง -r เข้าไป เช่น
losetup -r /dev/loop0 windows.img
คำสั่งนี้คือคำสั่ง read only
หมายความว่าการใช้งาน image file นั้นจะเป็นแบบอ่านอย่างเดียว
ผลจากการนำ /dev/loop0 มาใช้เป็น AoE target
แล้วให้เครื่องนำไปใช้งาน
ทุกครั้งที่เครื่องลูก restart และติดต่อเข้ามายัง AoE target
ก็จะมีผลเหมือนติด undo card หรือโปรแกรมประเภท recovery เลย
คำสั่งยกเลิกการใช้งาน loop device ใช้คำสั่งว่า
losetup -d /dev/loop0
สามารถทำได้เมื่อไม่มีการใช้งาน loop device นั้นแล้วเท่านั้น
**เทคนิคพิเศษ**
ใน ubuntu 9.10 ปกติแล้วจะมี loop device มาให้ 8 ตัว
ซึ่งเรามักจะใช้ loop device 1 ตัวต่อเครื่องลูก 1 เครื่อง
ซึ่งมันจะไม่เพียงพอ เราจำเป็นต้องเพิ่มจำนวน loop device ในระบบ
วิธีการมีดังนี้
* แก้ไขไฟล์ /etc/defaults/grub เช่นคำสั่ง nano /etc/defaults/grub
* เพิ่มคำสั่ง max_loop=(จำนวน device ที่ต้องการ) เข้าไปในบรรทัดนี้
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash
เช่น ถ้าต้องการใช้งาน loop device จำนวน 100 ตัว
ก็แก้ไขเป็น
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash max_loop=100"
* จากนั้นใช้คำสั่ง update-grub แล้ว reboot เครื่อง
* ทดลองใช้คำสั่ง ls /dev/loop* เพื่อตรวจสอบ loop device ที่เพิ่มขึ้นมา
ไม่มีความคิดเห็น:
แสดงความคิดเห็น