Làm thế nào nhiều thư mục tiêu thụ?


13

Làm thế nào nhiều thư mục trống mất?

Trong hệ thống tệp Windows và NTFS, nó nói '0 byte', điều này là không thể.

Bao nhiêu là thực sự chiếm một thư mục? Có phụ thuộc vào hệ thống tập tin hoặc hệ điều hành?


1
Về mặt kỹ thuật, cửa sổ Thuộc tính hiển thị cho bạn là nội dung của thư mục, nếu trống chiếm 0 byte trên bất kỳ đĩa nào. Câu hỏi của bạn đề cập đến không gian cấu trúc thư mục chiếm trên một hệ thống tập tin. Nó rõ ràng phụ thuộc vào hệ thống tập tin. Trên FAT32, điều duy nhất bạn cần lưu trữ là một số cờ (ẩn, lưu trữ) và tên và đường dẫn. Trong NTFS, bạn cũng cần lưu trữ quyền và một số thứ khác. Tất cả trong tất cả, không gian đó là gần không đáng kể.
Doktoro Reichard

Vì vậy, trên NTFS, một diractory trống chiếm bao nhiêu dung lượng? ví dụ: nếu tôi tạo 1 tỷ thư mục, thì đây là bao nhiêu dung lượng?
ShadowHero

Như tôi đã nói, phụ thuộc vào tên và đường dẫn thư mục. Giả sử bạn sử dụng tất cả 26 ký tự, với 1 tỷ tên duy nhất, bạn có thể có khoảng 7 tên thư mục có độ dài. Vì vậy, 7 Byte * 1.000.000.000 tương đương với khoảng 7 GB dung lượng. Đây là mức tối thiểu, tôi cho là vậy. Tôi nghĩ rằng tôi có khoảng 1 triệu thư mục trong tất cả các ổ đĩa của mình để giá trị đó thậm chí không đạt được trong thực tế. Đừng quên đây là một ước tính rất thô.
Doktoro Reichard

Thật tuyệt, tôi thấy ... quyền được lưu trữ như thế nào?
ShadowHero

1
@AthomSfere Hmm ... điều đó có nghĩa là các thư mục không thể lưu trữ quyền người dùng vô hạn, trừ khi có thể gán nhiều bản ghi MFT. Sẽ cố gắng tìm kiếm nó.
Doktoro Reichard

Câu trả lời:


16

Về mặt kỹ thuật, cửa sổ Thuộc tính hiển thị cho bạn là nội dung của thư mục, nếu trống chiếm 0 byte trên bất kỳ đĩa nào.

Câu hỏi của bạn đề cập đến không gian mà cấu trúc thư mục chiếm trên một hệ thống tập tin, điều này rõ ràng phụ thuộc vào nó. Trên FAT32, điều duy nhất bạn cần lưu trữ là một số cờ (ẩn, lưu trữ) và tên và đường dẫn. Trong NTFS, bạn cũng cần lưu trữ quyền và một số thứ khác. Tất cả trong tất cả, không gian đó là gần không đáng kể.

Không gian mà cấu trúc thư mục trống chiếm phụ thuộc vào tên và đường dẫn thư mục. Ví dụ, giả sử bạn đặt tất cả các thư mục trên một ổ đĩa gốc (giả sử C :) và sử dụng tất cả 26 ký tự chữ cái; với 1 tỷ tên duy nhất bạn có thể có log_26 (1.000.000.000) = khoảng 7 (6.3065) tên thư mục độ dài ký tự. Vì vậy, 7 Byte * 1.000.000.000 tương đương với khoảng 7 GB dung lượng.

Đây là mức tối thiểu chỉ dựa trên số lượng tên không gian phải thực hiện trên bất kỳ cấu trúc nào. Vì nó sẽ được hiển thị, các hệ thống tệp lưu trữ nhiều thông tin khác ngoài tên tệp trên cấu trúc tệp của nó.

Tôi nghĩ rằng tôi có khoảng 1 triệu thư mục và tệp trong tất cả các ổ đĩa của mình để giá trị đó thậm chí không đạt được trong thực tế. Đừng quên đây là một ước tính rất thô.


Các hệ thống tệp được sử dụng nhiều nhất tại thời điểm hiện tại có thể được coi (có thể được coi là FAT) (Bảng phân bổ tệp) và NTFS (Hệ thống tệp công nghệ mới). FAT như chúng ta biết nó đã được sử dụng kể từ năm 1996, khi Windows 95 được phát hành cùng với FAT32. Mặc dù được thay thế bằng các hệ thống tệp khác, linh hoạt hơn, chẳng hạn như NFTS (Windows), HFS + (OSX) hoặc ext3 (Linux), nó vẫn được sử dụng rộng rãi trong các thiết bị cầm tay hoặc trong thẻ nhớ hoặc ổ đĩa flash, vì nó được hỗ trợ tốt bởi hầu hết các hệ điều hành và trên hết, nó đơn giản.

Bây giờ cho những gì quan trọng. Các tệp và thư mục trong một phân vùng FAT, ngay cả khi chúng không có gì trong đó, có tên, vị trí, thuộc tính nhất định, vân vân, được lưu trữ trong một vùng được gọi là bảng thư mục .

Bảng thư mục là một tệp đặc biệt (nghĩa là nó bị ẩn khỏi việc sử dụng thường xuyên, như vậy chỉ có HĐH và một số ứng dụng nhất định có thể truy cập trực tiếp vào nó). Nó đại diện cho một thư mục (còn gọi là thư mục) và bất kỳ tệp hoặc thư mục nào được lưu trữ trong đó đều có mục 32 Byte trong bảng. Vì bảng thư mục là một tệp, sau đó nó chiếm một hoặc nhiều cụm (tức là các hộp có kích thước đặt trước trong một đĩa, trong đó chỉ có một tệp duy nhất (hoặc một phần của một) phù hợp).

Vì vậy, bất kỳ thư mục hoặc thư mục nào, trên một ổ đĩa hiện đại (> 512 MB), đều có ít nhất một chi phí là 4 KB, để lưu trữ bảng (nguồn) . Tuy nhiên, điều này có nghĩa là bạn có thể lưu trữ 128 tệp khác nhau (4 * 1024 B / 32 B = 128) trên cùng một thư mục và chi phí lưu trữ các bản ghi vẫn là 4KB như trước đây.

Lấy ví dụ về ví dụ đầu tiên, điều này có nghĩa là hàng tỷ thư mục sẽ có tổng phí là 32 GB, thay vì ước tính khoảng 7 GB mà tôi đã tính toán. 32 GB này không chỉ lưu trữ tên ngắn (8 ký tự ASCII), mà cả các thuộc tính, cờ, ngày truy cập, tạo và sửa đổi và các thuộc tính kế thừa khác.

Giả sử bạn đã đọc tất cả những điều này, có thể có một câu hỏi mà bạn có thể có: "Chà đây là tất cả tốt và tốt nhưng làm thế nào là những cái tên dài, chẳng hạn như Wabbajack hoặc thậm chí tên băm như e4d909c290d0fb1ca068ffaddf22cbd0 , được lưu trữ?"

Microsoft trong Windows 95 đã quyết định bổ sung tính năng đó để nâng cao trải nghiệm người dùng. Để tránh phá vỡ một hệ thống "gần tiêu chuẩn", họ đã sử dụng một cách giải quyết gọn gàng gọi là VFAT (Virtual FAT). Về cơ bản để phù hợp với tên tệp dài vào tệp, các bản ghi bổ sung đã được ghi trước bản ghi tệp thực tế (với một số thuộc tính đặc biệt mà các hệ thống trước đó không nhìn thấy). Hệ thống tên tệp dài cho phép độ dài tối đa 255 ký tự UTF-16 (Unicode) (nguồn) (nguồn) .

Nếu bạn thay đổi ví dụ đầu tiên sao cho mỗi thư mục có 9 ký tự, thì chi phí sẽ tăng gấp đôi từ 32 GB lên 64 GB, vì cần thêm một bản ghi để lưu tên dài.


Theo bài viết trên Wikipedia về NTFS, tất cả các quyền được lưu trữ trong Bảng tệp chính. Không gian có thể được nhìn thấy rõ ràng thông qua Disk Defragmenter, như được hiển thị ở đây .

Kích thước bản ghi MFT chiếm từ cả thư mục hoặc tệp, được mô tả ở đây :

Các bản ghi tệp và thư mục là 1 KB mỗi tệp và được lưu trữ trong MFT, các thuộc tính được ghi vào không gian được phân bổ trong MFT. Bên cạnh các thuộc tính tệp, mỗi bản ghi tệp chứa thông tin về vị trí của bản ghi tệp trong MFT.

Khi các thuộc tính của tệp có thể vừa với bản ghi tệp MFT cho tệp đó, chúng được gọi là thuộc tính thường trú. Các thuộc tính như tên tệp và dấu thời gian luôn luôn cư trú. Khi lượng thông tin cho một tệp không vừa trong bản ghi tệp MFT của nó, một số thuộc tính tệp trở thành không phản hồi . Thuộc tính không cư trú được phân bổ một hoặc nhiều cụm không gian đĩa . Một phần của thuộc tính không cư trú vẫn nằm trong MFT và trỏ đến các cụm bên ngoài. NTFS tạo thuộc tính Danh sách thuộc tính để mô tả vị trí của tất cả các bản ghi thuộc tính. Các loại thuộc tính tệp NTFS bảng liệt kê các thuộc tính tệp hiện được định nghĩa bởi NTFS.

Vì vậy, trong NTFS, các thư mục chiếm ít nhất 1 KB dung lượng, trừ khi chúng có danh sách quyền và đối số rất dài; tại thời điểm đó, bản ghi MFT chiếm một cụm bổ sung trong phân vùng, kích thước của nó phụ thuộc vào cách nó được định dạng, mặc dù đối với hơn 2GB Microsoft trong bài đăng đó khuyến nghị các cụm 4KB.


1
Tôi đã tìm thấy một số thông tin về độ dài 1024 Byte mà tôi đã đề cập trước đó, c-ad.bnl.gov/kinyip/windows/MFT.html Đây là một bài đọc rất hay và có thể có lợi cho câu trả lời của bạn nếu bạn quan tâm mở rộng.
Austin T Pháp

Tôi muốn mở rộng (để làm cho câu trả lời đầy đủ hơn, mà không quá kỹ thuật này ...) mặc dù tôi sẽ phải để nó cho ngày mai. Dù sao cũng cảm ơn nguồn đó.
Doktoro Reichard

Hiệu chỉnh kỹ thuật: không có giới hạn đường dẫn 255. Thay vào đó, có giới hạn MAX_PATH là 260 ký tự cho các đường dẫn tiêu chuẩn và sau đó có đường dẫn có độ dài mở rộng là 32.767 ký tự (vâng, hơn 32 nghìn ký tự) cho các đường dẫn unicode thực sự (sử dụng chỉ báo `\?`, Hoặc là đường dẫn có độ dài mở rộng đơn giản, hoặc là đường dẫn UNC). Xem docs.microsoft.com/en-us/windows/win32/fileio/ khuyên để biết thêm chi tiết về điều này.
Mike 'Pomax' Kamermans

3

Đối với một ví dụ trong thế giới thực, tôi chỉ ghi lại không gian trống của mình, sau đó tôi tạo một cấu trúc thư mục lớn và trừ đi phần mới miễn phí để tìm xem có bao nhiêu dung lượng được sử dụng. Tôi đã tạo các thư mục 0-6 cho mỗi ngày trong tuần, sau đó bên trong các thư mục 0-23 cho các giờ trong ngày, sau đó 0-59 cho các phút trong giờ. Tổng cộng có 10.080 thư mục. Việc sử dụng đĩa của tôi đã thay đổi bởi 6,926,336 byte. Điều đó làm việc ra tới 687 byte mỗi thư mục. Trong trường hợp bạn quan tâm, điều đó cũng có hiệu quả tới 0,0006% của ổ 1TB (nếu bạn tính 1TB là 1024 ^ 4).


3
Bạn có thể thêm hệ thống tập tin vào câu trả lời của bạn? Tên thư mục đều ngắn?
fixer1234

0

Trên Windows 10 tôi đã tạo 1.000.000 thư mục trống và theo getsizechức năng của python , nó chiếm tới 200540160 byte dung lượng. Đó là trung bình 200,54016 byte mỗi thư mục.

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.