Đây là một câu hỏi phổ biến - đặc biệt là trong môi trường ngày nay của môi trường ảo. Thật không may, câu trả lời không đơn giản như người ta có thể nghĩ.
dd là lựa chọn đầu tiên rõ ràng, nhưng về cơ bản dd là một bản sao và buộc bạn phải viết mọi khối dữ liệu (do đó, khởi tạo nội dung tệp) ... Và việc khởi tạo đó là thứ chiếm quá nhiều thời gian I / O. (Bạn muốn làm cho nó lâu hơn nữa? Sử dụng / dev / ngẫu nhiên thay vì / dev / zero ! Sau đó, bạn sẽ sử dụng CPU cũng như thời gian I / O!) Cuối cùng, dd là một lựa chọn kém (mặc dù về cơ bản là mặc định được sử dụng bởi GUI "tạo" VM). Ví dụ:
dd if=/dev/zero of=./gentoo_root.img bs=4k iflag=fullblock,count_bytes count=10G
cắt ngắn là một lựa chọn khác - và có khả năng là nhanh nhất ... Nhưng đó là vì nó tạo ra một "tệp thưa thớt". Về cơ bản, một tệp thưa thớt là một phần của đĩa có nhiều dữ liệu giống nhau và hệ thống tệp cơ bản "gian lận" bằng cách không thực sự lưu trữ tất cả dữ liệu, mà chỉ "giả vờ" rằng tất cả đều ở đó. Do đó, khi bạn sử dụng cắt ngắn để tạo ổ đĩa 20 GB cho máy ảo của mình, hệ thống tệp không thực sự phân bổ 20 GB, nhưng nó gian lận và nói rằng có 20 GB số 0 ở đó, dù chỉ là một rãnh trên đĩa thực sự có thể (thực sự) được sử dụng. Ví dụ:
truncate -s 10G gentoo_root.img
fallocate là cuối cùng - và tốt nhất - sự lựa chọn để sử dụng với phân bổ đĩa VM, bởi vì nó về cơ bản "dự trữ" (hoặc "giao đất" tất cả các không gian bạn đang tìm kiếm, nhưng nó không bận tâm để ghi bất cứ điều gì Vì vậy,. Khi bạn sử dụng fallocate để tạo dung lượng ổ đĩa ảo 20 GB, bạn thực sự có được một tệp 20 GB (không phải là "tệp thưa thớt" và bạn sẽ không bận tâm viết bất cứ điều gì vào nó - điều đó có nghĩa là hầu như mọi thứ đều có thể có trong đó ở đó - giống như một đĩa hoàn toàn mới!) Eg:
fallocate -l 10G gentoo_root.img