Hệ thống tập tin trên Linux và các hệ điều hành dựa trên Unix như macOS có thể được mount (gắn), unmount... thông qua Terminal. Trong bài viết này, Mytour sẽ hướng dẫn chi tiết cách thực hiện việc này trên Terminal Linux.
1. Hệ thống tập tin trên Linux
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ông sử dụng các mã định danh riêng cho thiết bị lưu trữ như trên Windows. Thay vào đó, mỗi ổ đĩa trên Linux được biểu diễn trong cây thư mục chung.
Trái ngược với Windows, nơi mỗi ổ đĩa có một ký tự như C: hay D:, trên Linux, hệ thống tập tin là một cây thư mục toàn bộ. Khi một thiết bị lưu trữ được mount, hệ thống tập tin của nó được tích hợp vào cây thư mục chung.
Hệ thống tập tin mới được mount trở thành một phần quan trọng trong cây thư mục, và thư mục chứa nó được gọi là điểm gắn kết (mount point).
Nhiều hệ thống tập tin tự động mount khi hệ thống khởi động hoặc khi ổ đĩa được kết nối. Tuy nhiên, quản trị viên hệ thống có thể tắt chức năng tự động mount để kiểm soát việc gắn kết với hệ thống.
Điều này có nghĩa là khi máy tính đang chạy, các thiết bị lưu trữ kết nối sẽ không tự động mount và yêu cầu người dùng thực hiện việc mount thủ công. Việc mount thủ công cho phép người dùng tự chọn vị trí của thư mục mount point và cấu hình hệ thống tập tin ở chế độ chỉ đọc hoặc chế độ đọc - ghi.
2. Hiển thị danh sách các hệ thống tập tin đã được mount bằng lệnh mount
Để xem danh sách tất cả các hệ thống tập tin (file system) đã được mount trên máy tính, đơn giản nhập lệnh mount và nhấn Enter.
Lệnh mount sẽ hiển thị danh sách các hệ thống tập tin đã kết nối trực tiếp trên cửa sổ Terminal.
Nếu muốn, bạn có thể điều chỉnh đầu ra bằng cách yêu cầu lệnh 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) chỉ định loại hệ thống tập tin sẽ được mount.
mount -t tmpfs
mount -t ext4
Ví dụ, nếu bạn chỉ muốn lệnh mount hiển thị các hệ thống tập tin tmpfs, bạn có thể dễ dàng quản lý đầu ra.
Hệ thống tập tin tmpfs sẽ xuất hiện như được mount, nhưng thực tế nó được lưu trữ trong bộ nhớ và sẽ mất khi máy tính được tắt. Từ tmpfs là viết tắt của temporary (tạm thời), thay vì lưu trữ trên thiết bị lưu trữ cố định.
Nếu muốn, bạn có thể thay đổi tham số tmpfs bằng loại hệ thống tập tin mà bạn quan tâm.
Trong ví dụ này, Mytour sử dụng lệnh để hiển thị 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 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 lỗi nghiêm trọng, hệ thống tập tin sẽ được mount lại ở chế độ chỉ đọc để chẩn đoán.
3. Liệt kê các hệ thống tập tin được mount bằng lệnh df
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 thông tin về quá tải giống như lệnh mount. Ví dụ, trên Ubuntu Linux, hệ thống tập tin squashfs giả mạo được tạo cho các ứng dụng sử dụng lệnh snap. Thông tin này không quan trọng cho chúng ta.
Để df bỏ qua thông tin không cần thiết 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
Bây giờ 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.
4. Mount lại tất cả hệ thống tập tin bằng lệnh fstab
Tất cả các hệ thống tập tin được mount trong quá trình khởi động được đặt trong file có tên là fstab, một bảng hệ thống tập tin nằm trong thư mục /etc.
Chúng ta có thể sử dụng lệnh mount để '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 khi gặp phải 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
Trong trường hợp máy tính gặp vấn đề với 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 đề.
5. Mount ISO image
Quá trình để 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. Dưới đây, Mytour chọn sử dụng ISO Tiny Core Linux với kích thước nhỏ và quá trình tải xuống nhanh chóng.
Trong cùng một thư mục chứa file ISO, thực hiện lệnh dưới đây. Hãy nhớ đổi tên file ISO mà bạn muốn mount:
sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt
Do sử dụng sudo, bạn sẽ cần nhập mật khẩu.
Tùy chọn -t (type) chỉ định loại hệ thống tập tin được mount. Trong trường hợp này là file ISO, vì vậy bạn cung cấp định danh cho loại iso9660.
Flag -o (options) được dùng để truyền các tham số bổ sung cho quá trình mount. Trong ví dụ này, tham số sử dụng 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 (ví dụ như ISO image) được mount và xử lý như 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 như giao diện để các thiết bị kết nối trông giống như 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ó một hệ thống tập tin ext4 được mount và được gọi là sda.
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ữ kết nối với hệ thống tập tin qua file thiết bị /dev/sda và hệ thống tập tin trên thiết bị lưu trữ được mount tại /.
Tất nhiên, chúng ta phải cung cấp tên của tệp ISO và thông báo cho mount biết vị trí hệ thống tập tin được mount. Trong ví dụ này, Mytour đã chọn /mnt.
ISO image đã được mount, và trên màn hình sẽ xuất hiện thông báo cho biết rằng ISO image đã được mount ở chế độ chỉ đọc trên cửa sổ Terminal.
6. Tìm kiếm ISO Image
Sau khi được mount, chúng ta có thể duyệt đến các thư mục trong ISO image như một phần của hệ thống tập tin. Lưu ý rằng 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 lệnh unmount biết hệ thống tập tin nào chúng ta muốn unmount. Để thực hiện điều này, chỉ cần cung cấp mount point của hệ thống tập tin.
sudo umount /mnt
Nếu không có thông báo nào xuất hiện trên màn hình, điều này có nghĩa là mọi thứ đều ổn.
Nếu muốn, bạn có thể tạo và sử dụng mount point riêng. Chúng ta sẽ gọi nó là isomnt và mount ISO image vào thư mục này. Về cơ bản, mount point chỉ là một thư mục, nên chúng ta sử dụng lệnh 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 định dạng lệnh giống như trước để mount ISO image. Lần này, chúng ta mount file vào thư mục mới là /media/dave/isomnt/:
sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/
Bây giờ 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ũng có thể liên kết mount point với một thư mục khác. Hệ thống tập tin được mount sau đó có thể được truy cập thông qua mount point ban đầu hoặc thông qua thư mục được liên kết với nó.
Ví dụ, giả sử chúng ta tạo một thư mục mới có tên là iso trong thư mục home, sau đó liên kết 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à cũ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
Để unmount hệ thống tập tin từ thư mục mount point và bind point ban đầu, chúng ta cần thực hiện các bước unmount riêng biệt cho mỗi điểm.
Dù đã 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 phương tiện 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 cần cấu hình file thiết bị sd tiếp theo. Để làm điều này, chúng ta chạy lệnh df qua grep để tìm kiếm các mục chứa 'sd'.
df | grep /dev/sd
Trong ví dụ này, chỉ có một file thiết bị sd đượ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ẽ báo cho mount để kết nối hệ thống tập tin vào đĩa mềm được liên kết với mount point /dev/sdb tới /mnt.
Kết nối ổ đĩa mềm qua cổng USB trên máy tính, sau đó thực hiện lệnh sau:
sudo mount /dev/sdb /mnt
9. Gắn nhãn hệ thống tập tin
Chúng ta có thể sử dụng tùy chọn -l (label) khi sử dụng mount để xác định nhãn của hệ thống tập tin (nếu có).
Sử dụng tùy chọn -t (type) để chỉ yêu cầu mount báo cáo về các hệ thống tệp vfat.
mount -l -t vfat
Nhãn của ổ đĩa mềm được đặt trong dấu ngoặc vuông và nằm ở cuối danh sách, ví dụ: NORTUN.
Để truy cập ổ đĩa mềm, chúng ta sử dụng mount point là /mnt:
cd /mnt
ls
ls -l AMATCH.C
Ổ đĩa mềm chứa các file mã nguồn trong ngôn ngữ C, và ngày sửa đổi lần cuối là tháng 10/1992.
Nếu chúng ta sử dụng lệnh greb để tìm kiếm các file thiết bị sd thông qua df, chúng ta sẽ thấy xuất hiện 2 ổ đĩa mềm.
df | grep /dev/sd
Ổ đĩa mềm hiện đang được mount tại /dev/sdb. Hệ thống tập tin trên ổ đĩa mềm được mount tại /mnt .
Để unmount ổ đĩa mềm, sử dụng lệnh umount và chỉ định file thiết bị làm tham số.
sudo umount /dev/sdb
10. Tùy chọn Umount Lazy
Nếu hệ thống tập tin đang trong quá trình unmount và quá trình này gặp sự cố, bạn có thể thử sử dụng tùy chọn Umount Lazy.
sudo umount /dev/sdb
Quá trình không thành công vì thư mục làm việc hiện tại của người dùng đang nằm trong hệ thống tập tin bạn đang cố unmount. Linux thông minh đủ để không hiển thị nhánh bạn đang ở trên đó.
Để khắc phục vấn đề này, sử dụng tùy chọn -l (lazy). Tùy chọn này làm cho umount đợi đế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 chạy, 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 đến 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à bộ ứng dụng phần mềm cho phép truy cập các mạng chia sẻ giữa các hệ điều hành Linux và Unix với 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 chứa Samba Share tích hợp. Trên Samba có một thư mục sao có tên là 'share'. Nhiệm vụ là tạo kết nối SSH với nó và xem nội dung của thư mục share, nằm 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:
ls /media/pi/USB64/Backup
exit
Khi chạy lệnh SSH, bạn sẽ được yêu cầu nhập mật khẩu cho Raspberry Pi.
Sau khi nhập mật khẩu và xác thực, dấu nhắc lệnh trên cửa sổ Terminal chuyển thành pi@marineville, chỉ đang 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 là dave và một có tên là pat.
Nhập Exit để thoát khỏi Raspberry Pi và dấu nhắc lệnh sẽ thay đổi thành dave@howtogeek.
Để sử dụng Samba, bạn cần cài đặt gói cifs-utils:
Nếu bạn đang sử dụng Ubuntu hoặc các bản phân phối dựa trên Debian, hãy 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, hãy sử dụng công cụ quản lý gói của bản phân phối Linux tương ứng.
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 chia sẻ, thay đổi địa chỉ IP, tên chia sẻ và điểm mount tương ứng:
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 bao gồm đường dẫn đến một tập tin gọi là creds, chứa thông tin an toàn bao gồm tên người dùng và mật khẩu của Raspberry Pi, ID người dùng (UID), và ID nhóm (GID). Những thông tin này sẽ được sử dụng để thiết lập chủ sở hữu và nhóm của hệ thống tập tin gốc.
//192.168.4.13/share: Đây là địa chỉ mạng của thiết bị tích hợp Samba Share và tên của thư mục Samba Share. Mặc dù thư mục gốc có tên là Backup, tên Samba Share của nó là Share.
/media/dave/NAS: Đây là tên của điểm mount. Lưu ý rằng bạn cần phải tạo điểm mount trước.
Bằng cách truy cập điểm mount tại /media/dave/NAS, bạn có thể truy cập thư mục Samba Share trên Raspberry Pi trong mạng. Bạn sẽ thấy có 2 thư mục trên 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 đặt tên là howtogeek_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 để chỉ định cho dd tạo 20 khối trong file đầu ra.
dd if=/dev/zero of./howtogeek_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 howtogeek_fs. Tùy chọn -t (type) cho phép chọn loại hệ thống tập tin. Trong ví dụ này, Mytour tạo hệ thống tập tin ext4.
mkfs -t ext4 ./howtogeek_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 ./howtogeek_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
Để thực hiện việc 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 để chuyển đổi hệ thống tập tin từ trạng thái chỉ đọc sang trạng thái đọc - ghi.
Giả sử để thực hiện mount lại cho ổ đĩa mềm, chúng ta sẽ sử dụng cờ -r (read-only), sau đó thực hiện mount thông qua grep để tìm kiếm chi tiết của 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 để thể hiện hệ thống tập tin được mount ở chế độ chỉ đọc.
Sử dụng tùy chọn -o remount với cờ 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ại quá trình mount thông qua grep, bạn sẽ thấy ro đã được thay thế bằng rw, tức là hệ thống tập tin hiện đang ở 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 (di chuyển) trong mount cho phép bạn thực hiện điều này. Tuy nhiên, tùy chọn này 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 bạn 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 dưới đây.
sudo mount -M /mnt ./geek
ls ./geek
Để khắc phục vấn đề này, chúng ta sử dụng tùy chọn -B (bind) để liên kết mount point ban đầu với mount point mới.
sudo mount -B /mnt ./geek
ls ./geek
Trong bài viết này, Mytour đã hướng dẫn cách mount và gắn kết thiết bị lưu trữ trên Linux Terminal. Nếu có bất kỳ thắc mắc hoặc câu hỏi nào, ví dụ 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é.