Ví dụ độ chi tiết khối tối thiểu
Hãy chơi một chút để xem những gì đang xảy ra.
mount
cho tôi biết tôi đang ở trên một phân vùng ext4 được gắn tại /
.
Tôi tìm thấy kích thước khối của nó với:
stat -fc %s .
cung cấp cho:
4096
Bây giờ hãy tạo một số tệp có kích thước 1 4095 4096 4097
:
#!/usr/bin/env bash
for size in 1 4095 4096 4097; do
dd if=/dev/zero of=f bs=1 count="${size}" status=none
echo "size ${size}"
echo "real $(du --block-size=1 f)"
echo "apparent $(du --block-size=1 --apparent-size f)"
echo
done
và kết quả là:
size 1
real 4096 f
apparent 1 f
size 4095
real 4096 f
apparent 4095 f
size 4096
real 4096 f
apparent 4096 f
size 4097
real 8192 f
apparent 4097 f
Vì vậy, chúng tôi thấy rằng bất cứ điều gì dưới đây hoặc bằng để 4096
chiếm 4096
byte trong thực tế.
Sau đó, ngay khi chúng tôi đi qua 4097
, nó đi lên đến 8192
đó là 2 * 4096
.
Rõ ràng là đĩa luôn lưu trữ dữ liệu tại một ranh giới khối của 4096
byte.
Điều gì xảy ra với các tập tin thưa thớt?
Tôi đã không điều tra đại diện chính xác là gì, nhưng rõ ràng điều đó --apparent
sẽ được xem xét.
Điều này có thể dẫn đến kích thước rõ ràng là lớn hơn so với việc sử dụng đĩa thực tế.
Ví dụ:
dd seek=1G if=/dev/zero of=f bs=1 count=1 status=none
du --block-size=1 f
du --block-size=1 --apparent f
cho:
8192 f
1073741825 f
Liên quan: /programming/38718864/how-to-test-if-spude-file-is- hỗ trợ
Phải làm gì nếu tôi muốn lưu trữ một loạt các tệp nhỏ?
Một số khả năng là:
Thư mục:
Đã thử nghiệm trong Ubuntu 16.04.