Trở lại   Mạng Máy Tính Việt Nam | Forum Networking Viet Nam | Network | Mang May Tinh > LINUX > BASIC LINUX

Kết Nối Cộng Đồng Mạng

Ðang kí mua áo truyền thống W3
Link Down các Attachment của W3
Ra mắt trang Tin Tức Mạng Máy Tính Việt Nam – W3 Networking News

Hãy tìm kiếm truớc khi đặt câu hỏi


Trả lời
 
LinkBack Ðiều Chỉnh Xếp Bài
  #1 (permalink)  
Củ 15-12-2009, 05:29 PM
manthang's Avatar
Member
 
Tham gia ngày: Jan 2009
Bài gởi: 39
Thanks: 109
Thanked 20 Times in 12 Posts
Mặc định Vài khái niệm trong Linux FileSystem

Vài khái niệm trong Linux FileSystem


1/ File và inode

1 file là khối dữ liệu được lưu trữ liên tục (hoặc không -> dẫn tới hiện tượng phân mảnh dữ liệu) trên thiết bị lưu trữ (ổ cứng, ổ flash…), và xuất hiện trước người dùng như là 1 thực thể đơn có 1 cái tên.

Mỗi file được liên kết với 1 inode - chứa các thuộc tính của file như là loại file (text, file nhị phân thực thi..), kích thước, ngày khởi tạo, vị trí trong bộ nhớ, chủ sở hữu, quyền truy cập,… (thông tin về file mà inode nắm giữ thường gọi là metadata), đặc biệt inode không chứa thông tin về tên file và nội dung (data) thật sự của file!.

Mỗi inode được xác định bởi 1 con số (inode number) , có 1 bảng chỉ mục gồm inode number – vị trí inode trên thiết bị lưu trữ, với inode number có được kernel tìm trong bảng chỉ mục này và truy cập nội dung của inode, bao gồm con trỏ dữ liệu từ đó truy cập tới nội dung của file mà liên kết với inode đó.

Sử dụng lệnh ls –i để biết inode number của 1 file, và ls –l để biết thông tin file mà inode chứa

Trên nhiều kiểu hệ thống file thì số lượng các inode có thể sử dụng được cố định tại thời điểm khởi tạo hệ thống file, dẫn tới việc giới hạn số lượng file mà hệ thống file có thể nắm giữ, quản lý.


2/ Directory (thường gọi là thư mục)

1 thự mục trong *nix là 1 loại file đặc biệt – chứa danh sách các liên kết, mỗi liên kết chứa tên đối tượng (file, folder, link [shortcut]…) và inode tương ứng với đối tượng đó.

3/Current Directory

Current Directory (hay working directory (wk) – thư mục hiện hành) là thư mục mà hiện tại 1 user đang “đứng”, tham khảo, làm việc tại đó.

Mọi user luôn luôn đang làm việc bên trong 1 thư mục nào đó. Chính xác hơn thì mỗi tiến trình (process) trong hệ thống có 1 wk của nó (trong Windows thì process gọi hàm GetCurrentDirectory để xác định vị trí của wk), wk của 1 tiến trình [process] là 1 thư mục trong hệ thống file (phân cấp theo cấu trúc cây) mà được liên kết linh động với nó (process gọi hàm SetCurrentDirectory để thay đổi wk trong Windows).

Khi 1 process chỉ định, tìm đến 1 file mà đơn giản chỉ sử dụng tên file (hoặc sử dụng đường dẫn tương đối - relative path, tương ứng với wk; trái với full path – đường dẫn tuyệt đối, tên đường dẫn bắt đầu từ ký tự ổ đĩa (trong Windows) hay thư mục gốc (/) trong Unix) thì việc tham khảo, tìm kiếm tới file này bắt đầu từ wk

Ví dụ trong Linux:

Khi bạn mở Shell CLI lên để gõ lệnh thường thì bạn đang đứng ở thư mục có đường dẫn tuyệt đối là
/home/tên_người_dùng_bạn_đang_sử_dụng
[đây chính là thư mục chủ lưu trữ dữ liệu cá nhân của bạn, biểu thị bằng dấu ~]
Thì thư mục tên_người_dùng_bạn_đang_sử_dụng là wk. Khi bạn gõ vào
rm foo.txt
thì lệnh này sẽ thực hiện việc xóa file foo.txt trong thư mục chủ của bạn.

Thường có 2 cách mà 1 user có thể xác định WK.


Nhìn vào command prompt – dấu nhắc lệnh (1 đoạn text ngắn đứng trước 1 dòng lệnh). Command prompt trong bash (Shell mặc định trong Linux) chứa tên của user, tên máy tính và tên WK
vd: [uit@localhost work]#
uit là tên user, localhost là tên máy tính, work là WK, # chỉ ra rằng đây là user root.

Cách còn lại là sử dụng lệnh pwd (present working directory), lệnh này không có tùy chọn (option - thường là 1 ký tự đơn có dấu “-“ đứng trước, hoặc 1 cụm từ có dấu “--“ đứng trước mà lệnh cung cấp nhằm thay đổi cách hành xử của lệnh), không đối số (argument – tên file hoặc dữ liệu khác do user cung cấp để lệnh thao tác trên đối số đầu vào này).
pwd hiện full path của WK

WK thường được biểu thị bởi 1 dấu chấm “.” , còn 2 dấu chấm liên tiếp “..” thay cho thư mục cha của WK. Bạn sẽ luôn thấy 2 mục bị ẩn này tồn tại trong mọi thư mục trên *nix bằng cách sử dụng lệnh ls -a


...

4/ Directory Tree (Cây thư mục) (DT)

1 DT là 1 hệ thống có cấp bậc của các thư mục, trong đó có duy nhất 1 thư mục được gọi là thư mục cha và tất cả các mức độ thư mục con của nó. Bất kỳ thư mục nào cũng có thể là điểm bắt đầu cho 1 cây thư mục của riêng nó (nếu nó chứa ít nhất 1 thư mục con)
Hầu hết các HDH ngày nay đều sử dụng cấu trúc cây thư mục cho việc tổ chức file. Các HDH *nix chỉ có duy nhất 1 thư mục gốc (Root Directory - ký hiệu là / ) mà từ đó các cây thư mục khác sinh ra từ đây. Các HDH của Microsoft có nhiều thư mục gốc độc lập với nhau có các tên như là C: , D: , E: ...
Lệnh du (disk usage) trong Linux là 1 tiện ích thu thập thông tin về các cây thư mục, bao gồm tổng không gian đĩa mà 1 cây chiếm dụng, tên và kích thước mỗi nhánh hoặc file trong cây đó ...
Trả Lời Với Trích Dẫn
  #2 (permalink)  
Củ 15-12-2009, 05:33 PM
manthang's Avatar
Member
 
Tham gia ngày: Jan 2009
Bài gởi: 39
Thanks: 109
Thanked 20 Times in 12 Posts
Mặc định



5/ Hard Link (HL)

Khi 1 file được tạo, nó được gán với 1 cái tên (file name) + 1 số inode number (là số nguyên duy nhất trong 1 filesystem). Cả file name và inode number tương ứng được lưu trữ thành các mục (entry) trong thư mục (directory). Tức là thư mục bao gồm các liên kết giữa file name và inode

Khi user hoặc chương trình sử dụng file name để tham khảo tới 1 file, HDH sẽ sử dụng tên này để tìm kiếm inode tương ứng bằng cách tra cứu trong bảng inode table (chứa liên kết giữa inode number và vị trí inode tương ứng trên thiết bị lưu trữ), từ đó HDH biết được thông tin và vị trí của file phục vụ cho các công việc sau này (thao tác trên dữ liệu trong file, cung cấp thuộc tính file…).

1 HL là 1 tên gọi khác cho 1 file đang tồn tại trên filesystem của Linux


1 file có thể có nhiều HL. Các HL cũng có thể có nhiều HL cho nó. Tuy nhiên, HL không thể tạo cho thư mục và HL cũng không thể được tạo ra trên các filesytem, phân vùng khác với file mà HL đó liên kết tới (vd: bạn không thể tạo HL trên phân vùng A cho 1 file nằm trên phân vùng B).

HDH không phân biệt giữa filename ban đầu của file với các HL được tạo ra sau này cho file đó. Cả filename và các HL này đều trỏ tới cùng 1 node, và vì mỗi inode có 1 số inode number là duy nhất trên 1 filesystem nên HL không thể làm việc chéo qua các filesystem hoặc phân vùng khác

Sử dụng lệnh ln để tạo HL. VD dưới đây sẽ tạo 1 HL có tên hlink1 cho 1 file có tên file1 (cả 2 file này đều nằm trong cùng thư mục hiện hành)

ln file1 hlink1

Khi HL được tạo xong, HL cũng xuất hiện như là các file có cùng kiểu file với file đích của nó (target file – file mà HL trỏ tới) ( sử dụng lệnh lsfile bạn sẽ thấy được điều này). Cũng như vậy, trong GUI, các biểu tượng (icon) cho các HL cũng giống y chang với target file của nó. Nhưng nếu bạn xem cửa sổ Properties của nó thì mới biết được đâu là targer file , đâu là HL (có thêm mục Link to).

filename ban đầu và tất cả các HL tới file đều chia sẻ chung inode, bạn có thể thấy rõ điều này bằng cách sử dụng lệnh ls –i. Câu lệnh dưới đây sẽ cho thấy inode number của file1 và hlink1 là giống nhau

ls -i file1 hlink1

Số lượng các HL cho 1 file được thể hiện trong cột thứ 2 trong output của lệnh ls –l. Con số này là tổng của filename ban đầu + HL và số này thì giống nhau cho target file và mỗi HL (filename ban đầu cũng được coi là 1 HL)VD:

ls –l file1 hlink1

Sử dụng lệnh

find -type f -links +1


để tìm các file có nhiều hơn 1 HL

Khi bạn mở file bằng cách click đúp vào target file, chỉnh sửa nội dung và lưu lại. Sau đó bạn mở HL của target file đó bạn sẽ những thay đổi được giữ nguyên. (Tương tự khi mở HL, chỉnh sửa, sau đó mở target file).

Lệnh rm (remove hoặc delete file) thực sự làm gì?

Khi bạn sử dụng lệnh rm để xóa file (vd rm file1) thì thật ra sẽ làm giảm đi 1 số HL tới file mà không ảnh hưởng trực tiếp tới dữ liệu thực của file. Khi HL giảm còn 0 (rm hlink1), file không còn xuất hiện nữa (không thể truy cập vào dữ liệu trong file) vì HDH không còn cách nào để tham khảo tới file này (thường thì tham khảo tới file bằng filename). Tuy nhiên, dữ liệu của file chỉ thực sự bị mất khi vị trí mà nó nằm trên thiết bị lưu trữ bị ghi đè bởi 1 file mới. Điều này giải thích tại sao bạn vẫn có thể khôi phục lại dữ liệu đã mất với tỷ lệ khá cao ngay khi bạn vừa xóa nó và không chép thêm dữ liệu vào.

Lợi ích của HL
Cho phép truy cập dễ dàng tới file, chương trình, script (1 chương trình ngắn) từ 1 vị trí khác trong cây thư mục (giống shortcut trong Windows)


6/ Symbolic link (hay Soft Link – SL)

SL thì hơi khác chút so với HL đó là: có thể tạo SL cho 1 thư mục cũng như là tạo SL các file/thư mục trên các filesystem , phân vùng khác. Hơn nữa, khi sử dụng GUI, SL có 1 icon đặc biệt mà biểu thị đó là SL, còn khi sử dụng lệnh
ln –l SL_name
thì trong output có 1 dấu -> cho biết SL đang trỏ tới target file nào

Tuy nhiên, hạn chế của SL so với HL là khi bạn delete target file thì SL không có tác dụng nữa

Để tạo SL bạn sử dụng cú pháp
ln -s target_file SL_name


7/ Aliases


Giống với HL theo cách mà nó tạo ra nhiều filename cho file. Tuy nhiên, aliases là 1 lệnh có sẵn (built-in) trong Shell hơn là 1 chương trình tách biệt và cơ chế làm việc thì khác so với HL (? - mình đang tìm hiểu vấn đề này)
Cũng như SL, có thể tạo aliases cho file/thư mục trên cùng (hoặc khác) filesystem/phân vùng so với target file
Ngoài ra, aliases thường được dùng để tạo câu lệnh tắt cho 1 câu lệnh (hoặc 1 chuổi câu lệnh) dài và phức tạp

Trả Lời Với Trích Dẫn
The Following User Says Thank You to manthang For This Useful Post:
vinhthaoqn1989 (19-12-2009)
Trả lời

Bookmarks


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở


Similar Threads
Ðề tài Người Gởi Chuyên mục Trả lời Bài mới gởi
Linux Home Networking - from basic to advance for all [Peter Harrison] cutynhangheo ADVANCE LINUX 25 24-10-2009 09:09 AM
Liên kết động trong Linux và Windows loveslope ADVANCE LINUX 0 25-07-2008 02:23 AM
Danh mục định dạng File Tu@n CÁC HỆ ĐIỀU HÀNH CỦA MICROSOFT 0 15-07-2008 07:40 PM
Thủ thuệt đầy đủ về Regittry! caydangk PHẦN CỨNG 0 26-06-2008 10:09 PM
Kiến thức cơ bản về Network luongkhiem BASIC MICROSOFT NETWORK 2 06-06-2008 12:54 PM


Múi giờ GMT. Hiện tại là 12:57 PM.

Powered by: vBulletin & TheGioiMang.Org
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0 Developed by Group W3 and member TheGioiMang
Vui lòng ghi nguồn TheGioiMang.oRg khi bạn dùng các bài viết của 4rum