Có thể tạo một file giữ chỗ trên đĩa mà chưa có nội dung, bằng cách dùng các công cụ như fallocate, truncate, dd
- fallocate – Cấp chỗ cho file.
- truncate – Co/dãn kích thước file tới giá trị cho trước.
- dd – Sao chép file, bao gồm clone/create/overwrite.
fallocate
fallocate -l File_Size File_Name
# Thí dụ
fallocate -l 1G test.img
truncate
Khi truncate một file chưa tồn tại thì file sẽ được tạo, tuy nhiên chỉ là giữ chỗ chứ chưa có dữ liệu. Nếu file đã có và kích thước không khớp thì sẽ được co/dãn về kích thước mới.
truncate -s File_Size File_Name
Thí dụ
truncate -s 10G 10G.img
dd
dd if=/dev/zero of=File_Name bs=Size_of_Block count=0 seek=Num_of_Block
Thí dụ
dd if=/dev/zero of=1GB.img bs=1 count=0 seek=1G
dd if=/dev/zero of=10MB.img bs=1024 count=0 seek=$((1024*10))
So sánh các công cụ trên
- Trong thí dụ đầu tiên về dd, vì count=0 nên dd không thực sự điền byte 0 vào file và tạo file nhanh nhất. Thay dòng lệnh dd để count > 0 thì tốc độ chậm đáng kể
- fallocate cũng khá nhanh vì 10GB dữ liệu không thực sự được ghi xuống đĩa mà hệ thống chỉ giữ chỗ cho file. Điều này đáp ứng được nhiều ứng dụng có tác vụ ghi vào file tiếp sau đó.
- truncate cũng ăn gian, nó tạo “sparse file” và báo với hệ thống là đã có một file toàn byte 0. Các hoạt động tiếp theo trên file mới thật sự cập nhật lên đĩa.