Hệ thống tập tin (file system) trên Linux và các hệ điều hành dựa trên Unix chẳng hạn như macOS cũng có thể được mount (gắn), unmount, ... thông qua Terminal. Trong bài viết dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách mount, gắn thiết bị lưu trữ trên Linux Terminal.
Hệ thống tập tin (file system) trên Linux, macOS và các hệ điều hành dựa trên Unix khác không sử dụng các mã định danh ổ đĩa riêng cho các thiết bị lưu trữ giống như trên Windows. Windows gán cho mỗi ổ đĩa một ký tự, chẳng hạn như C: hay D: và hệ thống tập tin cho mỗi đĩa là câu các thư mục nằm bên dưới ký tự ổ đĩa đó.
Trên Linux, hệ thống tập tin là cây thư mục tất cả trong một. Một thiết bị lưu trữ được mount (gắn) có hệ thống tập tin được ghép vào cây thư mục để biểu thị nó là một phần không thể thiếu trong hệ thống tập tin gắn kết.
Hệ thống tập tin mới được mount có thể truy cập thông qua thư mục mà nó mount. Thư mục này được gọi là mount point (thư mục trống) cho hệ thống tập tin.
Nhiều hệ thống tập tin được mount tự động trong quá trình khởi động hoặc khi ổ đĩa được kết nối với máy tính trong quá trình thiết bị đang chạy. Các admin hệ thống nếu muốn có thể vô hiệu hóa, tắt tính năng auto-mount để kiểm soát các kết nối với hệ thống.
Điều này có nghĩa là các thiết bị lưu trữ được kết nối trong thời gian máy tính chạy sẽ không tự động mount và yêu cầu mount thủ công. Mount hệ thống tập tin theo cách thủ công cho phép người dùng có thể lựa chọn vị trí thư mục mount point và thiết lập thống tập tin ở chế độ chỉ đọc hay chế độ đọc - ghi.
Để liệt kê tất cả các hệ thống tập tin (file system) được mount trên máy tính, chỉ cần nhập lệnh mount rồi nhấn Enter.
mount sẽ liệt kê tất cả các hệ thống tập tin được kết nối trên cửa sổ Terminal.
Nếu muốn bạn có thể tinh chỉnh đầu ra bằng cách yêu cầu mount chỉ liệt kê các hệ thống tập tin mà bạn quan tâm. Tùy chọn -t (type) cho biết loại hệ thống tập tin nào sẽ được mount.
mount -t tmpfs
mount -t ext4
Cho ví dụ, giả sử nếu yêu cầu mount chỉ liệt kê các hệ thống tập tin tmpfs, như vậy bạn có thể dễ dàng quản lý đầu ra hơn.
Hệ thống tập tin tmpfs sẽ hiển thị như thể nó là hệ thống tập tin được mount, nhưng thực chất nó được lưu trữ trong bộ nhớ dễ bị bay hơi, tmp là viết tắt của temporary (tạm thời), thay vì được lưu trữ trên thiết bị lưu trữ liên tục.
Nếu muốn, bạn có thể thay thế tham số tmpfs bằng loại file mà bạn quan tâm.
Trong ví dụ này Taimienphi.vn sử dụng lệnh để liệt kê tất cả hệ thống tập tin ext4. Trên máy tính thử nghiệm chỉ có một hệ thống tập tin ext4 duy nhất nằm trên thiết bị sda - thiết bị lưu trữ đầu tiên được mount, thường là ổ đĩa chính và được mount trên /, là gốc của cây hệ thống tập tin.
Ý nghĩa các chỉ số khác:
- rw: Hệ thống tập tin có thể đọc và ghi.
- relatime: kernel đang sử dụng sơ đồ tối ưu hóa để ghi lại quyền truy cập file và sửa đổi dữ liệu meta.
- errors=remount -o: nếu phát hiện ra lỗi nghiêm trọng, hệ thống tập tin sẽ được mount lại ở chế độ chỉ đọc để cho phép chẩn đoán.
Ngoài lệnh mount, chúng ta cũng có thể sử dụng lệnh df để hiển thị các hệ thống tập tin được mount và vị trí các thư mục mount point.
Lệnh df không có tham số cung cấp cho chúng ta các vấn đề liên quan đến quá tải thông tin như lệnh mount. Chẳng hạn như trên Ubuntu Linux, hệ thống tập tin squashfs giả được tạo cho các ứng dụng được tạo bằng lệnh snap. Chúng ta không cần quan tâm đến thông tin này làm gì cả.
Để buộc df bỏ qua thông tin này hoặc các loại thông tin hệ thống khác, chúng ta sử dụng tùy chọn -x (exclude: loại trừ):
df -x squashfs
Lúc này bạn có thể dễ dàng nhìn thấy tên các hệ thống tập tin, kích thước, dung lượng trống và dung lượng đã sử dụng cũng như thư mục mount point.
Tất cả hệ thống tập tin được mount trong quá trình khởi động đều có file có tên gọi là fstab, là bảng hệ thống tập tin nằm trong /etc.
Chúng ta có thể sử dụng mount để buộc "làm mới" và mount lại tất cả các hệ thống tập tin được liệt kê trong fstab. Điều này hữu ích trong trường hợp nếu gặp phải các vấn đề với nhiều hệ thống tập tin.
Sử dụng sudo và bạn sẽ nhận được thông báo yêu cầu nhập mật khẩu:
sudo mount -a
Trên máy tính có vấn đề về hệ thống tập tin, việc mount lại giúp khắc phục các sự cố. Nếu không, ít nhất bạn sẽ nhận được thông báo chẩn đoán và nhật ký hệ thống sẽ hướng dẫn bạn tìm ra nguyên nhân của vấn đề.
Các bước để mount ISO image và truy cập nội dung của nó như một phần của hệ thống tập tin khá đơn giản. Trong ví dụ dưới đây Taimienphi.vn sử dụng ISO Tiny Core Linux vì kích thước nhỏ và quá trình tải xuống nhanh chóng.
Trong cùng thư mục chứa ISO image, chạy lệnh dưới đây. Lưu ý nhớ đổi tên file ISO mà bạn muốn mount:
sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt
Vì sử dụng sudo nên bạn sẽ được yêu cầu nhập mật khẩu.
Tùy chọn -t (type) cho biết loại hệ thống tập tin đang được mount. Đây là file ISO vì vậy bạn cung cấp định danh loại iso9660.
Flag -o (options) được sử dụng để truyền các tham số bổ sung để mount. Tham số trong ví dụ này là loop.
Sử dụng loop để buộc mount sử dụng file thiết bị lặp kết nối với ISO image. File thiết bị lặp cho phép một file (chẳng hạn như ISO image) được mount và xử lý như thể đó là một thiết bị lưu trữ.
Các file thiết bị là các file đặc biệt được sử dụng làm giao diện để các thiết bị được kết nối hiển thị như thể chúng là các file hệ thống tập tin bình thường.
Có nhiều loại file thiết bị khác nhau, trong ví dụ này chỉ có duy nhất hệ thống tập tin ext4 được mount và được gọi là sda.
Nói một cách chính xác hơn, hệ thống tập tin ext4 nằm trên một thiết bị lưu trữ được kết nối với hệ thống tập tin thông qua file thiết bị /dev/sda và hệ thốngtập tin trên thiết bị lưu trữ được mout tại /.
Tất nhiên chúng ta sẽ phải cung cấp tên ISO image và thông báo cho mount biết vị trí hệ thống tập tin được mount. Trong ví dụ này Taimienphi.vn chọn /mnt.
ISO image được mount, trên màn hình sẽ hiển thị thông báo nói rằng ISO image được mount ở chế độ chỉ đọc trên cửa sổ Terminal.
6. Tìm kiếm the ISO Image
Sau khi được mount, chúng ta có thể điều hướng đến các thư mục trong ISO image giống như một phần của hệ thống tập tin. Lưu ý file ISO image được mount tại /mnt.
ls /mnt
ls /mnt/cde/
Unmount ISO image
Để unmount hệ thống tập tin đã được mount trước, chúng ta sử dụng lệnh unmount.
Trước hết thông báo cho unmount biết hệ thống tập tin nào mà chúng ta muốn unmount. Để làm được điều này chúng ta chỉ cần cung cấp mount point của hệ thống tập tin.
sudo umount /mnt
Nếu không có bất kỳ thông báo nào trên màn hình nghĩa là mọi thứ đều ổn.
Tạo Mount Point
Nếu muốn bạn có thể tạo và sử dụng mount point riêng. Chúng ta sẽ gọi một isomnt và mount ISO image vào đó. Về cơ bản mount point chỉ là một thư mục, vì vậy chúng ta có thể sử dụng mkdir để tạo mount point mới.
sudo mkdir /media/dave/isomnt
Bước tiếp theo chúng ta sử dụng cùng một định dạng lệnh giống trước đây để mount ISO image. Tuy nhiên lần này chúng ta không mount file vào /mnt mà mount vào /media/dave/isomnt/:
sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/
Lúc này bạn đã có thể truy cập hệ thống tập tin được mount từ thư mục mount point mới.
ls /media/dave/isomnt/cde/optional
7. Liên kết Mount Point
Chúng ta có thể liên kết mount point vào một thư mục khác. Hệ thống tập tin được mount sau đó có thể được truy cập hoặc thông qua mount point ban đầu hoặc thông qua thư mục được liên kết với nó.
Cho ví dụ, giả sử chúng ta tạo một thư mục mới có tên gọi là iso trong thư mục home, sau đó liên kết các mount point ISO image /media/dave/isomnt vào thư mục iso trong thư mục home.
Chúng ta có thể truy cập ISO image thông qua mount point ban đầu là /media/dave/isomnt và thông qua thư mục iso mới. Tùy chọn -B (bind) yêu cầu tên của mount point và tên của thư mục để liên kết.
mkdir iso
sudo mount -B /media/dave/isomnt/ iso
ls iso
ls /media/dave/isomnt
cd iso
ls
cd cde
8. Sử dụng umount để liên kết Mount Point
Hệ thống tập tin có mount point được liên kết với thư mục khác yêu cầu phải unmount khỏi thư mục mount point và bind point ban đầu.
Ngay cả khi unmount hệ thống tập tin từ thư mục mount point ban đầu, chúng ta vẫn có thể truy cập hệ thống tập tin từ thư mục được liên kết. Ngoài ra hệ thống tập tin cũng phải được unmount từ thư mục đó.
sudo umount /media/dave/isomnt
ls iso
sudo umount iso
ls iso
Mount đĩa mềm
Đĩa mềm (floppy disk) cũng là một thiết bị lưu trữ. Điều này có nghĩa là một file thiết bị sd (viết tắt của storage device - thiết bị lưu trữ) sẽ được sử dụng để kết nối với thiết bị vật lý.
Chúng ta phải thiết lập file thiết bị sd tiếp theo. Để làm được điều này, chúng ta chuyển đầu ra của df thông qua greb và tìm kiếm các mục có "sd".
df | grep /dev/sd
Trong ví dụ trong bài viết này, có một file thiết bị sd duy nhất được sử dụng là /dev/sda. File thiết bị sd tiếp theo sẽ là /dev/sdb. Điều này có nghĩa là khi chúng ta kết nối ổ đĩa mềm với máy tính, Linux sẽ sử dụng /dev/sdb để kết nối với ổ đĩa mềm.
Chúng ta sẽ thông báo cho mount để mount hệ thống tập tin vào đĩa mềm được kết nối với mount point /dev/sdb to the /mnt.
Kết nối ổ đĩa mềm thông qua cổng USB trên máy tính, sau đó chạy lệnh dưới đây:
sudo mount /dev/sdb /mnt
9. Nhãn hệ thống tập tin
Chúng ta có thể sử dụng tùy chọn -l (label) với mount để tìm nhãn được đính kèm hệ thống tập tin (nếu có).
Sử dụng tùy chọn -t (type) để yêu cầu mount chỉ báo cáo trên các hệ thống tệp vfat.
mount -l -t vfat
Các nhãn được đặt trong dấu ngoặc vuông nằm cuối danh sách. Nhãn của ổ đĩa mềm là NORTUN.
Chúng ta có thể truy cập ổ đĩa mềm thông qua mount point /mnt:
cd /mnt
ls
ls -l AMATCH.C
Đĩa mềm có chứa các file mã nguồn ngôn ngữ C. Date stamp cho thấy file được sửa đổi lần cuối cùng vào tháng 10/1992.
Nếu lặp lại df thông qua lệnh greb để liệt kê các file thiết bị sd, chúng ta sẽ thấy có 2 ổ đĩa mềm.
df | grep /dev/sd
Ổ đĩa mềm được hiển thị được mount trên /dev/sdb. Hệ thống tập tin trên ổ đĩa mềm được mount tại /mnt .
Để unmount ổ đĩa mềm, chúng ta sử dụng umount và sử dụng file thiết bị làm tham số.
sudo umount /dev/sdb
10. Tùy chọn Umount Lazy
Trong trường hợp nếu sử dụng hệ thống tập tin đang được unmount, quá trình sẽ thất bại.
sudo umount /dev/sdb
Quá trình thất bại vì thư mục làm việc hiện tại của người dùng nằm trong hệ thống tập tin mà bạn đang cố gắng unmount. Linux đủ thông minh để không cho phép người dùng nhìn thấy nhánh mà bạn đang ở trên đó.
Để khắc phục vấn đề này, chúng ta sử dụng tùy chọn -l (lazy). Tùy chọn này để làm cho umount chờ cho đến khi hệ thống tập tin có thể được unmount một cách an toàn.
sudo umount -l /dev/sdb
ls
cd -
ls /mnt
Mặc dù lệnh umount đang được chạy, nhưng hệ thống tập tin vẫn được mount và người dùng có thể liệt kê các file bình thường.
Ngay sau khi người dùng thay đổi thư mục bằng thư mục home, hệ thống tập tin mềm sẽ được phát hành và unmount. Nếu cố gắng liệt kê các file trong /mnt sẽ không trả về kết quả nào.
11. Mount Samba Share
Samba là tập hợp các dịch vụ phần mềm cho phép có thể truy cập các mạng chia sẻ thay thế cho nhau giữa các hệ điều hành Linux và Unix và các hệ điều hành Windows.
Để mount Samba Share trên Linux, bạn thực hiện theo các bước dưới đây:
Raspberry Pi được kết nối với cùng một mạng với thiết bị thử nghiệm được tích hợp Samba Share. Trên Samba có chứa một thư mục sao có tên là "share". Nhiệm vụ của bạn là tạo kết nối SSH với nó và xem các nội dung của thư mục share. Thư mục này nằm trên trong ổ USB được mount trên Pi.
Tên người dùng là pi và tên mạng của Raspberry Pi là marineville.local:
ssh pi@marineville.local
ls /media/pi/USB64/Backup
exit
Khi chạy lệnh SSH bạn sẽ được thông báo nhập mật khẩu Raspberry Pi.
Sau khi nhập mật khẩu và được xác thực, dấu nhắc lệnh trên cửa sổ Terminal thay đổi thành pi@marineville vì nó được kết nối với Raspberry Pi.
Nội dung của thư mục share được liệt kê tại /media/pi/USB64/Backup. Nội dung bao gồm 2 thư mục, một có tên gọi và dave và một có tên gọi là pat.
Nhập Exit để ngắt kết nối khỏiRaspberry Pi và dấu nhắc lệnh sẽ thay đổi thành dave@howtogeek.
Để sử dụng Samba, chúng ta phải cài đặt gói cifs-utils:
Nếu sử dụng Ubuntu hoặc các bản phân phối dựa trên Debian khác, sử dụng apt-get để cài đặt gói này vào hệ thống của bạn. Trên các bản phân phối Linux khác, sử dụng công cụ quản lý gói phân phối Linux thay thế.
sudo apt-get install cifs-utils
Sau khi quá trình cài đặt hoàn tất, sử dụng lệnh dưới đây để mount thư mục share, thay đổi địa chỉ IP, tên chia sẻ và mount point phù hợp:
sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS
Trong lệnh trên:
-t cifs: Loại hệ thống tệp là cifs.
-o credentials=/etc/samba/creds,uid=1000,gid=1000: các tham số tùy chọn là đường dẫn đến một file gọi là creds được bảo mật và chứa tên người dùng, mật khẩu người dùng Raspberry Pi, ID người dùng (UID) và ID nhóm (GID) được sử dụng để thiết lập chủ sở hữu và nhóm hệ thống tập tin gốc.
//192.168.4.13/share: vị trí mạng của thiết bị được tích hợp Samba Share và tên Samba của thư mục được chia sẻ. Thư mục gốc của thư mục Share có tên là Backup, nhưng tên Samba của thư mục được chia sẻ được đặt là Share.
/media/dave/NAS: tên của mount point. Lưu ý bạn phải tạo mount point trước.
Bằng cách truy cập mount point tại /media/dave/NAS chúng ta có thể truy cập thư mục được chia sẻ trên Raspberry Pi trên mạng. Bạn sẽ thấy có 2 thư mục Raspberry Pi được gọi là dave và pat.
cd /media/dave/NAS
12. Tạo và mount hệ thống tập tin
Chúng ta có thể sử dụng lệnh dd để tạo file image, sau đó sử dụng mkfs để tạo hệ thống tập tin và mount.
Sử dụng tùy chọn if (input file) để thông báo cho dd sử dụng luồng giá trị 0 từ /dev/zero làm file đầu vào.
File đầu ra mới (of - output file) được gọi là geek_fs.
Chúng ta sử dụng tùy chọn bs (block size) để yêu cầu kích thước khối là 1MB.
Sử dụng tùy chọn count để báo cho dd bao gồm 22 khối trong file đầu ra.
dd if=/dev/zero of./geek_fs bs=1M count=20
File image được tạo không chứa gì ngoài giá trị bằng 0.
Tiếp theo sử dụng lệnh mkfs để tạo hệ thống tập tin bên trong file geek_fs. Tùy chọn -t (type) cho phép lựa chọn loại hệ thống tập tin. Trong ví dụ này Taimienphi.vn tạo hệ thống tập tin ext4.
mkfs -t ext4 ./geek_fs
Để mount file image vào /media/dave/geek, sau đó sử dụng chown để thiết lập chủ sở hữu và nhóm để cho phép truy cập file:
sudo mount ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek
Để thay đổi hệ thống tập tin mới và sao chép trong một file để xem:
cd /media/dave/geek
cp /etc/fstab .
ls -l
Nếu sử dụng mount để liệt kê các hệ thống tập tin được mount nhưng hạn chế đầu ra đối với các hệ thống tập tin ext4 chúng ta sử dụng tùy chọn -t (type), kết quả trả về cho thấy có 2 hệ thống tập tin ext4 được mount.
mount -t ext4
13. Mount lại hệ thống tập tin
Để mount lại hệ thống tập tin, chúng ta sử dụng tùy chọn -o remount. Quá trình này được thực hiện để thay đổi hệ thống tập tin từ trạng thái chỉ đọc sang trạng thái đọc - ghi.
Giả sử để mount lại ổ đĩa mềm, chúng ta sẽ sử dụng flag -r (read-only), sau đó mount thông qua grep và tìm kiếm các chi tiết hệ thống tập tin ổ đĩa mềm:
sudo mount -r /dev/sdb /mnt
mount | grep /mnt
Như bạn có thể thấy ro được đánh dấu để cho biết hệ thống tập tin được mount ở chế độ chỉ đọc.
Sử dụng tùy chọn -o remount với flag rw (read-write) đểunmount và mount lại hệ thống tập tin với các cài đặt mới:
sudo mount -o remount,rw /mnt
Lặp lặp quá trình mount thông qua grep, bạn có thể thấy ro được thay thế bằng rw, tức là hệ thống tập tin hiện ở chế độ đọc - ghi.
mount | grep /mnt
14. Di chuyển hệ thống tập tin
Nếu muốn bạn có thể unmount và mount lại hệ thống tập tin trên một mount point khác chỉ với 1 lệnh duy nhất.
Tùy chọn -M (move) trong mount cho phép bạn làm được điều này. Tuy nhiên tùy chọn hiện không còn hoạt động trong các bản phân phối Linux, thay vào đó chúng ta sử dụng systemd.
Nếu cố gắng di chuyển tập tin hệ thống từ /mnt sang ./geek, quá trình này sẽ thất bại và trên màn hình hiển thị thông báo lỗi như trong hình bên dưới.
sudo mount -M /mnt ./geek
ls ./geek
Để giải quyết vấn đề này, chúng ta sử dụng tùy chọn -B (bind) trước đó để liên kết mount point ban đầu với mount point mới.
sudo mount -B /mnt ./geek
ls ./geek
Bài viết trên đây Taimienphi.vn vừa hướng dẫn bạn cách mount, gắn thiết bị lưu trữ trên Linux Terminal. Ngoài ra nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp như cách So sánh file văn bản trên Linux Terminal, bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.