01/10/2018, 08:13
Tại sao 1 thư mục luôn cần ít nhất 2 liên kết vật lí
Có ai có thể cho em câu trả lời được không ạ?
Bài liên quan
Có ai có thể cho em câu trả lời được không ạ?
Hi Grak-Tgraktung.
Một cái đến bảng cha, một cái đến bảng con.
https://soict.hust.edu.vn/~linhtd/courses/PMMNM/03-he-thong-tep-linux.pdf
bảng cha là như nào ạ
Hi huyentrang
GG truoc khi hoi.
Trang 22
một liên kết gắn một tên tệp với (Nằm trong 1 bảng thông tin của thu muc cha chứa thông tin của folder.)
một inode của hệ thống tệp (Một bảng thông tin các folder file con.)
Thực ra có 1 bảng thôi, được gọi là name-inode. Bảng này do FileSystem maintain.
Còn inode thì chắc bạn hiểu cơ chế rồi đúng không? (đại khái nó sử dụng khái niệm linked reference, 1 file thực chất gồm nhiều block nằm ở nhiều nơi trong ổ cứng. inode chứa 1 số thông tin như owner, permission, …). Inode này cũng là 1 bảng mà FS manage. Khi bạn format ổ cứng thì không bao giờ bạn dùng được hết dung lượng. Có 1 phần dung lượng dùng cho 1 hệ CSDL mà FS sẽ write vào (trên Linux thì bạn không nhìn thấy file CSDL này, nhưng trên Windows thì hình như thấy được MFT ^^)
Còn vụ tại sao có 2 liên kết vật lý (hard link)
Cái này là do lịch sử thôi chứ chẳng có nguyên nhân gì cả. Vì hệ thống file mô phỏng hệ thống tài liệu trong công sở, mỗi một folder (folder là cái gấp, kẹp nhiều tờ giấy) chứa nhiều file (các tờ giấy), rồi mình có thể nhét các folder này vào folder cha, rồi nhét vào drawer (ngăn kéo bàn). Cấu trúc phân cấp này chỉ cho phép 1 file chỉ thuộc 1 folder mà thôi, như kiểu cấu trúc gia phả. Thế nên, các kỹ sư nghĩ ra cách thêm 2 cái hardlink này cho dễ dàng hơn cho việc traversal (duyệt cây):
Một số FS hiện nay không cần tới . và … mà được maintain current và parent trong memory.
Khi xóa file bằng lệnh rm (hoặc unlink), thực chất là xóa link tới inode. Nếu link cuối cùng bị xóa thì inode này cũng bị xóa (trừ phi dùng trong process khác, gọi là orphan inode), nhưng các data-block không bị xóa. Có 1 số tool vẫn recover được các metadata và khôi phục được file (liên kết được các block data) khi dùng lệnh rm.
bác nói dễ hiểu quá many thanks bro.