นี่เป็นคำถามที่พบบ่อยโดยเฉพาะในสภาพแวดล้อมปัจจุบันของสภาพแวดล้อมเสมือน น่าเสียดายที่คำตอบนั้นไม่ตรงไปตรงมาอย่างที่ใคร ๆ คิด
dd เป็นตัวเลือกแรกที่เห็นได้ชัด แต่ dd เป็นตัวคัดลอกและบังคับให้คุณเขียนบล็อกข้อมูลทุกอัน (เช่นการเริ่มต้นเนื้อหาไฟล์) ... และการเริ่มต้นนั้นเป็นสิ่งที่ใช้เวลา I / O มาก (ต้องการทำให้ใช้เวลานานขึ้นหรือไม่ใช้/ dev / randomแทน/ dev / ศูนย์ ! จากนั้นคุณจะใช้ CPU เช่นเดียวกับเวลา I / O!) ในที่สุดแม้ว่า dd เป็นตัวเลือกที่ไม่ดี ค่าเริ่มต้นที่ใช้โดย VM "สร้าง" GUIs) เช่น:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
truncateเป็นอีกทางเลือก - และน่าจะเร็วที่สุด ... แต่นั่นเป็นเพราะมันสร้าง "ไฟล์กระจัดกระจาย" โดยพื้นฐานแล้วไฟล์ที่กระจัดกระจายเป็นส่วนหนึ่งของดิสก์ที่มีข้อมูลจำนวนมากและระบบไฟล์พื้นฐาน "กลโกง" โดยไม่ได้เก็บข้อมูลทั้งหมดจริงๆ แต่เพียง "แกล้ง" ว่ามีทั้งหมด ดังนั้นเมื่อคุณใช้ truncate เพื่อสร้างไดรฟ์ 20 GB สำหรับ VM ของคุณระบบไฟล์จะไม่จัดสรร 20 GB แต่จะโกงและบอกว่ามีศูนย์ 20 GB ที่นั่นแม้ว่าจะมีแทร็กเดียวบนดิสก์เพียงเล็กน้อย อาจมีการใช้งานจริง ๆ เช่น:
truncate -s 10G gentoo_root.img
fallocate เป็นครั้งสุดท้าย - และที่ดีที่สุด - ทางเลือกสำหรับการใช้งานกับการจัดสรรดิสก์ VM เพราะมันเป็นหลัก "สำรอง" (หรือ "จัดสรร" ทุกพื้นที่ที่คุณกำลังมองหา แต่ก็ไม่ได้รำคาญที่จะเขียนอะไรดังนั้น. เมื่อคุณใช้ fallocate เพื่อสร้างพื้นที่ว่างบนไดรฟ์เสมือน 20 GB คุณจะได้รับไฟล์ 20 GB (ไม่ใช่ "ไฟล์ที่กระจัดกระจาย" และคุณจะไม่ต้องกังวลที่จะเขียนอะไรลงไปซึ่งหมายความว่าทุกอย่างจะอยู่ใน มี - เช่นดิสก์ใหม่เอี่ยม!) เช่น:
fallocate -l 10G gentoo_root.img