รู้จัก Hyper-V Dynamic Memory และ Smart Paging File

การเติบโตของ Virtualization ที่รวดเร็ว ส่วนหนึ่งมาจากเรื่องการแบ่งปัน Resource เช่น RAM เป็นต้น ใน Hyper-V ได้ออกแบบให้แบ่ง Memory แบบ Dynamic ได้ และอีกเรื่องที่จะได้เรียนรู้คือการทำงานของ OS ตอนที่เครื่อง Boot/Start หรือ Restart มันต้องการ Memory มากเป็นช่วงเวลาสั้นๆ เมื่อเสร็จขั้น Boot มันจะคืน Memory ในส่วนที่ใช้งานแสร็จหรือไม่ต้องการแล้วออกมา หลังจากนั้น Application ก็จะดึง Memory ไปใช้งาน ซึ่งขึ้นอยู่กับว่า Application จะใช้มากหรือน้อยตามหน้าที่ของมัน ก่อนไปต่อขอพาไปทำความรู้จักกับ Hyper-V Dynamic Memory พื้นฐานกันก่อน

Hyper-V Dynamic Memory

หลักการทำงานของ Virtualization ที่มักถูกเรียกว่า Consolidation หรือการรวมหลายๆ Virtual Machine (VM) มาอยู่บน Server เดียวกัน ยิ่งสร้าง VM ได้มาก การลงทุนก็ยิ่งคุ้ม ในส่วนของ RAM (Memory) บน Server  ที่มีจำนวนจำกัด เมื่อเป็นอย่างนี้ Virtualization จะจัดการปัญหานี้ได้อย่างไร?  ดังนั้น ตอนนี้เราจะศึกษาเรื่องของ RAM  ตามหลักแล้ว การแบ่ง RAM ให้ VM จำนวนเท่าไร ใช้วิธีประเมินเพื่อวางแผนตามความต้องการจริง ในส่วนนี้ Windows  ก็มีกลไกกำหนดค่า RAM ที่เหมาะสมด้วย ทำให้ Windows รู้เองว่าตอนไหนที่ต้องการ RAM และต้องการจำนวนเท่าไร ในระบบ Virtualization ได้แบ่งได้สะดวก ทำได้แม้หลักร้อย Megabyte ไปจนถึงหลาย Gigabyte  เมื่อ Application มาใช้ RAM จะมี 2 เรื่องคือ การขอใช้ (Allocate) และการคืน (Recycle)   การแบ่ง RAM ใน Virtualization ให้ VM ทำได้ 2 แบบคือ

  1. Fix/Static ให้เป็นจำนวนคงที่ไปเลย ถ้าจะแก้ต้อง Shutdown VM
  2. Dynamic ให้แบบยืดหยุ่น โดยกำหนดช่วงค่า Minimum และ Maximum

เมื่อ Dynamic  ปรับขนาดได้และต้องแบ่งกันเพื่อความคุ้ม จึงเป็นที่มาของ Hyper-V Dynamic Memory โดยมี Parameter ที่สำคัญคือ

1. Startup RAM – Memory ที่แบ่งให้ VM ใช้งานในช่วงที่ Start VM
– ค่า Parameter นี้ ใช้ทั้ง Fix  ( ถ้า Fix จะใช้จำนวนนี้ไปตลอด) และ Dynamic (ใช้ตอน Start/Boot VM)
2. Minimum RAM เมื่อ VM Start เสร็จขนาดของ RAM จะถูกปรับเป็น Minimum
3. Maximum RAM ระหว่างการทำงาน RAM อาจเพิ่มหรือลดได้ ในช่วงของ Minimum และ Maximum
4. Memory weight ลำดับ Priority ของ VM ในการขอ  RAM ถ้ามี RAM จะดูตรงนี้ว่าจะให้ VM ที่ Priority สูงก่อน
5. Buffer จำนวน RAM สำรองที่ Host แบ่งให้กับ VM หน่วยเป็น %
คำนวณจาก RAM ปัจจุบันที่ VM ได้รับ

การใช้ Dynamic Memory นั้นต้องศึกษาว่า OS ของ VM มีความสามารถ Hot-Add memory หรือการสั่งเพิ่ม/ลดขนาดของ Memory ในขณะที่เครื่องกำลังทำงานอยู่โดยไม่ต้อง reboot ได้หรือไม่ ดูได้จาก (Windows version support dynamic memory) ด้านล่าง เป็นภาพ Memory ของ Virutal Machine Setting

HPV Manager-3

 

ภาพด้านล่างแสดงให้เห็นช่วง Start VM ช่อง Assign Memory คือ RAM ที่ VM ได้มีขนาด 2048 ในขณะที่ค่า Memory Damand มีเพียง 491 MB

HPV Manager-1

ภาพด้านล่าง แสดงให้เห็นว่าเมื่อ Start เสร็จ VM จะเปลี่ยนไปใช้ค่า Minimum Memory (RAM) และ Assign Memory (RAM) มีขนาดมากกว่า Demand เนื่องจากค่า Buffer 20% แต่ตัวเลขจริงบน Hyper-V Manager อาจขยับไปบ้าง เพราะ Memory ตัวเลขเปลี่ยนบ่อย

HPV Manager-2

 

Smart Paging File

เรารู้แล้วว่าตอนที่ VM Start หรือ Reboot มันต้องการ RAM มากเป็นเวลาสั้นๆ ในขณะที่ Minimum RAM ของ Dynamic RAM อาจไม่พอซึ่งมีผลให้เครื่องช้า จึงมี Parameter – Startup RAM ไว้ช่วยตอน Reboot  ในภาพด้านล่าง แสดงให้เห็นว่า เครื่องตัวอย่างมีค่า Memory Parameter คือ Startup = 2048MB, Minimum = 512MB และ Maximum = 4096MB

Smart Page File

จากภาพ ช่วงที่ 1 เครื่องต้องการ RAM 2048 MB เพื่อ Start VM เมื่อเสร็จแล้ว เข้าสู่การทำงานปกติในขั้นตอนที่ 2 มันจะคืน RAM แล้วไปจนเหลือแค่ค่า Minimum RAM ถ้า Host มี VM จำนวนมากใช้ RAM จนเกือบหมดแล้ว ทำให้จำนวน RAM ที่ว่างๆ เหลือน้อยกว่าค่า Startup ใน Hyper-V มีความสิ่งที่เรียกว่า Smart Paging File  มันสร้างมาครั้งแรกใน Windows Server 2012 เพื่อช่วยป้องกันปัญหา Startup RAM ไม่พอ ดังนั้น Smart Paging File คือ การใช้ File บน Disk มาทำหน้าที่เป็น RAM เนื่องจาก RAM จริงๆ มีไม่พอสำหรับ Startup RAM นั่นเอง ต้องจำไว้ว่ามันไม่ใช่ Paging File ของ Windows ข้อดีของมันคือแก้ขัดเวลา RAM ไม่พอ ข้อเสียคือมันช้า การระบุ Location Folder ก็ใช้ hard disk ธรรมดานี่แหละ ไม่จำเป็นต้องเป็น SSD เพราะใช้แค่ตอน Restart

Smart Page File จะถูกใช้งานเมื่อเครื่อง Hyper-V Host อยู่ในสถานะการนี้คือ

– เมื่อ Start VM แต่ Physical RAM มีไม่พอ (เพราะเครื่องอื่นเอาไปใช้หมดแล้ว)

Hyper-V ไม่ใช้ Smart Paging File เมื่อ

– Start VM จาก Save State

– VM Migrate ข้ามเครื่อง

สรุป

Smart Page File เป็นผลต่อเนื่องมาจาก Hyper-V Dynamic Memory เรื่องนี้ทำให้เราได้เรียนรู้ว่าความคิดและวิธีแก้ปัญหาของ Microsoft เรื่องการ Start VM หรือ Boot ว่าช่วงแรก Windows/OS ต้องการ RAM มาก ทำให้ใน Hyper-V  ต้องมี Paramater – Startup RAM มาช่วย Dynamic Memory  อาจมีบางครั้งที่ Minimum RAM อาจพอให้เครื่อง VM ที่ต้องการใช้งาน ทำการ Start ขึ้นมาทำงานได้ แต่ตอนที่ Start ต้องการ RAM เท่ากับจำนวน Startup RAM จึงใช้ File บน Disk แก้ปัญหา RAM ไม่พอ

แถม

เรื่อง Dynamic Memory มีชื่อเรียกกลางๆ ว่า Memory Overcomitt โดยที่ VMware ทำเรื่องนี้มาก่อน ดูผิวเผินอาจดูเป็นเรื่องเดียวกัน แต่การ Implement นั้นแตกต่างกันอยากมาก พอจะสรุปได้ดังนี้

ความสามารถ Microsoft Dynamic Memory VMware Memory Overcommit
แบ่ง RAM ให้ VM เกินจำนวนที่มีอยู่จริง Hyper-V อนุญาตให้ใช้ RAM ตามที่มีอยู่จริง (Hardware is limit) ใช้ได้
Requirement VM ต้อง Support การใช้ Dynamic Memory ไม่จำกัด
ความสามารถนี้มีเฉพาะ VMware เท่านั้น เห็นต่าง ไม่จำเป็นต้องทำ เพราะทำแล้วมีผลกระทบต่อ Performance และคิดว่า RAM ราคาถูกลง – Tranparent Page Sharing
– Memory compression

Reference

  1. http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/08/04/what-is-the-memory-buffer-when-dynamic-memory-is-enabled.aspx
Advertisement

การสร้าง Custom View ของ Windows Event Viewer และตัวอย่าง View Logon Failure

การตรวจสอบเครื่อง Windows Server ว่ามันทำงานปกติหรือไม่นั้น จะใช้เครื่องมือ Windows Event Viewer ในครั้งนี้เราจะศึกษาการสร้าง Custom Views หรือการสร้างคำสั่ง Query เพื่อดึงเฉพาะ Event ที่เราสนใจเก็บไว้ใช้งาน และช่วยให้ดูง่ายๆ เช่น การหา Logon Failure เป็นต้น (Windows ไม่มี filter GUI ให้ เวลาจะดู logon failure ต้องสร้างเองตามตัวอย่างด้านล่าง)  ตั้งแต่ Windows Server 2008 มันได้ถูกแบ่งเป็น 2 กลุ่มคือ Windows Logs และ Applications and Services Log (ตามภาพด้านล่าง) โดย

– Windows Logs คือ Event log ส่วนกลางของ Windows เช่น Application, Security, System ส่วนนี้จะถูกใช้งานบ่อย โดย System Admin จะคอยดูว่ามี Error อะไรที่เป็นสัญญาณของปัญหา

– Applications and Service Logs คือ กลุ่มใหม่ของ Event log ที่บันทึกจาก Application บน Windows โดยเวลาจะดูต้องเลือกชื่อ Application ที่ต้องการด้วย

image

Applications and Service Logs

การบันทึก Event Log ลงในกลุ่มนี้ ผู้เขียน Application จะต้องไปสร้าง Source ขึ้นมา ในภาพด้านล่าง Source ชื่อ TaskScheduler มี 4 Category  ที่เปิดให้ดูเป็น Operational (Log Name=Microsoft-Windows-TaskScheduler/Operational)  แนะนำให้ System Admin แจ้ง Developer บันทึก Log ลงตรงนี้ เพราะการ Monitor ทำได้ง่าย การสร้าง Log อาจใช้ภาษา .Net เช่น C#, VB,C++ เป็นต้น

image

วิธีสร้าง Custom Views เก็บไว้ดู Event Log ส่วนตัว

การสร้าง Custom Views คือการสร้าง View ที่ใช้ดู Event log ขึ้นมาใหม่ ด้วยรูปแบบ XML  มีประโยชน์ดังนี้

  1. ดึง Log ที่น่าสนใจมาบันทึกเป็น view ส่วนตัว เพื่อเรียกดูใหม่ได้อีก
  2. ดึง Log มาจากหลาย Source ได้ ซึ่งการดูผ่าน GUI ทำไม่ได้
  3. สามารถสร้างเงื่อนไขที่เจาะจงและซับซ้อนได้ เช่น Secuity Log มี  Login Fail และ Application Log ที่ Error ของระยะเวลา 7 วันที่ผ่านมา

ขั้นตอนการสร้างมีดังต่อไปนี้

1. เปิด Event Viewer และ Click ขวาที่ Custom Views เลือก Create Custom View…

image

2.  หน้า Create Custom View เลือก XML

image

3. สร้างคำสั่งด้วยรูปแบบ XML เช่น การสร้าง View ดูการ Login จาก network มาที่ Server  แล้ว Failure จะใช้คำสั่ง

ตัวอย่างที่ 1 หาค่า logon fail ที่ Log ผ่าน network เข้ามา

<QueryList>
<Query ID=0 Path=”Security”>
<Select Path=”Security”>
              *[System[(band(Keywords,4503599627370496)]]
and
*[EventData[Data[@Name=’LogonType’]=’3’]]
         </Select>
</Query>
</QueryList>

คำสั่งเป็น XML ส่วนชื่อข้อมูลก็ลองไปกดดู Event Log ที่สนใจแล้ว click ที่ Details (ภาพด้านล่าง) ในภาพเป็น Event ของ Security  มี section System เราสนใจ Keyword ซึ่งหมายถึง Logon Fail หรือ Success การเก็บเป็นตัวเลขฐาน 2 แต่การเขียน query ต้องแปลงเป็นฐาน 10 โดยให้ตัด 0x8 ออกไป ก็จะได้ค่าเท่ากับ 4503599627370496 อีกเรื่องที่ต้องรู้คือการใช้ XML Filter XPath 1.0 มีคำสั่ง band มีรูปแบบ Boolean band(bitfield, bitfield)  เราเทียบค่าเพื่อหา Keyword กับค่าที่เราต้องการคือ Logon Failure

ในคำสั่งต่อมา Section EventData มาจะหา Logon ที่มาจาก network ซึ่งมีค่าเป็น 3 ก็พิมพ็ไปตามตัวอย่าง

image

ตัวอย่างที่ 2 เป็นการดู Logon Failure ในระยะ 7 วันที่ผ่านมา และ Application Log ในหน้าเดียวกัน

<QueryList>
<Query Id=”0″ Path=”Security”>
    <Select Path=”Security“>
*[System[ (band(Keywords,4503599627370496))]]
and
*[System[TimeCreated[timediff(@SystemTime) &lt; = 604800000]]]
and
*[EventData[Data[@Name=’LogonType’]!=’3′]    ]
</Select>

       <Select Path=”Application“>           *[System[(Level=1  or Level=2 or Level=3)]]      </Select>
</Query>

</QueryList>

อธิบายเฉพาะส่วนเพิ่ม คือ

– timediff() เป็น Function ของ XPath 1.0 อ่านเพิ่มเติมจาก Rerenence 2 ใช้เทียบเวลา &lt; หมายถึง มากกว่า 60480000 วินาที  (มาจาก 7วัน * 24 ชม * 60 นาที * 60 วินาที)

– Logon  ไม่เท่ากับ 3 คือ ไม่ได้มาจาก network

– ใส่ Application ผมเข้าไปด้วย (สีฟ้า)

 

สรุป

การสร้าง Custom Views ของ Event Log ช่วยให้สร้าง query เรากรองเอา Log ที่ต้องการมา save เป็น view เพื่อให้เรียกใช้งานได้ง่ายๆ

Reference

  1. Event Logs (http://technet.microsoft.com/en-us/library/cc722404.aspx)
  2. 2.2.15.2 Filter XPath 1.0 Extensions (http://msdn.microsoft.com/en-us/library/cc231313.aspx)

Hyper-V Genernation 2 boot VM จาก Network และ SCSI ได้แล้ว

Hyper-V ใน Windows Server 2012 R2 เพิ่ม feature ใหม่ ให้ boot จาก Network และ SCSI ได้ โดยเครื่องต้องเป็น Generation 2  เรื่องของ Virtual Machine บน CPU Intel/AMD มีมานับ 10 ปี แล้ว ในปี 2013 Microsoft ได้ประกาศว่ามี Hyper-V Generation 2 ซึ่งขั้นตอนการสร้าง VM ด้วย New Virtual Machine Wizard จะต้องเลือกว่าเป็น Generation ไหน ตามภาพด้านล่าง

VMGen2

ความแตกต่างและการตัดสินใจเลือก Generation มีเหตุผลเพื่อตัดสินใจดังนี้

Generation 1
  • เกิดมาในช่วยปลายปี คศ 1990 บน harcware x86 การสร้าง virtual machine พยายามทำให้ OS เข้าใจว่าเป็น hardware จริง เพื่อให้ software ทำงานได้
  • Hypervisor ต้องสร้าง emulator ต่างๆ ที่จำลองว่าตัวเองเป็น hardware ที่ย้อนไป support อะไรเยอะแยะไปหมด บางทีถึงขั้นบอกว่าเป็น Network card 10 Mbps, Card ISA หรือเป็น CPU Pentium เป็นต้น ที่เราเรียกว่าเป็น Legacy
  • OS รุ่นเก่ายังไม่รองรับ Virtualization ยังต้องสร้างเป็น Gen 1
Generation 2
  • เครื่อง Virtual Machine ที่ใช้ Hyper-V เริ่มมาตั้งแต่ปี 2008 ได้ใช้เทคโนโลยีทีดีขึ้น เช่น VMBus ต่อ network card ทำให้การเรียกใช้ hardware มีประสิทธิภาพดีขั้น เพราะไม่ต้องเสียเวลาไปทำตัวเป็น emulator
  • Windows รุ่นใหม่ๆ ถูกออกแบบให้รู้จัก virtualization อยู่แล้ว
  • การสร้าง Gen 2 นั้นระบบ Virtual Machine จะไม่มี emulator แล้วก็หันไปใช้ UEFI device มันช่วยให้ Virtual Network สามารถ boot จาก virtual network adaptor หรือ SCSI controller ก็ได้ ไม่ต้องพึ่ง IDE controller ที่เป็น legacy ตัว UEFI มีระบบ secure boot
  • Support guest ที่เป็น Windows 8 64bit, Windows Server 2012 และ version ใหม่ๆ ที่ออกตามมา (version เก่า ใช้ไม่ได้)
  • จำง่ายๆ ว่าสิ่งที่ support ใน Gen 2 คือ

การสร้าง Gen 2 ให้ boot จาก network หรือ SCSI ได้ สำหรับ Hyper-V นับว่าเป็นข่าวดี ที่มาพร้อมกับ Windows Server 2012 เราลองมาทำความเข้าใจกับ UEFI ว่ามันคืออะไร และ Windows ใช้มัน boot เครื่องได้อย่างไร

Unified Extensible Firmware Interface (UEFI)

UEFI คือ การกำหนด software interface ของ OS กับ firmware ที่อยู่บน hardware โดย UEFI จะแทนที่ BIOS  โดย Intel เป็นผู้สร้าง UEFI ขึ้นมา  เริ่มแรกมันเป็น EFI มาก่อนในช่วงปี 1990 ใน Intel-HP Itanium เนื่องจากปัญหาเรื่องข้อจำกัดของ BIOS เช่น การเป็น 16 bit หรือความสามารถเรียกใช้ Memory ที่ 1 Megabyte เป็นต้น ต่อมาก็พัฒนามาเรื่อย ได้เปลี่ยนชื่อเป็น UEFI   ความสามารถของ UEFI ที่เหนือกว่า BIOS ได้แก่ การ Boot, ความเป็นอิสระเรื่อง CPU architecture, CPU Driver เป็นต้น

การ Boot เครื่องด้วย UEFI

ปกติเราจะคุ้นเคยกับการ boot ด้วย harddisk, usb และ CD ใน mainboard รุ่นใหม่ ถ้าเข้าไปดูใน BIOS เรื่อง Boot มันจะมี UEFI ให้เลือกได้ ซึ่งไม่ขอลงรายละเอียดส่วนของ BIOS แต่มันทำให้เราพอเห็นภาพได้ว่า UEFI ใช้ boot เครื่องได้

image

การ Config ให้เครื่อง Computer Boot จาก UEFI

ขอใช้ Youtube video ของ Windows 7 เพื่อทำความเข้าใจการ set BIOS และ Windows ให้ boot ด้วย UEFI

  1. ติดตั้ง Hard disk และมองเห็นผ่าน BIOS ตามปกติ
  2. กำหนด Boot Mode ใน BIOS ให้เครื่อง Boot ด้วย UEFI
  3. ตอน boot เลือก CD Windows เพื่่อลง OS
  4. การลง Windows ให้ลงใน hard disk ตามปกติ
  5. เมื่อ boot เครื่องอีกครั้ง BIOS จะส่งต่อการ boot ให้ UEFI ทำงาน

ลองดูตัวอย่างจาก Video ด้านล่าง เป็น Windows 7 เพื่อให้เข้าใจการใช้งาน UEFI

Booting และ Secure Boot

UEFI ได้กำหนด boot manager ที่ดูแลเรื่องการ boot และ load driver ต่างๆ ใน UEFI version 2.2 มีการใช้ certificate มาช่วย secure เรื่องการ boot

สรุป

Windows Server 2012R2 Hyper-V สร้าง VM Generation 2 บนพื้นฐานว่า Windows รุ่นใหม่รู้จักระบบ Virtualization อยู่แล้ว จึงตัดพวก Lagacy virtual hardware ออกไป การนำ UEFI มาใช้ทำให้เครื่อง Virtual Machine สามารถ boot จาก network และ SCSI ได้ ประโยชน์คือ ความสะดวกในการใช้งาน

Reference

1.Unified Extensible Firmware Interface

2.BIOS Learning 1: History & Intro of UEFI

3. Youtube Video – UEFI Installation of Windows 7

4. Youtube Video – Practical UEFI Secure Boot (Part 1 of 3)

Windows Server 2012 R2 และ System Center 2012 R2 เปิดให้ Download วันที่ 18 ตุลาคม 2556

Brad Anderson, VP ของ Microsoft ได้ประกาศบน blog เมื่อวันที่ 14 สิงหาคม เรื่องแผน Release Windows Desktop และ Server ข่าวนี้สำหรับ Windows Server มันยังไม่ชัดเจนมาก แต่ก็มีประโยชน์ เพราะเราคงไม่ได้ลง version ใหม่ทันที มันจะช่วยเรื่องการวางแผนซื้อ license มากกว่า  สำหรับวันที่มีตามนี้

Date

Activity

18 ตุลาคม 2556
  • Windows 8.1 จะวางขายทั้ง Retail และ Business ทั่วโลก
Windows Server 2012R2 และ System Center 2012 R2 จะมีให้ download ทาง TechNet Evaluation Centerข่าวส่วนนี้ยังไม่ชัดเจนว่าเป็น Evaluation หรือจะมี RTM ให้ลูกค้า Enterprise download ผ่าน VLSC ได้เลย ถ้ามีข่าวจะมา update ให้ทราบ
1 พฤศจิกายน 2556 Windows Server 2012R2 และ System Center 2012 R2
ประกาศราคาใน Price List และออกวางจำหน่าย

Reference:

Windows Server 2012 R2 Available October 18th