Friday, October 14, 2011

Hyper-V Dynamic Memory Troubleshooting

ปัญหาที่เกิดขึ้นบ่อยในการใช้งาน Hyper-V Dynamic Memory
Dynamic Memory เป็นคุณสมบัติใหม่ใน SP1 สำหรับ Windows Server 2008 R2 และ Hyper-V Server 2008 R2 ที่ช่วยให้ Hyper-V ใช้งานหน่วยความจำ (Physical memory) ได้มีประสิทธิภาพมากขึ้น โดย Hyper-V จะจัดการหน่วยความจำเป็นแบบ Shared Resource ที่พร้อมจัดสรรให้กับเวอร์ชวลแมชชีนที่กำลังรันอยู่โดยอัตโนมัติ โดย Hyper-V จะทำการปรับจำนวนของหน่วยความจำที่เวอร์ชวลแมชชีนใช้งานได้ตามการเปลี่ยนแปลงของความต้องการหน่วยความจำ (Memory demand) และค่าที่กำหนด ซึ่งจากที่ผมได้เปิดใช้งาน Dynamic Memory พบว่าช่วยให้การใช้งานเซิร์ฟเวอร์มีประสิทธิภาพมากขึ้น แต่กว่าจะใช้งานได้สำเร็จผมต้องพบกับปัญหา 2-3 อย่างจึงขอนำประสบการณ์มาแบ่งปันกันครับ

1. เปิดใช้งาน Dynamic Memory ไม่ได้
สาเหตุที่เปิดใช้งาน Dynamic Memory ให้กับเวอร์ชวลแมชชีน (Virtual Machine) ไม่ได้นั้นเกิดจากระบบ Windows Server 2008 R2 ที่ Hyper-V รันอยู่หรือ Hyper-V Server 2008 R2 ยังไม่รองรับคุณ Dynamic Memory ซึ่งแก้ไขโดยการติดตั้ง Service Pack 1 (SP1) สำหรับ Windows Server 2008 R2 และ Hyper-V Server 2008 R2 ซึ่งสามารถอ่านรายละเอียดได้ที่ Windows Server 2008 R2 Service Pack 1 (KB976932)

2. Dynamic Memory ไม่ทำงาน
วิธีการตรวจสอบว่า Dynamic Memory ทำงานหรือไม่นั้นสามารถดูได้จากรายงานข้อมูลการใช้งานหน่วยความจำของเวอร์ชวลแมชชีนซึ่งจะแสดงในคอลัมน์ Memory Demand ของ Hyper-V Manager ซึ่งจากรูปที่ 1 เป็นรายชื่อเวอร์ชวลแมชชีนทั้งหมดที่มีบนเซิร์ฟเวอร์ Hyper-V ซึ่งเวอร์ชวลแมชชีนทุกตัวได้รับการคอนฟิก Memory เป็น Dynamic Memory* เรียบร้อยแล้ว แต่เวอร์ชวลแมชชีนตัวที่ 1 ซึ่งใช้ระบบปฏิบัติการเกสต์เป็น Windows Server 2008 with SP2 ไม่ได้รายงานข้อมูลการใช้งานหน่วยความจำในคอลัมน์ Memory Demand ซึ่งแสดงว่า Dynamic Memory ยังไม่ทำงาน ในขณะที่เวอร์ชวลแมชชีนตัวที่ 3 และ 8 เป็นเวอร์ชวลแมชชีนที่ใช้ระบบปฏิบัติการเกสต์เป็น Windows Server 2008 R2 with SP1 ได้รายงานข้อมูลการใช้งานหน่วยความจำในคอลัมน์ Memory Demand ซึ่งแสดงว่า Dynamic Memory ทำงานได้แล้ว

หมายเหตุ: * สามารถดูวิธีการคอนฟิก Dynamic Memory ได้ที่ การใช้งาน Dynamic Memory ในระบบ Hyper-V บน Windows Server 2008 R2 SP1

รูปที่ 1

สำหรับวิธีการแก้ปัญหาเวอร์ชวลแมชชีนที่ Dynamic Memory ไม่ทำงานนั้นจะขึ้นอยู่กับระบบปฏิบัติการเกสต์ที่ใช้ รายละเอียดดังนี้
  • Windows Server 2008 R2 รุ่น Standard และ Web:
    • ให้ทำการติดตั้ง Windows Server 2008 R2 SP 1 ในระบบปฏิบัติการเกสต์
  • Windows Server 2008 R2 รุ่น Enterprise และ Datacenter:
    • ให้ทำการติดตั้ง Windows Server 2008 R2 SP 1 ในระบบปฏิบัติการเกสต์
    • หรืออัพเกรด Integration Services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
  • Windows 7 รุ่น Ultimate และ Enterprise (32-bit และ 64-bit):
    • ติดตั้ง Windows 7 SP1 ในระบบปฏิบัติการเกสต์
    • หรืออัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
  • Windows Server 2008 with Service Pack 2 (SP2) รุ่น Standard และ Web (32-bit และ 64-bit):
    • อัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
    • และทำการติดตั้งฮ็อตฟิกซ์หมายเลข 2230887 (http://go.microsoft.com/fwlink/?LinkId=206472)
  • Windows Server 2008 with Service Pack 2 (SP2) รุ่น Enterprise และ Datacenter (32-bit และ 64-bit):
    • อัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
  • Windows Vista with Service Pack 1 (SP1) Ultimate และ Enterprise(32-bit และ 64-bit):
    • อัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
  • Windows Server 2003 R2 with Service Pack 2 (SP2) รุ่น Standard, Web, Enterprise, และ Datacenter (32-bit และ 64-bit):
    • อัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1
  • Windows Server 2003 with Service Pack 2 รุ่น Standard, Web, Enterprise, และ Datacenter (32-bit และ 64-bit):
    • อัพเกรด integration services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1

โดยในกรณีนี้เวอร์ชวลแมชชีนที่มีปัญหาคือตัวที่ 1 ซึ่งใช้ระบบปฏิบัติการเกสต์เป็น Windows Server 2008 with SP2 วิธีแก้ปัญหาคือ ทำการอัพเกรด Integration Services ในระบบปฏิบัติการเกสต์เป็นเวอร์ชัน SP1 และทำการติดตั้งฮ็อตฟิกซ์หมายเลข 2230887 หลังจากนั้น Dynamic Memory จะทำงานได้โดยสังเกตได้จากมีการแสดงข้อมูลในคอลัมน์ Memory Demand ดังรูปที่ 2

รูปที่ 2

3. กำหนดค่า Startup Memory ให้กับเวอร์ชวลแมชชีนไม่ถูกต้อง
ปัญหาหนึ่งที่พบบ่อยในการใช้งาน Dynamic Memory คือการกำหนดค่าหน่วยความจำเริ่มต้น (Startup Memory) ให้กับเวอร์ชวลแมชชีนไม่ถูกต้อง คือกำหนดค่าหน่วยความจำเริ่มต้นสูงเกินไปทำให้การใช้งานหน่วยความจำไม่มีประสิทธิภาพเท่าที่ควร เนื่องจากเวอร์ชวลแมชชีนจะครอบครองหน่วยความจำเริ่มต้นตลอดเวลาจนกว่าจะปิดเครื่อง ดังนั้นในการใช้งาน Dynamic Memory จะต้องกำหนดค่าหน่วยความจำเริ่มต้นให้เหมาะสม โดยรูปด้านล่างเป็นค่าหน่วยความจำเริ่มต้นของระบบปฏิบัติการ Windows แต่ละเวอร์ชันที่ไมโครซอฟท์แนะนำ

รูปที่ 3

ในกรณีที่ทำการกำหนดค่าหน่วยความจำเริ่มต้นให้กับเวอร์ชวลแมชชีนด้วยค่าที่แนะนำเสร็จแล้วเมื่อเวอร์ชวลแมชชีนต้องการหน่วยความเพิ่มเติม Hyper-V จะจัดสรรหน่วยความจำเพิ่มขึ้นให้โดยอัตโนมัติ ลักษณะดังรูปที่ 4


รูปที่ 4

เรื่องที่เกี่ยวข้อง 10 สิ่งที่แอดมินควรทราบเกี่ยวกับ Hyper-V Dynamic Memory

บทความโดย: Thai Windows Administrator Blog

Copyright © 2011 TWA Blog. All Rights Reserved.

0 Comment: