CC: hai số chỉ thế kỉ,
3.1.2. Sơ bộ kiến trúc nội tại của hệ thống tậptin
Trên đĩa từ, hệ thống tập tin đ−ợc coi là dãy tuần tự các khối lôgic mỗi khối chứa hoặc 512B hoặc 1024B hoặc bội của 512B là cố định trong một hệ thống tập tin. Trong hệ thống tập tin, các khối dữ liệu đ−ợc địa chỉ hóa bằng cách đánh chỉ số liên tiếp, mỗi địa chỉ đ−ợc chứa trong 4 byte (32 bit).
Cấu trúc nội tại của hệ thống tập tin bao gồm 4 thành phần kế tiếp nhau: Boot block (dùng để khởi động hệ thống), Siêu khối (Super block), Danh sách inode và Vùng dữ liệu.
D−ới đây, chúng ta xem xét sơ l−ợc nội dung các thành phần cấu trúc nội tại một hệ thống tập tin.
Siêu khối:
Siêu khối chứa nhiều thông tin liên quan đến trạng thái của hệ thống tập tin. Trong siêu khối có các tr−ờng sau đây:
Kích th−ớc của danh sách inode (khái niệm inode sẽ đ−ợc giải thích trong mục sau): định kích cỡ vùng không gian trên Hệ thống tập tin quản lý các inode.
Kích th−ớc của hệ thống tập tin.
Hai kích th−ớc trên đây tính theo đơn vị dung l−ợng bộ nhớ ngoài vật lý, Một danh sách chỉ số các khối rỗi (th−ờng trực trên siêu khối) trong hệ thống tập tin.
Chỉ số các khối rỗi th−ờng trực trên siêu khối đ−ợc dùng để đáp ứng nhu cầu phân phối mới. Chú ý rằng, danh sách chỉ số các khối rỗi có trên siêu khối chỉ là một bộ phận của tập tất cả các khối rỗi có trên hệ thống tập tin.
Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi.
Chỉ số khối rỗi tiếp theo dùng để hỗ trợ việc tìm kiếm tiếp các khối rỗi: bắt đầu tìm từ khối có chỉ số này trở đi. Điều đó có nghĩa là mọi khối có chỉ số không lớn hơn chỉ số này hoặc có trong danh sách các khối rỗi th−ờng trực hoặc đã đ−ợc cấp phát cho một tập tin nào đó.
Nhiều thao tác tạo tập tin mới, xoá tập tin, thay đổi nội dung tập tin v.v. cập nhật các thông tin này.
Một danh sách các inode rỗi (th−ờng trực trên siêu khối) trong hệ thống tập tin.
Danh sách này chứa chỉ số các inode rỗi đ−ợc dùng để phân phối ngay đ−ợc cho một tập tin mới đ−ợc khởi tạo. Thông th−ờng, danh sách này chỉ chứa một bộ phận các inode rỗi trên hệ thống tập tin.
Chỉ số inode rỗi tiếp theo trong danh sách các inode rỗi.
Chỉ số inode rỗi tiếp theo định vị việc tìm kiếm tiếp thêm inode rỗi: bắt đầu tìm từ inode có chỉ số này trở đi. Điều đó có nghĩa là mọi inode có chỉ số không lớn hơn chỉ số này hoặc có trong danh sách các inode rỗi th−ờng trực hoặc đã đ−ợc t−ơng ứng với một tập tin nào đó.
Hai tham số trên đây tạo thành cặp xác định đ−ợc danh sách các inode rỗi trên hệ thống tập tin các thao tác tạo tập tin mới, xoá tập tin cập nhật thông tin này.
Các tr−ờng khóa (lock) danh sách các khối rỗi và danh sách inode rỗi: Trong một số tr−ờng hợp, chẳng hạn khi hệ thống đang làm việc thực sự với đĩa từ để cập nhật các danh sách này, hệ thống không cho phép cập nhật tới hai danh sách nói trên.
Cờ chỉ dẫn về việc siêu khối đã đ−ợc biến đổi: Định kỳ thời gian siêu khối ở bộ nhớ trong đ−ợc cập nhật lại vào siêu khối ở đĩa từ và vì vậy cần có thông tin về việc siêu khối ở bộ nhớ trong khác với nội dung ở bộ nhớ ngoài: nếu hai bản không giống nhau thì cần phải biến đổi để chúng đ−ợc đồng nhất.
Cờ chỉ dẫn rằng hệ thống tập tin chỉ có thể đọc (cấm ghi): Trong một số tr−ờng hợp, hệ thống đang cập nhật thông tin từ bộ nhớ ngoài thì chỉ cho phép đọc đối với hệ thống tập tin,
Số l−ợng tổng cộng các khối rỗi trong hệ thống tập tin, Số l−ợng tổng cộng các inode rỗi trong hệ thống tập tin, Thông tin về thiết bị,
Kích th−ớc khối (đơn vị phân phối dữ liệu) của hệ thống tập tin. Hiện tại kích th−ớc phổ biến của khối là 1KB.
Trong thời gian máy hoạt động, theo từng giai đoạn, nhân sẽ đ−a siêu khối lên đĩa nếu nó đã đ−ợc biến đổi để phù hợp với dữ liệu trên hệ thống tập tin.
Một trong khái niệm cốt lõi xuất hiện trong hệ thống tập tin đó là inode. Các đối t−ợng liên quan đến khái niệm này sẽ đ−ợc trình bày trong các mục tiếp theo.
Inode:
Mỗi khi một quá trình khởi tạo một tập tin mới, nhân hệ thống sẽ gán cho nó một inode ch−a sử dụng. Để hiểu rõ hơn về inode, chúng ta xem xét sơ l−ợc mối quan hệ liên quan giữa tập tin dữ liệu và việc l−u trữ trên vật dẫn ngoài đối với Linux.
Nội dung của tập tin đ−ợc chứa trong vùng dữ liệu của hệ thống tập tin và đ−ợc phân chia các khối dữ liệu (nội dung tập tin) và hình ảnh phân bố nội dung tập tin có trong một inode t−ơng ứng. Liên kết đến tập hợp các khối dữ liệu này là một inode, chỉ thông qua inode mới có thể làm việc với dữ liệu tại các khối dữ liệu: Inode chứa dựng thông tin về tập hợp các khối dữ liệu nội dung tập tin. Có thể quan niệm rằng, tập hợp bao gồm inode và tập các khối dữ liệu nh− vậy là một tập tin vật lý: inode có thông tin
về tập tin vật lý, trong đó có địa chỉ các khối dữ liệu chứa nội dung của tập tin vật lý. Thuật ngữ inode là sự kết hợp của hai từ index với node và đ−ợc sử dụng phổ dụng trong Linux.
Các inode đ−ợc phân biệt nhau theo chỉ số của inode: đó chính là số thứ tự của inode trong danh sách inode trên hệ thống tập tin. Hệ thống dùng 2 bytes để l−u trữ chỉ số của inode. Với cách l−u trữ chỉ số nh− thế, không có nhiều hơn 65535 inode trong một hệ thống tập tin.
Nh− vậy, một tập tin chỉ có một inode song một tập tin lại có một hoặc một số tên tập tin. Ng−ời dùng tác động thông qua tên tập tin và tên tập tin lại tham chiếu đến inode (hai nội dung về tên tập tin và chỉ số inode là hai tr−ờng của một phần tử của một th− mục). Một inode có thể t−ơng ứng với một hoặc nhiều tên tập tin, mỗi t−ơng ứng nh− vậy đ−ợc gọi là một liên kết. Các inode đ−ợc l−u trữ trên hệ thống tập tin tại vùng danh sách các inode.
Trong quá trình làm việc, Linux dùng một vùng bộ nhớ, đ−ợc gọi là bảng inode (trong một số tr−ờng hợp, nó còn đ−ợc gọi t−ờng minh là bảng sao in-core inode) với chức năng t−ơng ứng với vùng danh sách các inode có trong hệ thống tập tin, hỗ trợ cho quá trình truy nhập dữ liệu trong hệ thống tập tin. Nội dung của một in-core inode không chỉ chứa các thông tin trong inode t−ơng ứng mà còn đ−ợc bổ sung các thông tin mới giúp cho quá trình xử lý inode.
Chúng ta xem xét cấu trúc nội tại của một inode để thấy đ−ợc sự trình bày nội tại của một tập tin. Inode bao gồm các tr−ờng thông tin sau đây:
Kiểu tập tin. Trong Linux phân loại các kiểu tập tin: tập tin thông th−ờng (regular), th− mục, đặc tả kí tự, đặc tả khối và ống dẫn FIFO (pipes). Linux quy định tr−ờng kiểu tập tin có giá trị 0 t−ơng ứng đó là inode ch−a đ−ợc sử dụng.
Quyền truy nhập tập tin. Trong Linux, tập tin là một tài nguyên chung của hệ thống vì vậy quyền truy nhập tập tin đ−ợc đặc biệt quan tâm để tránh những tr−ờng hợp truy nhập không hợp lệ. Đối với một inode, có 3 mức quyền truy nhập liên quan đến các đối t−ợng:
mức chủ nhân của tập tin (đối t−ợng này đ−ợc ký hiệu là u: từ chữ user),
mức nhóm ng−ời dùng của chủ nhân của tập tin (đối t−ợng này đ−ợc ký hiệu là g: từ chữ group),
mức ng−ời dùng khác (đối t−ợng này đ−ợc ký hiệu là a: từ chữ all). Quyền truy nhập là đọc, ghi, thực hiện hoặc một tổ hợp nào đó từ nhóm gồm 3 quyền trên. Chú ý rằng, quyền thực hiện đối với một th− mục nào đó t−ơng ứng với việc cho phép tìm một tên tập tin nào đó có trong th− mục đó.
Số l−ợng liên kết đối với inode: Đây chính là số l−ợng các tên tập tin trên các th− mục đ−ợc liên kết với inode này,
Định danh chủ nhân của inode,
Định danh nhóm chủ nhân: xác định tên nhóm ng−ời dùng mà chủ tập tin là một thành viên của nhóm này,
Độ dài của tập tin tính theo byte, Thời gian truy nhập tập tin:
thời gian tập tin đ−ợc truy nhập muộn nhất, thời gian tập tin đ−ợc khởi tạo,
• Bảng chứa các địa chỉ khối nhớ chứa nội dung tập tin. Bảng này chứa 13 phần tử địa chỉ, trong đó có 10 phần tử trực tiếp, 1 phần tử gián tiếp bậc 1, 1 phần tử gián tiếp bậc 2 và một phần tử gián tiếp bậc 3.
Nội dung của tập tin thay đổi khi có thao tác ghi lên nó; nội dung của một inode thay đổi khi nội dung của tập tin thay đổi hoặc thay đổi chủ hoặc thay đổi quyền hoặc thay đổi số liên kết.
Ví dụ về nội dung một inode nh− sau:
type regular perms rwxr-xr-x links 2 owner 41CT group 41CNTT size 5703 bytes accessed Sep 14 1999 7:30 AM modified Sep 10 1999 1:30 PM inode Aug 1 1995 10:15 AM Các phần tử địa chỉ dữ liệu
Bản sao in-core inode còn bổ sung thêm tr−ờng trạng thái của in-core inode.
• Tr−ờng trạng thái của in-core inode có các thông tin sau: inode đã bị khoá,
một quá trình đang chờ đợi khi inode tháo khóa,
in-core inode khác với inode do sự thay đổi dữ liệu trong inode, in-core inode khác với inode do sự thay đổi dữ liệu trong tập tin, số l−ợng các tên tập tin nối với tập tin đang đ−ợc mở,
số hiệu thiết bị lôgic của hệ thống tập tin chứa tập tin nói trên chỉ số inode: dùng để liên kết với inode trên đĩa,
các móc nối tới các in-core inode khác. Trong bộ nhớ trong, các in- core inode đ−ợc liên kết theo một hàng băm và một danh sách tự do. Trong danh sách hàng băm các in-core inode hòa hợp theo số hiệu thiết bị lôgic và số hiệu inode.
Trong quá trình hệ thống làm việc, nảy sinh khái niệm inode tích cực nếu nh− có một quá trình đang làm việc với inode đó (nh− mở tập tin).
Một inode thuộc vào danh sách các inode rỗi khi không có tập tin vật lý nào t−ơng ứng với inode đó.