ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
----------
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
Đề tài: Nghiên cứu tìm hiểu về hệ thống tệp tin
trong HĐH LINUX
Môn: NGUYÊN LÝ HỆ ĐIỀU HÀNH
Giáo viên: Ths Nguyễn Tuấn Tú
Nhóm : 10
Lớp: ĐH Khoa Học Máy Tính 3- K9
Hà Nội, tháng 3 năm 2016.
ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
----------
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
Đề tài: Nghiên cứu tìm hiểu về hệ thống tệp tin
trong HĐH LINUX
Môn: NGUYÊN LÝ HỆ ĐIỀU HÀNH
Giảng viên hướng dẫn: ThS.Nguyễn Tuấn Tú
Nhóm thực hiện: NHÓM 10
Lớp: KHMT3_K9.
Thành viên:
1.
2.
3.
4.
Ngô Văn Đạt
Nguyễn Thành Đạt
Nguyễn Thăng Sơn
Phạm Viết Tùng
Hà Nội, tháng 3 năm 2013
Mục lục
Lời nói đầu……………………………………………………….................-2Chương 1……………………………………………………………………-3Giới thiệu về linux……………..……………………………………………-31.1. Linux
1.2. Linux
là gì …………………………………………………….-3nằm ở đâu? ………………………………...…………..-4-
1.2.1.Máy tính để bàn và Netbook………………………………..-51.2.2.Máy chủ……………………………………………………..-61.2.3. Điện toán Cluster và điện toán phân tán…………………...-61.2.4. Máy tính Mainframe…………………………………….....-71.2.5. Siêu máy tính……………………………………………....-71.2.6. Các thiết bị di động và máy tính bảng………………….…..-81.2.7. Các thiết bị nhúng…………………………………………..-81.2.8. Nền tảng ảo hóa…………………………………………….-91.2.9. Nền tảng thử nghiệm…………………………………..…..-101.3. Những ưu điểm của Linux ……………………………………-111.4. Một vài nhược điểm của Linux………………………………..-11-
Chương2……………………………………………………………………-12Các thiết bị ngoại vi hđh linux
1.
2.
3.
4.
Giới thiệu về cách thức Linux quản lý thiết bị ngoại vi……………-12Các cách quản lý thiết bị lưu trữ trong Linux………………………-152.1.
Lệnh mount và lệnh umount……………………………………-152.2.
Các lệnh định dạng đĩa và tạo hệ thống tập tin trong Linux,…-19Các cổng nối tiếp và Modem………………………………………….-27Khởi tạo và thiết lập máy in trong lpd………………………………..-28-
LỜI NÓI ĐẦU
Linux được phát triển bởi Linux Torvalds ,bản đầu tiên được đưa ra vào năm 1991
tại đại học Helsinki, Phần Lan , dựa trên hệ điều hành Minix- một hệ điều hành có
cấu trúc tương tự Unix với các chức năng tối thiểu được dùng trong dạy học.
Việc nghiên cứu tìm hiểu về HĐH với Linux , giúp cho chúng ta có cái nhìn
rộng hơn về tin học. Linux và các phần mềm mã nguồn mở cung cấp cho người sử
dụng mã nguồn của chương trình. Rất nhiều trong số các chương trình này được
viết bởi các lập trình viên nhiều kinh nghiệm và được cộng đồng mã nguồn mở
trên toàn thế giới kiếm thử. Vì thế mã nguồn của chương trình này chứa đựng một
khối kiến thức vô cùng tinh túy, hoàn toàn đáng để ta có thể học hỏi . Mặt khác
những tài liệu về mã nguồn mở thường rất sẵn, chi tiết và được cập nhật thường
xuyên, không hề có những “ bí mật công nghệ” trong những sản phẩm mã nguồn
mở. Vì vậy rất tốt để sinh viên học hỏi.
Dưới đây là một nghiên cứu, tìm hiểu về hệ thống tệp tin trong hệ điều hành
Linux . Do kiến thức hạn chế nên sẽ không tránh khỏi những thiếu xót. Mong thầy
cùng các bạn tham gia góp ý, chỉ dạy để được hoàn thiện hơn!
5
CHƯƠNG 1: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX
1.1. Linux là gì?
Nhìn bề ngoài, Linux là một hệ điều hành. Như thể hiện trong (Hình 1.1) ,Linux
gồm có một nhân kernel (mã cốt lõi quản lý các tài nguyên phần cứng và phần
mềm) và một bộ sưu tập các ứng dụng của người dùng (chẳng hạn như các thư
viện, các trình quản lý cửa sổ và các ứng dụng).
Hình 1.1 Linux nhìn bề ngoài
Sơ đồ trên chỉ ra các thành phần quan trọng. Tầng cuối cùng chính là một tập hợp
mã kiến trúc giúp Linux có thể hỗ trợ đa nền tảng phần cứng (ARM, PowerPC,
Tilera TILE v.v...). Tất nhiên, chức năng này được đăng ký theo giấy phép GNU,
tạo nên tính di động của Linux.
Linux theo phong cách riêng của mình trong lĩnh vực về tính di động . Hệ thống
con của trình điều khiển (là rất lớn về khả năng của nó) hỗ trợ động các mô đun
6
được nạp mà không ảnh hưởng đến hiệu năng, tạo nên tính mô đun (thêm vào một
nền tảng động hơn). Linux cũng bảo mật ở mức nhân kernel (trong một số lược đồ)
tạo nên một nền tảng bảo mật Trong miền hệ thống tệp bên ngoài, Linux tạo nên
một mảng lớn nhất về hỗ trợ hệ thống tệp của bất kỳ hệ điều hành nào, như là một
ví dụ, tạo nên tính linh hoạt thông qua tính mô đun thiết kế. Linux thực hiện không
chỉ các tính năng lên lịch trình tiêu chuẩn mà còn lên lịch trình thời gian thực bao
gồm các bảo đảm về độ trễ ngắt).
Cuối cùng, Linux là mở, có nghĩa là trên thực tế bất cứ ai cũng có thể xem và cải
thiện dựa vào nguồn gốc của nó. Tính mở này cũng giảm thiểu các cơ hội bị lợi
dụng, tạo ra một nền tảng an toàn hơn. Nhiều công ty đóng góp cho Linux, bảo
đảm rằng nó sẽ tiếp tục giải quyết một loạt các mô hình sử dụng trong khi vẫn duy
trì các đặc tính cốt lõi của mình.
Bảy nguyên tắc quan trọng này chắc chắn không phải là các thuộc tính duy nhất
mà Linux cung cấp, nhưng chúng cho phép Linux dùng như một nền tảng đa năng
trên rất nhiều các mô hình sử dụng. Hơn nữa, Linux là như nhau trên các mô hình
sử dụng này—không chỉ các nguyên tắc thiết kế mà còn bản thân mã của nó nữa.
Người ta không thể nói điều này về các hệ điều hành khác (như Windows®—máy
tính để bàn, máy chủ, hoặc thiết bị nhúng—hoặc Mac OS X hoặc Apple iOS),
chúng có phân khúc dịch vụ và mô hình sử dụng khác.
1.2.Linux nằm ở đâu ?
Linux ở đâu có thể khó trả lời hơn là nó không ở đâu. Với khả năng biến đổi nhanh
và mở rộng quy mô của mình, có thể tìm thấy Linux trong tất cả các phân khúc
máy tính (và thậm chí một số phân khúc vẫn chưa được định nghĩa đầy đủ). Phần
7
này xem xét một số các phân khúc điện toán quan trọng, bao gồm máy tính để
bàn/netbook, máy chủ, cluster, máy tính lớn Mainframe, siêu máy tính, thiết bị cầm
tay/máy tính bảng, thiết bị nhúng, ảo hóa và các máy thử nghiệm (xem Hình 1.2).
Hình 1.2 Các thuộc tính và các phân khúc của Linux được tập trung vào
1.2.1.Máy tính để bàn và netbook
Các máy tính để bàn và các netbook, nơi có nhiều người sử dụng Linux, là lĩnh vực
trong đó Linux cạnh tranh nhiều nhất. Dữ liệu thị phần gần đây chỉ ra rằng Linux
nắm giữ khoảng 1,5% thị trường máy tính để bàn, nhưng lại nắm giữ khoảng 32%
thị trường netbook. Những con số này có thể xem ra là thấp, nhưng là một nhà phát
triển, tôi có xu hướng thấy Linux nhiều hơn so với bất kỳ hệ điều hành khác nào.
Linux đã bắt đầu như là một hệ điều hành thử nghiệm đơn giản và với việc giới
thiệu XFree86 vào năm 1994, một trình quản lý cửa sổ đã cho thấy sự hứa hẹn của
một hệ điều hành máy tính để bàn còn non trẻ. Ngày nay, một số trình quản lý cửa
sổ có sẵn cho Linux cho phép người dùng biến phong cách riêng của nó thành các
8
nhu cầu của họ. Hơn nữa, Linux thay đổi quy mô tự động với các khả năng xử lý
(như là đa luồng đối xứng và đa lõi), lập lịch trình hiệu quả.
1.2.2. Máy chủ
Linux thống trị thị trường máy chủ (bao gồm các máy chủ web, máy chủ thư điện
tử, máy chủ Hệ thống tên miền - DNS và các thiết bị tầng sau khác). Các khảo sát
gần đây cho thấy rằng hơn 60% tất cả các máy chủ chạy Linux. Ngoài các dịch vụ
web truyền thống, Linux cung cấp cho nhiều tài sản Internet lớn nhất (Facebook,
eBay, Twitter và Amazon v.v...), với các yêu cầu và các mô hình sử dụng khác
nhau. Ngoài các tùy chọn truyền thống (chẳng hạn như web hoặc thư điện tử),
Linux còn cung cấp các mảng lớn nhất về các dịch vụ web (và các tùy chọn khác
nhau cho các dịch vụ đó).
1.2.3. Điện toán Cluster và điện toán phân tán
Linux không chỉ là một yếu tố chính trong các mô hình điện toán cluster và các mô
hình điện toán phân tán, nó còn là một đơn vị điều khiển và ở lõi của nhiều mô
hình sử dụng mới. Hai mô hình chính đang phát triển nhanh chóng hiện nay là điện
toán đám mây và dữ liệu lớn.
Điện toán đám mây là về phân phối Công nghệ thông tin (CNTT) như một dịch vụ
và dựa vào một cụm các tài nguyên chia sẻ để thay đổi quy mô theo nhu cầu ứng
dụng. Các đám mây cũng dựa vào ảo hóa để hỗ trợ quản lý tự động các nút trong
một cơ sở hạ tầng to lớn. Trong các môi trường đám mây, 66% tin dùng Linux làm
nền tảng chính của mình.
Linux cũng đang hướng chính mình làm nền tảng cho khoa học dữ liệu. Internet
thay đổi quy mô của khối dữ liệu có thể thu thập được và các vấn đề mới phát sinh
9
trong việc xử lý dữ liệu này để xác định các mẫu có giá trị của nó. Những thứ bây
giờ được gọi là Big Data (Dữ liệu lớn) đã được phát triển trên Linux như là một
cách thay đổi quy mô để thao tác dữ liệu vượt quá giới hạn của các phương pháp
truyền thống trước đây. Hadoop và hệ sinh thái của nó là kết quả của tính mở của
Linux, cùng với một lực lượng các nhà phát triển, những người thành thạo với nền
tảng này.
1.2.4. Máy tính Mainframe
Năm 1991, một biên tập viên nổi tiếng đã dự đoán rằng máy tính Mainframe cuối
cùng sẽ bị loại bỏ vào đầu năm 1996. Tuy nhiên sau hơn 20 năm, người ta vẫn tiếp
tục xây dựng và bán các máy tính Mainframe và nhiều máy chạy Linux. IBM đã
bắt đầu hỗ trợ Linux trên Mainframe vào năm 2000 (chẳng hạn như IBM® System
z®) và cung cấp một trải nghiệm người dùng phổ biến trên các môi trường. Một
bài báo gần đây của Michael Vizard đã viết rằng khoảng 25% khối lượng công
việc của Mainframe mới dựa vào Linux.
1.2.5.Siêu máy tính
Các siêu máy tính là một cuộc đua tranh liên tục để giữ danh hiệu nhanh nhất, từ
siêu máy tính Jaguar của Phòng thí nghiệm quốc gia Oak Ridge (2009) đến
Tianhe-I của Trung Quốc (2010) đến công ty hàng đầu hiện nay, máy tính RIKEN
Kei của Nhật Bản (2011). Vào năm 2012, siêu máy tính Sequoia của IBM sẽ được
phát hành và được dự kiến vượt quá hiệu năng của RIKEN hai lần. Điều mà mỗi
siêu máy tính này có điểm chung là tất cả chúng đều chạy Linux. Linux không chỉ
có hiệu quả, nó còn thích nghi với các nền tảng phần cứng khác nhau làm tăng hiệu
10
năng của nó. Điều này cũng không đáng ngạc nhiên, dựa vào hơn 90% các siêu
máy tính chạy Linux.
1.2.6.Các thiết bị di động và máy tính bảng
Với một loạt các thiết bị của người tiêu dùng bị ràng buộc nhiều hơn, các thiết bị di
động và máy tính bảng đang chứng tỏ sự tăng trưởng đáng kể. Các thiết bị này đại
diện cho một nhân Linux cùng với một giao diện người dùng đồ họa (GUI) tùy
chỉnh. Một ví dụ quan trọng của lĩnh vực này là hệ điều hành Android của Google,
được sử dụng cả trong điện thoại thông minh lẫn trong máy tính bảng. Hiện nay,
hơn 25% điện thoại thông minh chạy một dạng Linux (chủ yếu là Android), với
gần 40% máy tính bảng chạy Android.
Các thiết bị này tin dùng các bộ xử lý dựa trên ARM (các hệ thống trên một chip)
cho hiệu năng cao và tiêu thụ điện năng thấp. Bất kể nền tảng cơ bản nào, đây là
những thiết bị Linux, không phân nhánh nhân và ứng dụng.
Mới đây, Microsoft® đã khẳng định rằng đối với Windows của họ chạy trên máy
tính bảng chip ARM (WOA), và họ đang phát triển ứng dụng cho nền tảng này
(nói cách khác, bạn không thể chạy các ứng dụng cũ trên máy tính bảng). So sánh
điều này với Linux, Linux hỗ trợ rất nhiều cho các ứng dụng di động thay vì một
hệ sinh thái ứng dụng bị hạn chế và đóng kín.
11
1.2.7.Các thiết bị nhúng
Cuối cùng là các thiết bị nhúng, với các mức ràng buộc khác nhau (hiệu năng của
bộ xử lý, các tài nguyên như bộ nhớ và v.v). Linux là lý tưởng trong hầu hết các
trường hợp này vì khả năng thu hẹp quy mô của nó và sử dụng bất kỳ các bộ vi xử
lý nhúng nào có sẵn trên thị trường. Tính linh hoạt này làm cho Linux trở thành
một nền tảng được sử dụng rất nhiều trong truyền hình, giải trí trong xe hơi, các hệ
thống định vị và nhiều kiểu thiết bị khác.
Linux có khả năng tùy chỉnh cao và tập trung vào mức tiêu thụ điện năng thấp. Để
bảo đảm sự tập trung vào điện năng, sáng kiến Less Watts (Wát thấp hơn) theo dõi
sự tiêu thụ điện năng của các bản phát hành nhân Linux. Dự án này chủ yếu tập
trung vào các nền tảng của Intel, nhưng cũng có thể có ích với các bộ xử lý khác.
Linux là một đề xuất khá chuẩn cho các thiết bị nhúng và có thể xác định sự thành
công hay thất bại của thiết bị (hỗ trợ phát triển và xuất hiện nhanh). Một thiết bị
thú vị gần đây được gọi là Raspberry Pi, một máy tính có kích thước bằng thẻ tín
dụng dựa trên ARM, chạy Linux và được dự định làm một thiết bị học tập để dạy
lập trình. Thiết bị này được dự kiến có giá 35 Đô la Mỹ nhưng vẫn chưa có sẵn để
mua.
1.2.8.Nền tảng ảo hóa
Một trong những lĩnh vực thú vị nhất trong đó Linux hướng tới sự đổi mới là trong
lĩnh vực ảo hóa. Linux là ngôi nhà của hệ điều hành cho tất cả các loại giải pháp ảo
hóa có sẵn, cho dù nền tảng hoặc ảo hóa song song, ảo hóa hệ điều hành hay nhiều
ý tưởng mơ hồ hơn như ảo hóa cộng tác. Linux là một hệ điều hành có thể biến
12
mình thành một trình siêu giám sát - hypervisor (chẳng hạn như KVM - Máy tính
ảo dựa vào nhân) cũng như lưu trữ trên máy chủ một số trình siêu giám sát nghiên
cứu. Để mang lại hiệu quả hơn cho ảo hóa, Linux thực hiện Kernel SamePage
Merging (Kết hợp trang giống nhau của nhân) để loại bỏ có hiệu quả các trang bộ
nhớ dư thừa.
Linux cũng đang hướng tới kỹ nghệ cao về một sự tiến bộ mới trong ảo hóa được
gọi là ảo hóa lồng nhau.Việc lồng nhau, như tên của nó cho thấy, cho phép một
trình siêu giám sát lưu trữ trên máy chủ một trình siêu giám sát khách, rồi trình
khách này lần lượt lưu trữ một tập hợp các máy ảo khách trên máy chủ. Mặc dù
thoáng nhìn như là một trường hợp sử dụng cũ, nhưng ảo hóa lồng nhau sẽ thay đổi
điện toán đám mây và mở rộng các kiểu của các ứng dụng có thể được lưu trữ trên
máy chủ ở đó. Hiện nay, KVM của Linux hỗ trợ ảo hóa lồng nhau.
1.2.9.Nền tảng thử nghiệm
Cuối cùng nhưng không kém quan trọng là nền tảng của chính Linux—một nền tảng
thử nghiệm mà qua đó đang khám phá ra nhiều ý tưởng mới. Năm 1991, Linux đã
được giới thiệu như là một hệ điều hành đồ chơi, 20 năm sau bản phát hành đầu tiên
của UNIX®. Hiện nay, Linux dùng làm một nền tảng để thử nghiệm trong nghiên
cứu hệ thống tệp, điện toán cụm, những đám mây, sự tiến bộ ảo hóa và mở rộng các
hạn chế theo đó một nhân của hệ điều hành đơn lẻ có thể được áp dụng cho rất nhiều
mô hình sử dụng. Linux như là một nền tảng cho phép thử nghiệm tăng tốc thông qua
việc sử dụng cả Linux lẫn một loạt các thành phần nguồn mở to lớn. Kết quả là một
loạt các công nghệ thú vị được xây dựng từ Linux, gồm có HP webOS (Hệ điều hành
web của HP), Google Chrome OS (Hệ điều hành web của Google) và Android.
13
Một thay đổi thú vị được Linux giới thiệu là sự không phù hợp của các nền tảng
phần cứng cơ bản ngày càng tăng. Linux trình bày một trải nghiệm người dùng
tương tự bất kể kiến trúc phần cứng cơ bản nào. Vì vậy, cho dù một đám mây có
được lấp đầy bằng các máy chủ x86 của AMD hoặc các dịch vụ dựa trên ARM
điện năng thấp hay không, các ứng dụng chạy trên Linux đều được trừu tượng hóa
từ các kiến trúc vật lý. Sự trừu tượng hóa này cho phép những người dùng ra các
quyết định trên nền tảng dựa vào các yêu cầu của họ chứ không bị buộc chặt vào
kiến trúc chung nhưng cổ xưa và không hiệu quả. Linux cân bằng sự lựa chọn.
1.3.NHỮNG ƯU ĐIỂM CỦA LINUX
-Linh hoạt, uyển chuyển.
-Độ an toàn cao.
-Thích hợp cho quản trị mạng
-Chạy thống nhất trên các hệ thống phần cứng.
1.4 MỘT VÀI NHƯỢC ĐIỂM CỦA LINUX
- Đòi hỏi người dùng phải thành thạo.
- Tính tiêu chuẩn hóa.
- Số lượng các ứng dụng chất lượng cao trên Linux còn hạn chế.
- Một số nhà sản xuất phần cứng khong có driver hỗ trợ Linux.
14
15
Thiết bị ngoại vi hđh linux
1. Giới thiệu về cách thức Linux quản lý thiết bị ngoại vi
Trong một hệ thống máy tính, CPU là thiết bị trung tâm nhưng không phải là thiết
bị điều khiển duy nhất, mỗi thiết bị vật lý đều có bộ điều khiển riêng. Bàn phím,
chuột, các cổng tuần tự được điều khiển bởi một SuperIO chip. Những ổ đĩa IDE,
SCSI được điều khiển bởi bộ điều khiển IDE, SCSI tương ứng, v v. Mỗi bộ điều
khiển phần cứng đều có những thanh ghi trạng thái (CSRs) riêng và chúng khác
nhau
cho các thiết bị khác nhau. Các CSR dùng để khởi động và khởi sinh thiết bị, ngoài
việc được nhúng vào các ứng dụng chúng còn được lưu trữ trong nhân Linux.
Trong phần này, chúng ta sẽ xem xét việc Linux điều khiển các thiết bị phần cứng
như thế nào. Linux cho phép chúng ta có quyền điều khiển phần cứng của hệ thống
(Tương tự như Control Panel của Windows). Tuy nhiên, việc truy cập và điều
khiển
các thiết bị phần cứng không dễ như trong Windows, mặc dù nó tỏ ra khá cơ động
và
không phải bảo trì nhiều một khi đó xác lập. Trong một số trường hợp phải biên
dịch
lại nhân nếu muốn bổ sung phần cứng mới vào hệ thống. Các CD-ROM, Sound
Card
bắt buộc phải làm vậy. Nhưng modem, thiết bị chuột hoặc các ổ đĩa cứng thì có thể
không cần thiết. Mỗi thiết bị ngoại vi muốn được dùng thì cần phải có những trình
điều khiển thiết bị đi kèm. Phần mềm dùng để điều khiển thiết bị gọi là Device
Driver. Trong Linux, các Device Driver của nhân Linux thực chất là thư viện dùng
chung, thường trú trong bộ nhớ hoặc là các trình điều khiển phần cứng ở mức thấp.
Tất cả các thiết bị phần cứng đều được xem như là các tập tin thông thường, chúng
16
có
thể được mở, đóng, đọc, ghi bằng cách sử dụng các lời gọi hệ thống giống như các
lời
gọi hệ thống quản lý tập tin. Mỗi thiết bị được biểu diễn như là một thiết bị tệp đặc
biệt (Device Special File). Ví dụ: Như thiết bị đĩa IDE thứ nhất trong hệ thống
được
biểu diễn bởi /dev/hda. Đối với các thiết bị khối (disk) và thiết bị ký tự (character
device) thì các thiết bị tệp đặc biệt của chúng được khởi tạo bởi lệnh mknod và
chúng
mô tả thiết bị bằng cách sử dụng các số hiệu chính (major device number) và số
hiệu
nhỏ (minor device number). Thiết bị mạng còn được biểu diễn như là một tập tin
thiết
bị đặc biệt, nhưng chúng được Linux khởi tạo khi khởi sinh bộ điều khiển mạng
trong
hệ thống.
Các thiết bị được điều khiển bởi một bộ điều khiển chung (driver) sẽ được gán một
số (định danh) chung gọi là số hiệu chính. Các thiết bị đó được phân biệt thông qua
một số gọi là số hiệu nhỏ. Ví dụ, mỗi phân vùng (partition) trên một đĩa cứng có
một
số hiệu nhỏ của mình, vậy /dev/hda2 (partition thứ hai trên đĩa cứng IDE thứ nhất)
có
số hiệu chính cho cả thiết bị là 3 và số hiệu nhỏ để phân biệt là 2. Linux ánh xạ
một
tập tin thiết bị lên một driver thiết bị nhờ sử dụng số hiệu chính của thiết bị và số
17
hiệu
của bảng hệ thống.
Thiết bị kí tự: tương ứng với các tập tin đặc biệt trong chế độ kí tự (Character
Mode): Các tập tin này tương ứng với các thiết bị ngoại vi không có cấu trúc,
chẳng
hạn như các cổng song song hoặc nối tiếp mà trên đó dữ liệu có thể được đọc và
ghi
theo từng byte hoặc dòng byte.
Thiết bị kiểu khối, tương ứng với các tập tin đặc biệt trong chế độ khối (Block
Mode): Các tập tin này tương ứng với các thiết bị ngoại vi có cấu trúc dạng khối
như
ổ đĩa, có kiểu truy cập bằng cách cung cấp một số khối đọc hoặc ghi. Các thao tác
nhập/xuất này được thực hiện thông qua một vùng đệm (Buffer Cache) và có thể
truy
nhập trực tiếp tới tếng khối (Block) trên thiết bị.
Thiết bị mạng có thể truy cập thông qua giao diện socket BSD.
Mỗi tập tin đặc biệt sẽ được Linux mô tả theo ba thuộc tính sau:
Kiểu tập tin (khối hoặc kí tự).
Số hiệu chính của tập tin, đại diện cho trình điều khiển đang điều khiển thiết bị.
Số hiệu thứ cấp của tập tin, cho phép trình điều khiển nhận biết thiết bi vật lí mà
nó sẽ hoạt động trên đó.
Thông thường các tập tin thiết bị được định vị trong thư mục /dev. Các thao tác
nhập/xuất vào thiết bị được thực hiện thông qua những lời gọi hệ thống như những
thao tác nhập/xuất tập tin thông thường. Mỗi thiết bị ngoại vi được mở bởi lời gọi
open bằng cách chỉ định tên tập tin đặc biệt tương ứng. Nhân sẽ trả về một trình
mô tả
18
nhập/xuất tương ứng với thiết bị, và tiến trình gọi có thể truy cập nó bằng các lệnh
hệ
thống read, write. Sau khi hoàn thành công việc thì lời gọi close sẽ được sử dụng
để
tắt thiết bị. Linux thường sử dụng hai bảng để lưu trữ danh sách các thiết bị hỗ trợ,
đó
là: blkdevs chứa các chương trình mô tả hay các thiết bị trong chế độ khối, chrdevs
dành cho các thiết bị có thể truy cập trong chế độ ký tự. Tập tin nguồn fs./devices.c
chứa các hàm quản lý các thiết bị hỗ trợ.
Các hàm register_blkdevs và register_chrdevs cho phép đăng ký các trình điều
khiển thiết bị vào các bảng tương ứng.
Các hàm unregister_blkdev và unregister_chrdevs có nhiệm vụ xoá một đăng
ký đó có trong các bảng tương ứng.
Các hàm blkdev_open và chrdev_open sẽ đảm nhiệm việc mở một thiết bị đó
được đăng ký.
Các hàm get_blkfops và get_chrfops trả về một con trỏ trỏ vào các thao tác tập
tin kết hợp với một thiết bị nhờ get_blkfops, sau đó gọi lời gọi release.
2. Các cách quản lý thiết bị lưu trữ trong Linux
Linux có cách điều khiển các thiết bị rất khác biệt so với các hệ điều hành khác.
Sẽ không có các tên thiết bị lưu trữ vật lý như ổ A hay ổ C , mà lúc đó, các thiết bị
lưu trữ này sẽ trở thành một phần của hệ thống tập tin cục bộ thông qua một thao
tác
được gọi là "kết gắn - mounting". Khi đang sử dụng thiết bị lưu trữ đó, muốn tháo
bỏ
phải "tháo bỏ kết gắn - umount" thiết bị.
2.1. Lệnh mount và lệnh umount
19
Lệnh mount
Lệnh mount được dùng để thông báo cho nhân hệ thống biết là tồn tại một hệ
thống tập tin nào đó (đang nằm riêng rẽ và không thể truy cập được) muốn kết nối
vào
hệ thống tập tin chính tại một điểm gắn nào đó (mount-point). Điểm gắn thường là
một thư mục của hệ thống tập tin chính và có thể truy cập dễ dàng.
Để sử dụng bất kỳ một thiết bị lưu trữ vật lý nào trên Linux, đều cần đến
lệnh mount. Điểm gắn kết là thư mục /mnt.
Ví dụ, nếu muốn sử dụng đĩa mềm và đĩa CD, hay gắn chúng vào hai thư mục
/mnt/floppy và /mnt/cdrom bằng hai lệnh sau:
# mount -t msdos /dev/fd0 /mnt/floppy
# mount /dev/cdrom /mnt/cdrom
Cú pháp lệnh mount:
mount [tùy-chọn] <tập-tin-thiết-bị> <thư-mục>
Lệnh này thông báo cho nhân hệ thống thực hiện việc kết gắn hệ thống tập tin có
trên tập-tin-thiết-bị (thiết bị này có kiểu nào đó) vào thư mục (điểm kết gắn) là thưmục.
Các tuỳ chọn của lệnh mount:
-t <kiểu>
Xác định kiểu của thiết bị (chẳng hạn msdos như ví dụ trên): kiểu còng được sử
dụng để xác định kiểu hệ thống tập tin. Các kiểu hệ thống tập tin hiện thời được hỗ
trợ
có trong tập tin Linux/fs/filesystems.c
-h
Nhóm 13 – Phân tích việc quản lý các TBNV của HĐH Linux Page 6
Trường đại học Công Nghiệp Hà Nội – Khoa Công Nghệ Thông Tin
20
Đưa ra trang trợ giúp.
-a
Gắn kết tất cả các tập tin hệ thống (thuộc kiểu được đưa ra) có trong tệp
tin fstab (đây là tập tin lưu trữ thông tin về trạng thái của các tập tin hệ thống).
-n
Gắn kết hệ thống tập tin mà không ghi vào tập tin /etc/mtab (đây là tập tin lưu trữ
thông tin về các tập tin hệ thống hiện có trên hệ thống). Tùy chọn này cần thiết khi
hệ
thống tập tin/etc chỉ cung cấp quyền đọc.
-r
Kết gắn hệ thống tập tin chỉ có quyền đọc.
-w
Kết gắn hệ thống tập tin có quyền đọc ghi.
-L nhón
Kết gắn phân vùng được chỉ ra bởi nhón.
-U uuid
Kết gắn phân vùng được xác định bởi uuid. Hai tùy chọn này chỉ thực hiện được
khi tập tin/proc/partitions tồn tại (đây là tập tin lưu trữ thông tin về các phân vùng
trên hệ thống)
Trên đây là cách chính thức để kết gắn các thiết bị lưu trữ vật lý, nhưng có cách
thuận tiện hơn. Bình thường chỉ có người dùng root mới có quyền gắn kết các thiết
bị,
để mọi người dùng khác có thể kết gắn đĩa mềm hoặc cdrom chẳng hạn, hãy thực
hiện như sau:
- Với tư cách người dùng root, hãy gõ các lệnh cấp cho mọi người dùng các
quyền truy nhập tới hai thư mục là điểm kết gắn với hai thiết bị đĩa mềm và cdrom
21
# chmod a+rwx /mnt/floppy ; /mnt/cdrom
Cấp cho mọi người dùng quyền đọc và ghi đối với hai thư mục lưu trữ thiết bị
trên hệ thống
# chmod a+rw /dev/fd0 ; /dev/cdrom
- Thêm các dòng sau vào tập tin /etc/fstab
/dev/cdrom /mnt/cdrom iso9660 ro, user, noauto 0 0
/dev/fd0 /mnt/floppy vfat user, noauto 0 0
- Bây giờ mọi người dùng đều có thể kết gắn đến đĩa mềm và cdrom đó
# mount /mnt/floppy
# mount /mnt/cdrom
Cần ghi nhớ rằng, việc cho phép mọi người dùng có thể mount được thiết bị đĩa
của mình là điều rất nguy hiểm, vì điều đó có liên quan đến vấn đề bảo mật.
Lệnh Unmount
Lệnh umount cho phép tháo bỏ kết gắn của một hệ thống tập tin trên hệ thống tập
tin chính bằng lệnh umount với tham số đi kèm là tên của thiết bị lưu trữ hệ thống
tập
tin đó.
Cú pháp lệnh:
umount <thiết-bị>
Lệnh này sẽ tháo bỏ kết gắn của hệ thống tập tin có trên thiết-bị ra khỏi hệ thống
tập tin chính. Chú ý rằng, không thể tháo bỏ kết gắn của một hệ thống tập tin khi
nó
“bận” - tức là khi có một tiến trình đang hoạt động truy cập đến các tập tin trên hệ
thống tập tin đó.
Các tuỳ chọn lệnh:
-h
22
Hiển thị thông báo trợ giúp và thoát.
-n
Loại bỏ các gắn kết mà không ghi vào thư mục /etc/mtab.
-v
Hiện các chế độ liên quan.
-r
Trong trường hợp loại bỏ gắn kết bị lỗi, tùy chọn này sẽ giúp tạo lại gắn kết với
chế độ chỉ đọc.
-a
Tất cả các tập tin hệ thống được hiển thị trong /etc/mtab đó được loại bỏ các gắn
kết.
-t kiểu
Tùy chọn này cho phép xác định kiểu hệ thống tập tin được tháo bỏ kết gắn. Có
thể kết hợp nhiều kiểu hệ thống tập tin cùng lúc bằng cách ngăn chúng bởi dấu ",".
-f
Bắt buộc phải tháo bỏ các gắn kết.
Ví dụ khi không dùng đến đĩa mềm nữa, có thể dùng lệnh sau:
# umount /mnt/fd0
Khi một hệ thống tập tin được gắn kết (dùng lệnh mount), những thông tin quan
trọng về sơ đồ các tập tin trên hệ thống tập tin đó được lưu trong nhân. Nếu loại bỏ
thiết bị vật lý chứa hệ thống tập tin mà không tháo bỏ kết gắn (dùng lệnh umount)
có
thể dẫn tới thông tin lưu về hệ thống tập tin bị thất lạc. Mục đích của lệnh umount
là
xóa bỏ mọi thông tin đó ra khỏi bộ nhớ khi không dùng đến nữa.
2.2. Các lệnh định dạng đĩa và tạo hệ thống tập tin trong Linux
23
Định dạng vật lý một thiết bị đĩa là một chuyện, tạo một tập tin hệ thống trên nó
lại là một chuyện khác. Nếu như trong DOS, lệnh FORMAT A: thực hiện cả hai
công
việc trên thì ở trong Linux, đã là hai lệnh riêng biệt. Sau đây là một số lệnh giúp
định
dạng thiết bị lưu trữ vật lý của mình.
Ổ đĩa cứng
Ổ đĩa cứng phải được phân hoạch trước khi có thể định dạng và sử dụng nó.
Tương tự như DOS, trong Linux có fdisk. Trong Linux có thể tạo các kiểu phân
hoạch khác nhau, mỗi phân hoạch được gắn với một chỉ số (index: ID) để thông
báo
cho hệ điều hành biết kiểu phân hoạch của nó. Dùng các lệnh sau thực hành
# su
passwd:
# fdisk /dev/hda
Command (m for help):
Lệnh trên báo cho fdisk biết sẽ làm việc với loại ổ đĩa nào. Nếu dùng đĩa kiểu
SCSI thìhda sẽ được thay bằng sda. Để xem các lệnh của fdisk, hãy đánh "m”.
# fdisk /dev/hda
Command (m for help):m
Hành động lệnh
a Bật/tắt cờ có thể boot được
b Hiệu chỉnh loại thiết bị lưu trữ bsd
c Bật cờ tương thích với thiết bị kiểu DOS
d Xoá một phân vùng
l Danh sách các kiểu phân vùng sẵn có
24
m Hiển thị trang trợ giúp này
n Thêm một phân vùng mới
o Tạo một bảng phân vùng DOS trống
p Hiển thị bảng phân vùng trên hệ thống
q Thoát và không ghi mọi sự thay đổi
s Tạo một phân vùng cho loại thiết bị lưu trữ SUN
t Thay đổi chỉ số phân vùng hệ thống
u Thay đổi các đơn ví hiển thị
v Kiểm tra bảng w Ghi sự thay đổi trên bảng phân vùng và thoát
x Các tính năng mở rộng (chỉ dành cho các chuyên gia)
Command (m for help):p
Disk /dev/hda: 64 heads, 63 sectors, 847 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Bloocks Id System
/dev/hda1 * 1 817 1647040+ 83 Linux
/dev/hda2 818 847 60480 82 Linux
swap
Command (m for help):q
#
Các cột thông báo trên đây có ý nghĩa như sau:
Cột Device có mục thiết bị dành cho phân vùng trong /dev, chẳng hạn /dev/hda1.
Cột Boot chỉ xem phân vùng đã có khả năng khởi động hay không, nếu có khả
năng khởi động thì có dấu '*’.
Cột Start, End chỉ ra chỉ số trụ (cylinder) đầu và cuối của phân vùng.
Cột Bloocks chỉ ra dung lượng của phân vùng (là số lượng tính theo khối 1KB).
Cột Id và System chỉ số ID và ý nghĩa của ID đã, ví dụ ID = 82 có ý nghĩa
25