Sự khác biệt giữa kích thước inode của canh là gì và byte Byte trên mỗi inode


18

Dưới đây thông tin được lấy từ trang man, tôi muốn biết sự khác biệt giữa byte-per-inode và Inode-size?

-i bytes-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, càng ít các nút sẽ được tạo. Giá trị này thường không nên nhỏ hơn kích thước khối của hệ thống tệp, do đó sẽ tạo ra quá nhiều nút in. Đã cảnh báo rằng không thể mở rộng số lượng nút trên hệ thống tệp sau khi được tạo, vì vậy hãy cẩn thận khi quyết định chính xác giá trị cho tham số này.

-I inode-size

Chỉ định kích thước của mỗi inode theo byte.mke2fs tạo các inode 256 byte theo mặc định. Trong các 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 nút 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 có công suất lớn hơn 2 hoặc bằng 128. - kích thước càng nhiều không gian mà bảng inode sẽ tiêu tố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ể ảnh hưởng tiêu cực đến hiệu suất. Các thuộc tính mở rộng được lưu trữ trong các nút lớn không thể hiển thị với các nhân cũ hơn và các hệ thống tệp như vậy sẽ không thể gắn kết với 2,4 nhân at all. Không thể thay đổi giá trị này sau khi hệ thống tập tin được tạo.

Câu trả lời:


13

Vâng, đầu tiên, một inode là gì? Trong thế giới Unix, inode là một loại mục nhập tệp. Tên tệp trong thư mục chỉ là nhãn (liên kết!) Đến nút. Một nút có thể được tham chiếu ở nhiều vị trí (liên kết cứng!).

-i byte-per-inode (còn gọi là inode_ratio)

Vì một số lý do không xác định, tham số này đôi khi được ghi lại dưới dạng byte-per-inode và đôi khi là inode_ratio . Theo tài liệu, đây là tỷ lệ byte / inode . Hầu hết mọi người sẽ hiểu rõ hơn khi được nêu là một trong hai (xin lỗi tiếng Anh của tôi):

  • 1 inode cho mỗi byte lưu trữ X (trong đó X là byte-per-inode).
  • tập tin trung bình thấp nhất bạn có thể phù hợp.

Công thức (lấy từ mke2fs mã nguồn ):

inode_count = (blocks_count * blocksize) / inode_ratio

Hoặc thậm chí đơn giản hóa (giả sử "kích thước phân vùng" gần tương đương với blocks_count * blocksize, tôi chưa kiểm tra phân bổ):

inode_count = (partition_size_in_bytes) / inode_ratio

Lưu ý 1: Ngay cả khi bạn cung cấp số lượng mkfs -N ...nút cố định tại thời điểm tạo FS ( ), giá trị được chuyển đổi thành tỷ lệ, do đó bạn có thể điều chỉnh nhiều nút hơn khi bạn mở rộng kích thước của hệ thống tệp.

Lưu ý 2: Nếu bạn điều chỉnh tỷ lệ này, hãy đảm bảo phân bổ inode nhiều hơn đáng kể so với những gì bạn dự định sử dụng ... bạn thực sự không muốn định dạng lại hệ thống tệp của mình.

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

Đây là số byte mà hệ thống tập tin sẽ phân bổ / dự trữ cho mỗi inode mà hệ thống tập tin có thể có. Không gian được sử dụng để lưu trữ các thuộc tính của nút (đọc phần Giới thiệu đến Nút ). Trong Ext3, kích thước mặc định là 128. Trong Ext4, kích thước mặc định là 256 (để lưu trữ extra_isizevà cung cấp không gian cho các thuộc tính mở rộng nội tuyến). đọc Linux: Tại sao thay đổi kích thước inode?

Lưu ý: X byte của disjkspace được phân bổ cho mỗi inode được phân bổ, cho dù là miễn phí hay được sử dụng, trong đó X = inode-size.


5

byte-per-inode xác định có bao nhiêu nút được tạo cho hệ thống tệp đó; kích thước inode xác định mức độ lớn của mỗi inode đó.

Bạn cần rất nhiều nút nếu bạn có ý định đặt nhiều tệp nhỏ (& / hoặc nhiều thư mục) vào tệp.

AFAIK, bạn thực sự chỉ cần các nút lớn hơn kích thước mặc định 256 byte nếu bạn muốn lưu trữ các thuộc tính mở rộng cho các tệp của mình. psusi nói trong các ý kiến ​​đó là không chính xác.


4
Trên thực tế các thuộc tính mở rộng được lưu trữ trong khối riêng của chúng chứ không phải là nút, vì vậy bạn không cần một nút lớn hơn cho chúng. Có một số bản vá nổi xung quanh danh sách gửi thư gần đây để cuối cùng thêm khả năng lưu trữ các thuộc tính mở rộng trong inode nếu chúng đủ nhỏ để phù hợp, nhưng nếu chúng đã chạm vào đường chính, thì nó đã rất gần đây.
psusi

1

Sơ đồ hệ thống tập tin cực kỳ thô:

|_|__inodes__|_______________________DATA_________________________________|
  • inode-ratio / byte-per-inode = lượng inode cho khu vực DATA
  • inode-size = kích thước của mỗi inode trong khu vực inode

0

Tôi thực sự thích câu trả lời của sjas, nó mang lại bản chất của sự khác biệt.

Đây chỉ là bản mở rộng của riêng tôi (vì tôi không thể nhận xét hoặc bỏ phiếu, chỉ bắt đầu với stackexchange này) và tôi muốn một câu trả lời cho chính mình được nêu một cách cân bằng theo thuật ngữ phi kỹ thuật có thể hiểu được cho người dùng cần đưa ra quyết định trong khối lượng dữ liệu thiết lập nhưng không nhất thiết phải biết tất cả các chi tiết đằng sau thực hiện.

Personas / Đối tượng: - khối lượng dữ liệu trong thiết bị lưu trữ - tệp trong ổ đĩa - thiết bị lưu trữ, chúng được định dạng và cung cấp các khối byte và địa chỉ của chúng - vị trí của tệp trong bộ lưu trữ

Hành động: tạo / xóa / đổi tên tệp và thư mục của hệ điều hành trong bộ lưu trữ, đọc / ghi / di chuyển tệp, thay đổi quyền, v.v.

Tệp có kích thước của N byte cần được tạo trong "khối" (khối). Mặc dù về mặt lý thuyết, người ta có thể nghĩ rằng các tệp có thể được quản lý theo chuỗi các byte đơn (về mặt logic chúng có thể), tất cả những gì chúng ta cần để quản lý các tệp trong không gian sẽ là một chỉ mục được chỉ định cho một số thuộc tính tệp (tên, v.v.) và nơi mỗi tệp bắt đầu việc lưu trữ. Tuy nhiên do cách thức phần cứng được thiết kế với "bus" và "khối" và các cân nhắc về hiệu suất, các "khối" này có kích thước cụ thể và bội số của kích thước khối của phương tiện (ví dụ 512 byte, 4096 byte) và được quản lý bởi lớp inodes cho lớp kế tiếp biết về vị trí tệp và cách các khối được xâu chuỗi lại với nhau khi chúng cần được tìm thấy, được tải vào bộ nhớ, v.v.

Nếu một người có một cuộn giấy lớn (khối lượng) và phải thiết kế một kho lưu trữ thông tin cho các tài liệu được tạo từ các trang (gồm các ký tự hoặc bit thông tin) để lưu trữ nhiều tài liệu cần thiết là một chỉ mục (để tìm tài liệu), thì không gian lưu trữ cho các trang (với một số vị trí đơn giản của các trang). Trong cơ chế đối chiếu Unix (inodes) và thực tế cắt thành các trang. kích thước inode là kích thước mục nhập chỉ mục (nhiều hơn hoặc ít hơn) byte-per-inode là kích thước trang

Tác dụng của việc thay đổi hai cài đặt trong câu hỏi:

changin inode-size - thường không cần thay đổi, hãy gắn với mặc định (theo liên kết được đăng trong câu trả lời trước cho một cuộc thảo luận)

byte-per-inode - ảnh hưởng đến số lượng tệp tối đa mà người ta có thể tạo trong ổ đĩa (có thể là hiệu suất và "sự lãng phí" của các byte không được sử dụng)

Quay trở lại tương tự cuộn giấy: Hãy tưởng tượng bạn phải viết và lưu trữ một tài liệu có kích thước cụ thể (một tệp) trong một hệ thống như vậy (hoặc nhiều tài liệu có kích thước khác nhau) - nếu kích thước trang, được trình bày trong "hệ thống ghi và lưu trữ "Định nghĩa và không linh hoạt, là cùng một tài liệu có thể yêu cầu nhiều trang, nếu kích thước trang" hệ thống "rất lớn và kích thước tài liệu nhỏ thì rất nhiều giấy có thể bị lãng phí khi có khoảng trống và lắp các tệp nhỏ trong một trang. Nếu kích thước trang lớn - có ít trang cần sử dụng hơn cho tài liệu nhưng có thể có rất nhiều "khoảng trống bị lãng phí" trong trang cuối được sử dụng. Vì vậy, tất cả phụ thuộc ... vào kích thước của các tệp sẽ được sử dụng và số lượng. Việc xem xét khác là tốc độ tìm và đưa tài liệu của nhiều trang.

Hy vọng nó có ý nghĩa (nó làm cho tôi) và xin vui lòng bình luận nếu tôi đã lạm dụng nghiêm trọng bất kỳ phần nào của thiết kế ext hoặc tùy chọn mkfs.

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.