Kiểm soát hệ thống Linux bằng fstab

LinuxTìm hiểu về fstab
File /etc/fstab cho phép bạn có thể kiểm soát những gì filesystems được gắn ở startup trên hệ thống Linux, gồm có các partition Windows và các chia sẻ mạng. Bạn cũng có thể sử dụng nó để kiểm soát các điểm gắn của các thiết bị lưu trữ ngoài giống như USB và các ổ cứng ngoài. Trong bài này chúng tôi sẽ giới thiệu cho các bạn cách sử dụng nó để kiểm soát hệ thống Linux của bạn.
/etc/fstab – Có trên mọi máy tính Linux, kiểm soát filesystem nào được gắn (mount) ở đây.
 
Trang hướng dẫn của nó, man fstab, bắt đầu với thông tin:
Fstab là một chương trình chỉ đọc bởi các chương trình khác, không cho phép ghi; các quản trị viên hệ thống cần phải có trách nhiệm tạo đúng và duy trì file này.
 
Tuy nhiên, ngày nay fstab thường được tạo bởi một bộ cài đặt hoặc một chương trình nào đó. Vì vậy bạn không nên quá lo lắng về “trách nhiệm” của mình.
Nhưng nếu muốn đi sâu vào nghiên cứu fstab, bạn vẫn cần hiểu nó thế nào và có thể điều chỉnh ra sao.
 
Một fstab điển hình
File fstab được cài đặt bởi bởi hầu hết các phân phối Linux hiện đại trông có vẻ hơi kinh sợ. Đây là một file fstab từ một hệ thống Ubuntu:
# /etc/fstab: static filesystem information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc defaults 0 0
# / was on /dev/sda6 during installation
UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701 / ext3 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=3943c247-16e9-405b-9fda-87684b02cc4e /boot ext2 defaults 0 2
# swap was on /dev/sda7 during installation
UUID=15825096-aef7-41d6-b53a-c86aec2ebde8 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
 
Hình 1 bên dưới thể hiện nghĩa của các cột.
linux
Hình 1
 
Các thiết bị và UUID
Chúng ta hãy bắt đầu với thiết bị: UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701. Điều này có nghĩa gì?
Trước đây, trường thiết bị của fstab đơn giản hơn nhiều, kiểu như /dev/hda3 cho partition thứ ba trên đĩa IDE thứ nhất.
 
Tuy nhiên các hệ thống ngày càng trở nên phức tạp hơn. USB và các đĩa SATA đều sử dụng disk driver sd, ban đầu được viết cho SCSI. Tuy nhiên không thể dự đoán được thứ tự của chúng. Nếu có một vài ổ USB và SATA, hoặc nếu thường xuyên add hoặc remove các ổ đĩa, bạn có thể phát hiện thấy rằng filesystem gốc của mình xuất hiện trên sda2 hôm nay nhưng lại xuất hiện trên sdc2 vào hôm sau.
Để khắc phục sự lộn xộn này, fstab có thể sử dụng "Universally Unique IDentifier" để nhận dạng mỗi filesystem.
Tuy nhiên có thể tìm ra partition của đĩa nào ánh xạ với UUID nào? Bạn có thể thấy một số chú thích trong fstab:
# / was on /dev/sda6 during installation
UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701 / ext3 errors=remount-ro 0 1
Tuy nhiên không nên tin tưởng hoàn toàn vào các chú thích này. Rất có thể partition của bạn đang nằm trên sda6, tuy nhiên không chắc chắn như vậy.
Để an toàn, chúng ta cần đi kiểm tra giá trị hiện hành với lệnh blkid:
$ blkid
/dev/sda1: UUID="702be669-1Aee-4128-8c57-60b58bc91f59" TYPE="ext2"
/dev/sda3: UUID="615aaed5-0dba-4204-9717-c9a00ff411ea" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: UUID="0c5121ff-331a-4ae2-b8be-e0b10bcae62f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda6: UUID="d2a1e4aa-6589-4846-ba58-107d32a25375" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda7: UUID="1533cdc3-635f-4552-818b-1fadce9ea7f8" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda8: UUID="b24fd645-7c28-431b-883d-0a6cf03340ed" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda9: TYPE="swap"
$ blkid -o value -s UUID /dev/sda8
b24fd645-7c28-431b-883d-0a6cf03340ed
Bạn cũng có thể sử dụng /dev/disk/by-uuid:
$ ls -l /dev/disk/by-uuid
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 0c5121ff-331a-4ae2-b8be-e0b10bcae62f -> ../../sda5
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 615aaed5-0dba-4204-9717-c9a00ff411ea -> ../../sda3
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 1533cdc3-635f-4552-818b-1fadce9ea7f8 -> ../../sda7
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 b24fd645-7c28-431b-883d-0a6cf03340ed -> ../../sda8
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 ca8ec122-33c7-4765-bd65-78a15c58def3 -> ../../sda2
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 d2a1e4aa-6589-4846-ba58-107d32a25375 -> ../../sda6
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 702be669-1Aee-4128-8c57-60b58bc91f59 -> ../../sda1
Một số phân phối, thay vì sử dụng UUID, bạn có thể đính nhãn (label) vào mỗi filesystem:
LABEL=/         /       ext3         defaults           1    1

Cách thức này cho phép dễ dàng đọc hơn nhiều nhưng có đôi chút lộn xộn. Nếu cài đặt một vài phát hành Linux trên các partition khác nhau thì bạn có thể bắt gặp một vài partition có cùng nhãn. Vậy cách có thể phân biệt partition nào được gắn nhãn nào như thế nào?

Lộn xộn bởi UUID và nhãn? Bạn không phải sử dụng chúng. Nếu có một thiết lập đơn giản với một đĩa, cú pháp đơn giản vẫn làm việc:

/dev/sda6     /       ext3    errors=remount-ro      0       1

Điểm gắn và kiểu Filesystem

Hai lĩnh vực tiếp theo rất đơn giản. Điểm gắn (mount point) là bất cứ nơi nào bạn muốn gắng filesystem: /, /home, /boot hoặc bất cứ chỗ nào. Nó phải là một thư mục rỗng tồn tại trước. Nếu không, bất cứ thứ gì bên trong sẽ bị ẩn khi bạn gắn gì đó lên trên nó.

Kiểu (type) là kiểu filesystem, giống như ext2, ext3, filesystem của Windows vfatntfs, hoặc iso9660 cho các CD. Bạn cũng có thể sử dụng lệnh auto, và Linux sẽ cố gắng đoán kiểu filesystem. man filesystems có một danh sách các filesystem được hỗ trợ.

 
Các tùy chọn

Phần các tùy chọn (options) là phần phức tạp nhất. Đây là chỗ bạn chỉ định “những vấn đề khác” – bất cứ thứ gì không phù hợp trong các phần khác. Nếu không có các tùy chọn cụ thể nào, bạn chỉ cần sử dụng defaults.

Có thể liệt kê nhiều tùy chọn nếu bạn muốn, phân biệt giữa chúng bằng dấu phẩy. Cho ví dụ, một CDROM có thể sử dụng ro,user,noauto,exec, bắt đầu với ro với thiết lập chỉ đọc.

user có nghĩa nó không cần đặc quyền root để gắn: bất cứ người dùng nào cũng có thể đánh mount /media/cdrom0, nếu bạn chưa có dịch vụ nào đang gắn nó.

noauto có nghĩa hệ thống sẽ không cố gắng gắn nó khi khởi động – một ý tưởng tốt cho các thiết bị ngoài.

 
exec chỉ thị cho hệ thống cho phép bạn chạy các chương trình từ hệ thống file đó. Nếu không sẽ bị vô hiệu hóa trên các CDROM và các Windows filesystem.

Trên Windows FAT filesystem, nếu sử dụng exec bạn có thể muốn fmask=111: Windows filesystem không có các điều khoản, vì vậy cần bảo đảm bit thực thi được thiết lập nếu muốn chạy các chương trình.

Đặt tất cả cùng nhau, bạn có thể tạo một entry hữu dụng trên các hệ thống không tự động gắn các thiết bị USB:

 

/dev/sdb1       /stuff        vfat      user,noauto,exec,fmask=111 0 0
 

Nếu thiết bị của bạn hiển thị ở đâu đó ngoài /dev/sdb1, hãy điều chỉnh như cần thiết. Sau đó sudo mkdir /stuff, lúc này bất cứ khi nào cắm vào camera, mp3 player hoặc USB, bạn sẽ đều có thể gắn nó bằng cách đánh mount /stuff.

Để có được danh sách đầy đủ các tùy chon, hãy xem man mount và tìm đến phần FILESYSTEM INDEPENDENT MOUNT OPTIONS và FILESYSTEM SPECIFIC MOUNT OPTIONS.

 
Dump và pass

Dump chỉ thị tần suất bạn muốn filesystem được backup như thế nào. Hầu hết mọi người không sử dụng trường này, tuy nhiên nếu bạn đang chạy phần mềm backup tự động thì có thể bạn sẽ muốn sử dụng nó.

Pass chỉ thị thời điểm và thiết bị cần được kiểm tra fsck trước khi được gắn. Nhìn chung, bạn nên sử dụng 1 cho root filesystem, 2 cho tất cả các filesystem đã được gắn khác và 0 cho filesystem không được gắn mặc định.

Văn Linh (Theo Linuxplanet)