tài liệu mã nguồn mở 03 he-thong-tep-linux-14

7
1 Hệ thống tệp Linux Chương 3 Nội dung Khái niệm về hệ thống tệp logic Các thao tác với thư mục Các thao tác với tệp inode 2 Hệ thống tệp logic 3 Một số khái niệm Khái niệm: Một hệ thống tập tin (file system) là các phương pháp và cấu trúc dữ liệu mà một hệ điều hành sử dụng để lưu trữ các thông tin của các tập tin hay phần chia trên đĩa Một/Nhiều cây phân cấp thư mục và các tệp Tệp nhóm các bít Một thư mục dùng để tạo nhóm các tệp dữ liệu và thư mục Thư mục gốc (/) là điểm vào đầu tiên cho cả cây thư mục Các tệp là các nút lá 4 Một số khái niệm Hệ thống tập tin Ext2 - Hệ thống tập tin Ext2 (Second Extended File System – Ext2fs) hỗ trợ các kiểu tập tin chuẩn của Unix: các tập tin thường, thư mục, các tập tin dành riêng thiết bị và các symbolic link. - Ext2fs có khả năng quản lý những hệ thống tập tin được tạo trên những phần - Ext2fs hỗ trợ tên tập tin dài. Chiều dài tên tập tin tối đa là 255 ký tự. Giới hạn này có thể được mở rộng lên tới 1012 nếu cần. - Ext2fs dành riêng một số khối cho người dùng cao cấp (root), thông thường là 5% 5 Một số khái niệm Hệ thống tập tin Ext2 - Ext2fs cho phép quản trị hệ thống chọn lựa kích thước khối (block) logic khi tạo hệ thống tập tin. Kích thước khối có thể là 1024, 2048,... Sử dụng những kích thước khối lớn có thể tăng tốc độ nhập/xuất. - Ext2fs thực thi các symbolic link nhanh. Một symbolic link không sử dụng bất kỳ khối dữ liệu nào trên hệ thống tập tin. Nội dung của tập tin liên kết được lưu trong i-node của bản thân nó - Ext2fs lưu dữ vết của trạng thái hệ thống tập tin. Một trường đặc biệt trong superblock (siêu khối) được sử dụng bởi mã nhân hệ điều hành chỉ ra trạng thái của hệ thống tập tin 6

Upload: thuyet-nguyen

Post on 21-Mar-2017

5 views

Category:

Software


1 download

TRANSCRIPT

Page 1: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

1

Hệ thống tệp Linux

Chương 3

Nội dung

• Khái niệm về hệ thống tệp logic

• Các thao tác với thư mục

• Các thao tác với tệp

• inode

2

Hệ thống tệp logic

3

Một số khái niệm

• Khái niệm: Một hệ thống tập tin (file system) là các phương

pháp và cấu trúc dữ liệu mà một hệ điều hành sử dụng để lưu

trữ các thông tin của các tập tin hay phần chia trên đĩa

• Một/Nhiều cây phân cấp thư mục và các tệp

– Tệp nhóm các bít

– Một thư mục dùng để tạo nhóm các tệp dữ liệu và thư mục

• Thư mục gốc (/) là điểm vào đầu tiên cho cả cây thư mục

• Các tệp là các nút lá

4

Một số khái niệm

• Hệ thống tập tin Ext2

- Hệ thống tập tin Ext2 (Second Extended File System – Ext2fs)

hỗ trợ các kiểu tập tin chuẩn của Unix: các tập tin thường, thư

mục, các tập tin dành riêng thiết bị và các symbolic link.

- Ext2fs có khả năng quản lý những hệ thống tập tin được tạo trên

những phần

- Ext2fs hỗ trợ tên tập tin dài. Chiều dài tên tập tin tối đa là 255

ký tự. Giới hạn này có thể được mở rộng lên tới 1012 nếu cần.

- Ext2fs dành riêng một số khối cho người dùng cao cấp (root),

thông thường là 5%

5

Một số khái niệm

• Hệ thống tập tin Ext2

- Ext2fs cho phép quản trị hệ thống chọn lựa kích thước khối

(block) logic khi tạo hệ thống tập tin. Kích thước khối có thể là

1024, 2048,... Sử dụng những kích thước khối lớn có thể tăng

tốc độ nhập/xuất.

- Ext2fs thực thi các symbolic link nhanh. Một symbolic link

không sử dụng bất kỳ khối dữ liệu nào trên hệ thống tập tin.

Nội dung của tập tin liên kết được lưu trong i-node của bản

thân nó

- Ext2fs lưu dữ vết của trạng thái hệ thống tập tin. Một trường

đặc biệt trong superblock (siêu khối) được sử dụng bởi mã

nhân hệ điều hành chỉ ra trạng thái của hệ thống tập tin

6

Page 2: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

2

Cấu trúc vật lý

• Tất cả các cấu trúc dữ liệu được đặt kích cỡ dựa trên kích

thước một khối (block). Kích thước của khối phụ thuộc vào

kích thước của hệ thống tập tin.

- Thí dụ, đối với đĩa mềm, kích thước khối là 1KB (2 sectors),

kích thước khối trên phần chia 10GB là 4KB hay 8KB.

• Hệ thống tập tin được chia thành những nhóm khối (block

group).

• Tại đầu của mỗi nhóm khối có chứa các thông tin xác định vị

trí, số khối và của các thông tin mô tả trạng thái hệ thống tập

tin hiện hành, bao gồm các thông tin sau:

1) superblock. Chứa các thông tin cơ bản nhất và các thuộc tính

của hệ thống tập tin, thí dụ như tổng số i-node, tổng số khối,

trạng thái hệ thống tập tin …

7

Cấu trúc vật lý

• Thông tin mô tả trạng thái hệ thống tập tin hiện hành, bao

gồm các thông tin sau:

2) group descriptors. Là một mảng cấu trúc, mỗi cấu trúc mô tả

một nhóm khối, vị trí bảng i-node của nó, bản đồ khối và i-

node ….

3) block bitmap. Block Bitmap được thường đặt tại khối đầu tiên

của nhóm khối. Mỗi bit đại diện cho trạng thái hiện hành của

khối trong nhóm khối

4) i-node bitmap. I-node Bitmap có chức năng tương tự như

block bitmap, mỗi bit đại diện cho một i-node trong bảng i-

node (i-node table). Mỗi một nhóm khối có một i-node bitmap

8

Cấu trúc vật lý

• Thông tin mô tả trạng thái hệ thống tập tin hiện hành, bao

gồm các thông tin sau:

5) i-node table. Bảng i-node được sử dụng để lưu vết tất cả các

tập tin; vị trí, kích thước, kiểu và các quyền truy nhâp của tập

tin đều được lưu trữ trong các i-node. Mỗi một nhóm khối có

chứa một bảng i-node. Mỗi i-node có chứa thông tin về một

tập tin vật lý riêng rẽ trên hệ thống.

Vì vậy i-node có thể được xem như là một khối thông tin có liên

quan đến một mục từ, mô tả vị trí của nó trên đĩa, kích thước

và chủ nhân của nó.

6) data block. Được sử dụng để lưu trữ nội dung của các tập tin,

bao gồm danh sách các thư mục, các thuộc tính mở rộng, các

symbolic link …

9

Cấu trúc vật lý

10

Cấu trúc vật lý

11

I-node

• Mỗi tập tin được đại diện bởi một i-node. I-node là một bảng

có kích thước cố định được sử dụng để lưu trữ tất cả các thông

tin về một tập tin, và mỗi tập tin chỉ có một i-node duy nhất.

Những thông tin này bao gồm: chủ nhân của tập tin, thời điểm

thay đổi nội dung tập tin, thời gian tập tin được truy nhập sau

cùng, kích thước, các quyền trên tập tin, số lượng tập tin liên

kết v.v…

• Địa chỉ của các khối dữ liệu đã cấp phát cho một tập tin được

lưu giữ trong i-node của nó. I-node có chứa một tập hợp các

con trỏ, những con trỏ này trỏ tới các khối dữ liệu của tập tin.

Cấu trúc vật lý

12 Sơ đồ cấu trúc của Inode

Page 3: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

3

Cấu trúc vật lý

13

• Thư mục

Hình: Cấu trúc của thư mục

Cấu trúc vật lý

14

• Ví dụ: các bước tìm kiếm tập tin /usr/ast/mbox trong hệ thống

tập tin ext2:

Cấu trúc vật lý

15

• Hệ thống tệp ext3: Là sự cải tiến của hệ tệp ext2, có cải tiến

thêm một số đặc tính: Tính sẵn có, toàn ven dữ liệu, tốc độ

truy nhập

- Hệ tệp ext3 có từ phiên bản Red Hat Linux 7.2

Đối với Linux, không có khái niệm các ổ đĩa khác nhau. Toàn bộ các thư mục và tập tin được “gắn” lên (mount) và tạo thành một hệ thống tập tin thống nhất, bắt đầu từ gốc ‘/’

/-----+

!-------/bin

!-------/sbin !-------/usr------/usr/bin

! !------/usr/sbin

! !------/usr/local

! !------/usr/doc

!

!-------/etc

!-------/lib

!-------/var-------/var/adm

!-------/var/log !-------/var/spool

!-------/mnt “Mount point” Nơi gắn các t/b !

16

Cấu trúc hệ thống tệp

17

Thư mục /dev

Thư mục /dev có chứa những mục từ hệ thống tập tin đại diện cho

các thiết bị được gắn với hệ thống. Những tập tin này là cần thiết

cho sự hoạt động của hệ thống.

Thư mục /etc

Thư mục /etc được dành cho các tập tin cấu hình của các dịch vụ

trên máy tính. Không có tập tin thi hành nhị phân nào được đặt trong

/etc. Bất kỳ tập tin nhị phân nào trước kia được đặt trong /etc bây

giờ đều được chuyển sang thư mục /sbin hay thư mục /bin.

Thư mục /lib

Thư mục /lib chứa những thư viện cần thiết để thi hành các tập tin

nhị phân được chứa đựng trong các thư mục /bin và /sbin. Những

ảnh thư viện được chia sẻ (dùng chung) này là rất quan trọng để

khởi động hệ thống và thi hành các lệnh trong hệ thống tập tin root.

Cấu trúc hệ thống tệp

18

Thư mục /mnt

Thư mục /mnt tham chiếu đến các hệ thống tập tin được gắn

(mount) tạm thời vào hệ thống tập tin, thí dụ như là CD-ROM và

đĩa mềm.

Thư mục /proc

Thư mục /proc có chứa những 'tập tin' đặc biệt. Những tập tin này

đại diện cho trạng thái hiện tại của nhân hệ điều hành.

Thư mục /sbin

Thư mục /sbin là thư mục có chứa các tập tin thi hành dành riêng

cho người dùng root sử dụng. /sbin có chứa các tập tin cơ bản để

khởi động hệ thống thêm vào cùng với các tập tin nhị phân có

trong thư mục /bin.

Cấu trúc hệ thống tệp

Page 4: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

4

19

Thư mục /usr

Thư mục /usr chứa các tập tin có thể được dùng chung trên toàn

hệ thống. Thư mục /usr thường được cài đặt riêng trên một phần

chia độc lập và được gắn vào thư mục root với quyền chỉ đọc.

Trong /usr có chứa nhiều thư mục con: thư mục bin chứa các tập

tin thi hành, doc chứa tài liệu, etc chứa các tập tin cấu hình, games

dành cho các trò chơi, include có chứa các tập tin C header,….

Thư mục /usr/local

Thư mục /usr/local được dành cho người quản trị hệ thống sử dụng

khi cài đặt phần mềm một cách cục bộ. Thư mục này cần được bảo

vệ để tránh bị ghi đè lên khi phần mềm hệ thống được cập nhật. Nó

có thể được sử dụng cho các chương trình và dữ liệu cho phép

dùng chung trên mạng

Cấu trúc hệ thống tệp

20

Thư mục /var

Thư mục /var chứa các tập tin dữ liệu khả biến. Nó chứa các tập

tin và thư mục 'đường ống', dữ liệu nhật ký, quản trị, các tập tin

tạm.

Các tập tin nhật ký hệ thống như là messages và lastlog được

chứa trong /var/log. Thư mục /var/lib/rpm cũng có chứa các cơ

sở dữ liệu của hệ thống RPM. Các tập tin khoá được chứa trong

/var/lock. Thư mục /var/spool có các thư mục con dành cho các

hệ thống khác nhau cần thiết để lưu trữ các tập tin dữ liệu.

Cấu trúc hệ thống tệp

21

Tên phần chia hệ thống

Mọi phần chia trong Red Hat Linux đều tham chiếu qua các

tập tin, với tên tập tin được đặt theo định dạng sau:

/dev/xxyN

Trong đó:

/dev/ là tên của thư mục chứa tất cả các tập tin thiết bị. Do

các phần chia nằm trên đĩa cứng, và đĩa cứng là một loại

thiết bị, vì vậy, tất cả các tập tin đại diện cho các phần chia

sẽ nằm trong thư mục /dev/.

Cấu trúc hệ thống tệp

22

Tên phần chia hệ thống

xx : Hai chữ cái đầu tiên của tên phần chia chỉ ra kiểu

của thiết bị mà phần chia nằm trên đó. Tên của một số thiết

bị thông thường bao gồm:

hd - ổ đĩa cứng IDE

sd - ổ đĩa cứng SCSI

sr - ổ đĩa CD-ROM SCSI

fd - ổ đĩa mềm

sb- ổ USB

cdrom - liên kết tới tập tin thiết bị CD-ROM

floppy - liên kết tới tập tin thiết bị ổ đĩa mềm

Cấu trúc hệ thống tệp

23

Tên phần chia hệ thống y : Chữ cái này xác định thiết bị mà phần chia nằm trên đó:

a – là ổ đĩa cứng thứ nhất, master

b – là ổ đĩa cứng thứ nhất, slave

c – là ổ đĩa cứng thứ hai, master

d – là ổ đĩa cứng thứ hai, slave …

Thí dụ: /dev/hda là ổ đĩa IDE thứ nhất;

/dev/sdb là ổ đĩa SCSI thứ hai

N: Số cuối cùng biểu thị cho phần chia. Các số từ 1 đến 4 xác

định bốn phần chia đầu tiên (primary hay extended). Các phần

chia logic được đánh số bắt đầu từ 5.

Thí dụ, /dev/hda3 là phần chia thứ 3 trên ổ đĩa IDE đầu tiên;

/dev/sdb6 là phần chia logic thứ hai trên ổ đĩa SCSI thứ hai.

Cấu trúc hệ thống tệp Tệp Linux vs. tệp Windows

• Giống nhau – độ dài tối đa cho tên tệp là 255

– Chấp nhận tất cả các kí tự để đặt tên tệp (nhưng nên tránh sử dụng các kí tự đặc biệt như * ? [ ] & để tránh sự nhập nhằng trong câu lệnh sử dụng sau này)

• Tính đặc thù của Linux – Quản lý dưới một khung nhìn của tệp cho cả thư mục và

các loại tài nguyên hệ thống (ngoại vi, bảng phân chương đĩa)

– Không có khái niệm phần mở rộng của tên tệp (kí tự '.' trong tên tệp được đối xử như mọi kí tự khác

– Không dùng ổ đĩa logic trong cây thư mục

– '/' được dùng thay cho '\' trong đường dẫn thư mục

24

Page 5: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

5

Thư mục đặc biệt

• Truy cập tệp và thư mục cần dùng các đường

dẫn

• Đường dẫn có thể có mốc từ các thư mục đặc

biệt

– / : thư mục gốc

– ~/ : thư mục nhà

– . : thư mục hiện tại

– .. : thư mục cha

25

Lệnh cơ bản quản lý thư mục

• pwd

• cd

• ls –la [tên thư mục]

• mkdir [-p] [tên thư mục mới]

• rmdir [tên thư mục rỗng]

26

Quản lý thư mục

• pwd: hiển thị đường dẫn tuyệt đối của thư mục hiện tại

• cd: thay đổi vị trí thư mục hiện tại – $ cd /home/tuananh

– $ cd tuananh

• ls: liệt kê các tệp trong một thư mục – $ ls

– $ ls /home/tuananh

– $ ls –la tuananh

• tuỳ chọn -a cho phép hiển thị cả các tệp ẩn

• tuỳ chọn -l cho phép hiển thị thuộc tính cho mỗi tệp (kiểu, quyền, liên kết, chủ sở hữu, nhóm sở hữu, kích thước, ngày sửa đổi)

• mkdir: tạo một thư mục rỗng

• rmdir: xoá một thư mục rỗng

27

Câu lệnh ls

28

Kiểu của tệp

• Tệp thư mục là một thư mục trong đường dẫn phân loại (vd.,

/usr, /home,…)

• Tệp thông thường là một tệp chứa dữ liệu hoặc tệp chương

trình (vd., /bin/passwd, /etc/passwd, …)

• Tệp đặc biệt là một tệp thiết bị tương ứng với thiết bị ngoại vi

hoặc các tệp tự sinh bởi HĐH. Có thể có tệp ký tự hoặc tệp

block

• Liên kết

• Các tệp biểu diễn các kênh vào ra

29

Các kiểu tệp

• Các ký hiệu dưới đây được sử dụng để biểu diễn các kiểu

tệp

– - : tệp thông thường

– d : thư mục

– b : tệp đặc biệt (block)

– c : tệp đặc biệt (ký tự)

– l : link

– S sockect

– p : đường ống

30

Page 6: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

6

Tên đặc biệt

• « . » : thư mục hiện tại

• « .. » : thư mục cha

• « ~ » : thư mục cá nhân

• « .xxx » : tệp ẩn (e.g., /home/tuananh/.bashrc)

31

Ví dụ

$ cd ~

$ pwd

/home/tuananh

$ ls -la

-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 .bashrc

-rw-r--r-- 1 tuananh user1 4025 Feb 10 19:12 linux.ppt

drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 linux

$ mkdir vanban

$ cd vanban

$ pwd

/home/tuananh/vanban

$ cd ..

$ pwd

$ rmdir vanban

32

Các siêu kí tự

– * dùng để thay thế cho một chuỗi kí tự bất kì bao

gồm cả xâu rỗng

– ? thay thế cho một kí tự bất kì

– [ ] được thay thế bởi một kí tự trong một tập kí tự

cho trước

– [! ] được thay thế bởi một kí tự không có trong một

tập kí tự cho trước

33

Ví dụ

$ ls -l *.[c,h]

-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 myprog.c

-rw-r--r-- 1 tuananh user1 2451 Feb 7 07:30 myprog.h

$ ls -l *prog

drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 c_prog

drwxr-xr-- 2 tuananh user1 512 Feb 10 19:12 java_prog

$ ls -l .*

-rw-r--r-- 1 tuananh user1 451 Feb 7 07:30 .bashrc

-rw-r--r-- 1 tuananh user1 225 Feb 7 07:30 .bash_profile

-rw-r--r-- 1 tuananh user1 351 Feb 7 07:30 .bash_logout

34

Quản lý tệp

• $cp file1 […] dir

– sao chép một hoặc nhiều tệp vào một thư mục

• $mv file1 […] dir

– di chuyển một hoặc nhiều tệp đến một thư mục

• $rm file1 […]

– xoá một hoặc nhiều tệp

• tuỳ chọn -R (recursive)

– cho phép sao chép/di chuyển/xoá toàn bộ thư mục bao gồm

cả các thư mục con

35

Quản lý tệp

• cat: nối các tệp tin

• more: xem từng dòng

• less: xem từng trang

• tail: xem cuối tệp

• head: xem đầu tệp

• touch: tạo tệp mới, cập nhật tệp cũ

• echo > [tên tệp]

36

Page 7: tài liệu Mã nguồn mở  03 he-thong-tep-linux-14

7

Ví dụ

$ ls -l

-rw-r--r-- 1 tuananh user1 16 Feb 10 19:12 test.txt

drwxr-xr-- 2 tuananh user1 512 Feb 10 19:14 vanban

$ cp test.txt vanban

$ ls -l vanban

-rw-r--r-- 1 tuananh user1 16 Feb 12 20:03 test.txt

$ rm –R vanban

$ ls -l

-rw-r--r-- 1 tuananh user1 16 Feb 10 19:12 test.txt

$ rm test.txt

$ ls -l

$

37

Tìm kiếm file

$ find tên_thư_mục expressions – Cho phép tìm kiếm các file trong một thư mục (ngầm định là trong thư

mục hiện tại) với một số điều kiện hoặc các lệnh thực thi trên tập các file tìm được.

• Các điều kiện – Tên : -name tên

– Quyền truy cập : -perm quyền_truy_cập

– Kiểu : -type d/f/...

– Kích thước : -size N

– Thời gian : -atime N, -mtime N, -ctime N

• Các lệnh thực thi trên tạp các file tìm được

– -print

– -exec câu_lệnh

38

Ví dụ

• $find /usr -name toto -print – Tìm kiếm file tên là toto trong thư mục /usr (bao gồm cả

các thư mục con của /usr)

• $find /usr -name " *.c " -print – Đưa ra danh sách các file kết thúc bằng « .c »

• $find / -mtime 3 -print – Tìm tất cả các file có thay đổi trong 3 ngày gần đây

• $find / -size 2000 -print – Tìm tất cả các file có kích thước lớn hơn 1 GB (= 2000

block 512 KB)

• $find / -type f -user olivier -perm 755 -print – Tìm tất cả các file thuộc về người sử dụng olivier, đồng

thời có quyền truy cập là 755 39

Bài tập

• Sử dụng các câu lệnh quản lý tệp

• Sử dụng các câu lệnh quản lý thư mục

• Sử dụng các câu lệnh tìm kiếm tệp find/locate

40