Bài 11. Phân cùng và hạn ngạch
Mỗi
ổ IDE chỉ cho phép có 4 phân vùng chính và một trong số chúng có thể được đánh
dấu là phân vùng mở rộng. Phân vùng này có thể được đánh chia thành nhiều phân
vùng con bên trong. Linux hỗ trợ tối đa 64 phân vùng trên ổ IDE và 16 phân vùng
trên ổ SCSI.
Trong ví dụ
trên (dùng fdisk -l), hệ thống có ba
phân vùng chính được định danh từ hda1 đến hda3. Phân vùng thứ 3 được đánh dấu
là mở rộng và chứa trong nó 7 phân vùng con. Do đó hda3 không được dùng. Các
phân vùng con được định danh từ hda5 trở đi.
Để
nhận dạng các ổ cứng trong /dev, Linux dùng hai ký tự bắt đầu là hd cho các thiết
bị IDE, sd cho các thiết bị SCSI hoặc ổ đĩa USB (nhưng lại dùng st cho ổ băng
SCSI). Sau đó là các ký tự thêm vào để định danh các thiết bị cùng họ:
hda |
Primary Master |
hdb |
Primary Slave |
hdc |
Secondary Master |
hdd |
Secondary Slave |
sda |
First SCSI/USB disk |
sdb |
Second SCSI/USB disk |
http://en.wikipedia.org/wiki/Wikipedia:GIBIBYTE#Quantities_of_bytes_and_bits
http://en.wikipedia.org/wiki/Binary_prefix
Kilobytes: Ki = 210 bytes K = 102 bytes
Gigabytes: Gi = 220 bytes G = 104 bytes
…
Ki for size of
RAM
K for size of
hard disk
Để
có thể sử dụng được, các đĩa cứng cần phải được phân vùng. Linux thêm vào đằng
sau định danh đĩa cứng số hiệu của các phân vùng để quản lý.
hda1 |
Partition đầu tiên trên ổ IDE đầu
tiên |
hda2 |
Partition thứ hai trên ổ IDE đầu
tiên |
sdc3 |
Partition thứ ba trên ổ SCSI thứ
ba |
fdisk <tên ổ>
fdisk luôn là
công cụ được lựa chọn để phân vùng các đĩa cứng. Tập lệnh của fdisk tương đối
đơn giản, chỉ gần gõ lệnh m để xem đầy đủ các lệnh của nó.
Sau khi fdisk,
nếu có thông báo “Device or Resource are busy” thì cần reboot lại. Để sử dụng
được các phân vùng này, phải định dạng chúng với các định dạng hệ thống file mà
Linux hiểu được thông qua các lệnh: mkfs
hoặc mke2fs.
mkfs [-t kiểu]
<tên ph.vùng>
mount <tên
ph.vùng> <thư mục> [-t kiểu] [-o t.chọn kiểu]
Thiết bị phải
được gắn vào 1 thư mục trống bất kỳ có sẵn trên cây thư mục trước khi bạn có thể
truy cập tới nó. Thư mục trống mà gắn với thiết bị kể trên được gọi là mount
point.
Sau khi mount
thiết bị, bạn có thể truy cập tới dữ liệu trong thiết bị bằng cách truy cập vào
mount point. Bạn cần thực hiện thao thác unmount để hủy gắn kết thiết bị với hệ
thống khi không còn cần truy cập tới thiết bị nữa.
Tùy chọn kiểu
của lệnh mount giống hệt tùy chọn kiểu được sử dụng trong file /etc/fstab.
File cấu hình
/etc/fstab chứa thông tin về các thiết bị (phân vùng ổ cứng, CD/DVD, USB, ISO
image…) trên máy tính bao gồm:
+ Đường dẫn tới
file đại diện cho thiết bị.
+ Mount point:
cho biết thiết bị được mount vào thư mục nào.
+ Các tùy chọn
(option): chỉ ra thiết bị được mount như thế nào?
v.v..
fstab
là file dạng văn bản (plain text), vì thế bạn có thể mở và chỉnh sửa nó sử dụng
bất kỳ công cụ Text Editor nào với điều kiện bạn phải có đặc quyền root để lưu
lại những thay đổi. Nếu bạn đang đăng nhập với tài khoản người dùng thông thường
thì có thể sử dụng 2 lệnh su hoặc sudo để tạm thời chuyển sang đặc quyền root.
Xem chi tiết về
/etc/fstab bằng man 5 fstab
Mỗi dòng trong
file fstab chứa thông tin về một thiết
bị. Các cột ở mỗi hàng được phân cách bởi khoảng trắng. Thứ tự các dòng là
không quan trọng. Sau đây phần giải thích kỹ hơn ý nghĩa của từng cột:
+ Cột 1: cho
biết loại thiết bị (phân vùng, CD/DVD, USB, ISO image…). Đồng thời cũng cho biết
đường dẫn tới file đại diện cho thiết bị (device file) . Trong Linux, mọi tài
nguyên phần cứng lẫn phần mềm đều được xem là file, các device file thường nằm ở
thư mục /dev
+ Cột 2: đường
dẫn của mount point, là một thư mục trống được tạo sẵn trong cây thư mục. Khi
gõ lệnh mount, nếu bạn không chỉ định rõ mount point thì đây là mount point mặc
định cho thiết bị ở cột 1. Thư mục chứa mount point thường là /mnt hay /media ,
mặc dù bạn có thể mount thiết bị vào bất cứ thư mục trống nào.
+ Cột 3: là kiểu
filesystem của thiết bị. Linux hỗ trợ nhiều kiểu filesystem, dưới đây là 1 số
filesystem phổ biến:
·
Ext2, Ext3 và Ext4: điểm khác biệt lớn
nhất giữa Ext2 và Ext3 (Ext4) là Ext3(4) hỗ trợ tính năng journaling, tức là
khi bạn tắt máy không đúng cách (do cúp điện đột ngột, hệ thống bị treo nên phải
nhấn nút khởi động lại…) thì khả năng mất mát dữ liệu ở mức thấp, đồng thời hệ
điều hành sẽ không phải tốn thời gian để kiểm tra, tìm lỗi trên filesystem
trong lần khởi động kế tiếp.
Xem thêm tại http://en.wikipedia.org/wiki/Ext4
·
swap: phân vùng làm không gian bộ nhớ ảo,
dùng để bổ sung thêm bộ nhớ cho hệ thống khi hệ điều hành phát hiện việc thiếu
hụt bộ nhớ RAM.
·
Vfat (FAT16, FAT32) và NTFS: đây là
các filesystem được Windows hỗ trợ.
·
nfs: dành cho các tài nguyên ở xa, được
chia sẻ qua mạng sử dụng NFS
·
auto: đây không phải là 1 filesytem.
Nó có nghĩa là hệ thống sẽ tự động nhận diện loại filesystem của thiết bị khi
thiết bị đó được mount.
+ Cột 4: là
các tùy chọn khi mount.
Nếu có nhiều
tùy chọn thì chúng được phân cách bởi dấu phẩy. Dưới đây là 1 số tùy chọn đáng
chú ý:
·
auto: tự động mount thiết bị khi máy
tính khởi động.
·
noauto: không tự động mount, nếu muốn
sử dụng thiết bị thì sau khi khởi động vào hệ thống bạn cần chạy lệnh mount.
·
user: cho phép người dùng thông thường
được quyền mount.
·
nouser: chỉ có người dùng root mới có
quyền mount.
·
exec: cho phép chạy các file nhị phân
(binary) trên thiết bị.
·
noexec: không cho phép chạy các file
binary trên thiết bị.
·
ro (read-only): chỉ cho phép quyền đọc
trên thiết bị.
·
rw (read-write): cho phép quyền đọc/ghi
trên thiết bị.
·
sync: thao tác nhập xuất (I/O) trên
filesystem được đồng bộ hóa.
·
async: thao tác nhập xuất (I/O) trên
filesystem diễn ra không đồng bộ.
·
defaults: tương đương với tập các tùy
chọn rw, suid, dev, exec, auto, nouser, async
+ Cột 5 là tùy
chọn cho chương trình dump, công cụ sao lưu filesystem. Điền 0: bỏ qua việc sao
lưu, 1: thực hiện sao lưu.
+ Cột 6 là tùy
chọn cho chương trình fsck, công cụ dò lỗi trên filesystem. Điền 0: bỏ qua việc
kiểm tra, 1: thực hiện kiểm tra cho root, 2: thực hiện kiểm tra cho các
filesystem khác.
File
/etc/fstab cung cấp các chỉ dẫn cho hệ điều hành trong việc nhận diện, quản lý
việc mount các thiết bị. Đồng thời việc cấu hình lại file fstab cũng giúp ích cho bạn trong việc giảm bớt thời gian mount thiết
bị bằng lệnh cũng như là kiểm soát việc truy cập tới thiết bị của người dùng.
Một
số chú ý với mount và /etc/fstab
Chương trình mount sẽ đọc /etc/fstab và quyết định
tài nguyên (hoặc điểm kết nối) nào sẽ được sử dụng và các tham số của việc kết
nối cũng có thể được xác định tại bước này. Các tham số của mount và trong file
fstab là giống nhau.
Nếu sử dụng với
tham số -a, mount sẽ tự động ánh xạ
tất cả các khai báo trong /etc/fstab mà chưa được mount và không có tùy chọn noauto.
Một số thiết bị
được truy cập thông qua các nhãn hoặc UUID (Universally Unique Identifier).
Nhãn được gán
cho thiết bị bởi lệnh tune2fs:
tune2fs –L /usr/local /dev/hdb12
Nhãn được gán
cho thiết bị bởi lệnh e2label:
e2label device [new-label]
UUID được gán
cho thiết bị bởi lệnh tune2fs:
tune2fs –U random <tên ph.vùng>
Xem UUID của
phân vùng
tune2fs –l <tên ph.vùng> | grep UUID
Khi muốn thay
đổi các option của một filesystem đã được mount, chúng ta không cần thiết phải
unmount rồi mount lại với các option mới mà có thể dùng lệnh mount với tham số
remount mà không cần phải thay đổi tên phân vùng hay mount point.
Thường thì
chúng ta remount để chuyển một filesystem từ chế độ chỉ đọc sang đọc và ghi như
sau:
mount -o remount,rw /dev/sdb2
Default mount
option
tune2fs –l <tên ph.vùng> |
grep option
tune2fs –o <d.sách tùy chọn>
<tên ph.vùng>
Quota
là công cụ cho phép quản trị hệ thống thiết lập hạn ngạch lưu trữ trên đĩa.
Công cụ này không yêu cầu khởi động lại hệ thống.
Có hai loại quản
lý hạn ngạch cơ bản: theo dung lượng đĩa cứng sử dụng (block quota) và theo số
file và thư mục được tạo ra (inode quota).
-
Block quota sẽ tính tổng dung lượng của
tất cả các file và thư mục của người dùng tạo ra trong filesystem theo số các
block. Kích thước mặc định của các block khác nhau trong từng hệ thống file..
-
Inode quota sẽ tính tổng số lượng file
và thư mục của người dùng được tạo ra trong hệ thống file (mỗi file và thư mục
thường chiếm 1 inode).
Hạn ngạch đĩa
thường được áp dụng cho người dùng hoặc nhóm người dùng. Việc đặt ra hạn ngạch
sẽ do người quản trị hệ thống thực hiện cho từng người dùng hoặc nhóm người
dùng.
Có hai loại mức
hạn ngạch (cho cả block và inode): mềm (soft) và cứng (hard). Thông thường thì
soft quota < hard quota. Khi soft quota bị vi phạm, hệ thống sẽ gửi một cảnh
báo đến người dùng. Khi hard quota bị vi phạm, hệ thống sẽ ngăn chặn hành động
ghi dữ liệu của người dùng vào hệ thống file và nhận một thông báo về việc ghi
không thành công.
Để có thể áp dụng
tính năng hạn ngạch trên hệ thống file, cần phải làm các bước sau.
1. Thêm tùy chọn
usrquota vào file /etc/fstab tại dòng chứa phân vùng cần phân hạn ngạch.
2.
Remount lại phân vùng này
mount
-o remount /data
3.Thực hiện quotacheck:
quotacheck –avug
-a: Kiểm tra tất cả những hệ thống tập tin cấu hình quota.
-v: Hiển thị thông tin trạng thái khi kiểm tra.
-u: Kiểm tra quota của người dùng.
-g : Kiểm tra quota của nhóm.
Nếu chưa tạo tập tin lưu trữ thông tin cấu hình của user () và nhóm () trong /data, Thì khi chạy lệnh quotacheck sẽ báo lỗi không tìm thấy đồng thời cũng sẽ tự tạo 2 tập tin trên aquota.user, aquota.group trong /data.
Kiểm tra 2 files lưu trữ thông tin cấu hình quota: ls –l /data
Chạy lại lệnh quotacheck:
quotacheck –avug
4. Bật quota bằng
quotaon hoặc reboot
quotaon –a
5. Phân bổ quota cho usera:
edquota –u usera
Một số options của lệnh edquota :
-u : Thiết lập quota cho user.
-g : Thiết lập quota cho group.
-p: Sao chép quota từ người dùng này qua người dùng khác.
-t: Chỉnh sửa thời gian của giới hạn mềm (soft limit).
Nhập vào giới hạn mềm (soft limit) và giới hạn cừng (hard limit) cho usera. Để thoát ra, ấn phím :wq
6. Đặt thời gian chuyển từ giới hạn mềm sang giới hạn cứng: edquota –t
7. Kiểm tra quota của
usera: quota –u usera
8. Nếu bạn cố tình lưu trữ lớn hơn hạn ngạch đã thiết lập cho /data thì sẽ báo lỗi sau:
* Ngoài ra ta có thể sử dụng lệnh quotastats, repquota để
xem một số thông tin về quota
Thêm 1 ổ cứng
mới 50GiB.
+ Tên ổ mới là
gì
+ Chia ổ thành
các phân vùng như sau:
-
1; Primary; 15GiB
-
2; Primary; 15GiB
-
3; Extended; Toàn bộ phần còn lại
-
5; Logic; 10GiB
-
6; Logic; Toàn bộ phần còn lại
Xóa phân vùng
/dev/sda2 (25GiB) sau đó tạo các phân vùng sau
+ /dev/sda4;
Extended; chứa phần cuối (65GiB)
+ 5; Logic;
20GiB
+ 6; Logic;
20GiB
+ 7; Logic;
25GiB
Ánh xạ tự động
/dev/sda{5,6,7} vào /lab/p{5,6,7} bằng tên tuyệt đối
Ánh xạ tự động
/dev/sdb1 vào /lab/label bằng nhãn
Ánh xạ tự động
/dev/sdb2 vào /lab/uuid bằng UUID
Ánh xạ tự động
/dev/sdb5 vào /lab/quota hỗ trợ usrquota, grpquota
Hạn chế người
dùng test có hạn ngạch như sau:
0 0 100 120
(Block, Inode: {Soft, Hard})
Hạn chế nhóm
public chứa người dùng t1, t2 có hạn ngạch như sau:
120000000
150000000 0 0 (Block, Inode: {Soft, Hard})