Bài tập hệ điều hành cấp phát không liên tục năm 2024

Uploaded by

2luavn

0% found this document useful (0 votes)

909 views

17 pages

Câu hỏi ôn tập môn hệ điều hành

Copyright

© © All Rights Reserved

Available Formats

PDF, TXT or read online from Scribd

Share this document

Did you find this document useful?

Is this content inappropriate?

0% found this document useful (0 votes)

909 views17 pages

Câu hỏi ôn tập môn hệ điều hành

Uploaded by

2luavn

Câu hỏi ôn tập môn hệ điều hành

Jump to Page

You are on page 1of 17

Search inside document

Reward Your Curiosity

Everything you want to read.

Anytime. Anywhere. Any device.

No Commitment. Cancel anytime.

Bài tập hệ điều hành cấp phát không liên tục năm 2024

  • 1. CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN -�����- BÀI TẬP LỚN MÔN KIẾN TRÚC MÁY TÍNH VÀ HỆ ĐIỀU HÀNH ĐỀ TÀI: Nghiên cứu tìm hiểu về Hệ thống tệp tin trong HĐH Linux. Giảng viên hướng dẫn: Nguyễn Bá Nghiễn Lớp : IT6067.3 Nhóm sinh viên thực hiện: Nhóm 3 Đặng Đình Kiên – 2022602212 Hoàng Quang Kỳ - 2022601978 Nguyễn Nhật Minh - 2021603747 Hà Nội, 2023
  • 2. .............................................................................................................. 1 CHƯƠNG 1. GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX VÀ HỆ THỐNG TỆP TIN............................................................................................................... 2 1.1.Giới thiệu chung về hệ điều hành Linux.................................................... 2 1.1.1. Lịch sử ra đời của HĐH Linux ......................................................... 2 1.1.2.Các bản phân phối của Linux. ........................................................... 4 1.2. Hệ thống tệp tin ( File System )................................................................ 6 1.2.1. Khái niệm về hệ thống tệp tin........................................................... 6 1.2.2. Các yêu cầu của hệ thống tệp tin ...................................................... 6 1.2.3. Các thao tác của hệ thống tệp tin...................................................... 6 1.2.4. Quản lý tệp tin................................................................................... 7 1.2.5. Bảo vệ tệp tin và đảm bảo tính toàn vẹn dữ liệu. ............................. 7 CHƯƠNG 2. HỆ THỐNG QUẢN LÝ TẬP TIN TRONG LINUX ............... 9 2.1. Hệ thống File Ext2 (linux native) ............................................................. 9 2.1.1.Giới thiệu chung. ............................................................................... 9 2.1.2.Tổ chức đĩa....................................................................................... 10 2.1.2.1.Superblock. .............................................................................. 12 2.1.2.2. Group Descriptor. ................................................................... 12 2.1.2.3. Block Bitmap.......................................................................... 12 2.1.2.4. Inode Bitmap. ......................................................................... 13 2.1.2.5. Inode Table. ............................................................................ 13 2.1.2.6. Data Blocks............................................................................. 13 2.1.3. Cấu trúc thư mục............................................................................. 14 2.1.3.1. Định dạng Directory File........................................................ 14 2.1.3.2. Directory Format. ................................................................... 14 2.1.4.Tổ chức tập tin trên Linux ............................................................... 18 2.1.5. Inodes, File Identifiers .................................................................... 21 2.1.5.1. Inode Number. ........................................................................ 21 2.1.5.2. Định vị cấu trúc của Inode...................................................... 22 2.1.5.3. Định vị Inode Table................................................................ 22 2.1.6. Kiểu của tệp. ................................................................................... 22 2.1.7.Một số thao tác trên tệp.................................................................... 23 2.1.8. Quyền truy cập tệp tin..................................................................... 24 2.1.9. Các thuộc tính của file. ................................................................... 25 2.1.9.1. Các thuộc tính chuẩn. ............................................................. 26 2.1.9.2. Các thuộc tính mở rộng. ......................................................... 26
  • 3. hệ thống file EXT2. ........................................................ 27 2.2.Hệ thống File EXT3................................................................................. 28 2.2.1. Giới thiệu. ....................................................................................... 28 2.2.2. Journaling File. ............................................................................... 28 2.2.3. Cơ chế và khả năng chuyển đổi...................................................... 29 2.2.4. So sánh hệ thống file EXT2 và EXT3. ........................................... 31 2.3. Liên hệ so sánh với nguyên lý quản lý hệ tệp đã học. ............................ 31 KẾT LUẬN ........................................................................................................ 33
  • 4. VẼ Hình 1.1: Biểu tượng của Linux. 6 Hình 1.2: Một số bảng phân phối chủ yếu của Linux 9 Hình 2.1: Bảng giới hạn lý thuyết của EXT2 trong Linux 12 Hình 2.2: Bảng so sánh giới hạn của các hệ thống file Minix,EXT, EXT2 12 Hình 2.3:Việc thực thi Indexed Directories 21 Hình 2.4: Danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) 23 Hình 2.5: Sơ đồ một hệ thống file nhật ký 37 Hình 2.6: So sánh hệ thống tệp tin trên hệ điều hành Linux với Window 41
  • 5. hành là một tập các hệ điều hành hệ thống điều khiển mọi hoạt động của máy tính và tạo môi trường giao diện giữa người sử dụng máy tính và máy tính. Vì vậy, hệ điều hành rất quen thuộc với mọi người sử dụng; tất cả mọi người sử dụng khi làm việc với máy tính cần phải biết thao tác (dù là những thao tác đơn giản) với mọi hệ điều hành cụ thể. Hiểu biết, nắm vững nguyên lý hoạt động của hệ điều hành để từ đó có thể khai thác các hệ điều hành hành hiệu quả là một nhu cầu thực tế không thế thiếu đối với cán bộ phụ trách kỹ thuật và quản lý các hệ thống máy tính. Tài nguyên máy tính mà điển hình là hệ cơ sở dữ liệu (Database System) có ảnh hưởng rất nhiều tới tính hiệu quả của việc sử dụng máy tính. Mà trong đó hệ thống các file là hệ thống chủ yếu. Bởi vậy quản lý hệ thống file như thế nào có ảnh hưởng lớn và trực tiếp tới hiệu quả sử dụng máy tính. Việc quản lý hệ thống file được xây dựng và tổ chức tùy thuộc vào từng hệ điều hành. Và sau đây nhóm chúng em xin được trình bày về: Nghiên cứu tìm hiểu về Hệ thống tệp tin trong hệ điều hành Linux.
  • 6. THIỆU VỀ HỆ ĐIỀU HÀNH LINUX VÀ HỆ THỐNG TỆP TIN 1.1.Giới thiệu chung về hệ điều hành Linux Hình 1.1: Biểu tượng của Linux. 1.1.1. Lịch sử ra đời của HĐH Linux Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành. Nó có lẽ là một ví dụ nổi tiếng nhất của phần mềm tự do và của việc phát triển mã nguồn mở. Phiên bản Linux đầu tiên do Linus Torvalds (ông sinh ngày 28 tháng 12 năm 1969 là một nhà khoa học máy tính người Mỹ gốc Phần Lan) viết vào năm 1991, lúc ông còn là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994.
  • 7. phiên bản hệ điều hành miễn phí giống như hệ điều hành Unix. Linux được thiết kế riêng dành cho hệ máy PC, và có nhiều cải tiến cho người sử dụng có thể so sánh với hiệu suất cao nhất của trạm làm việc UNIX. Một vài hãng lớn như IBM, Compaq đã tham gia sử dụng Linux. Cũng có một vài công ty đã bắt đầu đóng gói Linux như Redhat, Samba, Corel…Mặc dù vậy họ cũng chỉ có thể thêm vào các gói dịch vụ và các tài liệu hướng dẫn qua các phần mềm chạy trên Linux. Ngày càng nhiều các công ty thương mại sử dụng Linux trên các mạng của họ nhờ tính hiệu quả, bảo mật tốt (do Linux được xây dựng trên nền mã nguồn mở) và khả năng tiết kiệm về tài chính của nó. Từ 1991 Linux đã nhanh chóng phát triển và được coi là hệ điều hành thay thế cho Window và các hệ thống Unix. Khi Redhat phát hành bản Linux thương mại có sự hỗ trợ về kỹ thuật và các bản hướng dẫn. Linux trở lên cực kì phổ biến, ngày càng nhiều người sử dụng cài đặt Linux trên các máy tính cá nhân, các công ty sử dụng Linux để quản lý mạng của họ. Linux trở thành hiện tượng mới nhất để bình luận trên thị trường hệ điều hành và phần mềm máy tính. Một cách chính xác, thuật ngữ “Linux” được sử dụng để chỉ Nhân Linux nhưng tên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng như là các bản phân phối Linux. Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ Web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường làm việc desktop, như GNOME và KDE, và các ứng thích hợp cho công việc văn phòng như Open office. Khởi đầu, Linux được phát triển cho dòng vi xử lý 386, hiện tại hệ điều hành này hỗ trợ một số lượng lớn các kiến trúc vi xử lý, và được sử dụng trong nhiều ứng dụng khác nhau từ máy tính cá nhân cho tới các siêu máy tính và các thiết bị nhúng như là các máy điện thoại di động. Đặc tính nổi trội của nó là được phát triển bởi một mô hình phát triển phần mềm nguồn mở hiệu quả. Tuy nhiên, hiện tại số lượng phần cứng được hỗ trợ bởi Linux vẫn còn rất khiêm tốn so với Windows vì các trình điều khiển thiết bị tương thích với Windows nhiều hơn là Linux. Nhưng trong tương lai số lượng phần cứng được hỗ trợ cho Linux sẽ tăng lên. 1.1.2.Các bản phân phối của Linux. Linux hiện nay có nhiều bản phân phối khác nhau, một phần là bởi vì tính chất nguồn mở của nó. Sau đây là một số bản phân phối chủ yếu của Linux.
  • 8. bản mới nhất Trang web chính thức Các bản dẫn xuất Ubuntu 22.4 http://www.ubuntu.com/ Kubuntu, Studio, Edubuntu, Xubuntu Mate,……. Debian 12.2 http://www.debian.org/ Ultimate Edition 7.1 http://www.elementaryos.org/ Red hat Enterprise Linux 7.5 http://ultimateedition.info/ Fedora 35 https://www.fedoraproject.org/ SUSE Linux enterprise Desktop 15 http://vi.opensuse.org/ openSUSE 11.4, Mono 2.10.4 Linux Mint 21.2 http://linuxmint.com/ Knoppix 9.1 http://www.knoppix.org/ PCLinuxOS 2023 http://www.pclinuxos.com CentOS 7 http://www.centos.org/ Gentoo 20170907 http://www.gentoo.org/ Slackware 14.2 http://www.slackware.com/ SLAX 7.0.8 http://www.slax.org/ Sabayon V.1.1.5 http://www.sabayon.org/ OpenSolaris 11.1 http://www.opensolaris.org/ Puppy linux 6.3 http://puppylinux.org/ Hacao linux 4.21 http://www.hacao.com/ Asianux Sever 7 http://www.asianux.vn/ Back Track- Linux, Kali Linux SliTaz 5.0 Rolling release http://www.slitaz.org/ Linpus Linux Linpus 2.2 http://www.linpus.com/ GNU/Linux BackTrack 6.16.1 http://www.backtrack-linux.org/ Asianux Server BOSS Linux 6.0(Anoop) http://www.bosslinux.in/ Kali linux 2017.2 http://www.kali.org/ Kali-linux, Back Track. Backbox 5 http://www.backbox.org/ Backbox, linux
  • 9. http://superubuntu.linuxfreedom.c om/.html ubuntu, Z Zorin OS 16.3 http://zorin-os.com/ ubuntu, Super ubuntu, Linux Mint. EndeavourOS 22.6 https://endeavouros.com/ KaOS 2022.06 https://kaosx.us/ Manjaro Linux 21.3.0 https://manjaro.org/ Kaisen Linux 2.1 https://kaisenlinux.org/ OpenSUSE 15.4 https://get.opensuse.org/ Linux Lite 6.0 LTS https://www.linuxliteos.com/ Alpine Linux 3.16.0 https://www.alpinelinux.org/ Fedora Games Spin https://labs.fedoraproject.org/gam es.html Hình 1.2: Một số bảng phân phối chủ yếu của Linux (cập nhật vào 30/11/2023) 1.2. Hệ thống tệp tin ( File System ) 1.2.1. Khái niệm về hệ thống tệp tin. Hệ thống tập tin hoặc hệ thống tệp (file system) được dùng để chỉ 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 để theo dõi các tập tin trên ổ đĩa hoặc các phân vùng. Hệ thống tập tin cũng kiểm soát cách lưu trữ và truy xuất dữ liệu. Có nhiều loại hệ thống tập tin khác nhau. Mỗi loại có cấu trúc và logic khác nhau, thuộc tính của tốc độ, tính linh hoạt, bảo mật, kích thước và nhiều hơn nữa. Một số hệ thống tập tin đã được thiết kế để sử dụng cho các ứng dụng cụ thể.
  • 10. cầu của hệ thống tệp tin Mặc dù các hệ thống tệp tin có thể tổ chức theo các nguyên tắc khác nhau nhưng cần phải đảm bảo các yêu cầu chung như sau: - Hệ thống phải được tổ chức sao cho dễ tìm kiếm, dễ lưu trữ cập nhật, tiết kiệm không gian nhớ. - Phải đảm bảo tính độc lập của hệ thống tệp tin với hệ thống và các thiết bị ngoại vi. - Hệ thống tệp tin phải đảm bảo tính an toàn dữ liệu khi có sự cố chương trình hoặc kỹ thuật. - Hệ thống tệp tin phải đảm bảo tính an toàn trong vấn đề truy nhập thông tin người sử dụng. 1.2.3. Các thao tác của hệ thống tệp tin. Một hệ thống tệp tin dù phức tạp hay đơn giản cũng đều phải cung cấp cho người sử dụng những công cụ đơn giản để thao tác với tệp tin. Trong hệ thống tệp tin thường có những thao tác sau: - Tạo tệp tin - Đọc tệp tin - Bổ sung cập nhật dữ liệu vào tệp tin - Thay đổi thuộc tính tệp tin - Xóa tệp tin Để truy cập tới các tệp tin, hệ thống tệp tin sử dụng một số phương pháp: - Truy cập thông qua giao diện người dùng: Bạn có thể truy cập và quản lý các tệp tin thông qua giao diện người dùng của hệ điều hành. Ví dụ, trên Windows, bạn có thể sử dụng Windows Explorer để duyệt và thao tác với các tệp tin và thư mục. Trên MacOS, bạn có thể sử dụng Finder để truy cập và quản lý các tệp tin. - Sử dụng lệnh trong dòng lệnh: Bạn có thể sử dụng các lệnh trong dòng lệnh để truy cập và thao tác với các tệp tin và thư mục trên hệ điều hành. Ví dụ, trên Linux, bạn có thể sử dụng lệnh ls để liệt kê các tệp tin và thư mục, cd để di chuyển đến thư mục khác, cp để sao chép tệp tin, mv để di chuyển hoặc đổi tên tệp tin, và rm để xóa tệp tin. - Truy cập từ xa: Bạn có thể truy cập và quản lý các tệp tin từ xa thông qua các giao thức như FTP (Giao thức truyền tệp) hoặc SSH (Giao thức Shell an toàn). Điều này cho phép bạn truy cập vào máy tính từ xa và thực hiện các thao tác trên các tệp tin và thư mục.
  • 11. ứng dụng quản lý tệp tin: Có nhiều ứng dụng quản lý tệp tin bên thứ ba cung cấp các tính năng mở rộng và quản lý tệp tin hiệu quả hơn. Ví dụ, có các ứng dụng như Total Commander, FileZilla, hoặc WinSCP cho phép bạn truy cập và quản lý tệp tin trên máy tính. 1.2.4. Quản lý tệp tin. Quản lý tệp tin là tổ chức các thư mục thiết bị sao cho việc thao tác với các tệp tin là tối ưu nhất. Các hệ điều hành thực tế tồn tại một số kiểu tổ chức: - Tổ chức thư mục một mức. - Tổ chức thư mục hai mức. - Tổ chức theo cấu trúc cây. - Tổ chức theo đồ thị không chu trình. 1.2.5. Bảo vệ tệp tin và đảm bảo tính toàn vẹn dữ liệu. Bảo vệ tệp tin thông qua giới hạn quyền truy nhập của người sử dụng như: đọc, viết, xóa… Một số phương pháp bảo vệ tệp tin được áp dụng là: đặt tên, đặt mật khẩu, liệt kê quyền truy nhập… Để đảm bảo tính toàn vẹn dữ liệu, các hệ điều hành thương áp dụng các biện pháp như: lưu trạng thái của tệp tin qua các quá trình sử dụng, lưu trạng thái qua các thời điểm…
  • 12. THỐNG QUẢN LÝ TẬP TIN TRONG LINUX 2.1. Hệ thống File Ext2 (linux native) 2.1.1.Giới thiệu chung. Hệ thống tệp mở rộng Ext2 hay hệ thống tập tin mở rộng thứ hai là một hệ thống tập tin dành cho các hệ thống nhân Linux. Hệ thống file Ext2 được giới thiệu vào đầu năm 1993 và phát triển bởi Remy Card và được thiết kế riêng cho Linux. Ext2 là hệ thống tệp tin mặc định trong một số bản phân phối Linux như RedHat và Debian. 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. Ext2 cũng được thiết kế với khả năng mở rộng bên trong, với không gian còn lại trong nhiều cấu trúc dữ liệu trên đĩa của nó để sử dụng bởi các phiên bản trong tương lai. Hạn chế chính của nó là không có hệ thống tập tin nhật ký. 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. Kích thước khối 1KiB 2KiB 4KiB 8KiB Tối đa kích thước tập tin 16GiB 256GiB 2TiB 2TiB Tối đa kích thước hệ thống tệp 4TiB 8TiB 16TiB 32TiB Hình 2.1: Bảng giới hạn lý thuyết của EXT2 trong Linux Các giới hạn MINIX EXT EXT2 Kích thước file hệ thống lớn nhất 64MB 2GB 4TB Kích thước file lớn nhất 64MB 2GB 2GB Độ dài tối đa tên file 30 ký tự 255 ký tự 255 ký tự Kích thước block tùy biến Không Không Có Hình 2.2: Bảng so sánh giới hạn của các hệ thống file Minix,EXT, EXT2 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ông thường, các tập tin thiết bị đặc biệt và các tập tin liên kết.
  • 13. tập tin Ext2 có khả năng quản lý các hệ thống tập tin trên những phâ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ăng lên đến giới hạn là 4TB. Vì vậy, ngày nay nó có thể sử dụng các đĩa dung lượ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. Hệ thống tập tin Ext2 dự trữ một vài block cho superuser (root). Thông thường có khoả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 9x 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 cho Ext2. 2.1.2.Tổ chức đĩa. Mục tiêu đầu tiên của việc dùng Ext2 là phải hiểu được tất cả kích thước của các cấu trúc dữ liệu đều dựa trên kích cỡ một block hơn là kích cỡ một sector. Kích cỡ block này thay đổi phụ thuộc vào hệ thống tập tin. Ví dụ trên đĩa mềm, nó là 1KB (2 sector), trong khi trên một phân vùng 10GB, kích cỡ một block thường là 4KB hay 8KB (tương ứng với 8 và 16 sector). Mỗi block lại được chia nhỏ hơn thành các fragment, kích thước fragment khớp với kích thước một block. Tất cả các cấu trúc dữ liệu được thay đổi lại kích thước cho 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ập tin nào khác trên một đĩa mềm. 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ủa partition Ext2 được chia thành các block group.
  • 14. 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ên của nó. Trong khi một đĩa mềm chỉ chứa một block group điều khiển tất cả các block 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ể. Các block group làm tăng sự phân mảnh tập tin, bởi vì nhân (kernel) cố gắng giữ các block data phụ thuộc vào một tập tin trong block group giống nhau, nếu có thể. Mỗi block trong một block group bao gồm các thông tin sau: -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. Nế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ột block group. Thông tin này đều được xác định hay tính toán từ cấu trúc của superblock. Nếu không có thông tin về superblock, đĩa sẽ vô ích; do đó nếu đủ khoảng trố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 entry inode 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, tiếp theo đây chúng ta sẽ cùng tìm hiểu chi tiết hơn. 2.1.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ính của hệ thống tập tin. Không có Superblock thì không dùng đĩa được vì Superblock chứ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ột block 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. 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. Superblock gồm các trường sau: - Kích thước của file system (FS).
  • 15. các block còn chưa cấp phát cho tệp (free block) trong FS. - Danh sách các free block sẵn có trên FS. - Kích thước của danh sách inode. - Tổng số các inode chưa cấp phát(free inode) trong FS. - Chỉ số của free block tiếp theo trong danh sách free block. - Chỉ số của free inode tiếp theo trong danh sách free inode. - Các trường khóa (lock) cho free block và các danh sách free inode. - Cờ (flag) cho biêt các superblock đã có thay đổi. 2.1.2.2. Group Descriptor. Group descriptor là một mảng cấu trúc group_desc, mỗi phần tử mô tả một block group, Group Descriptor cho biết đường dẫn của bảng inode, các block và các inode bitmap của nó, và một số thông tin hữu ích khác. Các group descriptor được định vị ở block đầu tiên sau block chứa trong cấu trúc superblock. Một group_desc như vậy sẽ được tạo ra tương đương với mỗi group descriptor trong hệ thống tập tin. Mỗi cái đại diện cho một block group đơn trong hệ thống tập tin và thông tin của bất kỳ cái nào trong chúng thích hợp với group mà nó đang mô tả. 2.1.2.3. Block Bitmap. Block bitmap thường được xác định tại block đầu tiên, hoặc block thứ hai nếu bản sao lưu của một superblock hiện diện, của block group. Đường dẫn chính thức của nó có thể được xác định bằng cách đọc “bg_block_bitmap” trong các group descriptor tương ứng của nó. Mỗ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 block group 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 đó block thứ 9 được mô tả bởi bit 0 (bit ít quan trọng nhất) của byte 1. 2.1.2.4. Inode Bitmap. Ngoài việc trong bảng Inode mỗi bit diễn tả một inode hơn là một block thì Inode bitmap làm việc giống như Block bitmap. Có thể được xác định được một inode bitmap trên group và vị trí của nó bằng việc đọc giá trị bg_inode_bitmap và group descriptor tương ứng của nó.
  • 16. được tạo ra, tất cả các inode dự trữ được đánh dấu như đã dùng. Đối với Good Old Revision điều này có nghĩa là 11 bit đầu tiên của inode bitmap. 2.1.2.5. Inode Table. Vùng Inode Table được dùng để giữ vết lưu trữ của mỗi tập tin; vị trí của nó, kích thước, kiểu và thứ tự truy xuất tất cả đều được lưu trữ trong các inode. Tên tập tin không được cất giữ ở đây, với vùng Inode table tất cả các tập tin được tham chiếu đến bởi số inode của chúng. Một số thông tin quan trọng có thể tìm thấy trong mỗi dòng của Inode Table bao gồm: 1-Số inode: Đây là số duy nhất đại diện cho inode trong hệ thống tệp. 2-Loại tệp: Xác định xem inode đại diện cho một tệp hay thư mục. 3-Quyền truy cập: Xác định quyền truy cập đối với tệp hoặc thư mục. 4-Kích thước: Kích thước của tệp hoặc thư mục (trong byte). 5-Con trỏ khối: Chứa địa chỉ các khối dữ liệu thực tế của tệp. 2.1.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 ứng trong 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ội dung 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.1.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 định dạng tập tin ext2_inode.i_mode đối vớ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 quan sát nội dung của tập tin thư mục gốc. 2.1.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ó đủ 5 trường (field) sau: Inode: Giá trị 32 bit cho biết số inode của file-entry. Entry không được dùng thì giá trị này là 0.
  • 17. 16 bit không dấu cho biết sự thay thế directory-entry kế tiếp bắt đầu từ directory-entry hiện hành. Name_len: Giá trị 8 bit không dấu cho biết tên chứa bao nhiêu ký tự. File_type: Giá trị 8 bit không dấu dùng để xác định kiểu tập tin. Giá trị này có thể là 0 trong sự bổ sung trước đó. Name : Tên của file entry, các ký tự cho phép thuộc ISO-Latin-1. 2.1.3.2. Directory Format. Khi số lượng tập tin bắt đầu tăng thì việc dùng chuẩn liên kết danh sách định dạng thư mục có thể trở nên chậm. Để tăng hiệu quả cho một hệ thống như vậy, một mảng băm được tạo ra cho phép nhanh chóng định vị tập tin cụ thể được tìm kiếm. - Thuật toán tìm kiếm (Lookup Algorithm): + Tính toán một hash của tên. + Đọc index gốc. + Dùng tìm kiếm nhị phân để tìm index đầu tiên hoặc block lá có thể chứa hash đích (trong trật tự cây). + Lập lại bước trên cho đến khi đạt được cấp độ thấp nhất của cây. + Đọc block entry của thư mục lá và thực hiện tìm kiếm Ext2 thông thường trên nó. + Nếu tên được tìm thấy, trả về buffer và directory-entry của nó. + Ngược lại, nếu bit xung đột của directory-entry tiếp theo được thiết lập, tiếp tục tìm kiếm trên block đã thành công. - Thuật toán chèn (Insert Algorithm): Chèn vào các entry mới vào trong thư mục phức tạp hơn là tìm kiếm, vì cần phải tách các block lá khi chúng đầy, và thỏa mãn điều kiện là cho phép những xung đột khóa hash được điều khiển một cách chắc chắn và có hiệu quả: + Dò index như là tìm kiếm. + Nếu block lá đích đầy, chia nhỏ nó và ghi nhớ block sẽ nhận entry mới. + Chèn thêm entry mới trong block lá sử dụng mã chèn directory-entry Ext2 thông thường. -Tách (Splitting):
  • 18. một nút lá đầy và chúng ta muốn đặt một entry mới vào đó thì lá sẽ bị tách ra, và một phần khoảng trống hash của nó được chia thành nhiều phần. Cách dễ nhất để làm được điều này là sắp xếp các entry theo giá trị hash và cắt ở phần giữa của danh sách đã được sắp xếp. Thao tác này là log(number_of_entries_in_leaf) và không mất nhiều chi phí với điều kiện sử dụng thuật toán sắp xếp có hiệu quả. Một phương pháp khác là dự đoán một giá trị trung bình cho khóa hash, và việc chia phần có thể được làm theo thời gian tuyến tính, nhưng kết quả việc phân chia kém hơn khoảng trống khóa hash có giá trị hơn thuận lợi ít ỏi của thuật toán phân chia tuyến tính. Trong trường hợp bất kỳ, số entry cần sắp xếp được giới hạn bởi số lượng vừa khít trong một . Các xung đột khóa (Key Collisions). Việc điều khiển những chuỗi xung đột khóa hash có một vài phức tạp. Nếu tránh việc tách các chuỗi như vậy giữa các block, vì vậy điểm cắt của một block được điều chỉnh với cái này. Nhưng khả năng vẫn còn nếu block lấp đầy bởi các entry được băm một cách xác định, chuỗi có thể vẫn phải bị tách,được đánh dấu bằng cách đặt một số 1 vào bit bên dưới của entry index trỏ vào block kế thừa, cái mà được làm sáng tỏ một cách tự nhiên bởi sự thăm dò index như là một giá trị trung gian mà không có bất kỳ sự mã hóa đặc biệt nào. Vì vậy, việc điều khiển vấn đề xung đột bắt buộc không có xử lý thực sự, chỉ có mã mở rộng và và sự giảm bớt không đáng kể khoảng trống của khóa băm. Khoảng trống của khóa băm vẫn còn đủ cho số directory-entry có thể tưởng tượng được, lên đến hàng tỷ. Hàm băm (Hash Function) Các đặc tính chính xác của hàm Hash rất ảnh hưởng đến việc thực thi chiến lược index này. Một hàm hash dở sẽ dẫn đến nhiều sự xung đột hoặc sự phân chia khoảng trống hash dở. Xác suất các entry index sau đó cũng được băm tương tự, khoảng cách càng nhỏ thì giá trị này càng nhỏ. Thực tế, khi một block được tách ra, nếu khoảng trống hash của nó quá nhỏ đến nỗi chỉ luôn đầy có một nửa. Sau một số thử nghiệm,đã có một hàm Hash cho ra một sự phân tán hợp lý các khóa Hash dọc theo toàn bộ khoảng trống khóa 31 bit. Điều này làm tăng sự đầy trung bình của các block lá, đạt gần tới giá trị trung bình theo lý thuyết là đầy 3/4 Nhưng hàm Hash hiện tại chỉ để dùng tạm, chờ một phiên bản tốt hơn dựa trên lý thuyết chắc chắn. Sự thực thi (Performance).
  • 19. khả năng thực thi trên Ext2 thông thường đã gây một sự bất ngờ. Với việc thực thi các thư mục rất nhỏ giống với Ext2 chuẩn, nhưng vì kích thước thư mục tăng theo Ext2 chuẩn một cách nhanh chóng làm xuất hiện bậc hai, trong khi htree-enhanced Ext2 tiếp tục lấy tỉ lệ một cách tuyến tính. Uli Luckas chạy điểm chuẩn cho việc tạo tập tin theo các kích thước khác nhau của thư mục nằm trong dãy từ 10,000 đến 90,000 tập tin. Kết quả này rất hài lòng: toàn bộ thời gian tạo file gần như tuyến tính, chống lại việc tăng bậc hai của Ext2 thường. Thời gian được tạo như sau: Indexed Normal 10000 Files: 0m1.350s 0 m23.670s 20000 Files: 0m2.720s 1 m20.470s 30000 Files: 0m4.330s 3 m9.320s 40000 Files: 0m5.890s 5 m48.750s 50000 Files: 0m7.040s 9 m31.270s 60000 Files: 0m8.610s 13 m52.250s 70000 Files: 0m9.980s 19 m24.070s 80000 Files: 0m12.060s 25 m36.730s 90000 Files: 0m13.400s 33 m18.550s Hình 2.3:Việc thực thi Indexed Directories
  • 20. dễ dàng vừa khít bộ nhớ đệm, và thừa số giới hạn trong trường hợp Ext2 chuẩn là việc tìm các block directory trong bộ nhớ đệm buffer, và việc quét cấp độ thấp các entry directory. Trong trường hợp lập chỉ mục htree, thì số chi phí cần được xem xét, tất cả chúng hầu như được giới hạn. Có một vài cách tối ưu cần phải thực hiện, đó là: - Thay vì tìm kiếm tuyến tính trong các nút chỉ thị ở phía trong thì dùng tìm kiếm bằng nhị phân. - Bỏ qua việc dò chỉ mục, đi thẳng đến block luôn nếu chỉ có một block lá trong một thư mục. - Thay vì vào cache bộ nhớ đệm trung gian thì ánh xạ thư mục vào trang cache Mỗi sự tối ưu này sẽ tạo ra một hiệu quả được cải thiện, nhưng không có gì giống như bước nhảy lớn từ N*2 đến Log512(N), ~=N. Trong lúc những tối ưu đó được áp dụng và chúng ta có thể tìm thấy một hiệu quả gấp đôi khác hay tương tự như vậy. Đó là một hiệu quả không đáng kể khi mà thư mục đủ lớn để cần một level cấp 2 vì bộ lưu trữ sẽ rất nhỏ. Việc đi ngang qua các block dữ liệu của thư mục sẽ là một chi phí rất lớn, và một lần nữa, giá trị này có thể tăng lên bởi việc di chuyển các block vào trang cache. Điển hình chúng ta sẽ đi qua 3 block để đọc hay viết một entry thư mục, và số đó tăng đến khoảng 4-5 với những thư mục lớn. Nhưng thực sự thì không có gì so sánh với Ext2 thông thường cái mà đi qua vài trăm block trong tình huống tương tự. 2.1.4.Tổ chức tập tin trên Linux Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo “/” (root directory). Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng.
  • 21. sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) 1. / – Root. - Mỗi một file và thư mục điều bắt đầu từ root directory. - Chỉ có user root có quyền trên các thư mục ở cấp bên dưới. - Còn /root là home directory của user root. 2. /bin – User Binaries. - Chứa file thực thi dạng binary. - Các lệnh sử dụng thông thường trong linux được sử dụng single-user mode được đặt dưới cấu trúc thư mục này. - Các câu lệnh được sử dụng bởi tất cả các user trong hệ thống sẽ được đặt trong đây. 3. /sbin – System Binaries.
  • 22. /bin, bên trong /sbin cũng chứa đựng các file thực thi dạng binary. Các lệnh bên trong /sbin thường được sử dụng bởi system administrator và dùng cho các mục đích là duy trì quản trị hệ thống. 4. /etc – Configuration Files. - Thông thường ở /etc sẽ chứa file cấu hình cho các chương trình hoạt động. - Ở /etc cũng thường chứa các scripts dùng để start, stop, kiểm tra status cho các chương trình. - Ví dụ /etc/resolv.conf (cấu hình dns-server ), hay /etc/network dùng để quản lý dịch vụ network. 5. /dev – Device Files. - Chứa các file device để đại diện các hardware. - Ví dụ /dev/tty1 hay /dev/sda. 6. /proc – Process Information. - Chứa đựng thông tin về quá trình xử lý của hệ thống. - Đây là một pseudo filesystem chứa đựng các thông tin về các process đang chạy. - Đây là một virtual filesystem chứa đựng các thông tin tài nguyên hệ thống. Ví dụ: /proc/cpuinfo cung cấp cho ta thông số kỹ thuật của CPU. 7. /var – Variable Files. - Chứa đựng các file có sự thay đổi trong quá trình hoạt động của hệ điều hành - Ví dụ system log sẽ được đặt tại vị trí này. + System log file /var/log. + database file /var/lib. + email /var/mail. + Các print queue /var/spool. + lock file /var/lock. + Các file tạm thời cần cho quá trình reboot /var/tmp. 8. /tmp – Temporary Files.
  • 23. này chứa các file được tạo ra bởi hệ thống và user. - Các file bên dưới thư mục này được xóa đi khi hệ thống reboot. 9. /usr – User Programs. - Chứa các file binary, library, tài liệu, source-code cho các chương trình. - /usr/bin chứa file binary cho các chương trình của user. Nếu như một user trong quá trình thực thi một lệnh ban đầu sẽ tìm kiếm trong /bin, nếu như không có thì sẽ tiếp tục nhìn vào /usr/bin. Ví dụ một số lệnh như at. awk, cc... - /usr/sbin chứa các file binary cho system administrator. Nếu như ta không tìm thấy các file system binary bên dưới /sbin thì ta có thể tìm ở trong /usr/sbin. Ví dụ một số lệnh như cron, sshd, useradd, userdel. - /usr/lib chứa các file libraries cho /usr/bin và /usr/sbin. - /usr/local dùng để chứa chương trình của các user, các chương trình này được cài đặt từ source. Ví dụ khi ta install apache từ source thì nó sẽ nằm ở vị trí là /usr/local/apache2. 10. /home – Home Directories. - Home directory được chứa đựng thông tin cá nhân của các user. - Ví dụ /home/athena , /home/student. 11. /boot – Boot Loader Files. - Chứa đựng boot loader và các file cần cho quá trình boot tùy theo các phiên bản của kernel. - Các file Kernel initrd, vmlinux, grub được đặt bên dưới /boot. - Ví dụ initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic. 12. /lib – System Libraries. - Chứa các file library hỗ trợ cho các file thực binary nằm bên dưới /bin và /sbin . - Tên của các file library thường là ld* or lib*.so.* . Ví dụ như ld-2.11.1.so, libncurses.so.5.7. 13. /opt – Optional add-on Applications. - opt đại diện cho optional.
  • 24. các chương trình thêm vào của các hãng khác. 14. /mnt – Mount Directory. - Chứa các thư mục dùng để system admin thực hiện quá trình mount. 15. /media – Removable Media Devices. - Chứa thư mục dùng để mount cho các thiết bị removable. Ví dụ như CDROM, Floppy... 16. /srv – Service Data. - srv đại diện cho service. - Chứa đựng các dịch vụ cho server, nó liên quan đến dữ liệu. Ví dụ /srv/cvs chứa đựng CVS 2.1.5. Inodes, File Identifiers Mỗi tập tin, thư mục, tập tin liên kết, thiết bị, hoặc bất cứ cái gì khác đều được lưu trữ trong hệ thống tập tin Ext2, được xác định bởi một inode. Nếu bạn biết số inode của tập tin bạn muốn đọc, thậm chí là không biết đường dẫn đến file đó hay tên file đó, bạn vẫn có thể xác định vị trí file đó trên đĩa và đọc nó. 2.1.5.1. Inode Number. Số inode (inode number) là một chỉ mục trong bảng inode (inode table) đến một cấu trúc inode (inode structure). Kích thước của inode table cố định trong thời gian định dạng, nó được tạo ra để giữ số entry lớn nhất. Vì dự trữ khối lượng đủ lớn các entry, bảng inode khá lớn và do đó, nó bị tách theo tỉ lệ bằng nhau giữa tất cả các block group. 2.1.5.2. Định vị cấu trúc của Inode. Trường s_inodes_per_group trong cấu trúc superblock cho chúng ta biết có bao nhiêu inode trên một block group. Inode 1 là inode đầu tiên xác định trong bảng inode, có thể dùng những công thức sau: group = (inode - 1) / s_inodes_per_group. Để định vị block group nào nắm giữ một phần bảng inode chứa entry inode được tìm kiếm, và: index = (inode - 1) % s_inodes_per_group. để có được chỉ mục của một phần bảng inode này với entry inode được tìm kiếm.
  • 25. Inode Table. Bảng inode được tách bằng nhau giữa tất cả block group. Nếu một hệ thống tập tin được tạo cho phép một ngàn inode, cắt giữa 5 group, có 200 inode trên một phần của bảng inode. Mỗi phần của bảng inode có thể được định vị bằng việc dùng trường bg_inode_table của cấu trúc group_descriptor của các block group tương ứng. 2.1.6. Kiểu của tệp. Chính vì tất cả mọi thứ trên Linux đều là File thế nên chúng ta phải biết được trên Linux có những loại tệp tin nào, trước hết người ta phân ra làm 7 loại tệp tin cơ bản như sau: - 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 liên kết là tệp trỏ đến một thư mục hoặc file vật lý khác. - Tệp thiết bị khối. - Tệp thiết bị ký tự. - Tệp đường ống. - Socket.  Các ký tự biểu diễn tệp: “-” Tệp Thường “d” Tệp Thư Mục. “l” Tệp Liên Kết. “b” Tệp thiết bị khối. “c” Tệp thiết bị ký tự. “s” Socket. “p” Đường ống. 2.1.7.Một số thao tác trên tệp. - Di chuyển thư mục / liệt kê các tập tin. - pwd: Hiển thị đường dẫn thư mục hiện tại. - cd <thumuc>: Chuyển sang thư mục thumuc. - ls –l <thư mục>, dir –l <thư mục>: Liệt kê các danh mục trong thư mục trong đó có cả các thư mục ẩn. - ls –t, dir –d: Sắp xếp các tệp tin theo ngày giờ tạo ra.
  • 26. và thư mục. - Sao chép: - cp file1 file2: Chép file1 sang file 2. - cp file thumuc: Chép file vào thumuc. - cp –r thumuc1 thumuc2: Chép toàn bộ nội dung của thumuc1 sang thumuc2. + Di chuyển: - mv file1 file2: chuyển tệp tin file1 thành tên file2. - mv file thumuc: Chuyển file vào thumuc. - mv file1 thumuc/file2: Chép file1 vào thumuc đồng thời đổi tên thành file2. + Tạo thư mục: - mkdir thumuc: Tạo ra thư mục thumuc. - mkdir –p thumuc1/thumuc2: Tạo ra thư mục thumuc1 và thư mục con thumuc2 cùng lúc. + Xóa bỏ. - rm file: Xóa bỏ tệp tin file trong thư mục hiện hành. - rmdir thumuc: Xóa bỏ thư mục trống mang tên thumuc. - rm –rf thumuc: Xóa bỏ thư mục thumuc và tất cả những gì bên trong nó. + Tạo liên kết. - ln –s file link : Tạo 1 liên kết mang tên link đến tệp tin file. + So sánh. - diff file1 file2: So sánh nội dung của 2 tệp tin hoặc 2 thư mục. + Nội dung các tệp tin. - Cat file: Xem nội dung của tệp tin file trên màn hình ở dạng mã ASCII. - head –n file: Xuất hiện n dòng đầu tiên của tệp tin file. - hail –n file: Xuất hiện n dòng cuối của tệp tin file. 2.1.8. Quyền truy cập tệp tin Một trong những điểm mạnh của Linux là có khả năng phân quyền hạn truy cập (Permission) cho mọi đối tượng (file, thư mục, link). Hệ thống này đóng vai trò quan trọng trong việc cung cấp mức an ninh cao và tính ổn định cho hệ điều hành Linux. Mỗi đối tượng file được gắn với ba loại quyền: read (đọc), write (sửa đổi) và execute (thực thi). Và mỗi quyền này lại được chỉ định cho ba loại user: - owner : chủ sở hữu của đối tượng – mặc định ban đầu là user tạo ra đối tượng đó.
  • 27. nhóm các user chia sẻ chung quyền hạn truy cập - mặc định ban đầu là group mà owner ở trên thuộc về. - others : tất cả các user không thuộc hai nhóm trên. User root (siêu người dùng) có đủ tất cả các quyền đối với mọi đối tượng trên hệ thống. Ngoài ra, root có thể thay đổi quyền hạn truy cập đối tượng cho bất kỳ user nào và còn có thể chuyển quyền sở hữu đối tượng qua lại giữa các user. Ý nghĩa của ba loại quyền này là: - Read: cho phép đọc. - Write: cho phép chỉnh sửa nội dung, xóa file; cho phép tạo và xóa các đối tượng trong thư mục. - Excute: cho phép thực thi hoặc truy cập nếu đó là thư mục. Các quyền cho mỗi đối tượng được biểu diễn theo hai cách. Cách thứ nhất là biểu diễn bằng một chuỗi gồm 10 ký tự:  Ký tự đầu thể hiện loại file: “-” Tệp Thường “d” Tệp Thư Mục. “l” Tệp Liên Kết. “b” Tệp thiết bị khối. “c” Tệp thiết bị ký tự. “s” Socket. “p” Đường ống. Ba ký tự tiếp là các quyền cho owner: Kế đến là ba ký tự biểu diễn các quyền cho group. Còn lại ba ký tự cuối dành cho other. Quyền được phép read sẽ là r, write là w, e là excute. Các quyền bị cấm được biểu diễn bằng dấu –. Để thay đổi quyền truy cập cho các đối tượng, ta sử dụng chmod bằng cách sử dụng ký tự đại diện. Các ký tự đại diện cho nhóm là: - u : user sở hữu file. - g : group của user trên. - o: others. - a : tất cả ba ký hiệu ở trên.
  • 28. + : thêm quyền. - : bớt quyền. - = : gán quyền. 2.1.9. Các thuộc tính của file. Hầu hết các thuộc tính của file (cũng như directory, symbol link, thiết bị…) được định vị trong inode tương thích với tập tin. Một vài thuộc tính khác chỉ có ở các thuộc tính mở rộng. 2.1.9.1. Các thuộc tính chuẩn. SUID, SGID và –rwxrwxrwx(Read - Write - Execute (Đọc - Ghi - Thực thi)). Chúng được định vị với các bit SGID và SUID trong ext2_inode.i_mode. Kích thước File. Kích thước của file có thể được xác định tại trường ext2_inode.i_size. Owner và Group. Dưới hầu hết sự bổ sung, owner và group là các giá trị 16 bit, nhưng trong một vài sự bổ sung của Linux và Hurd gần đây thì id của owner và group là 32 bit. Khi sử dụng các giá trị 16 bit, chỉ có những phần “thấp” (low) được dùng hợp lệ, trong khi sử dụng giá trị 32 bit, cả hai phần cao và thấp đều được dùng, phần cao được đẩy sang trái tới 16 khoảng cách sau đó thêm vào phần thấp. 2.1.9.2. Các thuộc tính mở rộng. Các thuộc tính mở rộng cặp name:value kết hợp cố định giữa các file và directory, tương tự như chuỗi môi trường kết hợp với một tiến trình (process). Một thuộc tính có thể được xác định hoặc không xác định. Nếu được xác định, giá trị của nó có thể rỗng hoặc không rỗng. Các thuộc tính mở rộng là sự mở rộng các thuộc tính thông thường cái mà được kết hợp tất cả các inode trong hệ thống. Chúng thường được dùng để cung cấp thêm các chức năng vào một hệ thống – chẳng hạn như thêm vào các đặc tính bảo mật như là Access Control Lists (ACLs) có thể được bổ sung bằng cách dùng các thuộc tính mở rộng. Các thuộc tính mở rộng được truy xuất như các đối tượng nguyên tử. Việc đọc gọi ra tất cả giá trị của một thuộc tính và lưu trữ nó trong bộ nhớ trung gian. Việc ghi thay đổi giá trị phía trước bất kỳ bằng giá trị mới.
  • 29. ext2, chúng ta có trường i_file_acl, dành cho Access Control Lists. Trường này được dùng để lưu trữ số block thay vì lưu trữ các thuộc tính mở rộng của một inode. Các thuộc tính mở rộng lưu trữ trên block đĩa “trống” (plain) không có phần bất kỳ file nào. Sự bố trí block trên đĩa giống như việc bố trí dành cho các thư mục. Sau header của thuộc tính block là header của entry. Kích thước của các header entry khác với chiều dài của tên thuộc tính. Các giá trị thuộc tính trên block giống như thuộc tính entry descriptor của chúng, sắp thẳng hàng đến cuối thuộc block thuộc tính. Điều này cho phép việc thêm vào các thuộc tính được dễ dàng hơn. Danh sách tên thuộc tính gắn với một file có thể được gọi ra. Bộ điều khiển hệ thống tập tin trả về một chuỗi tên cách nhau bởi các ký tự null, kết thúc bằng hai ký tự null tại phần cuối của danh sách. 2.1.10. Quản trị hệ thống file EXT2. EXT2 là một hệ thống tệp không sử dụng journaling, được thiết kế để tối thiểu hóa sự phân mảnh. Để tăng hiệu suất, EXT2 sử dụng cache để lưu trữ các dữ liệu thường xuyên được truy cập trong bộ nhớ, giúp truy cập nhanh hơn so với đĩa vật lý. Cả quá trình đọc và ghi cũng được cache trên RAM. Sự phân mảnh trong hệ thống file xảy ra khi file được ghi nhiều lần trên ổ đĩa, nhưng với EXT2, sự phân mảnh ít xảy ra do thiết kế hạn chế. EXT2 thích hợp cho các thiết bị lưu trữ như thẻ nhớ, ổ USB và ổ SSD có khả năng không sử dụng file hệ thống journaling. 2.2.Hệ thống File EXT3. 2.2.1. Giới thiệu. Ext3 được xây dựng dựa trên cơ sở của hê ̣ thống file chuẩn ext2 mà Linux đang sử dụng, ext3 đưa vào thêm chức năng mới vô cùng quan trọng - journaling file system, giúp thao tác dữ liêụ an toàn hơn. File Ext3 được giới thiệu vào năm 2001, được tích hợp vào Kernel 2.4.15 với tính năng ghi nhật ký, nhằm cải thiện độ tin cậy và loại bỏ nhu cầu kiểm tra hệ thống file sau khi tắt máy đột ngột. Kích thước file tối đa 16GB – 2TB.
  • 30. sở để nâng cấp từ hệ thống file Ext2 lên Ext3 mà không cần phải sao lưu và khôi phục dữ liệu. 2.2.2. Journaling File. File trên máy tính là một danh mục thư viện duy nhất, gồm các tạp chí, báo hoặc tài liệu. Mỗi tài liệu mới được thêm vào một danh mục sẽ thay đổi thông tin của nó đôi chút. Thay vì tìm kiếm trên toàn bộ thư viện để tìm một mục, bạn chỉ phải kiểm tra danh mục có liên quan. Journaling (ghi nhật ký) là một cơ chế được sử dụng trong hệ thống tệp để ghi lại các thay đổi trước khi thực hiện chúng trên đĩa. Mục đích chính của việc sử dụng journaling là đảm bảo tính toàn vẹn dữ liệu trong trường hợp xảy ra sự cố như mất điện hoặc khởi động không mong muốn. Trong hệ thống tệp EXT3, có một phần ghi nhật ký (journal) được tạo ra để lưu trữ các thay đổi sắp xảy ra trên hệ thống tệp. Khi có một yêu cầu thay đổi dữ liệu, các thay đổi đó được ghi vào journal trước khi được thực hiện trên đĩa. Việc ghi vào journal này nhanh chóng và hiệu quả hơn so với việc ghi trực tiếp vào đĩa. Journal của EXT3 được chia thành các phần như sau: 1-Journal Metadata: Ghi lại các thay đổi trong siêu dữ liệu (superblock, inode, bitmaps...) của hệ thống tệp. Điều này đảm bảo rằng các thay đổi này được ghi trước khi thay đổi dữ liệu thực tế. 2-Journal Data: Ghi lại các thay đổi trong dữ liệu thực tế của các tệp và thư mục. Các thay đổi này bao gồm việc tạo, xóa, sửa đổi nội dung của các tệp và thư mục. Với journaling, khi hệ thống khởi động lại sau một sự cố, ví dụ như mất điện, hệ thống tệp EXT3 có khả năng phục hồi nhanh chóng bằng cách đọc journal và áp dụng lại các thay đổi đã được ghi trước đó. Điều này giúp đảm bảo tính toàn vẹn dữ liệu và giảm thiểu thời gian khởi động lại. Một lợi ích khác của journaling là giảm thiểu thời gian kiểm tra và sửa chữa hệ thống tệp sau một sự cố. Với journal, quá trình kiểm tra và sửa chữa sau khởi động được thực hiện nhanh chóng và chỉ tập trung vào các thay đổi chưa được áp dụng từ journal, giảm thiểu thời gian không cần thiết và tăng hiệu suất của hệ thống. Tuy nhiên, một điểm yếu của hệ thống tệp EXT3 so với các phiên bản mới hơn như EXT4 là journaling trên EXT3 không hỗ trợ ghi đồng thời
  • 31. này có thể gây ra một số hiệu ứng trễ khi thực hiện các thao tác ghi đồng thời trên nhiều tệp. Tóm lại, journaling là tính năng quan trọng của hệ thống tệp EXT3, giúp đảm bảo tính toàn vẹn và khả năng phục hồi của dữ liệu trong trường hợp xảy ra sự cố. Hình 2.5: Sơ đồ một hệ thống file nhật ký 2.2.3. Cơ chế và khả năng chuyển đổi. Ext3 còn sử dụng cơ chế JBD (Journaling Block Device) để bảo vệ thông tin thao tác trên dữ liệu, được đánh giá là tin cậy hơn so với các hệ thống chỉ thực hiện journaling trên chỉ mục dữ liệu (journaling of meta-data only) như Reiserfs, XFS hay JFS. Với cách bảo vệ hai lần như vậy thì hiệu suất ghi dữ liệu có phần nào chậm hơn ext2; nhưng trong một vài trường hợp, nhờ thông tin trong journal log mà đầu từ ổ cứng di chuyển hợp lý hơn, nên tốc độ thao tác dữ liệu nhanh hơn. Đối với những ứng dụng ưu tiên cho độ tin cậy của dữ liệu hơn là tốc độ ghi đơn thuần thì EXT3 là lựa chọn thích hợp. Ngoài ra, EXT3 còn cho phép cải thiện tốc độ thao tác trên dữ liệu bằng cách thiết lập thông số cho hê ̣ thống chỉ thực hiện journaling đối với thao tác trên dữ liệu (mode: data=writeback và data = ordered). Có ba chế độ hoạt động khác nhau trong hệ thống tệp EXT3 khi sử dụng journaling: writeback, ordered và journal.  Chế độ writeback: Dữ liệu được ghi vào ổ đĩa ngay sau khi đã ghi xong thông tin trong journal log. Tuy nhiên, trong trường hợp sự cố xảy ra ngay sau khi ghi journal log mà chưa kịp ghi vào đĩa, có thể dẫn đến mất mát dữ liệu. Chế độ này có tốc độ thao tác file nhanh hơn trong một số trường hợp.  Chế độ ordered: Dữ liệu được ghi vào đĩa trước rồi mới đến journal log. Điều này đảm bảo tính toàn vẹn của dữ liệu trong mọi tình huống và là chế độ mặc định của EXT3.
  • 32. journal: Việc bảo vệ được thực hiện trên cả dữ liệu và journal log. Thông tin được ghi chi tiết và hiệu quả hơn, giúp cải thiện tốc độ truy cập dữ liệu. Chế độ này thích hợp cho các kiểu dữ liệu như cơ sở dữ liệu hoặc dữ liệu chia sẻ trên mạng (NFS). Tuy nhiên, do phải đọc lại nhiều loại thông tin trên journal log, thời gian khởi động lại máy có thể chậm hơn một chút so với hai chế độ khác. Chế độ writeback có tốc độ nhanh hơn nhưng có nguy cơ mất mát dữ liệu, chế độ ordered đảm bảo tính toàn vẹn của dữ liệu mà tốc độ không nhanh bằng writeback, và chế độ journal cung cấp bảo vệ chi tiết cho cả dữ liệu và journal log nhưng có thời gian khởi động lại máy chậm hơn. Vì bản chất cấu trúc của ext3 được xây dựng hoàn toàn dựa trên cơ sở của ext2 nên ta có thể chuyển đổi dễ dàng các dữ liệu đang tồn tại trên các hệ thống ext2 sang ext3 mà dữ liệu không hề bi ̣ ảnh hưởng và thực hiện tương đối dễ dàng, đơn giản. Hệ thống file EXT3 thực chất là phiên bản nâng cao của ext2. Ext3 có những ưu điểm sau: Tính khả dụng -Trong hệ thống tệp EXT2, khi bộ nguồn hoặc hệ thống gặp sự cố, phải sử dụng chương trình e2fsck để kiểm tra và đồng nhất các phân vùng định dạng theo EXT2. Quá trình này tốn thời gian và làm trễ khởi động hệ thống, đặc biệt là với các phân vùng lớn. Trong thời gian kiểm tra, không thể truy cập dữ liệu trên phân vùng. -Để giảm thiểu thời gian không cần thiết trong quá trình khởi động lại, hệ thống tệp EXT3 không yêu cầu kiểm tra đồng nhất khi hệ thống bị tắt đột ngột. Việc kiểm tra chỉ xảy ra khi phần cứng bị hỏng, ví dụ như ổ đĩa cứng. Thời gian kiểm tra không phụ thuộc vào dung lượng hoặc số lượng file trên phân vùng. Tính toàn vẹn của dữ liệu -Hệ thống tập tin EXT3 cung cấp việc bảo toàn dữ liệu trong việc hệ thống tắt đột ngột, và cho phép ta chọn loại và mức độ bảo vệ dữ liệu. Mặc định là mức bảo vệ cao nhất (high level) Tốc độ -Bất chấp việc ghi dữ liệu nhiều lần hay một lần, EXT3 có số lượng dữ liệu đưa vào quá trình ghi nhiều hơn hẳn so với EXT2 bởi EXT3 đã tối ưu hóa đầu đọc chuyển động của ở đĩa cứng. Ta có thể chọn một trong ba mức để tối ưu tốc độ nhưng điều này có thể làm giảm tính toàn vẹn của dữ liệu.
  • 33. đích chính của Ext3 là tương thích ngược với Ext2, và do vậy những ổ đĩa, phân vùng có thể dễ dàng được chuyển đổi giữa 2 chế độ mà không cần phải format như trước kia. EXT3 không thực sự phù hợp để làm file hệ thống dành cho máy chủ bởi vì không hỗ trợ tính năng tạo disk snapshot và file được khôi phục sẽ rất khó để xóa bỏ sau này. 2.2.4. So sánh hệ thống file EXT2 và EXT3. Ta thấy rằng EXT3 về căn bản chỉ là EXT2 đi kèm với journaling. Và những giới hạn của EXT2 vẫn còn nguyên trong EXT3, ưu điểm của EXT3 là hoạt động nhanh, ổn định hơn rất nhiều so với EXT2. Trong trường hợp dữ liệu bị hỏng đáng kể thì cả EXT2 và EXT3 có thể khôi phục được. Dễ dàng chuyển đổi -Thật dễ dàng để ta chuyển đổi từ EXT2 lên EXT3 và đạt được những lợi ích của một hệ thống tập tin mạnh mà không cần phải định dạng lại. Để chuyển đổi từ EXT2 sang EXT3, đăng nhập bằng root và gõ lệnh: /sbin/tune2fs –j /dev/hdbx/dev/hdb : thay bằng tên thiết bị và x là số thứ tự của phân vùng cần chuyển đổi.
  • 34. so sánh với nguyên lý quản lý hệ tệp đã học. Qua quá trình tìm hiểu, chúng em nhận thấy Linux sở hữu hệ thống quản lý hệ tệp hiện đại, các thao tác với hệ thống tệp tin thông qua các dòng lệnh đáp ứng đầy đủ yêu cầu thao tác với tệp. Hệ thống tệp được bảo vệ rất tốt thông qua việc giới hạn quyền truy cập của người sử dụng. Tính toàn vẹn dữ liệu trong Linux được đảm bảo cùng sự phát triển của hệ thống tệp tin EXT3. Hệ điều hành Linux quản lý hệ tệp với cấu trúc cây thư mục với một thư mục gốc. Đó là thư mục gốc root, trong thư mục root có thư mục home chứa các thư mục chủ của người sử dụng và các thư mục hệ thống. Cách tổ chức thư mục này tuân thủ theo nguyên lý tổ chức theo cấu trúc cây (Tree Diretory) mà ta đã học. Hình 2.6: So sánh hệ thống tệp tin trên hệ điều hành Linux với Window Linux Windows Cấu trúc file sắp xếp mọi dữ liệu trong máy tính trên một “cây thư mục duy nhất” có quan niệm ổ đĩa C: , D: , E:, Windows xem một ổ đĩa là một cái gốc của một cây thư mục Định dạng file system FAT, Minix, reiserFS, ext2, ext3, ext4 v.v. có thể đọc được hệ thống file của Windows FAT, FAT32, NTFS, exFAT v.v, không thể đọc được hệ thống file của Linux nếu nó không format ở định dạng FAT Registry không có Registry, ứng dụng trên Linux lưu giữa thiết đặt nội tại trong bản thân nó trên cơ sở phân cấp người dùng được xem là bộ khung của máy tính, nó lưu trữ toàn bộ thông tin ứng dụng, thiết đặt chức năng, mật khẩu người dùng, thông tin thiết bị Cài đặt ứng dụng cài đặt chương trình theo trình quản lý, một ứng dụng được liên kết đến nhiều thư viện và tệp tin rời rạc cài đặt ứng dụng theo dạng gói cài đặt .exe Mã Nguồn Mở Đóng Giao diện Có thể có nhiều sắc thái chức năng khác nhau không thể thay đổi giao diện điều khiển
  • 35. trình tìm hiểu về hệ thống file trong Linux, nhóm chúng em đã biết được nguyên lý, đặc điểm và cách hoạt động của hệ thống file trên hệ điều hành Linux từ đó liên hệ so sánh với nguyên lý quản lý tệp đã được học. Chúng em đã hiểu rõ hơn cách thức hoạt động, sự ra đời và tầm quan trọng của các file định dạng Ext của Linux qua các hệ thống file như Ext2, Ext3. Bài làm trên là kết quả của quá trình tìm hiểu của nhóm chúng em. Trong quá trình làm còn có những thiếu sót, chúng em mong sẽ nhận được những nhận xét, đánh giá của thầy để bài làm của chúng em được hoàn thiện hơn. Chúng em xin chân thành cảm ơn!
  • 36. tham khảo • Giáo trình nguyên lý hệ điều hành – Trường Đại học Công Nghiệp Hà Nội, Khoa Công Nghệ Thông Tin. • Giáo trình nguyên lý hệ điều hành của nhà xuất bản Hà Nội. • Running Linux của nhà xuất bản O’REILLY. • Và một số trang Web trực tuyến : www.forum.ubuntu-vn.org www.tailieu.vn www.vi.wikipedia.org