vMotion อนุญาตให้ย้ายเครื่องเสมือน VMWare ที่ทำงานอยู่จากโฮสต์ ESXi จริงหนึ่งไปยังอีกโฮสต์หนึ่งโดยไม่ขัดจังหวะการทำงานและหยุดบริการใดๆ ในบทความนี้ เราจะพูดถึงคุณสมบัติของ VMWare vMotion:วิธีการทำงานของ vMotion, ประเภท vMotion ที่มีอยู่ และวิธีโยกย้ายเครื่องเสมือนระหว่างโฮสต์ ESXi หรือที่เก็บข้อมูลด้วยตนเอง เราจะพิจารณาวิธีการทั่วไปในการเพิ่มประสิทธิภาพ vMotion และการแก้ไขปัญหา
ดังที่เราได้กล่าวไปแล้ว vMotion ช่วยให้คุณดำเนินการการย้ายข้อมูลแบบสด ของเครื่องเสมือนโดยไม่มีการหยุดทำงานหรือขัดขวางการทำงานของผู้ใช้ vMotion ไม่ได้ถูกจัดวางเพื่อให้มีความพร้อมใช้งานสูงของ VM ประการแรก มันเป็นเครื่องมือที่ง่ายและสะดวกในการย้าย VM ที่มีประสิทธิผล เมื่อคุณต้องบำรุงรักษา/อัปเดต/เปลี่ยนเซิร์ฟเวอร์จริงด้วยไฮเปอร์ไวเซอร์ ESXi หรืออาร์เรย์จัดเก็บข้อมูลที่ติดตั้งไว้ นอกจากนี้ DRS (Dynamic Resource Scheduler) ซึ่งเป็นเทคโนโลยีที่ช่วยในการกระจาย (สมดุล) โหลดของเซิร์ฟเวอร์จริงขึ้นอยู่กับ vMotion
เทคโนโลยี Microsoft ที่คล้ายกันในการย้าย VM ระหว่างโฮสต์ Hyper-V เรียกว่า Hyper-V Live Migration
VMware vMotion ทำงานอย่างไร
ในการย้าย VM ระหว่างโฮสต์จริงโดยใช้ vMotion จะใช้คอมโพเนนต์ VMWare ต่อไปนี้:
- A VMware vCenter เซิร์ฟเวอร์การจัดการ
- A ที่เก็บข้อมูลที่ใช้ร่วมกัน (เชื่อมต่อโดยใช้ Fibre Channel, iSCSI หรือ NAS) ที่เก็บไฟล์เครื่องเสมือน พื้นที่เก็บข้อมูลที่ใช้ร่วมกันช่วยให้โฮสต์ ESXi จริงหลายโฮสต์เข้าถึงไฟล์ของ VM เดียวกันใน SAN ได้
- A เครือข่ายที่รวดเร็วที่ใช้ร่วมกัน (อีเทอร์เน็ตอย่างน้อย 1GB) ระหว่างโฮสต์ ESXi ต้นทางและเป้าหมาย เมื่อโอนย้าย VM จะคงที่อยู่ MAC เดิมไว้ และ vMotion จะแจ้งสวิตช์เครือข่ายว่าตำแหน่งของที่อยู่ MAC ของเครื่องเสมือนมีการเปลี่ยนแปลง ช่วยให้สามารถเชื่อมต่อเครือข่ายได้
- ความเข้ากันได้ของซีพียู บนโฮสต์หรือเปิดใช้งานตัวเลือก Enhanced vMotion Compatibility (EVC)
vMotion ทำการย้ายข้อมูลแบบสดอย่างไร ขั้นแรก โคลนเงาของ VM ต้นทางที่มีการกำหนดค่าเดียวกัน (จากไฟล์ VMX) จะถูกสร้างขึ้นบนโฮสต์เป้าหมาย โคลน VM เห็นไฟล์ VM ทั้งหมดบนที่จัดเก็บข้อมูลที่ใช้ร่วมกัน เนื้อหา RAM และสถานะของ VM ที่ทำงานอยู่จะถูกถ่ายโอนผ่านเครือข่ายจากต้นทางไปยังโฮสต์ ESXi เป้าหมาย vMotion สร้างสแน็ปช็อตหน่วยความจำ VM และคัดลอกไปยังเซิร์ฟเวอร์เป้าหมายผ่านเครือข่าย ในเวลาเดียวกัน vMotion จะติดตามการเปลี่ยนแปลงในหน้าหน่วยความจำและคัดลอกเฉพาะส่วนหน่วยความจำที่แก้ไขแล้วเท่านั้น (อาจเกิดขึ้นได้ในหลายขั้นตอน โดยแต่ละครั้งจะมีการคัดลอกข้อมูลน้อยลงและใช้เวลาน้อยลง)
ในบางจุด สถานะของ VM ต้นทางจะหยุดชั่วคราว เซ็กเมนต์หน่วยความจำที่เปลี่ยนแปลงและคำสั่ง CPU จะถูกคัดลอก และ VM เริ่มทำงานบนโฮสต์ ESXi เป้าหมาย กระบวนการทั้งหมดใช้เวลาสองสามวินาทีสำหรับ VM ขนาดกลางบนเครือข่ายอีเทอร์เน็ต 1/10 GB
ประเภท VMware vMotion
โดย vMotion นั้น VMWare หมายถึงเทคโนโลยีต่างๆ มากมายที่ช่วยให้คุณย้าย VM ที่ทำงานอยู่ได้ทันทีระหว่างโฮสต์ อาร์เรย์พื้นที่เก็บข้อมูล เมือง หรือในองค์กร และโครงสร้างพื้นฐานระบบคลาวด์
vประเภทการเคลื่อนไหว:
- มาตรฐาน vMotion – การโยกย้าย VM ที่ทำงานอยู่ระหว่างโฮสต์ ESXi;
- ที่เก็บข้อมูล vMotion – การย้ายไฟล์เครื่องเสมือนแบบออนไลน์ระหว่างที่เก็บข้อมูล (อาร์เรย์จัดเก็บข้อมูล SAN, NAS, vVol, NFS เป็นต้น);
- แชร์-ไม่มีอะไร vMotion – การโยกย้าย VM ระหว่างเซิร์ฟเวอร์ ESXi ในเครือข่ายโดยไม่ต้องใช้ที่เก็บข้อมูลที่ใช้ร่วมกัน (จำเป็นต้องมีเครือข่าย L2);
- ระยะไกล vMotion – การโยกย้าย VM ระหว่างไซต์ระยะไกล (เวลา Round Trip สูงสุดคือ 150 ms รวมถึงเครือข่าย L3 ด้วย) เปิดตัวใน vSphere 6.0;
- เข้ารหัส vSphere vMotion – อนุญาตให้เข้ารหัส VM เมื่อถ่ายโอนผ่านเครือข่าย (มีให้ใน vSphere 6.5);
- การโยกย้ายเย็นและร้อนข้ามเมฆ – การโยกย้ายออนไลน์หรือออฟไลน์ระหว่างโครงสร้างพื้นฐานภายในองค์กรและคลาวด์
คุณสมบัติ VMware Storage vMotion
ดังที่เราได้กล่าวไปแล้วว่า Storage vMotion อนุญาตให้คุณย้ายไฟล์ของเครื่องเสมือนที่รันอยู่ (ดิสก์เสมือน vmdk และไฟล์คอนฟิกูเรชัน) ไปยังที่เก็บข้อมูล VMFS/NFS/vVol อื่น (LUN, อาร์เรย์หน่วยเก็บข้อมูล) โดยไม่ต้องหยุด VM
ข้อกำหนดในการเรียกใช้ Storage vMotion สำเร็จ:
- ประเภทของดิสก์ VM ต้องเป็นแบบถาวรหรือ RDM
- ไม่รองรับการย้าย VM ระหว่างการติดตั้ง VMware Tools
- เวอร์ชัน VMFS ของพื้นที่เก็บข้อมูลมีความสำคัญต่อการย้ายข้อมูล ตัวอย่างเช่น คุณไม่สามารถย้ายไฟล์ vmdk เกิน 2 TB จาก VMFS5 ไปยัง VMFS3 ได้
- ใบอนุญาตบนโฮสต์ ESXi
- โฮสต์ที่ VM กำลังทำงานอยู่จะต้องมีสิทธิ์เข้าถึงทั้งที่เก็บข้อมูลต้นทางและปลายทาง
- เทคโนโลยี Changed Block Tracking (CBT) จะใช้เมื่อคัดลอกดิสก์ของเครื่องเสมือน อนุญาตให้ติดตามบล็อกข้อมูลที่เปลี่ยนแปลงและคัดลอกได้
ปรับปรุงความเข้ากันได้ของ vMotion (EVC) ใน VMWare
ปรับปรุงความเข้ากันได้ของ vMotion (EVC) โหมดสำหรับคลัสเตอร์ VMware HA/DRS จะใช้หากคลัสเตอร์อิงตามโฮสต์ที่มี CPU รุ่นต่างๆ (แต่ไม่ใช่ผู้ผลิต!!!) หากคุณเปิดใช้งาน EVC สำหรับคลัสเตอร์ ไฮเปอร์ไวเซอร์จะเริ่มปิดบังคำสั่ง CPU ที่โฮสต์ทั้งหมดไม่รองรับ เมื่อเปิดใช้งาน EVC คุณลักษณะ CPU ทั้งหมดของโฮสต์ ESXi ในคลัสเตอร์จะเข้ากันได้กับชุดคำสั่งโปรเซสเซอร์ขั้นต่ำขั้นพื้นฐานที่กำหนดโดยผู้ดูแลระบบ vSphere ในการตั้งค่าคลัสเตอร์
ดังนั้น ต้องขอบคุณ EVC ที่ทำให้คุณสามารถย้าย VM ระหว่างโฮสต์ที่มีชุดคำสั่งโปรเซสเซอร์ที่รองรับที่แตกต่างกันได้
อย่าผสมโฮสต์กับผู้จำหน่ายโปรเซสเซอร์ที่แตกต่างกัน เช่น Intel หรือ AMD ในคลัสเตอร์ vSphere เดียวกัน EVC ช่วยให้สามารถทำงานร่วมกันได้ระหว่างโปรเซสเซอร์โดยผู้จำหน่ายรายเดียวกันคุณสามารถเปิดใช้งาน VMWare EVC ในระดับคลัสเตอร์ ไปที่ กำหนดค่า -> การกำหนดค่า -> VMware EVC และคลิกแก้ไข .
หากคุณเปิดใช้งาน EVC สำหรับคลัสเตอร์ คุณจะต้องเลือกโหมด EVC (สำหรับโฮสต์ AMD หรือ Intel) และเลือกจากรายการดรอปดาวน์รุ่น CPU ขั้นต่ำจากผู้ขายรายนี้ที่คุณมีในคลัสเตอร์ VMWare
VMWare แนะนำให้เปิดใช้งาน EVC เสมอ ไม่ว่าคุณจะมีโฮสต์ใดในคลัสเตอร์ของคุณ หากคุณต้องการขยายคลัสเตอร์ คุณจะทำได้ง่ายกว่า มีแม้กระทั่งบทความ KB แยกต่างหากที่พิสูจน์ว่าแม้ว่า VM ของคุณจะไม่ได้ใช้คำสั่ง CPU แบบเต็ม แต่ก็จะไม่ส่งผลต่อประสิทธิภาพของโฮสต์
VMware vSphere 6.7 นำเสนอเทคโนโลยีการย้ายข้อมูลระหว่างระบบคลาวด์และภายในองค์กร (Cross-Cloud Cold and Hot Migration) หากต้องการย้าย VM ไปยังระบบคลาวด์ ขณะนี้คุณสามารถเปิดใช้งาน Per-VM EVC ในการตั้งค่า VM (มีให้ใช้งานใน vSphere 6.7 พร้อมฮาร์ดแวร์เวอร์ชัน 14)
คุณสามารถรับระดับ EVC พื้นฐานที่ตั้งไว้สำหรับ VM ในคลัสเตอร์โดยใช้ PowerCLI:
Get-VM | Select Name,HardwareVersion,
@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},
@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},
@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft
ในการรับโหมด EVC สูงสุดที่รองรับ:Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode
จะเปิดใช้งาน vMotion ใน VMWare vSphere ได้อย่างไร
มาดูวิธีเปิดใช้งานและกำหนดค่า vMotion ใน VMWare vSphere 6.7 กัน หากต้องการใช้ vMotion การมีใบอนุญาต Essentials Plus VMWare ก็เพียงพอแล้ว
vMotion เปิดใช้งานที่ VMkernel ระดับของสวิตช์เสมือนโฮสต์ ESXi เลือกโฮสต์และไปที่ กำหนดค่า -> เครือข่าย -> อแดปเตอร์ VMkernel .
เลือกอะแดปเตอร์ VMkernel ของคุณแล้วคลิกแก้ไข .
ในคุณสมบัติพอร์ต vmk ให้เปิดใช้งาน vMotion ใน บริการที่เปิดใช้งาน ส่วน
ในตัวอย่างของฉัน มีการสร้างคลัสเตอร์ VMWare HA แล้ว และใช้ vSphere Distributed Switch (VDS)
จะย้าย VM ระหว่างโฮสต์โดยใช้ vMotion ได้อย่างไร
ในการย้าย VM ที่ทำงานอยู่ระหว่างสองโฮสต์ ESXi ให้เปิดไคลเอ็นต์ vSphere คลิกขวาที่ VM ที่คุณต้องการย้ายและเลือก โอนย้าย .
เลือกประเภทการย้ายข้อมูลที่คุณต้องการใช้:
- เปลี่ยนทรัพยากรการประมวลผลเท่านั้น — ย้าย VM ไปยังโฮสต์ ESXi อื่น
- เปลี่ยนที่เก็บข้อมูลเท่านั้น — นี่หมายถึง Storage vMotion (เปลี่ยนที่เก็บข้อมูลที่มีไฟล์ VM);
- เปลี่ยนทั้งทรัพยากรการประมวลผลและพื้นที่เก็บข้อมูล — โหมดการโยกย้ายที่ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน (vMotion ที่ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน/แชร์-ไม่มีอะไร) ไฟล์ VM จะถูกคัดลอกระหว่างโฮสต์ผ่านเครือข่าย
ฉันได้เลือกตัวเลือกแรกแล้ว
วิซาร์ดการโยกย้ายจะเสนอให้คุณเลือกโฮสต์ คลัสเตอร์ พูลทรัพยากร หรือ vApp เพื่อย้ายเครื่องเสมือนไป เลือกโฮสต์ หากกำหนดค่า vMotion อย่างถูกต้องและไม่พบข้อขัดแย้ง คุณจะเห็น การตรวจสอบความเข้ากันได้สำเร็จ ข้อความใน ความเข้ากันได้ มาตรา.
หากคุณพบข้อผิดพลาดใดๆ ในแท็บความเข้ากันได้ ให้ศึกษาอย่างละเอียดและแก้ไขคลิกถัดไป
วิซาร์ดการโยกย้าย VM จะแจ้งให้คุณเลือกเครือข่ายเพื่อวาง vNIC ของ VM บนโฮสต์เป้าหมาย หากคุณต้องการให้ VM พร้อมใช้งานหลังจากการโยกย้าย ให้วางไว้ในส่วนเครือข่าย (VLAN) เดียวกันกับโฮสต์ต้นทาง หากคุณกำลังใช้สวิตช์ vSphere มาตรฐาน ให้สร้างกลุ่มพอร์ตเดียวกันบนโฮสต์ ESXi ทั้งหมด เมื่อใช้ VDS กลุ่มพอร์ตบนโฮสต์คลัสเตอร์ทั้งหมดจะเหมือนกัน
ในขั้นตอนสุดท้าย เลือกลำดับความสำคัญของงาน vMotion โดยค่าเริ่มต้น ระบบจะใช้ลำดับความสำคัญสูงสุด (กำหนดเวลา vMotion ด้วยลำดับความสำคัญสูง ). ฉันใช้มันเสมอ
จากนั้นคลิก ถัดไป -> เสร็จสิ้น และการโยกย้าย VM ไปยังโฮสต์อื่นจะเริ่มต้นขึ้น คุณสามารถติดตามสถานะการย้ายข้อมูลได้ในงานล่าสุด แผง (ย้ายเครื่องเสมือน งาน). ในกรณีของฉัน การโยกย้าย VM โดยใช้ vMotion บนอีเทอร์เน็ต 10 GB ใช้เวลาประมาณ 3 วินาที
ตรวจสอบให้แน่ใจว่า VM ของคุณกำลังทำงานอยู่บนโฮสต์ ESXi อื่น
คุณสามารถย้าย VM ที่รันอยู่ไปยังโฮสต์อื่นใน PowerCLI ได้โดยใช้ Move-VM cmdlet ของ PowerShell ตัวอย่างเช่น เราต้องการย้าย VM ทั้งหมดจาก mun-esxi01 ไปยัง mun-esxi02:
Get-VMHost mun-esxi01|Get-Vm| Move-VM –Destination (Get-VMHost mun-esxi02)
เหตุใด VMWare vMotion จึงไม่ทำงาน
ต่อไปนี้คือรายการสาเหตุทั่วไปที่ทำให้ vMotion อาจล้มเหลวหรือการย้าย VM อาจช้ามาก:
- ความเข้ากันไม่ได้ของ CPU (เปิดใช้งานโหมดความเข้ากันได้ของ EVC/Enhanced vMotion);
- vMotion ไม่ได้เปิดใช้งานในอินเทอร์เฟซ VMkernel
- การตั้งค่าเครือข่ายไม่ถูกต้องของโฮสต์ ESXi หรือสวิตช์เสมือน กลุ่มพอร์ต (Jumbo Frames กำหนดค่าไม่ถูกต้อง ที่อยู่ IP ขัดแย้งกันในเครือข่าย vMotion การตั้งค่า vSwitch ไม่ถูกต้อง เครือข่ายช้า แพ็กเก็ตสูญหาย)
- ไม่มีที่เก็บข้อมูลที่ใช้ร่วมกัน (สำหรับ vSphere เวอร์ชัน 5.1 หรือเก่ากว่า) ใน vSphere 5.1 หรือสูงกว่านั้นไม่มี VMotion ที่แชร์ไว้
- ไม่มีซีดี/ดีวีดีหรืออิมเมจ ISO บนโฮสต์เป้าหมาย
- เปิดใช้งานกฎการต่อต้านผู้สนใจ
- กำลังติดตั้งเครื่องมือ VMWare ในระบบปฏิบัติการของแขก
- หากระบบปฏิบัติการของแขกกำลังเปลี่ยนเนื้อหา RAM อยู่ vMotion อาจล่าช้าในการย้ายข้อมูลที่แก้ไขไปยังสำเนา VM บนโฮสต์อื่นบนเครือข่าย
- หากโฮสต์เป้าหมายมีทรัพยากร CPU หรือ RAM ไม่เพียงพอในการสร้าง Shadow VM vMotion จะล้มเหลวโดยมีข้อผิดพลาด
จะปรับปรุง/เพิ่มประสิทธิภาพความเร็ว vMotion เพื่อย้าย VM อย่างรวดเร็วได้อย่างไร
คุณสามารถเร่งการโยกย้ายเครื่องเสมือนของคุณได้หลายวิธี
- อย่างแรกเลย จะดีกว่าถ้าใช้เครือข่ายที่มีประสิทธิภาพสูงสุดระหว่างสองโฮสต์ ESXi ใช้เครือข่ายอย่างน้อย 10 GB, 25 GB ดียิ่งขึ้น (อะแดปเตอร์เครือข่ายของเซิร์ฟเวอร์ ESXi และสวิตช์ทางกายภาพต้องรองรับโหมดนี้)
- ใช้อินเทอร์เฟซทางกายภาพที่แตกต่างกันสำหรับการรับส่งข้อมูล vMotion
- การโยกย้าย vMotion ใช้เธรด (aka streams) หนึ่งเธรดถูกสร้างขึ้นสำหรับแต่ละ VMkernel ที่เปิดใช้งาน vMotion อย่างไรก็ตาม เธรดนี้สามารถใช้คอร์โปรเซสเซอร์ได้เพียงคอร์เดียวเท่านั้น
ในการจัดเตรียมคอร์ CPU มากกว่าหนึ่งคอร์สำหรับกระบวนการ vMotion ให้สร้างอินเทอร์เฟซ VMkernel หลายอัน เปิดใช้งาน vMotion สำหรับคอร์เหล่านั้น และเชื่อมโยงเข้ากับอินเทอร์เฟซ NIC เดียว เธรด vMotion มีปริมาณงานเฉลี่ยประมาณ 15 GbE ดังนั้นในการโหลด 100 GbE คุณต้องมี 6 เธรด
นอกจากนี้ คุณสามารถเพิ่มจำนวนเธรด vMotion สำหรับอินเทอร์เฟซ VMkernel ได้โดยใช้ Migrate.VMotionStreamHelpers ตัวเลือกในการตั้งค่าระบบขั้นสูง