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?
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?
Câu trả lời:
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.
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 đó.