2010-09-01 19 views
20

Tôi cần tạo số lượng tệp rất cao không quá lớn (như 4kb, 8kb). Đó là không thể trên máy tính của tôi vì nó có tất cả các inodes lên đến 100% và tôi không thể tạo thêm file:Có bao nhiêu byte cho mỗi inode?

$ df -i /dev/sda5 
Filesystem   Inodes IUsed IFree IUse% Mounted on 
/dev/sda5   54362112 36381206 17980906 67% /scratch 

(Tôi bắt đầu xóa các tập tin, đó là lý do tại sao nó bây giờ 67%)

Các bytes- mỗi nút là 256 trên hệ thống tệp của tôi (ext4)

$ sudo tune2fs -l /dev/sda5 | grep Inode 
Inode count:    54362112 
Inodes per group:   8192 
Inode blocks per group: 512 
Inode size:    256 

Tôi tự hỏi liệu có thể đặt giá trị này rất thấp ngay cả dưới 128 (trong khi cải cách) hay không. Nếu có, tôi nên sử dụng giá trị nào? Thx

+2

'Kích thước inode' không giống như byte-in-inode. 'Kích thước inode' chỉ đơn giản là số lượng (số byte) dữ liệu mà mỗi inode có thể chứa, trong khi byte-mỗi-inode đề cập đến tỷ lệ inodes thành diskspace. Cả hai giá trị đều độc lập. –

Trả lời

24

Giá trị mặc định byte cho mỗi inode thường là 16384, đó là mặc định inode_ratio trong /etc/mke2fs.conf (nó đọc trước khi hệ thống tập tin tạo ra). Nếu bạn đang chạy ra khỏi inodes, bạn có thể thử ví dụ:

mkfs.ext4 -i 8192 /dev/mapper/main-var2 

Một tùy chọn khác có ảnh hưởng đến đây là -T, thường -T news đó tiếp tục giảm nó đến 4096.

Ngoài ra, bạn không thể thay đổi số lượng inode trong hệ thống tệp ext3 hoặc ext4 mà không cần tạo lại hoặc chỉnh sửa hex. Hệ thống tệp Reiser rất năng động nên bạn sẽ không bao giờ gặp vấn đề với chúng.

+4

Làm cách nào để xác định giá trị byte-mỗi-inode hiện tại cho một hệ thống tệp? Lệnh của bạn đã hoạt động, nhưng có một số giá trị trong đầu ra tune2fs cho thấy tỷ lệ không? –

+1

Tôi chỉ muốn nhận xét rằng bạn có thể xác minh/thay đổi giá trị mặc định trong '/ etc/mke2fs.conf' trên Red Hat và các dẫn xuất. –

-7

Tôi đã tìm thấy giải pháp cho vấn đề của tôi trên trang mke2fs người đàn ông:

-Tôi inode kích thước

Xác định kích thước của mỗi inode trong byte. mke2fs tạo ra các inode 256 byte theo mặc định. Trong hạt nhân sau 2.6.10 và một số hạt nhân của nhà cung cấp trước đó, có thể sử dụng các mã số lớn hơn 128 byte để lưu trữ các thuộc tính mở rộng để cải thiện hiệu suất. Giá trị kích thước inode phải là công suất lớn hơn hoặc bằng 128. Kích thước inode lớn hơn càng nhiều thì bảng inode sẽ tiêu thụ nhiều hơn và điều này làm giảm không gian có thể sử dụng trong hệ thống tệp và cũng có thể tác động tiêu cực đến hiệu suất. Mở rộng thuộc tính được lưu trữ trong inodes lớn không nhìn thấy được với hạt nhân cũ, và hệ thống tập tin như vậy sẽ không được mountable với hạt nhân 2.4 ở tất cả. Không thể thay đổi giá trị này sau khi hệ thống tệp được tạo.

Tối đa bạn có thể đặt được đặt theo kích thước khối của bạn.

sudo tune2fs -l /dev/sda5 | grep "Block size" 
Block size:    4096 

Hy vọng điều này có thể giúp ....

+6

Kích thước inode ('-I') là thứ khác với cài đặt byte-mỗi-inode (' -i'). Kích thước inode xác định kích thước của một inode đơn, inode lớn hơn có thể chứa nhiều con trỏ hơn để chặn, giảm nhu cầu về các khối gián tiếp với chi phí hoặc tăng mức sử dụng đĩa.Cài đặt byte-mỗi-in-in đặt một tỷ lệ sẽ được sử dụng để xác định số lượng inode tối đa. Không thể thay đổi giá trị nào trong hai giá trị này sau khi hệ thống tệp đã được tạo. – Tader

8

Bạn có thể tìm tỷ lệ inode gần đúng bằng cách chia kích thước không gian có sẵn cho số lượng inodes sẵn có. Ví dụ:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \ 
    /^Block count:/ { blocks = $2 } \ 
    /^Inode count:/ { inodes = $2 } \ 
    /^Block size:/ { block_size = $2 } \ 
    END { blocks_per_inode = blocks/inodes; \ 
      print "blocks per inode:\t", blocks_per_inode, \ 
       "\nbytes per inode:\t", blocks_per_inode * block_size }' 

blocks per inode: 3.99759 
bytes per inode:  16374.1 
+0

Nếu bạn gặp lỗi như "tune2fs: Số ma thuật xấu trong siêu khối trong khi cố gắng mở/dev/sda3" hãy thử chạy "blkid". Hệ thống tệp thực sự mà tôi cần sử dụng là "/ dev/mapper/myubuntu - vg-root". – jamshid