Tôi cho rằng vấn đề bạn gặp phải không phải là phân vùng chứa đầy các nút trên mỗi se mà là hết số lượng nút trong hệ thống tệp. ext4 bảo lưu các nút tĩnh khi hệ thống tệp được tạo, nhưng bạn có thể đặt số với các tùy chọn thànhmkfs.ext4
:
-i byte-per-inode
Chỉ định tỷ lệ byte / inode. mke2fs tạo ra một nút cho mọi byte không gian trên mỗi byte trên đĩa. Tỷ lệ byte trên mỗi inode càng lớn, số lượng inode sẽ được tạo ra càng ít.
-N số lượng inode
Ghi đè tính toán mặc định của số lượng các nút nên được dành riêng cho hệ thống tệp (dựa trên số lượng khối và tỷ lệ byte trên mỗi nút). Điều này cho phép người dùng chỉ định trực tiếp số lượng nút mong muốn.
Hướng dẫn sử dụng tuyên bố rõ ràng rằng các byte trên tỷ lệ inode không thể thay đổi sau khi FS được tạo, nhưng tổng số sẽ chia tỷ lệ để đáp ứng tỷ lệ nếu FS được thay đổi kích thước.
Bạn cũng có thể đặt kích thước của mỗi nút . Mặc định là 256 byte trên các hệ thống tệp "nhất", nhưng có thể giảm xuống còn 128 (mặc định cho các hệ thống tệp "nhỏ"). Không gian bổ sung được sử dụng để lưu trữ các thuộc tính mở rộng (ví dụ: nhãn Selinux), vì vậy nếu bạn không cần những thuộc tính đó, sẽ an toàn để giảm kích thước xuống mức tối thiểu.
-I inode-size
Chỉ định kích thước của mỗi inode theo byte. Giá trị kích thước inode phải có công suất bằng 2 lớn hơn hoặc bằng 128.
df -i
sẽ hiển thị số lượng các nút được phân bổ và sử dụng. Với các tùy chọn mặc định, một phân vùng 30 GB mà tôi đã xem có một nút cho mỗi 16 kB, nhưng nếu các tệp của bạn rất nhỏ, bạn có thể đặt -i 4096
một nút cho mỗi khối dữ liệu trên hệ thống.
Nếu các tệp của bạn nhỏ hơn 4096, bạn cũng có thể muốn giảm kích thước khối hệ thống tệp, vì tất cả các tệp thông thường sẽ yêu cầu một khối dữ liệu đầy đủ. (Đó là, trên ext4. Tôi không biết các hệ thống tệp hiện tại khác có đóng gói các tệp nhỏ hay không.)
-b block-size
Chỉ định kích thước của các khối theo byte. Các giá trị kích thước khối hợp lệ là 1024, 2048 và 4096 byte cho mỗi khối. Nếu được bỏ qua, kích thước khối được xác định theo phương pháp heuristic bởi kích thước hệ thống tệp và mức sử dụng dự kiến của hệ thống tệp (xem tùy chọn -T).
mkfs.ext4
cũng có -T <type>
tùy chọn có thể được sử dụng như một cách viết tắt cho một số hoặc tất cả những thứ này. Các cài đặt nằm trong /etc/mke2fs.conf
, trên Debian của tôi, ví dụ như mkfs.ext4 -T small
tương đương với
mkfs.ext4 -b 1024 -I 128 -i 4096
Đây có thể không phải là một tập hợp tùy chọn tồi cho nhiều tệp nhỏ (và không có xattrs.)
Nếu các tệp của bạn thậm chí nhỏ hơn một kB, một hệ thống tệp có thể không phải là cách tốt nhất để lưu dữ liệu, nhưng có lẽ nên xem xét một cái gì đó như cơ sở dữ liệu hoặc hệ thống cụ thể của ứng dụng.
mkfs.ext4 -t news
kết quả tốt nhất. Ngoài ra, tôi khuyên bạn nên thử nghiệm - ví dụ: tạo (trên lvm hoặc thiết bị loopback) lần lượt từng tệp và bắt đầu sao chép các tệp thực của bạn vào đó cho đến khi đầy. Khi nó đầy, hãy thực hiệndf -i
(hoặcfind | wc -l
) để tìm cái nào được quản lý để lưu trữ hầu hết các tệp của bạn - theo cách đó bạn sẽ biết chắc chắn.