Làm gì để mở rộng tính năng của Wap trong hệ thống tập tin ext4 trong linux?


8

Tôi đã đọc về hệ thống tập tin ext4 mà nó hỗ trợ nén, mã hóa và một tính năng gọi là mức độ được sử dụng để tiết kiệm không gian đĩa. Phạm vi là gì và làm thế nào chúng có hiệu quả để tiết kiệm không gian đĩa?


"Phạm vi phân bổ không gian trên thiết bị lưu trữ theo khối và chỉ lưu trữ vị trí khối bắt đầu trong bảng inode. Điều này giúp tiết kiệm không gian trong bảng inode bằng cách không phải liệt kê tất cả các khối dữ liệu được sử dụng để lưu trữ dữ liệu từ tệp" . Xem thêm ext4 faqcác bài viết ext4
don_crissti

Câu trả lời:


5

Mức độ giảm số lượng siêu dữ liệu cần thiết để theo dõi các khối dữ liệu cho các tệp lớn. Thay vì lưu trữ một danh sách của mỗi khối riêng lẻ tạo nên tệp, ý tưởng là chỉ lưu trữ địa chỉ của khối đầu tiên và cuối cùng của mỗi phạm vi khối liên tục. Những dãy liên tục của khối dữ liệu (và các cặp số mà đại diện cho họ) được gọi là mức độ .

Địa chỉ của một số khối dữ liệu đầu tiên của tệp được lưu trữ trong nút, nhưng vì nút đó có kích thước cố định, nên điều này chỉ hoạt động đối với các tệp nhỏ. Trong ext2 hoặc ext3, các tệp lớn yêu cầu sử dụng các khối gián tiếp để lưu trữ phần còn lại của danh sách các địa chỉ khối không phù hợp với chính nút inode. Đó là, inode chứa địa chỉ của một khối mà chính nó chứa một danh sách các khối. Chúng được gọi là khối gián tiếp . Các khối bổ sung này thường không cần thiết khi sử dụng phạm vi, bởi vì việc lưu trữ một phạm vi cần một lượng không gian không đổi bất kể phạm vi khối lớn như thế nào.

Một tệp rất phân mảnh có thể vẫn cần các khối siêu dữ liệu bổ sung (mà ext4 gọi các nút phạm vi ) để lưu trữ một danh sách dài các phạm vi , nhưng thường vẫn ít hơn nhiều so với mức cần thiết.

Tuy nhiên, việc giảm kích thước siêu dữ liệu thường khá nhỏ so với kích thước của tệp. Động lực chính cho các phạm vi là về việc cải thiện hiệu suất (bằng cách giảm phân mảnh và có ít khối siêu dữ liệu hơn để đọc và viết) thay vì tiết kiệm dung lượng mỗi giây.


Không chính xác, tôi nghĩ. Thông thường bạn vẫn sẽ cần các khối gián tiếp, nhưng lượng siêu dữ liệu (inode và các khối gián tiếp cùng nhau) sẽ nhỏ hơn nhiều (nếu hệ thống tệp không bị phân mảnh quá nhiều).
Philippos

1
Inode vẫn có thể trỏ đến các khối bổ sung nếu có quá nhiều phạm vi phù hợp với chính inode. Tuy nhiên, chúng được gọi là các nút phạm vi, thay vì các khối gián tiếp. Xem ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Extent_Tree
sengi

1
@sengi - Mục đích của phạm vi chỉ để giảm số lượng các khối gián tiếp liên quan đến các tệp lớn? Làm gì để mở rộng phạm vi đề cập đến?
động lực

@Philippos - Khi đọc phản hồi của sengi, nó gợi ý rằng không còn khối gián tiếp? Đây có phải là sự hiểu biết của bạn?
động lực

0

Từ http://ext2read.blogspot.ch/2010/03/how-ext4-extents-work-earlier-ext2-and.html :

Trước đó Ext2 và Ext3 có giới hạn về kích thước của tệp. Nó đã sử dụng số khối 32 bit để truy cập các khối dữ liệu. Vì vậy, giới hạn kích thước tối đa của tệp là 2 ^ 32 * chặn kích thước (ví dụ: 4k **) = 16TB *. Ngoài ra, thời gian truy cập đối với các tệp lớn rất chậm vì phải trải qua rất nhiều lần gián tiếp. Hệ thống tệpExt4 có thể hỗ trợ các tệp rất lớn, nó có 48 bit để nhập một khối. Ngoài ra, nó sử dụng phạm vi để lưu trữ dữ liệu để thời gian truy cập nhanh hơn cho các tệp lớn.

Thông tin cho các khối dữ liệu được lưu trữ trong i_data của cấu trúc inode. Trong một hệ thống không có Phạm vi, 12 mục đầu tiên chứa số khối của 12 khối dữ liệu đầu tiên. Sau đó, nó chứa số khối cho các khối gián tiếp. Khối đó chứa mảng các số khối trỏ đến dữ liệu. Tương tự, có khối gián tiếp kép và khối gián tiếp gấp ba. Vì vậy, nếu chúng ta cần lấy dữ liệu từ một tệp rất lớn, chúng ta cần phải trải qua những điều đó.


4
Bạn nên ghi nguồn của bạn; trong trường hợp này ext2read.blogspot.fr/2010/03/ dường như ...
Stephen Kitt
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.