Trong những năm gần đây HDH Linux đang ngày càng trở nên phổ biến trong trường học và môi trường công nghiệp.
Trang 1KHOA QUỐC TẾ VÀ ĐÀO TẠO SAU ĐẠI HỌC
*********
Bài tập tiểu luận môn Hệ Điều Hành Mạng Nâng Cao
Kiến trúc hệ thống File EXT2, EXT3, EXT4 của
các hệ điều hành họ LINUX
Nhóm thực hiện: Nguyễn Trường Giang
Vũ Hoàng Anh - Nguyễn Ngọc Ân Phạm Khánh Chung - Tô Danh Dũng Nguyễn Anh Dũng - Dương Văn Dũng Đặng Xuân Điệp - Đinh Quang Định Nguyễn Thu Giang - Chu Hải Hà
Giảng viên hướng dẫn: Ts Hoàng Xuân Dậu
Lớp: TDL&MMT (Đợt 1) - M11CQCT01-B
Hà Nội, tháng 12 - 2011
Trang 2MỤC LỤC
MỤC LỤC 1
LỜI GIỚI THIỆU 3
CÁC TỪ VIẾT TẮT 4
Chương 1 Tìm hiểu về hệ điều hành Linux 5
1.1 Linux là gì? 5
1.2 Tại sao Linux phát triển? 6
1.3 Các bản phát hành Linux 7
1.4 Lợi thế của Linux 7
1.5 Ai phát triển Linux ? 9
Chương 2 Phân vùng đĩa cứng 10
2.1 Giới thiệu chung 10
2 2 Hệ thống File EXT2 10
2 2.1 Giới thiệu 10
2.2.2 Tổ chức đĩa 12
2.2.2.1 Superblock 14
2.2.2.2 Group Descriptor 20
2.2.2.3 Block Bitmap 21
2.2.2.4 Inode Bitmap 21
2.2.2.5 Inode Table 22
2.2.2.6 Data Blocks 28
2.2.3 Cấu trúc thư mục 28
2.2.3.1 Định dạng Directory File 28
2.2.3.2 Ví dụ về Directory 30
2.2.3.4 Indexed Directory Format 31
2.2.4 Inodes, File Identifiers 35
2.2.4.1 Inode Number 36
2.4.2 Định vị cấu trúc của Inode 36
2.2.4.3 Định vị Inode Table 37
2.2.5 Các Thuộc Tính Của File 37
2.2.5.1 Các thuộc tính chuẩn 37
2.2.5.2 Các thuộc tính mở rộng 37
2.2.6 Quản trị hệ thống file EXT2 38
Trang 32.3 Hệ thống File EXT3 39
2.4 Hệ thống File EXT4 43
2.4.1 Giới thiệu 43
2.4.2 Khả năng nâng cấp mở rộng 44
2.4.2.1 Hệ Thống Tệp Tin Lớn 44
2.4.2.2 Đặc điểm 44
2.4.2.3 Lưu file theo nhóm block (Extents) 45
2.4.2.4 Chống phân mảnh trực tuyến 47
2.4.2.5 Cải tiến độ tin cậy 47
4.4.2.6 Đếm số inode (index-node) chưa dùng và việc làm lệnh e2fsck nhanh hơn 48
2.4.2.7 Kiểm tra tổng thể (checksum) 49
2.4.2.8 Các đặc điểm mới 50
Kết luận 56
TÀI LIỆU THAM KHẢO 57
Trang 4LỜI GIỚI THIỆU
Trong những năm gần đây HDH Linux đang ngày càng trở nên phổ biếntrong trường học và môi trường công nghiệp Hệ điều hành này, với chức năng vàtính ổn định cho phép nó tồn tại song song với các hệ điều hành thương mại khác.Hơn nữa, sự phổ biến của mã nguồn Linux trên Internet đã đóng góp rất nhiều cho
sự phổ cập của Linux Một trong những đặc điểm quan trọng của Linux là nó hỗ trợnhiều hệ thống tập tin Điều này làm cho nó rất linh động và có thể cùng tồn tại vớinhiều hệ điều hành khác Từ những phiên bản đầu tiên, Linux đã hỗ trợ 15 loại tậptin : ext, ext2, xia, minix, umsdos, msdos, vfat, proc, smb, ncp, iso9660, sysv, hpfs,affs và ufs
Trong Linux, cũng như Unix, hệ thống tập tin được truy xuất thông qua mộtcấu trúc cây thừa kế đơn thay vì là các thiết bị xác định (như tên ổ đĩa hoặc số hiệucủa ổ đĩa) Linux thêm những hệ thống tập tin mới vào cây này khi nó được thiết lập(mount) Tất cả hệ thống tập tin được thiết lập vào một thư mục và được gọi là thưmục thiết lập Khi một đĩa được khởi tạo, trên đĩa được chia thành nhiều partitions.Mỗi partition có một hệ thống tập tin
Nhóm sinh viên chúng em đã chọn đề tài: “Kiến trúc hệ thống File EXT2,
EXT3, EXT4 của các hệ điều hành họ LINUX” Nhưng do kiến thức và kinh
nghiệm còn ít, sự nghiên cứu về đề tài còn nhiều thiếu sót, kính mong thầy giúp đỡ
và chỉnh sửa những thiếu sót giúp chúng em để chúng em có thể hoàn thiện hơnkiến thức của mình
Chúng em xin chân thành cảm ơn!
Trang 5CÁC TỪ VIẾT TẮT
Client: máy khách
IP: Internet Address
RPM: Redhat Package Manager
FQDN: Fully Qualifield Domain Name
NFS: Network File System
Server: máy chủ
SMB= Samba chương trình dùng chia sẻ tài nguyên giữa các Windows PC
và Linux PC
MTA: Mail Transport Agent
PC= Personal computer: máy tính cá nhân
Point, mount_point: điểm truy cập, thường là thư mục, nơi mount các hệthống tập tin
Mount: gắn kết các tập tin vào 1 point nào đó
Umount: gỡ bỏ các tập tin đã được mount vào 1 point nào đó
Username: tên tài khoản người dùng
Password: mật khẩu tương ứng với username
SMB: Samba
SWAT: Samba Web Administration Tool
…
Trang 6Chương 1 Tìm hiểu về hệ điều hành Linux
1.1 Linux là gì?
Linux xuất hiện như một sản phẩm nguồn mở miễn phí và đến nay đã có thể sánh vai với các hệ điều hành thương phẩm như MS Windows, Sun Solaris v.v Linux ra đời từ một dự án hồi đầu những năm 1990 có mục đích tạo ra một hệ điều hành kiểu UNIX cài đặt trên máy tính cá nhân chạy với bộ vi xử lý Intel, tương hợp họ máy tính IBM-PC (còn gọi tắt là PC) Từ lâu, UNIX đã nổi tiếng
là một hệ điều hành mạnh, tin cậy và linh hoạt, nhưng vì khá đắt nên chủ yếu chỉ dùng cho các trạm tính toán hoặc máy chủ cao cấp
Ngày nay Linux có thể cài đặt trên nhiều họ máy tính khác nhau, không chỉ riêng cho họ PC Qua Internet, Linux được hàng nghìn nhà lập trình khắp trên thế giới tham gia thiết kế, xây dựng và phát triển, với mục tiêu không lệ thuộc vào bất kỳ thương phẩm nào và để cho mọi người đều có thể sử dụng thoải mái.Khởi thuỷ, Linux xuất phát từ ý tưởng của Linus Torvalds, khi đó chàng sinh viên Đại học Helsinki ở Phần Lan đã muốn thay thế Minix, một hệ điều hành nhỏ kiểu UNIX
Về cơ bản, Linux bắt chước UNIX cho nên cũng có nhiều ưu điểm của UNIX Tính đa nhiệm thực sự của Linux cho phép chạy nhiều chương trình cùng lúc Với Linux, bạn có thể đồng thời thực hiện một số thao tác, thí dụ chuyển tệp, in ấn, sao tệp, nghe nhạc, chơi game v.v
Linux là hệ điều hành đa người dùng, nghĩa là nhiều người có thể đăng nhập
và cùng lúc sử dụng một hệ thống Ưu điểm này có vẻ không phát huy mấy trênmáy PC ở nhà, song ở trong công ty hoặc trường học thì nó giúp cho việc dùng chung tài nguyên, từ đó giảm thiểu chi phí đầu tư vào máy móc
Ngay cả khi ở nhà, bạn cũng có thể đăng nhập vào Linux với nhiều account khác nhau qua các terminal ảo và tổ chức dịch vụ trên mạng riêng cho mình bằng cách sử dụng Linux với nhiều modem
Trang 7Bản thân việc độc lập với những công ty lớn cũng tiềm tàng một điểm yếu của Linux Khi chưa có một mạng lưới riêng cung cấp dịch vụ bảo trì thì tất nhiên người ta sẽ ngại sử dụng Linux Tuy thế, với sự phát triển của Internet, các tổ chức hỗ trợ người dùng Linux đã tạo nên các Website và forum để tháo
gỡ cho bạn nhiều vấn đề khó khăn
Hơn nữa Linux có thể không chạy tốt với một số phần cứng ít phổ biến, thậmchí việc hỏng hóc hoặc xoá mất dữ liệu đôi khi cũng xảy ra, bởi vì Linux luôn thay đổi và khó được thử nghiệm đầy đủ trước khi đưa lên Internet
Linux không phải là đồ chơi sẵn có, nó được thiết kế nhằm mang đến cho người sử dụng cảm giác cùng tham gia vào một dự án mới Tuy nhiên thực tế cho thấy Linux chạy tương đối ổn định và cho bạn một cơ may không tốn kém
để học và sử dụng UNIX, một họ hệ điều hành chuyên nghiệp hiện nay đang được rất nhiều người dùng trên các máy chủ và trạm tính toán cao cấp
1.2 Tại sao Linux phát triển?
Trước hết, Linux phát triển vì là một trong những hệ điều hành miễn phí và
có khả năng đa nhiệm cho nhiều người sử dụng cùng lúc trên các máy tính tương thích với PC So với những hệ điều hành thương phẩm, Linux giúp bạn ítphải nâng cấp và lại không cần trả tiền, cũng như phần lớn các phần mềm ứng dụng cho nó Hơn nữa, Linux và những ứng dụng đó được cung cấp với cả mã nguồn miễn phí mà bạn có thể lấy về từ Internet, sau đó chỉnh sửa và mở rộng chức năng của chúng theo nhu cầu riêng
Linux có khả năng thay thế một số hệ điều hành thuộc họ UNIX đắt tiền Nếu tại nơi làm việc mà bạn sử dụng UNIX thì ở nhà bạn cũng thích sử dụng một hệ nào đó giống như thế nhưng rẻ tiền Linux giúp bạn dễ dàng truy cập, lướt qua các Website và gửi nhận thông tin trên mạng Internet Nếu bạn là một quản trị viên UNIX thì về nhà bạn cũng có thể sử dụng Linux để thực hiện mọi công việc quản trị hệ thống
Một nguyên nhân khác làm cho Linux dễ đến với người dùng là nó cung cấp
mã nguồn mở cho mọi người
Trang 8Chính điều này đã khiến một số tổ chức, cá nhân hay quốc gia đầu tư vào Linux nhằm mở rộng sự lựa chọn ra ngoài các phần mềm đóng kín mã nguồn
Họ cho rằng, mặc dù có dịch vụ hậu mãi nhưng không gì đảm bảo được rằng khi dùng các sản phẩm đóng kín này trên Internet, các thông tin cá nhân hay quốc gia của họ có bị gửi về một tổ chức hay một quốc gia nào khác hay không.Thí dụ Trung Quốc đã phát triển hệ điều hành Hồng Kỳ từ kernel của Linux để không bị lệ thuộc Microsoft Windows, cũng như họ đang tự nghiên cứu bộ vi
xử lý Hồng Tâm để thay thế cho họ chip Intel
Tại Việt Nam, việc nghiên cứu xây dựng một hệ điều hành từ kernel Linux
đã thu được một số thành công nhất định Chắc bạn cũng đã biết đến Vietkey Linux và CMC RedHat Linux (phiên bản tiếng Việt của RedHat Linux 6.2).Gần đây, các công ty nổi tiếng như IBM, Sun, Intel, Oracle cũng bắt đầu nghiên cứu Linux và xây dựng các phần mềm ứng dụng cho nó
1.3 Các bản phát hành Linux
Nhiều người đã biết đến các nhà sản xuất phần mềm RedHat, ManDrake, SuSE, Corel và Caldera Có thể chính bạn cũng đã từng nghe đến tên các phiên bản Linux như Slackware, Debian, TurboLinux và VA Linux, v.v Quả thật, Linux được phát hành bởi nhiều nhà sản xuất khác nhau, mỗi bản phát hành là một bộ chương trình chạy trên nhóm tệp lõi (kernel) của Linus Tordvalds Mỗi bản như vậy đều dựa trên một kernel nào đó, thí dụ bản RedHat Linux 6.2 sử dụng phiên bản kernel 2.2.4
Hãng RedHat đã làm ra chương trình quản lý đóng gói RPM (RedHat Package Manager), một công cụ miễn phí giúp cho bất cứ ai cũng có thể tự đóng gói và phát hành một phiên bản Linux của chính mình Thí dụ bản
OpenLinux của Caldera cũng đã được tạo ra như thế
1.4 Lợi thế của Linux
Tại sao có thể chọn Linux thay vì chọn một trong những hệ điều hành khác chạy trên PC như DOS, Windows 95/98, Windows NT, hoặc Windows 2000 ?
Trang 9Linux cung cấp cho bạn một môi trường học lập trình mà hiện nay chưa có
hệ nào sánh được Với Linux, bạn có đầy đủ cả mã nguồn, trong khi đó các sản phẩm mang tính thương mại thường không bao giờ tiết lộ mã nguồn
Cuối cùng, Linux mang đến cho bạn cơ hội sống lại bầu không khí của cuộc cách mạng vi tính trước kia Cho đến giữa thập niên 1970, máy tính điện tử còn
là sân chơi riêng của các tổ chức lớn, chẳng hạn như chính quyền, tập đoàn doanh nghiệp và trường đại học Người dân thường đã không thể sử dụng những thành tựu kỳ diệu của công nghệ thông tin
Ngày nay Linux đang làm một cuộc cách mạng ở lĩnh vực phần mềm hệ thống Linux là lá cờ tập hợp những con người không muốn bị kiểm sát bởi các hãng khổng lồ nhân danh kinh tế thị trường để làm xơ cứng óc sáng tạo và cải tiến
Với Linux bạn sẽ khai thác được nhiều thế mạnh của UNIX Trong số những
hệ điều hành thông dụng hiện nay, Linux là hệ điều hành miễn phí được nhiều người sử dụng rộng rãi nhất Bản thân Linux đã hỗ trợ sẵn sàng bộ giao thức mạng TCP/IP, giúp bạn dễ dàng kết nối Internet và gửi thư điện tử Linux thường đi kèm XFree86 là một giao diện đồ hoạ cho người sử dụng (GUI) và cũng được phát hành miễn phí XFree86 cung cấp cho bạn các chức năng phổ biến ở một số thương phẩm khác, chẳng hạn như Windows
Linux đã có hàng ngàn ứng dụng, từ các chương trình bảng tính điện tử, quảntrị cơ sở dữ liệu, xử lý văn bản đến các chương trình phát triển phần mềm cho nhiều ngôn ngữ, chưa kể nhiều phần mềm viễn thông trọn gói Ngoài ra Linux cũng có hàng loạt trò chơi giải trí trên nền ký tự hoặc đồ hoạ Phần lớn những chương trình tiện ích và ứng dụng có sẵn cho Linux lại không mất tiền mua Các bạn chỉ phải trả chi phí cho việc tải chúng từ Internet xuống hoặc trả cước phí bưu điện
Đến với Linux, giới lập trình sẽ có một loạt các công cụ phát triển chương trình, bao gồm các bộ biên dịch cho nhiều ngôn ngữ lập trình hàng đầu hiện nay, chẳng hạn như C, C++ Bạn cũng có thể dùng ngôn ngữ Pascal thông qua trình biên dịch FreePascal Nếu bạn không thích sử dụng những ngôn ngữ vừa
Trang 10kể, Linux có sẵn các công cụ như Flex và Bison để bạn xây dựng ngôn ngữ riêng cho mình
Hai khái niệm hiện nay được đề cập rất nhiều là hệ thống mở (open system)
và tính liên tác (interoperability) đều gắn với khả năng của những hệ điều hành
có thể liên lạc với nhau Phần lớn các hệ mở đòi hỏi phải thoả mãn tương thích tiêu chuẩn IEEE POSIX (giao diện hệ điều hành khả chuyển) Linux đáp ứng những tiêu chuẩn ấy và được lưu hành với mã nguồn mở
1.5 Ai phát triển Linux ?
Nói chung, Linux là một hệ thống được xây dựng bởi các hacker và cho các hacker Mặc dù hiện nay trong xã hội từ hacker thường có hàm ý tiêu cực, song nếu theo nghĩa ban đầu thì hacker không phải là tội phạm Hacker tìm hiểu những gì có bên trong một hệ thống cho đến từng chi tiết và có khả năng sửa chữa nếu hệ thống ấy bị hỏng hóc Đa số các hacker không xâm nhập hệ thống
vì tiền bạc hoặc ác ý, mặc dù sau này đã có những người vượt qua giới hạn ấy
và bị tập thể các hacker gọi là cracker (tin tặc) hay hacker mũ đen Giới hacker cảm thấy bị xúc phạm khi mọi người xem họ như lũ phá hoại và gọi chung là tin tặc
Thực ra, những hacker chân chính, còn gọi là hacker mũ trắng, rất có công trong việc phát hiện kẽ hở của các phần mềm, giúp mọi người và chủ nhân của những phần mềm ấy cảnh giác trước sự tấn công của giới tin tặc Cũng nhờ công cuộc bảo vệ này mà Linux và các ứng dụng Linux (nói rộng hơn là các phần mềm nguồn mở) càng ngày càng an toàn hơn
Ngoài đời, phần lớn những người sử dụng UNIX chỉ được cấp cho một số account với quyền hạn thu hẹp, do đó một người bình thường không thể thử nghiệm đầy đủ các câu lệnh UNIX Với Linux bạn có một phiên bản hoạt động tương tự UNIX nhưng cho phép quản trị, sử dụng, vào ra thoải mái không giới hạn, một điều hiếm gặp trong cuộc sống
Trang 11Chương 2 Phân vùng đĩa cứng
2.1 Giới thiệu chung
Với sự hình thành và phát triển của hệ điều hành Linux, giờ đây chúng ta có rất nhiều cách trong việc chọn lựa các hệ thống file (file system) cho từng loại ứng dụng
Hệ thống tập tin Linux được tổ chức theo dạng cây Có một vị trí khởi điểm, gọi là root (gốc) Bất kỳ một hệ thống Unix/Linux nào cũng có một thư mục đặc biệt gọi là thư mục gốc (root directory) ký hiệu là dấy slash (“ / ”) Đây là điểm bắt đầu để gắn (mount point) tất cả các phần tử còn lại như hệ thống disks,partitions, CD ROM … vào hệ thống Linux/Unix Tất cả các thư mục và tập tin khác, kể cả các tập tin hệ thống và các thư mục hệ thống cũng chỉ là cấp con của root Khi hệ thống Linux/Unix khởi động, thông qua tiến trình init – nó sẽ
tự động moun (gắn) các tập tin hệ thống và thư mục hệ thống vào root (/) Trong phần này chúng tôi muốn giới thiệu các hệ thống file tiên tiến được sử dụng trong Linux như EXT2, EXT3, EXT4 có tính tin cậy cao và có khả năng ghi nhớ quá trình thao tác trên dữ liệu (journaling)
2 2 Hệ thống File EXT2
2 2.1 Giới thiệu
Ext2 hay hệ thống tập tin mở rộng thứ hai là một hệ thống tập tin dành chocác hệ thống nhân Linux Lúc đầu nó được thiết kế để thay thế cho hệ thống tậptin mở rộng Nó đủ nhanh để dùng làm tiêu chuẩn để công năng của các loại hệđiều hành Linux Hạn chế chính của nó là không phải hệ thống tập tin nhật ký
Hệ thống file ext2 được giới thiệu vào đầu năm 1993 và được thiết kế riêngcho Linux Nó có nhiều tính năng tăng cường để khắc phục các hạn chế của các
hệ thống file khác
Trang 12Kích thước hệ thốngfile lớn nhất
Kích thước file lớnnhất
Kích thước block tuỳbiến
Những đặc trưng của hệ thống tập tin Ext2 chuẩn:
- Hệ thống tập tin Ext2 hỗ trợ các kiểu tập tin Unix chuẩn: các tập tin thôngthường, các tập tin thiết bị đặc biệt và các tập tin liên kết
- Hệ thống tập tin Ext2 có khả năng quản lý các hệ thống tập tin trên nhữngphân vùng kích cỡ rất lớn Trong khi mã nhân (kernel) gốc giới hạn kích cỡ
hệ thống tập tin lớn nhất là 2GB, nghiên cứu gần đây trong lớp VFS đã tănglên đến giới hạn là 4TB Vì vậy, ngày nay nó có thể sử dụng các đĩa dunglượng lớn mà không cần tạo nhiều phân vùng
- Hệ thống tập tin Ext2 cung cấp tên tập tin dài Đây là khả năng của Linux màtrên các hệ thống UNIX chuẩn không hề cung cấp Tối đa một tên tập tin là
255 ký tự và có thể có khoảng trắng Nghiên cứu gần đây trên lớp VFS, giớihạn này đã tăng lên 4TB Vì thế, nó có thể sử dụng các đĩa kích thước rất lớn
mà không cần tạo nhiều phân vùng
- Hệ thống tập tin Ext2 dự trữ một vài block cho super user (root) Thôngthường, 5% các block này được dự trữ Điều này cho phép người quản lýphục hồi dễ dàng từ quá trình người dùng làm đầy các hệ thống tập tin
- Hệ thống tập tin Ext2 cho phép truy xuất đến các hệ thống khác như FAT,FAT32, MSDOS trên Windows 9.x và DOS một cách dễ dàng Ngược lại,chúng ta có thể cũng có thể từ các hệ thống FAT, NTFS, BeOS, OS/2,MacOS truy xuất đến Ext2 thông qua các trình tiện ích như LTOOLS Vàcòn nhiều khả năng khác như có thể dễ dàng thêm vào các khả năng choExt2
Trang 13Mỗi block lại được chia nhỏ hơn thành các fragment, nhưng tôi vẫn chưa thấymột hệ thống tập tin nào mà kích thước fragment không khớp với kích thước mộtblock Ngoài trừ superblock, tất cả các cấu trúc dữ liệu được thay đổi lại kích thướccho khớp với các block Đây là cái cần nhớ khi cố gắng mount bất kỳ hệ thống tậptin nào khác trên một đĩa mềm Ví dụ, Inode Table Block chứa entry trong mộtblock 4KB nhiều hơn một block 1KB, nên người ta phải đưa vào tính toán khi nàonên truy xuất cấu trúc đặc biệt này.
Block đầu tiên trong mỗi partition Ext2 không bao giờ được quản lý bởi hệthống tập tin Ext2, bởi vì nó được dùng cho partition boot sector Phần còn lại củapartition Ext2 được chia thành các block group, được biểu diễn như hình sau:
Sự bố trí của một phân vùng Ext2 và của một block group
Tất cả các block group đều có cùng kích thước và lưu trữ liên tiếp nhau, vì vậy nhân
có thể tìm thấy được vị trí của một block group trên đĩa từ số chỉ mục kiểu nguyêncủa nó Trong khi một đĩa mềm chỉ chứa một block group điều khiển tất cả cácblock của hệ thống tập tin, thì một đĩa cứng 10GB có thể dễ dàng được chia thành
30 block group như vậy, mỗi block group điều khiển một số lượng block cụ thể
Trang 14Vị trí đầu của mỗi block group là các cấu trúc dữ liệu khác nhau liệt kê đườngdẫn của phần còn lại, cung cấp nhiều thông tin hơn, cấu trúc dữ liệu xác định trạngthái hệ thống tập tin hiện hành Sau đây là một tổ chức hệ thống tập tin Ext2 trênmột đĩa mềm:
Figure 1-1 Bố trí dữ liệu trên đĩa mềm.
offset # of blocks description
Và đây là tổ chức của một hệ thống file Ext2 20MB:
Figure 1-2 Bố trí dữ liệu trên phân vùng 20MB
offset # of blocks description
Một bản sao superblock của hệ thống tập tin
Một bản sao của nhóm các ký hiệu miêu tả block group
Một block bitmap dữ liệu
Một bảng các inode
Một khoanh dữ liệu thuộc một tập tin, ví dụ như block data
Trang 15Nếu một block không chứa bất kỳ thông tin có nghĩa nào, thì block đó trống.Việc bố trí trên đĩa có thể đoán trước với điều kiện bạn biết một vài thông tin
cơ bản sau: kích thước block, số block trên một block group, số inode trên mộtblock group Thông tin này đều được xác định hay tính toán từ cấu trúc củasuperblock
Nếu không có thông tin về superblock, đĩa sẽ vô ích; do đó nếu đủ khoảngtrống có sẵn thì sẽ tạo ra một hay nhiều bản sao lưu superblock trên đĩa
Block bitmap và Inode bitmap được dùng để xác định block nào và các entryinode nào trống để sử dụng Các data block là nơi lưu trữ nhiều loại tập tin Lưu ýrằng một thư mục cũng được xem là một tập tin trong Exts, sau đây chúng ta sẽ đitìm hiểu chi tiết hơn
Trong khi tất cả sự bổ sung Ext2 cố gắng tương thích, một số field trong cáccấu trúc khác nhau được tùy biến để khớp với những yêu cầu của một hệ điều hành
cụ thể
2.2.2.1 Superblock
Superblock là cấu trúc trên một đĩa Ext2 chứa thông tin cơ bản về các đặc tínhcủa hệ thống tập tin Không có Superblock thì không dùng đĩa được vì Superblockchứa các thông tin cơ bản như: kích thước của một block, tổng số block trên mộtblock group, tổng số inode trên một block group… Nhờ các thông tin này mà ta cóthể dự đoán, tính toán các thành phần và cấu trúc trong một block group
Cấu trúc chi tiết của một Superblock như sau:
Figure 1-3 Cấu trúc của Superblock
offset size description
Trang 17Chú ý rằng giá trị này luôn là 0 cho hệ thống tập tin có kích thước một block lớnhơn 1KB, và bằng 1 với hệ thống tập tin có kích thước một block là 1KB.Superblock luôn bắt đầu từ byte thứ 1024 của đĩa, thường là byte đầu tiên của sectorthứ 3
s_frags_per_group
Giá trị 32 bit cho biết tổng số fragment trên một block group Nó cũng được dùng
để xác định kích thước của một block bitmap của mỗi block group
Trang 18Phiên bản Unix, như được xác định bởi POSIX, của lần viết gần nhất truy cập vào
s_errors
Giá trị 16 bit cho biết trình điều khiển hệ thống tập tin nào được thực thi khi pháthiện thấy một lỗi Các giá trị chi tiết được liệt kê trong bảng sau:
Table 1-1 Giá trị EXT2_ERRORS
EXT2_ERRORS_CONTINUE 1 Tiếp tục nếu không có gì xảy ra
EXT2_ERRORS_PANIC 3 Gây ra lỗi ở nhân (kernel panic)
EXT2_ERRORS_DEFAULT Thay đổi Kể từ việc xét lại 0.5, cái này cũng
Trang 20Giá trị 32 bit được dùng như chỉ mục đến inode đầu tiên có thể sử dụng cho các tậptin chuẩn Trong việc duyệt hệ thống tập tin không động, inode không dự trữ đầutiên được cố định là 11 Với câu lệnh duyệt động của hệ thống tập tin, nó có thể bổsung giá trị này
s_feature_ro_compat
Giá trị 32 bit cho biết các đặc trưng chỉ đọc “read-only” của bitmask Việc thực thi
hệ thống tập tin nên gắn vào như chỉ đọc nếu đặc tính xác định của bất kỳ bitmasknào không được hỗ trợ
Trang 21Giá trị 64 byte cho biết đường dẫn thư mục ở đó hệ thống tập tin được gắn vào gầnnhất Thông thường không được dùng, nó có thể phục vụ cho việc tự tìm kiếm thờiđiểm gắn vào mà không xác định trên dòng lệnh Hơn nữa đường dẫn được kết thúc
là 0 vì những lý do tương thích Đường dẫn hợp lệ được tạo từ các ký tự
Các group descriptor được định vị ở block đầu tiên sau block chứa trong cấu trúcsuperblock Các thành phần của group descriptor:
Figure 1-4 Cấu trúc group_desc
offset size description
Tất cả chỉ cho biết số thứ tự block là tuyệt đối
Trang 22Mỗi bit diễn tả trạng thái hiện tại của một block với group đó, trong đó 1 có nghĩa là
“đã dùng” và 0 có nghĩa là “còn trống/có thể dùng được” block đầu tiên của blockgroup này được mô tả bởi bit 0 của byte 0, cái thứ hai được mô tả ở bit 1 của byte 0.block thứ 8 được mô tả bởi bit 7 (bit quan trọng nhất) của byte 0 trong khi đó blockthứ 9 được mô tả bởi bit 0 (bit ít quan trọng nhất) của byte 1
Trang 23Có một vùng inode table trên một group và nó có thể được xác định bởi việc đọc giátrị bg_inode_table trong group descriptor tương ứng của nó Có các inodes_inodes_per_group trên một bảng
Mỗi inode chứa thông tin về tập tin vật lý đơn trên hệ thống một tập tin có thể làmột thư mục, một socket, một bộ đệm, ký tự hay tập tin thiết bị, tập tin liên kết haytập tin thông thường Vì vậy một inode có thể được hiểu như một block có thông tinliên quan đến một thực thể, mô tả vị trí của nó trên đĩa, kích thước và quyền sở hữucủa nó Cấu trúc của một inode như sau:
Figure 1-5 Cấu trúc inode
offset size description
Trang 24Một số entry đầu tiên của bảng inode được dự trữ TrongEXT2_GOOD_OLD_REV có 11 entry dự trữ trong khi ở EXT2_DYNAMIC_REVmới hơn số entry của inode được dự trữ được chỉ rõ trong s_first_ino của cấu trúcsuperblock Sau đây là danh sách của các entry inode dữ trữ được biết đến nhiềunhất:
Table 1-4 Bảng giá trị EXT2_*_INO
Trang 25EXT2_S_IRWXU 0x01C0 user access rights mask
Trang 26Giá trị 32 bit cho biết số lượng các block được dự trữ cho dữ liệu tập tin tương ứng
nó bao gồm cả các block đã dùng và block dự trữ trong trường hợp tập tin tăng kích thước
Một điểm quan trọng cần lưu ý là giá trị này cho biết số block 512 byte và không xác định kích thước của số block được xác định trong superblock Vì vậy nếu một tập tin chỉ dùng một block của hệ thống tập tin và kích thước là 1024 byte, giá trị i_blocks của nó sẽ là 2
Entry thứ 13 là một số block gián trực tiếp, có nghĩa là tại block dữ liệu cụ thể, bạn
sẽ tìm thấy một dãy số các block trực tiếp
Trang 27Entry thứ 14 là một số block gián tiếp hai lần Điều này có nghĩa là tại block dữ liệu
cụ thể, bạn sẽ tìm thấy một dãy số block gián tiếp, cái mà chứa một dãy số block có thẻ được truy xuất một cách trực tiếp
Entry thứ 15 là một số block gián tiếp ba lần Nó là một số block chứa một dãy số block gián tiếp hai lần, v.v…
Mỗi dãy block gián tiếp/gián tiếp hai lần/ gián tiếp ba lần chứa nhiều entry của số block 32 bit nếu có thể (để lấp đầy toàn bộ block)
Trang 29Giá trị 16 bit cao của user_id
l_i_gid_high: Giá trị 16 bit cao của group_id
m_i_frag: Giá trị 8 bit cho biết số fragment
m_i_fsize: Giá trị 8 bit cho biết kích thước fragment
2.2.2.6 Data Blocks
Vùng Data block gồm các block dữ liệu Được quản lý bởi các bit tương ứngtrong vùng block bitmap Nếu là một tập tin bình thường thì đây là nơi lưu trữ nộidung của tập tin, nhưng nếu tập tin là thư mục thì nơi đây sẽ chứa các directory-entry
2.2.3 Cấu trúc thư mục
Thư mục là một file đặc biệt mà nội dung của nó (chứa tại vùng Data blocks)gồm toàn các directory entry Thư mục được lưu trữ giống như tập tin và có thểđược nhận ra bằng việc tìm trong các bit dịnh dạng tập tin ext2_inode.i_mode đốivới giá trị EXT2_S_IFDIR.
Thư mục gốc luôn là entry thứ hai của bảng inode (EXT2_ROOT_INO có giá trị
là 2) Bất kỳ thư mục con nào từ thư mục gốc có thể được định vị bằng việc quansát nội dung của tập tin thư mục gốc
2.2.3.1 Định dạng Directory File
Các directory-entry trong Ext2 của Linux có kích thước không bằng nhau(directory-entry còn được gọi là record) Nhưng mỗi directory-entry đều có đủ 5trường (field) sau:
Figure 2-1 directory-entry
offset size description