Câu hỏi Tại sao có sự khác biệt lớn giữa "Kích thước" và "Kích thước trên đĩa"?
Như bạn có thể thấy bên dưới, có quá nhiều sự khác biệt giữa Kích thước và Kích thước trên đĩa các trường trong thư mục của tôi. Tại sao vậy?

tôi biết điều đó Kích thước trên đĩa nên nhiều hơn một chút Kích thước vì các đơn vị phân bổ trong Windows, nhưng tại sao lại có nhiều sự khác biệt? Có thể vì số lượng tệp lớn không?
BTW, thư mục này nằm trên thẻ SD của điện thoại Android của tôi. Bên trong này, ứng dụng bản đồ của tôi lưu trữ các bản đồ được lưu trong bộ nhớ cache và ứng dụng nhận bản đồ của nó từ Google Maps.
295
2018-01-20 09:48
gốc
Các câu trả lời:
Tôi sẽ giả định rằng bạn đang sử dụng hệ thống tập tin FAT / FAT32 ở đây, vì bạn đề cập đến đây là một thẻ SD. NTFS và exFAT hoạt động tương tự như các đơn vị phân bổ. Các hệ thống tệp khác có thể khác, nhưng chúng không được hỗ trợ trên Windows.
Nếu bạn có nhiều tệp nhỏ, điều này chắc chắn là có thể. Xem xét điều này:
Ok, bây giờ tối thiểu không gian thực hiện là 50.000 * 32.000 = 1,6 GB (sử dụng tiền tố SI, không phải nhị phân, để đơn giản hóa toán học). Không gian mà mỗi tệp nhận được trên đĩa luôn là bội số của kích thước đơn vị phân bổ - và ở đây chúng tôi giả sử mỗi tệp thực sự đủ nhỏ để vừa với một đơn vị duy nhất, còn lại một số không gian (lãng phí).
Nếu mỗi tệp tính trung bình 2 kB, bạn sẽ nhận được tổng số khoảng 100 MB - nhưng bạn cũng lãng phí 15x (30 kB cho mỗi tệp) trung bình do kích thước đơn vị phân bổ.
Giải thích sâu
Lý do tại sao điều này xảy ra? Vâng, hệ thống tập tin FAT32 cần phải theo dõi vị trí của từng tập tin được lưu trữ. Nếu nó giữ một danh sách của từng byte đơn, bảng (như sổ địa chỉ) sẽ tăng cùng tốc độ với dữ liệu - và lãng phí rất nhiều không gian. Vì vậy, những gì họ làm là sử dụng "đơn vị phân bổ", còn được gọi là "kích thước cụm". Khối lượng được chia thành các đơn vị phân bổ, và theo như hệ thống tập tin có liên quan, chúng không thể được chia nhỏ - đó là những khối nhỏ nhất mà nó có thể giải quyết. Giống như bạn có một số nhà, nhưng người đưa thư của bạn không quan tâm bạn có bao nhiêu phòng ngủ hoặc những người sống trong họ.
Vậy điều gì sẽ xảy ra nếu bạn có một tập tin rất nhỏ? Vâng, hệ thống tập tin không quan tâm nếu tập tin là 0 kB, 2 kB hoặc thậm chí 15 kB, nó sẽ cung cấp cho nó không gian ít nhất có thể - trong ví dụ trên, đó là 32 kB. Tệp của bạn chỉ sử dụng một lượng nhỏ không gian này và phần còn lại về cơ bản là lãng phí, nhưng vẫn thuộc về tệp - giống như một phòng ngủ bạn bỏ trống.
Tại sao có các kích thước đơn vị phân bổ khác nhau? Vâng, nó trở thành một sự cân bằng giữa việc có một bảng lớn hơn (sổ địa chỉ, ví dụ như John sở hữu một căn nhà tại 123 Fake Street, 124 Fake Street, 666 Satan Lane, vv), hoặc nhiều không gian lãng phí trong mỗi đơn vị (nhà). Nếu bạn có tệp lớn hơn, điều đó có ý nghĩa hơn khi sử dụng đơn vị phân bổ lớn hơn - bởi vì tệp không nhận được đơn vị mới (nhà) cho đến khi tất cả các tệp khác được lấp đầy. Nếu bạn có rất nhiều tập tin nhỏ, tốt, bạn sẽ có một bảng lớn (sổ địa chỉ) anyway như vậy cũng có thể cung cấp cho họ các đơn vị nhỏ (nhà).
Các đơn vị phân bổ lớn, như một quy tắc chung, sẽ lãng phí rất nhiều không gian nếu bạn có nhiều tệp nhỏ. Thường không có lý do chính đáng để vượt quá 4 kB để sử dụng chung.
Phân mảnh?
Đối với phân mảnh, phân mảnh không nên lãng phí không gian theo cách này. Các tệp lớn có thể bị phân mảnh, tức là chia nhỏ thành nhiều đơn vị phân bổ, nhưng mỗi đơn vị phải được điền trước khi đơn vị tiếp theo được bắt đầu. Chống phân mảnh có thể tiết kiệm một chút không gian trong bảng phân bổ, nhưng đây không phải là vấn đề cụ thể của bạn.
Phương pháp khả thi
Như gladiator2345 đề xuất, lựa chọn thực sự duy nhất của bạn vào thời điểm này là sống với nó hoặc định dạng lại với các đơn vị phân bổ nhỏ hơn.
Thẻ của bạn có thể được định dạng trong FAT16, có giới hạn nhỏ hơn về kích thước bảng và do đó yêu cầu đơn vị phân bổ lớn hơn nhiều để giải quyết một ổ đĩa lớn hơn (với giới hạn trên 2 GB với đơn vị phân bổ 32 kB). Nguồn lịch sự của Braiam. Nếu đúng như vậy, bạn sẽ có thể định dạng an toàn dưới dạng FAT32.
299
2018-01-20 09:54
Đây là một trong những tình huống mà việc nén / lưu trữ vào một tệp có thể hữu ích. Gì Bob nói trong câu trả lời là đúng nhưng giải pháp có thể dễ dàng hơn cải cách đĩa như các câu trả lời khác gợi ý. Nếu bạn nén hoặc lưu trữ thư mục (sử dụng zip, tar hoặc bất kỳ phương thức nào khác), hệ thống tệp sẽ thấy rằng bạn có một tệp lớn duy nhất, thay vì một tệp nhỏ hơn. Ngay cả khi không nén bạn sẽ nhận được gần 1,4 GiB của không gian trở lại, bởi vì tất cả những "tệp nhỏ" sẽ được tính là một tệp lớn duy nhất.
Bên trong này, ứng dụng bản đồ của tôi lưu trữ các bản đồ được lưu trong bộ nhớ cache và ứng dụng nhận bản đồ của nó từ Google Maps
Có lẽ bạn nên thảo luận với nhà phát triển để sử dụng kho lưu trữ hoặc cơ sở dữ liệu thay vì nhiều tệp. Điều này có lẽ cũng sẽ giúp để có đĩa ít bị phân mảnh và chắc chắn sẽ tiết kiệm không gian đặc biệt là nếu nó là một ổ đĩa flash NAND. Nếu bạn giải thích tình huống vô lý khi 100MB tải trọng / dữ liệu hữu ích trở thành 1,4GiB, có điều gì đó không ổn với cách dữ liệu được lưu trữ, và các nhà phát triển nên mang lại một giải pháp đẹp hơn.
46
2018-01-20 15:03
Trong trường hợp bất kỳ ai đối mặt với vấn đề này, nó có thể hữu ích để biết rằng một lý do khác để thấy sự khác biệt lớn trong kích thước tập tin / không gian trên đĩa là việc sử dụng luồng dữ liệu thay thế (QUẢNG CÁO)
Điều này chỉ áp dụng cho NTFS đối với kiến thức của tôi.
ADS được biết đến với mục đích sử dụng hợp pháp và không hợp pháp:
- để gắn thẻ một tệp được tải xuống từ Internet
- để lưu trữ siêu dữ liệu (Microsoft muốn bao gồm một số tính năng của Apple OS, như không sử dụng phần mở rộng tệp để xác định loại tệp)
- để ẩn dữ liệu hoặc mã trong ngữ cảnh của phần mềm độc hại.
ADS đơn giản: bất kỳ tệp NTFS nào cũng có thể chứa nhiều luồng dữ liệu (hiểu "subfiles"). Một là luồng chính, được sử dụng bởi Windows Explorer và các công cụ Windows khác, nó giữ nội dung thông thường của một tệp. Các luồng dữ liệu thay thế có thể chứa thông tin khác, chính xác như luồng chính, nhưng chúng không thể được xử lý trực tiếp bởi các công cụ Windows (cụ thể là Explorer hiển thị kích thước tệp bằng với kích thước của luồng chính, bất kể kích thước của ADS), bạn phải sử dụng các công cụ hoặc mã chuyên biệt để viết, đọc và định vị ADS.
Điểm chính là trong trường hợp có sự khác biệt về kích thước tệp lớn, không bỏ qua khả năng của ADS và phần mềm độc hại ẩn.
Liên kết khác.
Để thử nghiệm một cách an toàn với ADS, hãy thử điều này ở cấp độ DOS / CMD ...
Tạo và sau đó hiển thị nội dung của một tệp trong thư mục gốc của C:
C:\> echo The main data stream> test.txt
C:\> type test.txt
Kết quả:
C:\> The main data stream
Bây giờ thêm một ADS với cùng một phương thức, chỉ cần chỉ rõ tên ADS ngoài tên tệp:
C:\> echo The secret message> test.txt:secret
Bạn vừa ẩn thông báo bí mật trong tệp. Lưu ý rằng kích thước tệp trong Explorer không thay đổi mặc dù chúng tôi đã thêm byte trong "bí mật" của ADS.
Thử hiển thị nội dung ADS:
C:\> type test.txt:secret
Kết quả:
The filename, directory name, or volume label syntax is incorrect.
CMD type
không thể hiển thị nội dung của ADS. Thay vào đó, chúng tôi sẽ sử dụng Notepad:
notepad test.txt:secret
Trong Notepad, chúng ta có thể thấy nội dung của ADS:
The secret message
Bạn cũng có thể ẩn một tập tin thực thi đầy đủ trong một ADS của một tập tin văn bản vô tội, và chạy nó bất cứ lúc nào. Sự giàu có không gây hại cho tin tặc :-)
25
2018-01-21 07:37
Vấn đề có thể là do kích thước cụm.
Theo Microsoft:
Nếu bạn không sử dụng nén NTFS cho bất kỳ tệp hoặc thư mục nào
chứa trên ổ đĩa, sự khác biệt giữa SIZE và SIZE ON DISK
là không gian lãng phí vì kích thước cụm lớn hơn mức cần thiết. Bạn
nên cố gắng sử dụng kích thước cụm tối ưu để SIZE ON DISK
giá trị càng gần giá trị SIZE càng tốt. Quá nhiều
sự khác biệt giữa SIZE ON DISK và giá trị SIZE là một
chỉ ra rằng kích thước cụm mặc định là quá lớn đối với mức trung bình
kích thước tệp mà bạn đang lưu trữ trên ổ đĩa và phải
giảm. Điều này có thể được thực hiện chỉ bằng cách sao lưu âm lượng và sau đó
định dạng lại ổ đĩa bằng cách sử dụng lệnh định dạng và / a switch
để chỉ định kích thước phân bổ thích hợp: IE: format D: /a:2048
(Ví dụ này sử dụng kích thước cụm 2 KB).
Thử định dạng ổ đĩa của bạn với kích thước cụm nhỏ hơn.
19
2018-01-20 09:57
Tôi thấy nhiều người đề xuất định dạng lại ổ đĩa của bạn với kích thước cụm nhỏ hơn. Vì đây là thẻ SD, lưu ý rằng nhiều nhà cung cấp định dạng lại thẻ theo kích thước cụm được đề xuất để phù hợp với kích thước của kích thước cụm của NAND (giữ cả hai đồng bộ hóa là rất quan trọng cho hiệu suất đọc / ghi tối ưu và giảm hao mòn)
Bạn không thể thay đổi kích thước cụm của NAND (đó là thuộc tính vật lý của phần cứng thẻ SD của bạn).
Lần đầu tiên chạy scandisk / chkdsk trên thẻ SD của bạn để đảm bảo vấn đề báo cáo kích thước không nằm trong một hệ thống tệp bị hỏng.
Thứ hai, tôi khuyên bạn nên báo cáo lỗi cho các nhà phát triển Google Map, vì họ là người gây ra lỗi ở đây. Họ nên sử dụng một phương pháp lưu trữ cao cấp. Sửa chữa nó cũng sẽ làm cho ứng dụng chạy nhanh hơn trên nhiều thiết bị do ít hoạt động của trình điều khiển hệ thống tệp và / hoặc tệp.
9
2018-01-21 18:20
Đây là một vấn đề chung với nhiều hệ thống tập tin. Có hai yếu tố làm việc ở đây, số lượng tối đa của "khối" một hệ thống tập tin có thể xử lý cho mỗi khối lượng hợp lý và hạn chế vật lý của phương tiện lưu trữ. Chỉ có 1 tệp có thể được cấp phát cho bất kỳ khối nhất định nào (các tệp thường mất nhiều khối khi chúng cần). Vì vậy, một tập tin văn bản với 64 byte thường có thể mất bất cứ điều gì từ 4k đến 32k, tùy thuộc vào kích thước khối của hệ thống tập tin nó nằm trên.
Một cách để suy nghĩ về điều này là suy nghĩ của mỗi khối trong hệ thống tập tin như một hộp, và hệ thống tập tin như một căn phòng. Tất cả các ô của bạn đều có cùng kích thước và bạn cố gắng vừa vặn với nhiều thứ trong phòng. Nếu bạn phù hợp với tất cả trong với nhiều phòng còn lại, bạn phải có được hộp lớn hơn để căn phòng được làm đầy hoàn toàn với hộp.
Một trong những quy tắc để đưa mọi thứ vào trong hộp là bạn không thể đặt hai thứ không liên quan vào một hộp. Họ phải là một phần của cùng một tài liệu. Vì vậy, nếu tôi đã gõ lên một trang văn bản, nó sẽ có hộp riêng của nó. Nếu văn bản đã gõ của tôi có rất nhiều trang, tôi không thể vừa với tất cả trong một hộp, tôi chỉ cần tìm một hộp khác và tiếp tục đưa các trang vào đó, lặp lại cho đến khi tôi gửi tất cả các trang của mình. Tôi cũng đã viết ra những cái hộp mà tôi đã sử dụng cho tài liệu đó và thứ tự của các hộp để đọc nó theo thứ tự.
Tùy thuộc vào cách tôi sắp xếp các hộp, tôi chỉ có thể có đủ chỗ trong tệp kê khai của tôi cho một số hộp nhất định. Vì vậy, nếu tôi có một căn phòng lớn để lấp đầy, nhưng chỉ một số lượng nhỏ các hộp tôi phải sử dụng các hộp rất lớn để đạt được khả năng phòng.
Vì vậy, trong trường hợp đó tài liệu một trang của tôi sẽ vẫn chiếm một hộp duy nhất, không có gì khác chia sẻ nó.
Tình huống tương tự diễn ra giữa các giải pháp lưu trữ khác nhau. FAT32 chỉ có thể quản lý những gì được coi là một số lượng thấp của "hộp" trên ổ đĩa cứng lớn ngày nay, vì vậy nó kết thúc với rất lớn "hộp" để bù đắp cho điều này.
7
2018-01-20 14:50
Ngoài kích thước cụm, bạn cũng có thể có sự khác biệt do các điều kiện sau:
- Các tệp nén hoặc mã hóa có thể sử dụng hết dung lượng khác với kích thước tệp hợp lý.
- Các tệp được liên kết sẽ báo cáo n số lần liên kết gấp lần kích thước của tệp cho kích thước tệp hợp lý, nhưng không gian vật lý được sử dụng thường ít hơn.
6
2018-01-20 17:42