inodes, so sánh không gian tiêu thụ cho nhiều tệp nhỏ (xfs, btrfs, ext4)


9

Tôi có một phân vùng ext4 (LVM trên VM) với số lượng lớn các tệp nhỏ , mà tôi phải gia hạn sau mỗi 3-4 tháng.

Về số lượng không gian được sử dụng bởi các nút.

Có một trong các hệ thống tệp xfs, btrfs hoặc ext4 sử dụng ít không gian hơn không?

Nói cách khác, việc chuyển sang btrfs hoặc xfs sẽ khiến phân vùng lấp đầy với các nút chậm hơn sau đó với ext4?


Nếu bạn sử dụng ext4 và dự kiến ​​sẽ lưu trữ hầu hết các loại nhỏ, bạn nên tạo nó với mkfs.ext4 -t newskế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ện df -i(hoặc find | 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.
Matija Nalis

1
@MatijaNalis, -Tvới chữ hoa T. Tệp cấu hình cũng có một số lựa chọn hữu ích khác
ilkkachu

@ilkkachu đúng rồi, cảm ơn. Nó nên làmkfs.ext4 -T news
Matija Nalis

Làm thế nào nhỏ là các tập tin?
drudru

Câu trả lời:


6

Để bắt đầu với câu hỏi đầu tiên của bạn: có, một trong những hệ thống tệp này sử dụng ít không gian hơn. Ngay cả khi không có thêm thông tin chi tiết, chắc chắn tất cả họ đều sử dụng cùng một dung lượng, với điều kiện là họ có các cách triển khai khác nhau. Vì vậy, một người chắc chắn sẽ sử dụng ít không gian hơn tất cả những người khác.

Btrfs có phân bổ inode động, do đó không có sự lấp đầy như bạn có với các bảng inode cho ext4 (kích thước được đặt ở thời gian tạo hệ thống tệp ext4).

XFS là động theo cách tương tự, nhưng có giới hạn (tỷ lệ phần trăm của hệ thống tệp có thể được sử dụng cho inodes), do đó, việc bạn có điền vào trợ cấp inode hay không tùy thuộc vào tỷ lệ phần trăm cũng như số lượng tệp / kích thước tệp


Cảm ơn đã trả lời nhanh chóng! Có vẻ như XFS là sự lựa chọn an toàn nhất hiện nay. Phần trăm sử dụng inode này có thể được thay đổi linh hoạt không? và nếu không, có cách nào để dự đoán sẽ cần bao nhiêu không?
hủy bỏ

1
Bạn sẽ có thể làm điều đó vớixfs_growfs -m XX
Anthon

3

Có, và lưu ý rằng mọi thứ phụ thuộc vào nhu cầu của bạn:

Btrfs (phát âm là Bơ FS, FS tốt hơn hoặc B-Tree FS)

Xem xét rằng các btrfs sẽ có thể trải rộng trên nhiều ổ đĩa cứng, một điều rất tốt là nó có thể hỗ trợ không gian ổ đĩa nhiều hơn 16 lần so với ext4 . Kích thước phân vùng tối đa của hệ thống tệp btrfs là 16 exbibytes, cũng như kích thước tệp tối đa là 16 exbibytes.

Số lượng tệp tối đa: 2 ** 64

XFS

Các XFS là một hiệu suất cao 64-bit hệ thống nhật ký tập tin. XFS hỗ trợ kích thước hệ thống tệp tối đa 8 exbibytes cho hệ thống tệp 64 bit. Bây giờ, RHEL 7.0 sử dụng XFS làm hệ thống tệp mặc định, bao gồm hỗ trợ sử dụng XFS cho /bootphân vùng.

Số lượng tệp tối đa: 2 ** 64

EXT4

Các ext4 nổi tiếng vì mang những cải tiến tốc độ trên ext3. Ext4 có một số giới hạn. Kích thước tệp tối đa là 16 tebibytes (tương đương 17,6 terabyte). Khối lượng / phân vùng lớn nhất bạn có thể có với ext4 là 1 exbibyte. Giống như trong các hệ thống tệp hiện đại nhất, nó là một hệ thống tệp nhật ký có nghĩa là nó sẽ giữ một tạp chí về nơi các tệp chủ yếu nằm trên đĩa và về bất kỳ thay đổi nào khác xảy ra với đĩa. Bất kể tất cả các tính năng của nó, nó không hỗ trợ nén trong suốt, mã hóa trong suốt hoặc sao chép dữ liệu. Ảnh chụp nhanh được hỗ trợ về mặt kỹ thuật, nhưng tính năng này là thử nghiệm tốt nhất.

Số lượng tệp tối đa: 4 tỷ

XFS vs Btrfs

XFS không có bất kỳ RAID nào, trong khi Btrfs RAID vẫn chưa hoàn toàn ổn định và đang ở những ngày đầu. XFS ngày càng trưởng thành hơn Btrfs , nhưng chúng ta không thể phủ nhận rằng Btrfs mạnh mẽ và là một FileSystem phát triển tốt.

Hiện tại, XFS là lựa chọn của tôi - đặc biệt vì đó là FS mặc định trên RHEL 7 -, trừ khi tôi thực sự cần Btrfs.


1
Điều này có một số thông tin cơ bản tốt về các hệ thống tệp nói chung, nhưng tôi không thấy vấn đề cụ thể của các tệp nhỏ đang được đề cập ở đây.
ilkkachu

@ilkkachu "số lượng lớn tệp nhỏ" có nghĩa là gì? Đó là tất cả về các nút vì các tệp được tạo thông qua các nút và nút đó là cấu trúc dữ liệu được sử dụng để thể hiện một đối tượng hệ thống tệp. Vì vậy, tôi nghĩ rằng tôi đã giải thích tất cả các nhu cầu của tác giả, cộng với tôi đã đề cập về số lượng tệp tối đa.
FarazX

2

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 -isẽ 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 4096mộ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.ext4cũ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 smalltươ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.

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.