Làm thế nào kích thước tệp trên đĩa có thể là 0 byte khi có dữ liệu trong đó?


106

Tôi có một tệp trong Windows 10 với 362 byte dữ liệu, nhưng "kích thước trên đĩa" chỉ là 0 byte. Đây là một chương trình "Hello world" đơn giản được viết bằng cách lắp ráp và được lưu trong Notepad ++ .

Làm thế nào có thể kích thước trên đĩa bằng 0 khi kích thước của tệp là 362 byte?

Tôi có một ổ SSD, không phải là một ổ cứng thông thường.

Ảnh chụp màn hình của hộp thoại Thuộc tính:

Ảnh chụp màn hình của hộp thoại Thuộc tính


4
Câu trả lời ngắn: Nếu không có không gian bổ sung trên đĩa là cần thiết để lưu trữ nội dung của nó.
David Schwartz

11
@Thomas Không trùng lặp. Tên nghe có vẻ giống nhau, nhưng câu hỏi đó là tại sao Windows tuyên bố tệp 0 byte có kích thước bằng 0 mặc dù yêu cầu đăng ký ở đâu đó. Câu hỏi này hỏi tại sao kích thước trên đĩa có thể bằng 0 ngay cả khi có dữ liệu trong tệp.
Ben N


@BenN Việc gắn cờ là không phù hợp vì bạn đúng, nó chắc chắn không phải là một bản sao.
William

Xin chào Coder88, tôi tin rằng người đã gắn cờ bài đăng của bạn là trùng lặp - câu hỏi khác là hỏi điều gì đó khác biệt; bạn thực sự đã hỏi một câu hỏi hay. Nếu bạn muốn chỉ ra rằng câu hỏi của bạn đã được giải quyết, bạn có thể nhấp vào dấu kiểm bên cạnh câu trả lời tại đây.
Ben N

Câu trả lời:


155

Điều này xảy ra nếu tệp quá nhỏ để nội dung của nó và sổ sách hệ thống tệp phù hợp với 1KB. Để tiết kiệm dung lượng ổ đĩa, NTFS giữ các tệp nhỏ "cư trú", lưu trữ nội dung của chúng ngay trong bản ghi tệp, do đó không có cụm nào phải được phân bổ cho nó. Do đó, kích thước trên đĩa bằng không vì không có gì ngoài bản ghi tệp. Khi tệp đủ lớn, NTFS làm cho nó "không cư trú", phân bổ một hoặc nhiều cụm cho nó (tạo một "kích thước" khác trên đĩa ") và tạo một" cặp ánh xạ "trong bản ghi tệp ở vị trí của dữ liệu chỉ vào cụm.

Ổ cứng SSD hoặc Windows 10 không ảnh hưởng đến điều này; nó chỉ đơn giản là một tính năng NTFS. Đọc thêm: Bốn giai đoạn tăng trưởng tệp NTFS .

Lưu ý rằng số liệu "kích thước trên đĩa" không chính xác. Chẳng hạn, nó không bao giờ bao gồm 1KB không đổi mà bản ghi tệp NTFS chiếm. Số liệu được giới thiệu trong Windows 95, không sử dụng NTFS và do đó không thể giải thích được hiện tượng này; nó chỉ hiển thị kích thước tập tin được làm tròn lên tới bội số tiếp theo của kích thước cụm. Thuật toán ước tính đó đã được chuyển qua Windows 7, mặc dù nhiều phiên bản Windows giữa chúng sử dụng NTFS và bộ nhớ lưu trữ. Cuối cùng, nó đã được cập nhật trong Windows 8 để đếm các tệp chỉ có dữ liệu lưu trú là kích thước không trên đĩa. Đọc thêm: "Kích thước trên đĩa" là gì?


1
Trong một khoảnh khắc, tôi nghĩ rằng chúng tôi đã xem xét ảnh hưởng của sự trùng lặp dữ liệu ( blog.fosketts.net/2012/01/03/ .
misha256

8
Nhưng chờ đã ... Tôi không thể sao chép hành vi của OP trên ổ NTFS của mình (Windows 7). Bất kể tôi tạo các tệp nhỏ như thế nào (một số chỉ dài một byte), mỗi tệp chiếm "không gian đĩa" 4KB theo hộp thoại Thuộc tính tệp. Hmm ...
misha256

8
@ misha256 Huh, tôi có thể sao chép nó với một tệp dưới ~ 700 byte trên Windows 8.1. Tôi đoán là thuật toán trở nên thông minh hơn ở đâu đó giữa Windows 7 và 8.1, vì ban đầu, nó không biết về bất kỳ nội dung NTFS ưa thích nào ( nguồn ). Lưu ý rằng một khi tập tin chuyển sang giai đoạn thứ hai, nó không bao giờ co lại.
Ben N

6
@Philipp Tôi đoán người ta có thể tranh luận một trong hai cách. Theo truyền thống, "tệp trên đĩa" là "kích thước của các cụm được phân bổ" (ví dụ: bạn có thể thấy các hiệu ứng của việc chọn kích thước cụm quá lớn). Theo hiểu biết của tôi, nó chưa bao giờ bao gồm không gian "danh mục" cần thiết cho hệ thống tệp (ví dụ: kích thước của "mục nhập thư mục" hoặc "độ dài của chuỗi các mục nhập FAT").
TripeHound

3
@Philipp: Dù sao đi nữa, bao gồm cả sổ sách kế toán trong kích thước tệp sẽ nhanh chóng có lông: Làm thế nào bạn mô tả một tệp 1 cụm với 3 tên?
Ded repeatator
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.