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

Posts tagged ‘mount’

Linux – mount ổ cứng

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

Linux – quản lý ổ đĩa 

Ở bài này sẽ mô tả về sử dụng hard disk trên Linux

Partition là gì?

Có thể chia ổ cứng (hard disk) ra thành nhiều các phân vùng logic (partition) và mỗi partition đó sẽ được sử dụng như 1 hard disk.
Nếu phân chia partition theo mục đích chẳng hạn như tách partition chuyên dụng cho data, partition chuyên dụng cho system…thì sẽ có nhiều lợi điểm khác nhau như việc backup và update system sẽ trở nên dễ dàng hơn, thậm chí khi data bị overflow thì cũng không dẫn đến kết nối hệ thống bị đình chỉ, hoặc có thể cứu được data trong trường hợp hệ thống bị crash…
Điểm bất lợi là việc phải tính toán trước khả năng disk (kích thước) cho cấu trúc hệ thống thì khá là phức tạp và cả việc cập nhật sau đó cũng là vấn đề khó khăn.
Trên Linux để tạo các partition trên ổ cứng thì có thể sử dụng lệnh fdisk

File system là gì?

File system là cơ chế để quản lý các thuộc tính dữ liệu như file name, date update… được lưu trữ trong vùng nhớ của ổ cứng.
File system có nhiều loại khác nhau, chẳng hạn ở Windows thì có định dạng FAT32 và NTFS, trên Linux thì có ext2, ext3, gần đây thì có ext4, trên CD thì có iso9660 và rất nhiều loại định dạng dữ liệu khác nữa.
Tuỳ thuộc vào file hệ thống được sử dụng mà kích thước tối đa của 1 file, số ký tự tên file, hiệu quả truy cập, security, file compression… có rất nhiều chức năng khác nhau nhưng khi sử dụng hard disk thì tối thiểu trên partition cần thiết phải tạo các file hệ thống.
Ở Linux, để tạo các file hệ thống trên partition thì có thể dùng command mkfs

Mount là gì?

Cấu trúc của directory trong Linux được gọi là /root directory tương tự như cấu trúc tree bắt đầu từ trên top(root) của directory. Khi thiết bị lưu trữ kết nối với máy tính thì chúng ta sẽ làm cho thiết bị lưu trữ này thực hiện chức năng như 1 directory nằm trên cấu trúc tree của directory hệ thống.
Mount tức là việc thiết bị lưu trữ kết nối với máy đăng ký truy cập vào 1 điểm trên cấu trúc tree directory này.
Để mount file system thì sử dụng command mount

***Note
Khi mount disk vào bên trong directory đã có content thì content cũng sẽ bị replace cho dù directory đã được mount vào là /directory, lúc này thì sẽ không thể đọc hoặc ghi nội dung bên trong directory trước đó được nữa.

***Note
Về cấu trúc directory của Linux

Cấu trúc directory của Linux được tạo ra theo chuẩn được gọi là FHS(Filesystem Hierarchy Standard), cấu trúc này được mô tả như dưới đây.

Root directory

Ở directory nào đặt vào những file như thế nào để chuẩn hoá, rất nhiều các bản phân phối mà file đã được sắp xếp sẵn theo chuẩn.
Để biết được với mỗi directory thì sẽ đặt những file như thế nào thì có thể xem mô tả dưới đây.

/usr các loại file mà user install độc lập /có 1 cấu trúc tương tự trực tiếp bên dưới
/bin các chương trình của general user
/boot các file liên quan đến khởi động hệ thống
/dev directory, device file
/etc file setting
/lib các library common được sử dụng bởi nhiều chương trình trong hệ thống
/var các data thay đổi thường xuyên (log, db, web …)
/sbin chương trình quản lý system
/tmp file tạm

Tham khảo nguồn