วันศุกร์ที่ 13 กุมภาพันธ์ พ.ศ. 2558

เพิ่มประสิทธิภาพการทำงานของ guest Windows 7 บน KVM ด้วยการติดตั้งไดร์เวอร์ Virtio

ยินดีต้อนรับสู่เวบไซต์ s-techthai.com รวบรวมประสพการณ์จริงของผู้เขียน เพื่อจัดเก็บเป็นองค์ความรู้เพื่อเป็นแนวทางในการนำมาใช้งานอีกครั้งหนึ่งหรือเกิดความคิดในการนำไปต่อยอด เป็นประโยชน์กับหลายๆ คนที่ยังมองไม่เข้าใจ ผู้เขียนเคยรัน guest Windows7 ultimate 64 bit  บน KVM สำหรับเซิร์ฟเวอร์ที่ใช้ระบบปฏิบัติ Ubuntu Server 14.04.1

โดยการสร้าง guest อิมเมจได้สำเร็จแต่พบปัญหาก็คือ ฮาร์ดดิสก์ที่ใช้มองเห็นเป็นแบบ IDE ส่วนการ์ดแลนเองก็เป็นแบบรุ่น RTL8139 ความเร็ว 100 Mbps ซึ่งพอจับคู่กับระบบปฏิบัติการ Windows 7 Ultimate 64 bit ด้วยแล้วการทำงานค่อนข้างช้ามาก การติดตั้งไดร์เวอร์ Virtio จะเป็นการช่วยเพิ่มประสิทธิภาพการทำงานของฮาร์ดแวร์ได้ดีขึ้น นอกจากนี้ยังสามารถใช้งานฮาร์ดแวร์โดยตรงผ่าน scsi pass through ได้ด้วย

ก่อนอื่นไปรู้จัก "full virtualization" หมายถึงจุดเด่นในการรัน OS เสมือนได้หลายแบบ แต่อย่างไรก็ตามมันจะช้า เพราะ hypervisor ต้องจำลองฮาร์ดแวร์จริงทำให้เกิดความยุ่งยากและไม่มีประสิทธิภาพ ส่วน "virtio" คือ virtualization standard เป็นการทำให้การ์ดเน็ตเวิร์คและดิสก์ไดร์เวอร์ทำงานในสภาวะเวอร์ชวลและทำงานร่วมกับ hypervisorได้ ซึ่งจะทำให้ guest ได้รับประสิทธิภาพเน็ตเวิร์คและการทำงานของดิสก์สูงขี้น ทั้งยังเป็นการเพิ่มสมรรถนะของ paravirtualization ด้วย

เมื่อผู้เขียนได้ข้อมูลการเพิ่มประสิทธิภาพโดยการติดตั้งไดร์ฟเวอร์ virtio ได้นั้นก็รีบทำการค้นคว้าหาข้อมูลการติดตั้งไดร์ฟเวอร์ virtio ลองใช้คีย์เวิร์ดภาษาไทยในการค้นหาก็ยังไม่มีใครแนะนำ เจอภาษาอังกฤษมาจากต้นฉบับก็อธิบายค่อนข้างสั้นและกระชับทำให้การเริ่มต้นทำได้ยากมาก  http://www.linux-kvm.org/page/Boot_from_virtio_block_device  แต่ก็พอจับประเด็นเป็นไกด์ไลน์ได้ว่า หากต้องการลงไดร์ฟเวอร์ virtio บนระบบปฏิบัติการ Windows XP ที่รัน guest อยู่แล้วให้ดำเนินการตามขั้นตอนต่อไปนี้
  • บนเครื่อง guest ให้ดาวน์โหลดวินโดร์ไดร์เวอร์ http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
  • ให้หยุดการทำงานของ guest และให้สร้างอิมเมจเพิ่มเข้าไปเป็นดิสก์ที่ 2 ของ guest
  • เริ่มการทำงาน guest ใหม่ เครื่องจะตรวจสอบไดร์เวอร์และทำการติดตั้งไดร์เวอร์ virtio
  • รีสตาร์ทเครื่อง guest ใหม่ ให้ลบดิสก์ที่ 2 ออก และทำการเปลี่ยนแปลงชนิดของดิสก์ก่อนแรกไปเป็น virtio 
จะเห็นว่าคำแนะนำตามเวบไซต์ virtio ค่อนข้างกระชับและแน่นอนที่สุดหากต้องทำจริง ทำได้หรือไม่และต้องทำยังไง เพื่อไม่ให้เป็นการเสียเวลาเราไปเริ่ม "เพิ่มประสิทธิภาพการทำงานของ guest  Windows 7 บน KVM ด้วยการติดตั้งไดร์เวอร์ Virtio" กันเลยดีกว่า ผู้เขียนจะได้แนะนำขั้นตอนต่างๆ เป็นแบบ GUI และทำไปทีละขั้นตอน เพื่อจะได้สามารถปฎิบัติงานได้จริง สำหรับโปรแกรมที่ใช้ก็คือ virtual machine manager นั่นเอง

ขั้นตอนที่ 1 ให้ดาวน์โหลด virtio วินโดร์ไดร์เวอร์ตามลิงค์ที่ผู้เขียนแปะให้ ผู้เขียนโหลดไว้บนเครื่องเซิร์ฟเวอร์ KVM http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/virtio-win-0.1-100.iso

ขั้นตอนที่ 2 ให้หยุดการทำงานของ guest จากนั้นให้แมป cd-rom ไดร์ฟไปยังไฟล์ virtio อิมเมจ จุดประสงค์สำคัญสำหรับขั้นตอนนี้ก็คือเป็นการนำไฟล์ไดร์ฟเวอร์ virtio ให้ไปปรากฎบน guest ตอนเริ่มการทำงานใหม่ที่ไดร์ฟซีดีรอมนั่นเอง
gps tracker

ขั้นตอนที่ 3 หลังจากนั้นให้ทำการสร้างดิสก์ที่ 2 ขนาด 1GB เป็นชนิด virtio ตามรูปตัวอย่าง โดยดิสก์ที่ 2 ที่สร้างได้จะเป็นตัวทำให้ guest ติดตั้ง virtio ไดร์ฟเวอร์
gps tracking
ขั้นตอนที่ 4 ดิสก์ที่ 2ให้เลือก Disk bus แบบ Virtio ช่อง Serial number ว่างไว้ ส่วนช่อง Storage format เลือกเป็นชนิด raw เมื่อดิสก์ที่ 2 ถูกสร้างสมบูรณ์แล้วจะมองเห็นเป็นดิสก์ 2 ก้อนตามรูป คือ ดิสก์ที่ 1 แบบ IDE ส่วนดิสก์ที่ 2 เป็นแบบ VIRTIO
gps tracker
ขั้นตอนที่ 5 จากนั้นให้ทำงานเริ่มต้นการทำงานของ guest ใหม่ ล็อกอินเข้าไปยังเครื่อง guest และเลือกไปที่ Device Manager เราจะสังเกตเห็นฮาร์ดแวร์ใหม่ PCI Device เพิ่มขึ้นมาแล้ว แต่ยังทำงานได้ไม่ถูกต้องหรือยังขาดไดร์เวอร์นั่นเอง
gps tracking

 ขั้นตอนที่ 6 คลิกขวาและเลือก Update Driver Software
gps tracker
ขั้นตอนที่ 7 เลือกไปที่ Browse my computer for driver software Locate and install driver software manually
gps tracker
ขั้นตอนที่ 8 เลือกไปที่ ไดร์ฟซีดีรอม WIN7/AMD64 กดเลือก OK
gps tracking


ขั้นตอนที่ 9 เข้าสู่การติดตั้งไดร์ฟเวอร์ virtio ระบบจะถามว่าคณต้องการติดตั้งดีไวซ์ซอฟต์แวร์ไหม ให้คลิกไปที่ Install เริ่มสบายใจได้แล้ว เราผ่านขั้นตอนต่างๆ ที่สำคัญๆ มาหมดแล้ว เหลืออีกไม่กี่อึดใจ การติดตั้งซอฟต์แวร์ก็จะสมบูรณ์
gps tracking

ขั้นตอนที่ 10  ระหว่างนี้รอสักครู่เมื่อติดตั้งซอฟต์แวร์ VirtIO Balloon Driver สมบูรณ์ ให้กด Close
gps tracker

ขั้นตอนที่ 11 กลับมาสู่หน้าหลัก Device Manager เป็นอันจบกระบวนการติดตั้งไดร์ฟเวอร์ Virtio จากนั้นให้ทำการชัตดาวน์เครื่อง


ขั้นตอนที่ 12 ให้กลับไปลบดิสก์ที่ 2 ออก และเปลี่ยนแปลงการตั้งค่าดิสก์ที่ 1 แบบ IDE ไปเป็นแบบ VIRTIO จากนั้นก็เปิดเครื่อง guest ใหม่เป็นอันจบขั้นตอน

จะเห็นได้ว่าการติดตั้งไดร์เวอร์ ดิสก์แบบ Virtio บน guest วินโดร์สามารถทำได้โดยไม่ยาก สำหรับการติดตั้งไดร์เวอร์การ์ดเน็ตเวิร์คเองก็มีวิธีการแบบเดียวกัน แค่นี้เราก็จะเห็นสมรรถนะของเวอร์ชวล paravirtualization ที่สามารถทำงานได้เต็มประสิทธิภาพ ใครที่ยังไม่เคยลองผู้เขียนแนะนำว่าต้องเปลี่ยนจาก IDE ไปเป็น VIRTIO เท่านั้น

ผู้เขียนต้องขอขอบพระคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการระบบซอฟต์แวร์ติดตามรถยนต์ ด้วยอุปกรณ์มาตรฐาน ราคาประหยัด นอกจากนี้ผู้เขียนยังเคยเขียนบทความที่ทำเองได้ เป็นการประยุกต์ใช้เวลาว่างให้เป็นประโยชน์ สามารถติดตามบทความได้ตามลิงค์ครับ  เมื่อโน็ตบุ๊คเครื่องเก่ง จอแตก SAMSUNG NP350V4X


วันจันทร์ที่ 2 กุมภาพันธ์ พ.ศ. 2558

เพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server KVM

หลังจากไม่ได้อัพเดทมานานวันนี้ผู้เขียนกลับมาบอกเล่าเรื่องราวประสพการณ์จริงอีกครั้งนึง การนำเสนอเรื่องราวเหล่านี้ช่วยบันทึกความจำหรือจดบันทึกงานที่เคยทำไปแล้ว และประสบความสำเร็จ เพื่อในครั้งต่อๆไปหากเราต้องการใช้งานอีก ก็สามารถเข้ามาอ่านหรือจดเก็บเรื่องราวเพิ่มเติมในส่วนที่เข้าใจผิดพลาดในครั้งแรก เนื้อหาที่ผู้เขียนนำเสนอจึงไม่ได้เน้นทฤษฎีแวดล้อมประกอบมากนัก

KVM ย่อมาจาก Kernel Virtual Machine เป็นการสร้างเครื่องเสมือนเครื่องจริง เพื่อให้สามารถใช้งานฮาร์ดแวร์ได้อย่างเต็มประสิทธิภาพ และมีความสะดวกในการบริหารจัดการทรัพยากร เช่น ซึพียู ฮาร์ดดิสก์ และเมมโมรี เป็นต้น

ปัญหาที่ผู้เขียนจำเป็นต้องเพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server ที่รัน KVM ก็คือผู้เขียนรันอิมเมจ Windows 7 ขนาดความจุ 80GB เพิ่มเป็น 128GB เพื่อจัดเก็บข้อมูลหรือรองรับการทำงานที่ต้องใช้พื้นที่เพิ่มมากขึ้น เพื่อไม่ให้เป็นการเสียเวลาเราไปเริ่มกันเลยดีกว่า

ขั้นตอนที่ 1 ติดตั้งโปรแกรม virt-resize เพื่อใช้จัดการเวอร์ชวลอิมเมจ

apt-get install libguestfs-tools

 ขั้นตอนที่ 2 ให้ทำการ shutdown เวอร์ชวลอิมเมจที่ต้องการเพิ่มขนาดดิสก์ซะก่อน
virsh shutdown win7-ultimate-test

ขั้นตอนที่ 3 ตรวจสอบดูว่าเวอร์ชวลอิมเมจที่ใช้ มีการจัดการฮาร์ดดิสก์ไว้แบบไหน มีพาร์ติชั้นไหนบ้าง

virt-filesystems --long --parts --blkdevs -h -a vm_window7_ultimate_test

gps tracking

ขั้นตอนที่ 4 จากการตรวจสอบพบว่ามีฮาร์ดดิสก์ พาร์ติชั่น sda2 มีขนาด 80G เราต้องการขยายเพิ่มขึ้นไปเป็น 128G ขั้นตอนนี้ให้สร้างเวอร์ชวลอิมเมจใหม่ขนาด 128G
truncate -s 128G /mnt/3tb/home/outdisk/outdisk

gps tracking

ขั้นตอนที่ 5 เป็นขั้นตอนที่สำคัญคือการขยายเวอร์ชวลอิมเมจ  
virt-resize --expand /dev/sda2 /mnt/3tb/home/vm/vm_window7_ultimate_test  /mnt/3tb/home/outdisk/outdisk

gps tracking

เป็นอันสิ้นสุดกระบวนการเพิ่มขนาด Windows Guest อิมเมจบนเครื่อง Ubuntu Server KVM ข้อควรระวังก็คือเราต้องอย่าลืมสำรองเวอร์ชวลอิมเมจเดิมไว้ เพราะหากไม่สามารถเปิดเวอร์ชวลอิมเมจใหม่ได้ของเก่าก็ต้องไม่เสีย


ผู้เขียนต้องขอขอบคุณ บจก.ไทย พรอสเพอรัส ไอที ผู้นำด้านการให้บริการเช่ารถตู้ VIP รถเช่าผู้บริหาร มาตรฐานความปลอดภัยสูง พร้อมกันนี้หากต้องการท่องเที่ยวภายในประเทศอย่าลืมไปเยี่ยมชม ลำปาง เพชรบูรณ์ และน่าน ในหลงรักประเทศไทย ห้ามพลาดเมื่อฝันผลิบาน ลำปาง เพชรบูรณ์ และน่าน http://www.vntravelsupport.com/2014/12/blog-post.html