2012-06-17 34 views
8

Tôi đang lập kế hoạch triển khai hệ thống tệp FUSE bằng API cấp thấp và hiện đang cố gắng hiểu cấu trúc fuse_entry_param.Số thế hệ inode là gì?

Tôi tự hỏi điều gì thực sự có nghĩa là unsigned long fuse_entry_param::generation. Documentation says chỉ cần ino/generation cặp duy nhất cho tuổi thọ của hệ thống tệp, nhưng không đi vào chi tiết nào.

Ngữ nghĩa của thế hệ inode là gì và chúng được sử dụng như thế nào? Ví dụ, tôi có thể chỉ xem xét generation như một bit bổ sung của ino (giống như một số loại không gian tên) và sử dụng chúng một cách tự do để ánh xạ giá trị độc đáo suốt đời 128-bit (2*sizeof(unsigned long) trên x86_64) cho inodes không? Không. Hoặc các thế hệ có nghĩa là chỉ tăng dần theo tuần tự? Điều gì sẽ xảy ra khi có số inode va chạm, nhưng số thế hệ của chúng khác nhau?

Trả lời

11

Trường 'thế hệ' là quan trọng nếu bộ tạo số inode của bạn có thể tạo ra các số inode khác nhau tại một thời điểm khác nhau cho cùng một đối tượng. Điều này là không phổ biến đối với các hệ thống tệp trên đĩa, nhưng nó có thể xảy ra đối với các hệ thống tệp mạng (như NFS, xem 1).

Nó được đề cập trong 1 rằng một máy chủ có thể sử dụng một bộ xử lý tệp (/ số lượng) inode khác nhau/(nfs) sau khi khởi động lại. Nếu điều đó xảy ra, có thể là các số inode mới ánh xạ tới các đối tượng theo một cách khác, sau đó các số inode được đưa ra trước khi máy chủ khởi động lại. Một khách hàng có thể sử dụng một số thế hệ khác cho tập hợp inode trước khi khởi động lại và cho tập hợp các inode sau khởi động lại để làm rõ ý nghĩa của inode.

Nếu hệ thống tệp của bạn có sơ đồ thế hệ tĩnh cho inode (trong đó số inode luôn trỏ đến cùng một đối tượng), không cần sử dụng số thế hệ và nó có thể được sử dụng để mở rộng số inode.

Các vấn đề liên quan