Hướng dẫn sử dụng AutoFS trên Linux: Tự động mount và unmount ổ đĩa mạng (NFS/Samba) linh hoạt và ổn định

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Bối cảnh: Tại sao fstab không phải lúc nào cũng là lựa chọn tốt nhất?

Hồi mới bắt đầu làm sysadmin, mình có một thói quen là tất cả các ổ đĩa mạng (NFS hay Samba) đều ném hết vào /etc/fstab. Nghĩ bụng: “Cứ cho nó mount lúc khởi động cho chắc ăn”. Nhưng đời không như là mơ. Một buổi chiều nọ, con NAS lưu trữ backup đột ngột bị sập nguồn. Kết quả là toàn bộ các server đang mount từ NAS đó bắt đầu “treo”. Lệnh df -h đứng im không phản hồi. SSH login cũng không xong — hệ thống cứ ngồi đợi phản hồi từ ổ đĩa đã chết.

Vấn đề của /etc/fstab là nó thực hiện mount “tĩnh”. Nếu kết nối mạng chập chờn hoặc server phía xa bị restart, client sẽ bị treo (hang) rất lâu. Đó là lúc mình nhận ra mình cần AutoFS.

AutoFS chỉ mount ổ đĩa khi bạn thực sự truy cập vào thư mục đó. Không dùng đến? Sau 60 giây (cấu hình được), nó tự unmount. Kết quả thực tế: ổ đĩa mạng bị mất điện lúc 3 giờ sáng không còn kéo cả hệ thống xuống theo nữa.

Cài đặt AutoFS

Sau khoảng 6 tháng chạy AutoFS trên môi trường production, mình thấy nó cực kỳ nhẹ. Một daemon, vài file config — không cần kernel module đặc biệt, không cần build từ source.

Trên Ubuntu/Debian:

sudo apt update
sudo apt install autofs nfs-common cifs-utils -y

Trên RHEL/CentOS/AlmaLinux:

sudo dnf install autofs nfs-utils cifs-utils -y

Lưu ý nhỏ: Bạn cần cài thêm nfs-common (hoặc nfs-utils) nếu dùng NFS và cifs-utils nếu dùng Samba, nếu không AutoFS sẽ báo lỗi không hiểu định dạng hệ tập tin.

Cấu hình chi tiết: Cách vận hành thông minh

Cấu hình AutoFS thường chia làm 2 file chính: Master Map (định nghĩa điểm mount gốc) và Map File (chi tiết thông tin server từ xa).

1. Cấu hình Master Map

Mở file /etc/auto.master, đây là nơi khai báo thư mục cha mà bạn muốn AutoFS quản lý.

sudo nano /etc/auto.master

Thêm dòng sau vào cuối file:

/mnt/remote  /etc/auto.nfs  --timeout=60 --ghost
  • /mnt/remote: Thư mục gốc trên máy local.
  • /etc/auto.nfs: File cấu hình chi tiết (mình sẽ tạo ở bước sau).
  • --timeout=60: Sau 60 giây không dùng đến, nó sẽ tự unmount.
  • --ghost: Hiển thị thư mục con ngay cả khi chưa mount (rất tiện để anh em dùng lệnh ls thấy ngay).

2. Cấu hình Map File cho NFS

Bây giờ, hãy tạo file /etc/auto.nfs để chỉ định server nào sẽ được mount vào đâu.

sudo nano /etc/auto.nfs

Nội dung file:

backup  -fstype=nfs,rw,soft,intr  192.168.1.100:/data/backup
data    -fstype=nfs,rw,soft,intr  192.168.1.100:/data/public

Khi bạn truy cập /mnt/remote/backup, AutoFS sẽ tự kết nối tới 192.168.1.100. Mình luôn dùng option soft,intr cho NFS — nếu server die, client trả về lỗi ngay thay vì treo cứng chờ mãi.

3. Cấu hình Map File cho Samba (Windows Share)

Nếu bạn cần mount ổ đĩa từ Windows hoặc NAS chạy Samba, cấu hình sẽ hơi khác một chút về phần xác thực. Tạo file /etc/auto.samba:

shared_folder -fstype=cifs,credentials=/etc/creds_samba,iocharset=utf8 ://192.168.1.50/Shared

Và đừng quên tạo file chứa username/password để bảo mật:

sudo nano /etc/creds_samba
username=your_user
password=your_password
domain=your_domain

Nhớ phân quyền chỉ root mới đọc được file này: sudo chmod 600 /etc/creds_samba. Hồi mới làm, mình quên béng vụ này, để permission 644 thế là lộ hết pass của account backup, anh em lưu ý nhé.

Kiểm tra và Monitoring

Khởi động lại service để áp dụng config vừa tạo:

sudo systemctl restart autofs
sudo systemctl enable autofs

Cách test nhanh nhất là thực sự truy cập vào thư mục:

cd /mnt/remote/backup
ls -l

File hiện ra là thành công. Dùng thêm mount | grep autofs để xem chi tiết trạng thái hiện tại.

Debug khi gặp lỗi

Truy cập vào thư mục mà nó báo lỗi hoặc đứng im? Đừng vội nản. Tắt service rồi chạy AutoFS ở chế độ foreground để xem log trực tiếp:

sudo systemctl stop autofs
sudo automount -f -v

Lúc này, mọi thông báo lỗi như sai quyền truy cập, sai IP server hay sai version NFS sẽ hiện ra chi tiết ngay trên terminal. Đây là cách mình thường dùng để xử lý các ca “khó đẻ” khi cấu hình cho các hệ thống legacy cũ kỹ.

Theo dõi qua Log hệ thống

Trong quá trình vận hành lâu dài, mình thường check log qua journalctl để biết khi nào ổ đĩa bị unmount hoặc có lỗi kết nối mạng:

journalctl -u autofs -f

Lời kết từ kinh nghiệm thực tế

Nói thật là mình không ngờ một config change nhỏ như thế lại giải quyết được nhiều chuyện đến vậy. Từ ngày chuyển sang AutoFS, cái cảm giác hồi hộp mỗi khi bảo trì NAS lúc server còn đang chạy gần như biến mất. Trước đây phải announce trước, notify cả team, rồi pray. Giờ thì cứ tắt — client báo lỗi I/O khi truy cập thay vì kéo cả SSH session xuống.

Mình mất khoảng nửa buổi để test và cấu hình lần đầu. Đổi lại là hơn 2 năm gần như không phải lo về chuyện server treo vì ổ đĩa mạng chết bất ngờ. Với những ai đang quản lý server có mount point mạng, đây là bước nâng cấp đáng làm hơn nhiều so với mức công sức bỏ ra.

Share: