แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดวางไฟล์ในเซิร์ฟเวอร์ Hyper-V หรือไม่?


11

เราได้ตั้งค่าเซิร์ฟเวอร์ Hyper-V และเลย์เอาต์ของไฟล์ไม่สอดคล้องกันเพราะหลาย ๆ คนตั้งค่าไว้ ต่อไปนี้เป็น "เทมเพลต" ที่แตกต่างกันสองแบบที่ใช้:

เทมเพลต 1

D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Hard Disks\MACHINE_NAME_1.vhdx
D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Machines\GUID_1
D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Machines\GUID_1.xml

D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Hard Disks\MACHINE_NAME_2.vhdx
D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Machines\GUID_2
D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Machines\GUID_2.xml

....

และ

แม่แบบ 2

D:\Hyper-V\Virtual Hard Disks\MACHINE_NAME_1.vhdx
D:\Hyper-V\Virtual Hard Disks\MACHINE_NAME_2.vhdx

D:\Hyper-V\Virtual Machines\GUID_1
D:\Hyper-V\Virtual Machines\GUID_1.xml
D:\Hyper-V\Virtual Machines\GUID_2
D:\Hyper-V\Virtual Machines\GUID_2.xml

เทมเพลต 1

อาร์กิวเมนต์ที่สร้างขึ้นสำหรับเทมเพลต 1 คือเมื่อคุณทำการส่งออก VM การส่งออกจะสร้างโฟลเดอร์ที่มีชื่อเครื่องวางโฟลเดอร์แยกต่างหากสำหรับดิสก์และ vm จากนั้นคุณสามารถชี้ไปที่ไดเรกทอรีเครื่องเมื่อคุณเรียกใช้การนำเข้า

อาร์กิวเมนต์กับสไตล์เทมเพลตนี้คือมันไม่เหมาะสมที่จะมีไดเรกทอรีชื่อ Virtual Machines หากมีเพียงไฟล์เดียว ข้อโต้แย้งอีกข้อคือดูเหมือนว่าเซิร์ฟเวอร์ Hyper-V นั้นดูเหมือนว่าจะคาดหวังว่าฮาร์ดดิสก์ทั้งหมดอยู่ในโฟลเดอร์เดียวและเครื่องเสมือนทั้งหมดอยู่ในโฟลเดอร์อื่น เช่นจะไม่สร้างโฟลเดอร์แยกสำหรับแต่ละ VM (execept สำหรับโฟลเดอร์ที่ชื่อโดย GUID ในไดเรกทอรีเครื่องเสมือน)

แม่แบบ 2

อาร์กิวเมนต์สำหรับเทมเพลต 2 ดูเหมือนว่าจะเป็นสิ่งที่ Hyper-V คาดว่าจะเป็นเลย์เอาต์

อาร์กิวเมนต์ต่อเทมเพลต 2 คือคุณไม่สามารถบอกได้ว่าไฟล์ Virtual Machine ใดที่เชื่อมโยงกับเครื่องใด ๆ เว้นแต่คุณจะดูภายในไฟล์ xml

ฉันชอบที่จะได้ยินเกี่ยวกับข้อผิดพลาดใด ๆ กับรูปแบบใด


2
ดูเหมือนว่าจักรยานหลั่งฉัน
Evan Anderson

2
ฉันไม่เห็นด้วย. จากประสบการณ์มีเหตุผลทางเทคนิคที่ดีที่จะมีหลักการตั้งชื่อที่คุณสามารถระบุได้ว่าดิสก์ใดเป็นของ VM ใดจากนอกเครื่องมือ Hyper-V หนึ่งในตัวเลือกของเขาไม่อนุญาตให้คุณทำเช่นนั้นได้อย่างง่ายดาย - หรือถ้าไฟล์ Hyper-v XML เสียหายซึ่งอาจเกิดขึ้นได้
แกรนท์

2
คุณถูก. เทมเพลต 2 ไม่ได้แยก VM ของโดยโฟลเดอร์ซึ่งเป็นสิ่งที่ดีสำหรับ VHD (X) เริ่มต้น แต่อาจเป็นปัญหาสำหรับ VHD (X) ต่อมาเว้นแต่ว่าคุณมีความรอบคอบในการตั้งชื่อ
joeqwerty

1
เทมเพลตที่ไม่มีพื้นที่ในพา ธ นั้นเป็นอย่างไร
user2813274

2
@BenjaminPeikes Bike shed อ้างถึงกฎหมายของพาร์คินสันเรื่องไม่สำคัญ - en.wikipedia.org/wiki/Parkinson's_law_of_triviality
Grant

คำตอบ:


12

คุณต้องการจะระบุได้อย่างง่ายดายว่าไฟล์ใดเป็นของเครื่องเสมือน แม้ว่าคุณจะไม่สามารถเข้าถึงคอนโซล Hyper-V ได้ก็ตาม

สิ่งนี้เกิดขึ้นเมื่อพยายามกู้คืน VM จากการสำรองข้อมูล หรือเมื่อ Hyper-V ลืมเกี่ยวกับ VMs ทั้งหมดของคุณและคุณต้องนำเข้า หรือไฟล์กำหนดค่า VM เสียหายและคุณต้องสร้าง VM ใหม่และชี้ไปที่ไฟล์ฮาร์ดไดรฟ์เก่า (ซึ่งตอนนี้คุณไม่สามารถระบุได้เนื่องจากไฟล์กำหนดค่าของคุณเสียหาย) หรือคุณเพียงแค่ต้องการตรวจสอบจำนวนเนื้อที่ดิสก์แต่ละ VM อย่างรวดเร็ว หรือคุณต้องการกู้คืนจากการสำรองข้อมูลที่คุณสามารถดูชื่อไฟล์ได้ แต่ไม่สามารถอ่านไฟล์ XML ได้อย่างง่ายดายโดยไม่ต้องผ่านกระบวนการกู้คืนทั้งหมดก่อน

ระบุว่าฉันจะไปหาสิ่งที่คล้ายกับแม่แบบ 1 ที่มีโฟลเดอร์สำหรับแต่ละ VM - แต่ออกจากโฟลเดอร์ย่อย "Virtual Machines" และ "Virtual Machine Hard Disks" - เพียงแค่ใส่ไฟล์ทั้งหมดที่เกี่ยวข้องกับ VM ใน โฟลเดอร์ที่มีชื่อ VM

คุณไม่จำเป็นต้องใช้เครื่อง Hyper-V \ Virtual - เลือกหนึ่งในฉลากเหล่านั้นคุณไม่จำเป็นต้องใช้ทั้งคู่

ดังนั้น:

D: \ Virtual Machines \ MACHINE_A \ GUID_1.xml
D: \ Virtual Machines \ MACHINE_A \ Machine_a_OS.vhdx
D: \ Virtual Machines \ MACHINE_A \ Machine_a_Data.vhdx

D: \ Virtual Machines \ MACHINE_B \ GUID_2.xml
D: \ Virtual Machines \ MACHINE_B \ Machine_b_OS.vhdx
D: \ Virtual Machines \ MACHINE_B \ Machine_b_Data.vhdx

เป็นต้น

หรือคุณอาจตัดสินใจว่าคุณไม่ต้องการชื่อไฟล์เพื่อให้ตรงกับเครื่องเสมือน - ชื่อโฟลเดอร์ก็เพียงพอแล้ว การตั้งชื่อด้วยวิธีนี้จะทำให้การโคลเวอร์ VM ทำได้ง่ายขึ้นโดยไม่ต้องกังวลกับการเปลี่ยนชื่อไฟล์:

D: \ VMs \ Machine A \ GUID_1.xml
D: \ VMs \ Machine A \ OS.vhdx
D: \ VMs \ Machine A \ Data.vhdx

D: \ VMs \ Machine B \ GUID_2.xml
D: \ VMs \ Machine B \ OS.vhdx
D: \ VMs \ Machine B \ SQLData.vhdx
D: \ VMs \ Machine B \ SQLLog.vhdx

สิ่งที่สำคัญที่สุดของที่นี่คือการจัดระเบียบไฟล์เพื่อที่จะมองอะไรอื่นนอกจากโครงสร้างไฟล์คุณสามารถบอกได้ว่า VM แต่ละไฟล์เป็นของอะไรและไฟล์นั้นมีไว้เพื่ออะไร


ฉันโน้มตัวไปยังเค้าโครงที่คุณเสนอ สิ่งหนึ่งที่เกี่ยวกับเลย์เอาต์นี้ที่ฉันไม่ชอบคือมันใช้ชื่อเครื่องทั้งในโครงสร้างโฟลเดอร์และหลักการตั้งชื่อไฟล์ ซึ่งหมายความว่าคุณไม่สามารถคัดลอกโฟลเดอร์ของเครื่องเพื่อสร้างใหม่
Benjamin Peikes

อาร์กิวเมนต์หนึ่งที่ฉันได้ยินคือคุณสามารถบอกได้ว่าไฟล์ใดเป็นของเครื่องเสมือนโดยดูที่ไฟล์ xml สำหรับแต่ละ GUID แม้ว่ามันจะมีประโยชน์มากที่จะมีรูปแบบการเข้าใจการตั้งชื่อที่เข้าใจง่าย มันเหมือนมีความคิดเห็นในรหัสที่ไม่ตรงกับรหัสอีกต่อไป เนื่องจากข้อมูลทั้งหมดเกี่ยวกับเครื่องอยู่ในไฟล์ xml ฉันจึงต้องระวังในการตั้งชื่อโฟลเดอร์และไฟล์เพื่อหาข้อมูล
Benjamin Peikes

@BenjaminPeikes การใช้ไฟล์ XML เพื่อจับคู่ไฟล์กับ VMs มีความเสี่ยง ฉันมีกรณีที่ทั้งผ่านการลบโดยไม่ตั้งใจหรือข้อมูลเสียหายไฟล์ XML ก็หายไปหรืออ่านไม่ได้ ยิ่งไปกว่านั้นมันเร็วกว่าการจับคู่ GUID ทั้งหมด แต่ฉันยอมรับว่าคุณไม่จำเป็นต้องใช้ชื่อ VM ในชื่อไฟล์เพียงแค่โฟลเดอร์ถ้าคุณต้องการ เพียงตรวจสอบให้แน่ใจว่า - โดยดูที่อะไรนอกจากโครงสร้างไฟล์ - คุณสามารถบอกได้ว่าไฟล์ใดเป็นของ VM ชนิดใดและมีจุดประสงค์อะไรบ้าง
สิทธิ์

2

ฉันไม่ชอบ

เนื่องจากไม่มีเทมเพลตของคุณที่เสถียรในกรณีที่คุณย้าย VM

ฉันจะ - และฉันทำเอง - ใช้โครงสร้างโฟลเดอร์เหมือนกับที่คุณได้รับเมื่อคุณทำการ VM ระหว่างโฮสต์ วิธีนี้จะไม่มีการเปลี่ยนแปลงเมื่อคุณย้าย VM ระหว่างโฮสต์


เทมเพลต 1 ไม่ใช่สิ่งที่คุณจะได้รับเมื่อย้าย VM ระหว่างโฮสต์หรือไม่
Benjamin Peikes

ลองใช้ - ไม่ใช่ ตัวอย่างเช่นแผ่นท้ายในโฟลเดอร์ "ฮาร์ดดิสก์เสมือน" ภายใต้โฟลเดอร์ชื่อเครื่อง
TomTom

นั่นคือสิ่งที่แม่แบบ 1 ของฉันทำ เครื่องแต่ละเครื่องมีโฟลเดอร์เป็นของตนเองและในแต่ละโฟลเดอร์เหล่านั้นจะเป็นโฟลเดอร์เครื่องเสมือนและโฟลเดอร์ฮาร์ดดิสก์เสมือน
Benjamin Peikes

1
มีวิธีรับ Hyper-V เพื่อใช้โครงสร้างที่คุณอธิบายไว้โดยค่าเริ่มต้นเมื่อสร้าง VM @TomTom หรือไม่? ฉันชอบวาง VM ของฉันไว้ในโฟลเดอร์ของตนเอง แต่ทุกครั้งที่ฉันจบการสร้าง VM จากนั้นก็ย้ายมันทันทีหลังจากที่ได้รับโครงสร้างโฟลเดอร์ที่ฉันต้องการ
Matty Brown

1

คุณต้องทำแม่แบบ 2 เพื่อแยกข้อต่อสำหรับชิ้นส่วนเครื่องเสมือนจากข้อกังวลด้านการจัดเก็บ คือหนึ่ง VHDX สำหรับ VM อาจไปสำหรับโวลุ่มประสิทธิภาพ VHDX อื่นสำหรับ VM เดียวกันนั้นมีความกังวลเกี่ยวกับความจุมากกว่าและทั้งหมดอาจมีความแตกต่างในด้านความยืดหยุ่น

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

ดังนั้น:

TEMPLATE 2

แม่แบบ 2 - ที่นี่การจัดการพื้นที่เก็บข้อมูลมีความสำคัญเหนือกว่าโครงร่างเนมสเปซ (ในขณะเดียวกันโครงร่างเนมสเปซได้รับการจัดการใน UI สำหรับจัดการ VM ... นั่นคือบางส่วนของ VM อาจไม่ได้อยู่ในท้องถิ่น แต่อยู่ในคลาวด์ รถบัส)

... การจัดการข้อกังวลต่าง ๆ ในการจัดการสตอเรจ:

D: \ Storage \ Pool1 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx-System-01-Prod.vhdx

D: \ Storage \ Pool1 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx-Data-01-Prod.vhdx

D: \ Storage \ Pool2 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx-Data-02-Prod.vhdx

D: \ Storage \ Pool3 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx-Recovery-01-Prod.vhdx

D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1

D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1.xml

D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2

D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2.xml

เทมเพลต 1

หากต้องการทำการแมปนี้ในแม่แบบ 1 - โดยที่เนมสเปซกังวลในระบบไฟล์ (หรือที่เรียกว่า ui หลอกหลอก) จะมีความสำคัญกว่า - ในขณะที่ยังคงกังวลเรื่องพื้นที่จัดเก็บ:

D: \ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-System-01-Prod.vhdx> (เชื่อมโยงไปยัง) D: \ Storage \ Pool1 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx- xx-XX-System-01-Prod.vhdx

D: \ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-Data-01-Prod.vhdx> D: \ Storage \ Pool1 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx- ข้อมูล-01-Prod.vhdx

D: \ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-Data-02-Prod.vhdx> D: \ Storage \ Pool2 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx- ข้อมูล-02-Prod.vhdx

D: \ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-Recovery-01-Prod.vhdx> D: \ Storage \ Pool3 \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ xxx-xx-xx- การกู้คืน-01-Prod.vhdx

D: \ VMs \ xxx-xx-xx-01-Prod \ GUID_1> D: \ Storage \ Pool1 \ Hyper-V \ เครื่องเสมือน \ GUID_1 D: \ VMs \ xxx-xx-xx-01-Prod \ GUID_1_1.xml > D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1.xml D: \ VMs \ xxx-xx-xx-01-Prod \ GUID_2> D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2 D: \ VMs \ xxx-xx-xx-01-Prod \ GUID_2.xml> D: \ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2.xml

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.