นี่เป็นคำถามที่น่าสนใจ ...
ฉันไม่คิดว่าจะมีคำตอบที่ชัดเจน แต่ฉันสามารถให้บริบททางประวัติศาสตร์เกี่ยวกับวิธีปฏิบัติที่ดีที่สุดในหัวข้อนี้อาจมีการเปลี่ยนแปลงตลอดเวลา
ฉันเคยไปหลายพันสนับสนุนของ Linux VMs นำไปใช้ในรูปแบบต่าง ๆ ในสภาพแวดล้อม VMware ตั้งแต่ปี 2007 วิธีการของฉันที่จะใช้งานได้มีการพัฒนาและฉันเคยซ้ำกัน ( บางครั้งโชคร้าย ) ประสบการณ์ในการสืบทอดและ refactoring ระบบที่สร้างขึ้นโดยวิศวกรอื่น ๆ
วันเก่า ๆ ...
ย้อนกลับไปในวัน (2007) ระบบ VMware ยุคแรกของฉันได้รับการแบ่งพาร์ติชันเช่นเดียวกับระบบโลหะเปลือยของฉัน ในด้านของ VMware ฉันใช้ไฟล์หนาแบบแยกขนาด 2GB เพื่อประกอบข้อมูลของ VM และไม่ได้คิดเกี่ยวกับแนวคิดของ VMDK หลายตัวเพราะฉันดีใจที่เวอร์ชวลไลเซชันสามารถใช้งานได้!
โครงสร้างพื้นฐานเสมือนจริง ...
โดย ESX 3.5 และ ESX / ESXi 4.x รีลีสต้น (2009-2011) ฉันใช้ Linux ซึ่งแบ่งพาร์ติชันตามปกติบนไฟล์ VMDK ที่มีการเตรียมโมโนลิ ธ แบบหนาก้อนเดียว การเตรียมพื้นที่เก็บข้อมูลล่วงหน้าทำให้ฉันต้องคิดถึงการออกแบบลีนุกซ์ในลักษณะที่คล้ายกับฮาร์ดแวร์จริง ฉันสร้าง 36GB, 72GB, 146GB VMDK สำหรับระบบปฏิบัติการแบ่งพาร์ติชั่นปกติ /, / boot, / usr, / var, / tmp จากนั้นเพิ่ม VMDK อีกอันสำหรับพาร์ติชั่น "data" หรือ "growth" (ไม่ว่าจะเป็น / home / opt หรือบางอย่างเฉพาะแอปพลิเคชัน) อีกครั้งจุดหวานในขนาดฮาร์ดดิสก์ทางกายภาพในช่วงยุคนี้คือ 146GB และเนื่องจากการจัดสรรล่วงหน้าเป็นข้อกำหนด (เว้นแต่ใช้ NFS) ฉันจึงต้องอนุรักษ์พื้นที่
การถือกำเนิดของการจัดเตรียมบาง ๆ
VMware พัฒนาคุณสมบัติที่ดีกว่าเกี่ยวกับThin provisioningใน ESXi 4.x ที่ออกมาในภายหลังและนี่เป็นการเปลี่ยนแปลงวิธีที่ฉันเริ่มติดตั้งระบบใหม่ ด้วยการเพิ่มชุดคุณสมบัติแบบเต็มใน 5.0 / 5.1 ความยืดหยุ่นชนิดใหม่ที่อนุญาตให้มีการออกแบบที่สร้างสรรค์มากขึ้น โปรดทราบว่านี่คือการก้าวไปพร้อมกับความสามารถที่เพิ่มขึ้นบนเครื่องเสมือนในแง่ของจำนวน vCPUS และจำนวน RAM ที่สามารถใช้กับ VM แต่ละเครื่องได้ เซิร์ฟเวอร์และแอปพลิเคชั่นประเภทอื่น ๆ อาจถูกจำลองเสมือนมากกว่าในอดีต สิ่งนี้ถูกต้องเนื่องจากสภาพแวดล้อมการคำนวณเริ่มเสมือนจริงสมบูรณ์
LVM แย่มาก ...
เมื่อถึงเวลาที่ฟังก์ชั่น hot-add เต็มรูปแบบที่ระดับ VM อยู่ในตำแหน่งและเป็นปกติ (2011-2012) ฉันได้ทำงานกับ บริษัท ที่พยายามรักษา uptime สำหรับ VMs ของลูกค้าในราคาใด ๆ ( โง่ ) ดังนั้นสิ่งนี้รวมถึงการเพิ่ม VMware CPU / RAM ออนไลน์และการปรับขนาดดิสก์ LVM ที่มีความเสี่ยงบน VMDK ที่มีอยู่ ระบบลีนุกซ์ส่วนใหญ่ในสภาพแวดล้อมนี้คือการตั้งค่า VMDK เดี่ยวพร้อมกับพาร์ติชัน ext3 ที่ด้านบนของ LVM มันแย่มากเพราะเลเยอร์ LVM เพิ่มความซับซ้อนและความเสี่ยงที่ไม่จำเป็นต่อการดำเนินงาน ตัวอย่างเช่นการใช้พื้นที่ว่างใน / usr อาจส่งผลให้เกิดการตัดสินใจที่ไม่ดีซึ่งในที่สุดก็หมายถึงการกู้คืนระบบจากการสำรองข้อมูล ... นี่เป็นกระบวนการบางส่วนและเกี่ยวข้องกับวัฒนธรรม แต่ยัง ...
ฉากกั้นฉาก ...
ฉันใช้โอกาสนี้เพื่อลองเปลี่ยนสิ่งนี้ ฉันเป็นพาร์ทิชัน snobใน Linux และรู้สึกว่าระบบไฟล์ควรแยกออกจากกันเพื่อการตรวจสอบและการปฏิบัติงานตามความต้องการ ฉันไม่ชอบ LVM โดยเฉพาะกับ VMware และความสามารถในการทำสิ่งที่คุณต้องการ ดังนั้นฉันจึงขยายการเพิ่มไฟล์ VMDK ไปยังพาร์ติชันที่อาจเติบโตได้ / opt, / var, / home สามารถรับไฟล์เครื่องเสมือนของตนเองได้หากจำเป็น และนั่นก็คือดิสก์ดิบ บางครั้งนี่เป็นวิธีที่ง่ายกว่าในการขยายพาร์ติชันที่มีขนาดเล็กโดยเฉพาะ
Obamacare ...
ด้วย onboarding ของไคลเอนต์สูงโปรไฟล์ฉันถูกมอบหมายด้วยการออกแบบของแม่แบบการอ้างอิง Linux VM ที่จะใช้ในการสร้างสภาพแวดล้อมของแอปพลิเคชันที่มองเห็นได้อย่างมาก ข้อกำหนดด้านความปลอดภัยของแอปพลิเคชันจำเป็นต้องใช้ชุดเมาท์ที่ไม่ซ้ำกันดังนั้นทำงานร่วมกับนักพัฒนาเพื่อพยายามยัดพาร์ติชันที่ไม่ใช่การเติบโตไปยัง VMDK หนึ่งตัวจากนั้นเพิ่ม VMDK แยกต่างหากสำหรับแต่ละตัวยึดที่มีศักยภาพในการเติบโตหรือมีข้อกำหนดเฉพาะ การตรวจสอบ ฯลฯ ) ดังนั้นในที่สุด VMs เหล่านี้ประกอบด้วย VMDK 5 ตัวขึ้นไป แต่ให้ความยืดหยุ่นที่ดีที่สุดสำหรับการปรับขนาดและป้องกันข้อมูลในอนาคต
วันนี้ฉันทำอะไร ...
วันนี้การออกแบบทั่วไปของฉันสำหรับ Linux และระบบไฟล์ดั้งเดิมคือระบบปฏิบัติการบน VMDK แบบบาง (แบ่งพาร์ติชัน) และแยก VMDKs ออกจากกันเพื่อสิ่งอื่น ฉันจะเพิ่มร้อนตามความจำเป็น สำหรับระบบไฟล์ขั้นสูงเช่น ZFS เป็นหนึ่ง VMDK สำหรับระบบปฏิบัติการและอีก VMDK ที่ทำหน้าที่เป็น ZFS zpool และสามารถปรับขนาดแกะสลักเป็นระบบไฟล์ ZFS เพิ่มเติม ฯลฯ