Hệ thống quản lý File
I. Nguyên lý quản lý tập tin chung của hệ điều hành
1. Hệ thống quản lý tập tin
Các tập tin được quản lý bởi hệ điều hành với cơ chế gọi là hệ thống quản lý tập tin.
Bao gồm : cách hiển thị, các yếu tố cấu thành tập tin, cách đặt tên, cách truy xuất, cách
sử dụng và bảo vệ tập tin, các thao tác trên tập tin. Cách tổ chức thư mục, các đặc tính
và các thao tác trên thư mục.
a) File (tập tin)
Tập tin là đơn vị lưu trữ thông tin của bộ nhớ ngoài. Thông tin trên tập tin là vững
bền không bị ảnh hưởng bởi các xử lý tạo hay kết thúc các tiến trình, chỉ mất đi khi
user thật sự muốn xóa. Tập tin được quản lý bởi hệ điều hành.
- Tên tập tin
Tập tin là một cơ chế trừu tượng và để quản lý mỗi đối tượng phải có một tên. Khi tiến
trình tạo một tập tin, nó sẽ đặt một tên, khi tiến trình kết thúc tập tin vẫn tồn tại và có
thể được truy xuất bởi các tiến trình khác với tên tập tin đó.
Cách đặt tên tập tin của mỗi hệ điều hành là khác nhau, đa số các hệ điều hành cho
phép sử dụng 8 chữ cái để đặt tên tập tin như ctdl, caycb, tamhghau v.v…, thường
thường thì các ký tự số và ký tự đặc biệt cũng được sử dụng như baitap2…,
Hệ thống tập tin có thể có hay không phân biệt chữ thường và chữ hoa. Ví dụ : UNIX
phân biệt chữ thường và hoa còn MS-DOS thì không phân biệt.
Nhiều hệ thống tập tin hỗ trợ tên tập tin gồm 2 phần được phân cách bởi dấu ‘.’ mà
phần sau được gọi là phần mở rộng. Ví dụ : vidu.txt. Trong MS-DOS tên tập tin có từ 1
đến 8 ký tư, phần mở rộng có từ 1 đến 3 ký tự. Trong UNIX có thể có nhiều phân cách
như prog.c.Z. Một số kiểu mở rộng thông thường là : .bak, .bas, .bin, .c, .dat, .doc,
.ftn, .hlp, .lib, .obj, .pas, .tex, .txt.
- Cấu trúc: 3 loại
• Dãy tuần tự các byte không cấu trúc : hệ điều hành không biết nội dung của tập
tin:MS-DOS và UNIX sử dụng loại này.
1
• Dãy các record có chiều dài cố định
• Cấu trúc cây : gồm cây của những record (bản ghi), không cần thiết có cùng độ
đĩa. Một số hệ điều hành tự động xoá tập tin sau một khoảng thời gian n ngày.
• Mở : trước khi sử dụng một tập tin, tiến trình phải mở nó. Mục tiêu của mở là
cho phép hệ thống thiết lập một số thuộc tính và địa chỉ đĩa trong bộ nhớ để tăng
tốc độ truy xuất.
• Đóng : khi chấm dứt truy xuất, thuộc tính và địa chỉ trên đĩa không cần dùng
nữa, tập tin được đóng lại để giải phóng vùng nhớ. Một số hệ thống hạn chế tối
đa số tập tin mở trong một tiến trình.
• Đọc : đọc dữ liệu từ tập tin tại vị trí hiện thời của đầu đọc, nơi gọi sẽ cho biết
cần bao nhiêu dữ liệu và vị trí của buffer lưu trữ nó.
• Ghi : ghi dữ liệu lên tập tin từ vị trí hiện thời của đầu đọc. Nếu là cuối tập
tin,kích thước tập tin sẽ tăng lên, nếu đang ở giữa tập tin, dữ liệu sẽ bị ghi chồng
lên.
• Thêm : gần giống như WRITE nhưng dữ liệu luôn được ghi vào cuối tập tin.
• Tìm :dùng để truy xuất tập tin ngẫu nhiên. Khi xuất hiện lời gọi hệ thống, vị trí
con trỏ đang ở vị trí hiện hành được di chuyển tới vị trí cần thiết. Sau đó dữ liệu
sẽ được đọc ghi tại vị trí này.
• Lấy thuộc tính :lấy thuộc tính của tập tin cho tiến trình
• Thiết lập thuộc tính :thay đổi thuộc tính của tập tin sau một thời gian sử dụng.
• Đổi tên :thay đổi tên của tập tin đã tồn tại.
b) Thư mục
Để lưu trữ dãy các tập tin, hệ thống quản lý tập tin cung cấp thư mục, mà trong
nhiều hệ thống có thể coi như là tập tin.
*Hệ thống thư mục theo cấp bậc
Một thư mục thường thường chứa một số entry, mỗi entry cho một tập tin. Mỗi entry
chứa tên tập tin, thuộc tính và địa chỉ trên đĩa lưu dữ liệu hoặc một entry chỉ chứa tên
3
tập tin và một con trỏ, trỏ tới một cấu trúc, trên đó có thuộc tính và vị trí lưu trữ của tập
tin.
Khi một tập tin được mở, hệ điều hành tìm trên thư mục của nó cho tới khi tìm thấy tên
của tập tin được mở. Sau đó nó sẽ xác định thuộc tính cũng như địa chỉ lưu trữ trên đĩa
• Đóng thư mục :khi một thư mục đã được đọc xong, phải đóng thư mục để giải
phóng vùng nhớ.
• Đọc thư mục :Lệnh này trả về entry tiếp theo trong thư mục đã mở. Thông
thường có thể đọc thư mục bằng lời gọi hệ thống READ, lệnh đọc thư mục
luôn luôn trả về một entry dưới dạng chuẩn .
• Đổi tên :cũng như tập tin, thư mục cũng có thể được đổi tên.
• Liên kết :kỹ thuật này cho phép một tập tin có thể xuất hiện trong nhiều thư
mục khác nhau. Khi có yêu cầu, một liên kết sẽ được tạo giữa tập tin và một
đường dẫn được cung cấp.
• Bỏ liên kết :Nếu tập tin chỉ còn liên kết với một thư mục, nó sẽ bị loại bỏ hoàn
toàn khỏi hệ thống, nếu nhiều thì nó bị giảm chỉ số liên kết.
2. Cấu trúc của hệ thống tập tin
Đĩa cung cấp số lượng thiết bị lưu trữ phụ mà trên đó hệ thống tập tin được duy trì. Có
hai đặc điểm làm đĩa trở thành phương tiện tiện dụng cho việc lưu trữ nhiều tập tin:
• Chúng có thể được viết lại bằng cách thay thế; có thể đọc một khối từ đĩa, sửa
một khối và viết nó ngược trở lại đĩa trong cùng vị trí.
• Chúng có thể được truy xuất trực tiếp bất cứ khối thông tin nào trên đĩa.
6
Để cải tiến tính hiệu quả nhập/xuất, thay vì chuyển một byte tại một thời
điểm,nhập/xuất chuyển giữa bộ nhớ và đĩa được thực hiện trong đơn vị khối. Mỗi khối
là một hay nhiều cung từ (sector). Phụ thuộc ổ đĩa, các cung từ biến đổi từ 32 bytes tới
4096 bytes; thường là 512 bytes.
Để cung cấp việc truy xuất hiệu quả và tiện dụng tới đĩa, hệ điều hành áp đặt một hay
nhiều hệ thống tập tin để cho phép dữ liệu được lưu trữ, định vị và truy xuất lại dễ
dàng. Một hệ thống tập tin đặt ra hai vấn đề thiết kế rất khác nhau. Vấn đề đầu tiên là
định nghĩa hệ thống tập tin nên quan tâm đến người dùng như thế nào. Tác vụ này liên
quan đến việc định nghĩa một tập tin và thuộc tính của nó, các thao tác được phép trên
một tập tin và các giải thuật và cấu trúc cho việc tổ chức tập tin. Vấn đề thứ hai là tạo
giải thuật và cấu trúc dữ liệu để ánh xạ hệ thống tập tin luận lý vào các thiết bị lưu trữ
phụ.
Nhiều cấu trúc trên đĩa và trên bộ nhớ được dùng để cài đặt một hệ thống tập tin. Các
cấu trúc này thay đổi dựa trên hệ điều hành và hệ thống tập tin nhưng có một số
nguyên tắc chung được áp dụng. Trên đĩa, hệ thống tập tin chứa thông tin về cách khởi
động hệ điều hành được lưu trữ ở đó, tổng số khối, số và vị trí của các khối trống, cấu
trúc thư mục, các tập tin riêng biệt.
Các cấu trúc trên đĩa gồm:
• Khối điều khiển khởi động (boot control block) có thể chứa thông tin được yêu
cầu bởi hệ thống để khởi động một hệ điều hành từ phân khu đó.Nếu đĩa không
chứa hệ điều hành thì khối này là rỗng. Điển hình, nó là khối đầu tiên của đĩa.
Trong UFS, khối này được gọi là khối khởi động; trong NTFS, nó là cung khởi
động phân khu (partition boot sector).
• Khối điều khiển phân khu (partition control block) chứa chi tiết về phân khu,
như số lượng khối trong phân khu, kích thước khối, bộ đếm khối trống và con trỏ
8
khối trống, bộ đếm FCB trống và con trỏ FCB. Trong UFS khối này được gọi là
siêu khối (superblock); trong NTFS, nó là bảng tập tin chính (Master File Table)
• Một cấu trúc tập tin được dùng để tổ chức các tập tin
• Một FCB chứa nhiều chi tiết tập tin gồm các quyền tập tin, người sở hữu,kích
thước, và vị trí của các khối dữ liệu. Trong UFS khối này được gọi là i-node.
Trong NTFS, thông tin này được lưu trong Master File Table dùngcấu trúc cơ sở
dữ liệu quan hệ với một dòng cho một tập tin.
Thông tin trong bộ nhớ được dùng cho việc quản lý hệ thống tập tin và cải tiến năng
lực qua lưu trữ (caching). Các cấu trúc này có thể bao gồm:
• Bảng phân khu trong bộ nhớ chứa thông tin về mỗi phân khu được gắn vào.
• Cấu trúc thư mục trong bộ nhớ quản lý thông tin thư mục của những thư mục vừa
được truy xuất. (đối với các thư mục nơi mà các phân khu được gắn vào, nó có thể
chứa một con trỏ chỉ tới bảng phân khu.)
• Bảng tập tin đang mở của hệ thống (system-wide open-file table) chứa bản sao của
FCB của mỗi tập tin đang mở cũng như các thông tin khác.
• Bảng tập tin đang mở trên quá trình (per-process open-file table) chứa con trỏ chỉ
mục con của thư mục đó).
Quy ước đặt tên file:
- Tối đa 225 ky tự.
10
- Có thể sử dụng bất kỳ ký tự nào (kể cả các ký tự đặc biệt).
"very ? long - file + name.test"
- File/thư mục ẩn được bắt đầu bằng một dấu chấm “.”.
.bash_history .bash_profile .bashrc
.desktop/ .kde/ .mozilla/
Cấu trúc cây thư mục:
Trong Linux không có khái niệm ổ đĩa. Sau quá trình khởi động, toàn bộ các thư mục
và tập tin được kết gắn và tạo thành một hệ thống tập tin thống nhất, bắt đầu từ gốc “/”.
Các thư mục hệ thống:
* Thư mục /home: thư mục dữ liệu người dùng.
- Trong thư mục này có các thư mục con dành cho từng người dùng.
- Mỗi người dùng được phép tạo, cập nhật, xóa dữ liệu trong thư mục của mình.
- Khi bạn đăng nhập vào hệ thống thì bạn sẽ được đặt vào thư mục của bạn, thư mục
này có tên chính là tên người dùng mà bạn đăng nhập.
* Thư mục /bin: các lệnh cơ bản.
- Chứa các lệnh và các chương trình tiện ích chuẩn, chẳng hạn như ls,cat
*Thư mục /usr: ứng dụng và thư viện.
Chứa các file và lệnh chuẩn sử dụng bởi hệ thống. Nó được chia thành
11
nhiều thư mục con:
- /usr/bin: chứa các lệnh và tiện ích hướng người dùng.
- /usr/sbin: chứa các lệnh quản trị hệ thống.
- /usr/lib: chứa các thư viện dành cho lập trình.
- /usr/doc: chứa tài liệu Linux.
- /usr/man: chứa các file tra cứu lệnh.
- /usr/spool: chứa các file được sinh ra bởi lệnh in hoặc truyền tin qua
thiết lập và sử dụng. Các cấu trúc dữ liệu mô tả tập tin và thư mục truy xuất
12
được tạo và hủy thường trực. Khi các khối được truy xuất, chúng được đặt vào
vùng đệm. Vùng đệm không chỉ lưu giữ dữ liệu mà còn hỗ trợ quản lý giao tiếp
không đồng bộ với bộ phận điều khiển thiết bị khối.
‘hệ thống tập tin mở rộng thế hệ 2’ EXT2
-Ext2(hệ thống quản lý file mở rộng thứ hai ) là hệ thống file được sử dụng trong hệ
điều hành Linux
-Thiết kế bởi Remy Card thay thế cho ext
-Không phải hệ thống file journal(là hệ thống file ghi lại sự thay đổi của file vào 1
journal(biên bản) trước khi thực sự ghi vào hệ thống file chính)
*Cấu trúc của ext2:
Không gian trong ext2 được chia thành các block(khối),từ đó tổ chức thành các
nhóm block,tương tự như nhóm cylinder trong hệ thống file Unix.Điều này giúp giảm
sự phân mảnh và thời gian truy xuất khi đọc lượng dữ liệu lớn liên tiếp nhau. Mỗi
nhóm block bao gồm superblock(siêu block),nhóm block bitmap,inode block
- Cấu trúc trên đĩa
Boot block, phần đầu tiên của FS đĩa, là sector đầu tiên chứa mã bootstrap được
đọc vào máy và chạy để nạp HĐH.
Mỗi nhóm block bao gồm superblock(siêu block), inode list, data block,
Superblock bao gồm những thông tin quan trọng thiết yếu để hệ điều hành có
thể khởi động,như vậy dữ liệu backup được tạo ra với mỗi nhóm block. Superblock
gồm các trường sau:
1. kích thước của file system (FS).
2. tổng số các block còn chưa cấp phát cho tệp (free block) trong FS.
3. danh sách các free block sẵn có trên FS
.
4. chỉ số của free block tiếp theo trong danh sách free block.
5. kích thước của danh sách inode,
6. tổng số các inode chưa cấp phát (free inode) trong FS,