Life would be so much simple if we don't care so much


Sau khi tạo partition bằng lệnh fdisk trên ổ cứng external (external hard disk), thì dùng mkfs để khởi tạo file hệ thống.
Cuối cùng để sử dụng được thì sẽ thực hiện mount ổ cứng vào.

1. mount là gì?

Cấu trúc thư mục của Linux là cấu trúc cây thư mục (tree) và được bắt đầu ở root trên cùng gọi là /root directory nhưng việc đăng ký cho 1 thiết bị lưu trữ gắn vào 1 điểm chỉ định trên cây thư mục của Linux được gọi là mount. Điểm được mount vào có thể được gọi là điểm mount.

2. format của lệnh mount

mount -t <type> -o <option> <device file> <mount point>
Các option hữu ích
-t type chỉ định device mount của file hệ thống
-o option chỉ định flag cho phép readonly hoặc readable

Set device file, chẳng hạn như /dev/sdb1
Set mount point, vd như /mnt/diskA
Nếu option bỏ trống thì khi thực thi sẽ hiển thị file hệ thống đang được mount

Ở đây, chỉ giải thích về lệnh mount được dùng cho việc mount ổ cứng. Trong thực tế, vẫn còn nhiều option khác, không hẳn chỉ chỉ có option cho việc mount.

***Note

Về option -o

Có nhiều option, có thể chỉ định nhiều option bằng cách dùng 「, (dấu phẩy)」để chia các option ra

defaults mount với default option (rw, suid, dev, exec, auto, nouser, async)
rw mount ở read/write mode
suid enable SUID hay SGID
dev cho phép sử dụng các ký tự đặc biệt, device and block, special device trên file hệ thống.
exec cho phép thực thi trên binary
auto nếu option -a được chỉ định, ổ cứng sẽ auto mount
nouser người dùng thông thường (không phải super user) thì không được phép thực thi lệnh mount
async đối với file hệ thông thì mọi I/O sẽ được tiến hành không đồng bộ
ro mount với readonly
nosuid SUID cũng như SGID bị disable
nodev các ký tự, ký tự đặc biệt, device block, special device…sẽ không sử dụng được
noexec không được phép trực tiếp execute binary
noauto nếu option -a được chỉ định, ổ cứng sẽ không auto mount
user cho phép general user được quyền mount ổ cứng
users cho phép toàn bộ user đều có thể mount/unmount ổ cứng
remount mount lại 1 file hệ thống đang được mount
Khi muốn thay đổi mount và option thì vd, khi muốn set write permission cho readonly thì mount và sửa lại.
※Ngoài ra vẫn còn 1 số option khác

3. Cách dùng lệnh mount

Thử mount partition /dev/sdb5 vào subdirectory /mnt/diskA

# mount -t ext4 -o defaults /dev/sdb5 /mnt/diskA/ ← mount
partition đã mount hay chưa có thể confirm như lệnh dưới đây

# mount -t ext4 ← ở ext4 hiển thị danh sách file hệ thống đang được mount
/dev/mapper/vg_sandbox1-lv_root on / type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/sdb5 on /mnt/diskA type ext4 (rw) ← mount ở ext4
1 khi đã mount vào thì có thể sử dụng như 1 directory thông thường

4. Mount sau khi khởi động lại OS 

Sau khi khởi động lại OS thì việc mount lại file hệ thống thì trước đó đã được ghi sẵn ở /etc/fstab
Chẳng hạn, sau khi khởi động, thì partition /dev/sdb5 mount vào sub directory /mnt/diskA sẽ được ghi thêm như dưới đây

/dev/sdb5 /mnt/diskA ext4 defaults 0 0
Về /etc/fstab
Hãy xem thử nội dung file hệ thống fstab

# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Aug 13 09:25:19 2013
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_sandbox1-lv_root / ext4 defaults 1 1
UUID=b5bc792e-4c30-48a5-bd1a-f071192d5573 /boot ext4 defaults 1 2
/dev/mapper/vg_sandbox1-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

Thông tin mount của mỗi file hệ thống sẽ lần lược được viết từng dòng vào file fstab. Mỗi field của dòng sẽ được cách bởi space, chia nhau ra bởi TAB.
Thêm vào đó, chương trình dùng để đọc file fstab chẳng hạn như fsck(*) mount, unmount thì sẽ đọc từ đầu xuống theo thứ tự từ top nên thứ tự của record (file hệ thống) được ghi lại bên trong fstab thì khá quan trọng.

Thông tin các field
Field thứ 1: device file muốn mount
eg: /dev/sdb5
Có thể chỉ định UUID và volume label. LABEL=Boot、UUID=3e6be9de-8139-11d1-9106-a43f08d823a6
Field thứ 2: ghi lại info mount point của file hệ thống
eg: /mnt/diskA
Filed thứ 3: ghi type của file hệ thống
eg: ext3, ext4, iso9660, nfs …vv
Filed thứ 4: ghi mỗi mount option của mỗi file hệ thống. Trường hợp có nhiều option thì dùng , (dấu phẩy) để phân tách
Field thứ 5: ghi vào nếu file hệ thống có cần thiết dùng dump command hay không. 1=need, 0=no need. Nếu không ghi gì xem như là không cần thiết
Field thứ 6: fsck được tham chiếu khi quyết định các thứ tự thực thi kiểm tra file hệ thống trong thời gian boot
File root hệ thống thì cần được ghi là 1, ngoài ra thì với các partition khác thì sẽ ghi là 2
Nếu ghi là 0 thì dựa theo fsck được xem như là không cần thiết.

Note ***

Label là gì?
Label là name mà user sẽ gắn vào để định danh cho 1 thiết bị lưu trữ như ổ đĩa cứng.

Khi thực thi mkfs thì có thể dùng -L cho option để chỉ định label name, với lệnh e2label thì có thể gắn label name cho volume.
eg
# mkfs -t ext4 -L hdd1 /dev/sdb5 ← ở /dev/sdb5 thì hdd1 là label name
hoặc
# e2label /dev/sdb5 hdd1 ← ở /dev/sdb5 thì hdd1 là label name

Cách nào cũng có thể gắn label name được.

Cách confirm label

Có thể dùng lênh e2label để confirm label
eg
# e2label /dev/sdb5
hdd1  ←label của /dev/sdb5

Để mô tả 1 file system đã được gắn label thì có thể viết như sau

LABEL=hdd1 /mnt/diskA ext4 defaults 0 0

***Note

UUID là gì?

UUID là ID dùng để quản lý và định danh thiết bị. Không hẳn là quản lý để khỏi bị duplicate nhưng nó hiện diện như 1 unique Id duy nhất để định danh cho thiết bị, ổ cứng cũng được gán UUID.
Để xác định UUID của ổ cứng, có thể dùng lệnh blkid

eg

# blkid
/dev/sda1: UUID=”b5bc792e-4c30-48a5-bd1a-f071192d5573″ TYPE=”ext4″
/dev/sda2: UUID=”50KmAJ-A2Le-xYiK-ag0P-sQgb-bZXI-rWa21g” TYPE=”LVM2_member”
/dev/sdb5: LABEL=”hdd1″ UUID=”8b976773-def1-4a70-acc1-6284f53cf230″ TYPE=”ext4″
↑ label: /dev/sdb5, có thể biết UUID và Type

/dev/mapper/vg_sandbox1-lv_root: UUID=”fa117ec8-70ec-4fc5-bff2-f74bbe58b972″ TYPE=”ext4″
/dev/mapper/vg_sandbox1-lv_swap: UUID=”38037ae3-a844-487b-8b49-98d98cff0b69″ TYPE=“swap”

UUID sẽ được ghi lại sẵn ở fstab, trường hợp chẳng hạn như thay đổi kết nối ổ cứng về mặt vật lý hay khi thêm vào thiết bị thì tên thiết bị sẽ bị thay đổi (vd như khi đổi sda1 thành sdb1) thì record đã được ghi lại ở fstab sẽ được chỉ định chọn. Trường hợp tên thiết bị được ghi lại ở fstab, nếu tên thiết bị thay đổi thì cũng có trường hợp sẽ không khởi động như bình thường được.

(*)
The system utility fsck (file system consistency check) is a tool for checking the consistency of a file system in Unix and Unix-like operating systems, such as Linux and macOS.[1] A similar command, CHKDSK exists in Microsoft Windows.

Tham khảo

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: