Hướng dẫn cấu hình Ubuntu Server làm NFS server chia sẻ file trong mạng nội bộ

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Bối cảnh & Tại sao bạn nên dùng NFS cho mạng nội bộ?

Bạn đang quản lý một cụm 3-5 server Linux hay chỉ đơn giản là muốn biến chiếc PC cũ chạy Ubuntu thành ổ đĩa dùng chung cho cả nhà? Việc chia sẻ file lúc này trở nên cực kỳ quan trọng. Trước đây, mình từng tốn không ít thời gian loay hoay với Samba. Tuy nhiên, nếu bạn làm việc thuần trong môi trường Linux-to-Linux, NFS (Network File System) mới thực sự là “chân ái”.

NFS gọn nhẹ và cho tốc độ truy xuất cực kỳ ấn tượng. Thực tế, với mạng 1Gbps, mình thường đạt tốc độ copy ổn định ở mức 112MB/s, tiệm cận giới hạn vật lý của dây cáp. Quan trọng hơn, nó giữ nguyên các thuộc tính quyền hạn (permissions) của Linux. Mình đã triển khai NFS cho các dự án chạy cluster để đồng bộ source code và logs giữa các node. Kết quả? Hệ thống chạy cực kỳ êm, không hề có độ trễ đáng kể.

Cài đặt NFS Kernel Server trên Ubuntu

Quên chuyện tải file cài đặt thủ công đi. Trên Ubuntu, mọi thứ bạn cần đều có sẵn trong kho ứng dụng chính thức. Chỉ cần vài giây là xong. Đầu tiên, hãy cập nhật hệ thống để mọi thứ trơn tru nhất:

sudo apt update
sudo apt upgrade -y

Tiếp theo, hãy cài gói nfs-kernel-server. Đây là thành phần cốt lõi để biến máy Ubuntu của bạn thành một “tổng kho” chia sẻ dữ liệu.

sudo apt install nfs-kernel-server -y

Dịch vụ NFS sẽ tự khởi động ngay sau khi cài. Tuy nhiên, đừng vội kết nối ngay. Chúng ta cần chuẩn bị “nhà kho” và phân quyền cho đúng đã.

Cấu hình chi tiết: Từ tạo thư mục đến phân quyền

Phần này chính là “khúc xương” dễ gây lỗi nhất. Nhiều bạn cấu hình xong xuôi nhưng vẫn gặp lỗi Permission denied vì phân quyền chưa chuẩn.

1. Tạo thư mục chia sẻ

Kinh nghiệm của mình là tạo thư mục trong /mnt để dễ quản lý tập trung. Ví dụ, mình sẽ tạo một thư mục tên là itfromzero_data.

sudo mkdir -p /mnt/nfs_share

2. Phân quyền thư mục

NFS quản lý quyền dựa trên UID và GID. Để nhanh và đơn giản nhất, mình sẽ gán thư mục này cho user nobody và group nogroup. Cách làm này giúp mọi máy khách (client) đều có thể ghi dữ liệu mà không bị kẹt vấn đề định danh user giữa hai máy.

sudo chown nobody:nogroup /mnt/nfs_share
sudo chmod 777 /mnt/nfs_share

3. Cấu hình file Exports

Mở file /etc/exports để khai báo thư mục nào sẽ được mang đi chia sẻ. Dùng nano cho nhanh nhé:

sudo nano /etc/exports

Hãy thêm dòng dưới đây vào cuối file. Đừng quên thay 192.168.1.0/24 bằng đúng dải IP mạng nhà bạn:

/mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check)

Điểm qua vài thông số quan trọng để bạn không phải copy-paste mù quáng:

  • rw: Cho phép máy khách đọc và ghi dữ liệu thoải mái.
  • sync: Server chỉ xác nhận khi dữ liệu đã nằm an toàn trên đĩa cứng. Chậm một chút nhưng an toàn, tránh mất dữ liệu khi mất điện đột ngột.
  • no_subtree_check: Tăng tốc độ truy xuất bằng cách bỏ qua việc kiểm tra cây thư mục con.

Lưu file lại. Cuối cùng, chạy lệnh sau để server nhận diện cấu hình mới:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

4. Mở cửa Firewall (UFW)

Nếu server đang bật firewall, bạn cần mở cổng để máy khách có thể “vào nhà”.

sudo ufw allow from 192.168.1.0/24 to any port nfs

sudo ufw status để chắc chắn rằng port NFS đã ở trạng thái ALLOW.

Kết nối từ máy Client và thiết lập tự động Mount

Chuyển sang máy client (máy muốn dùng file). Bạn cũng cần một công cụ nhỏ để nói chuyện được với NFS Server:

sudo apt update
sudo apt install nfs-common -y

Tạo một thư mục rỗng làm điểm kết nối trên máy client:

sudo mkdir -p /home/user/data_shared

Thử kết nối thủ công để xem mọi thứ đã thông suốt chưa. Nhớ thay IP đúng của server:

sudo mount 192.168.1.10:/mnt/nfs_share /home/user/data_shared

Kết nối xong chưa? Hãy thử tạo một file text nhỏ xem nó có xuất hiện bên phía server không. Nếu ổn, chúng ta cần cấu hình để máy tự mount mỗi khi khởi động lại. Chẳng ai muốn gõ lại lệnh mount mỗi ngày cả.

Mở file cấu hình hệ thống /etc/fstab:

sudo nano /etc/fstab

Thêm dòng này vào cuối cùng:

192.168.1.10:/mnt/nfs_share /home/user/data_shared nfs defaults,user,exec,_netdev 0 0

Lưu ý nhỏ nhưng “có võ”: tham số _netdev cực kỳ quan trọng. Nó bắt hệ thống đợi mạng sẵn sàng mới tiến hành mount, tránh việc máy bị treo (boot loop) khi khởi động.

Kiểm tra & Theo dõi hệ thống

Cấu hình xong rồi, giờ là lúc kiểm tra thành quả. Trên server, bạn dùng lệnh này để xem danh sách thư mục đang được chia sẻ thực tế:

sudo exportfs -v

Để theo dõi hiệu suất và các kết nối đang hoạt động, hãy dùng lệnh nfsstat:

nfsstat -s

Nếu tốc độ copy bị chậm, hãy kiểm tra lại dây cáp mạng hoặc switch. Với kinh nghiệm của mình, nếu chạy trên mạng 1Gbps mà tốc độ chỉ lẹt đẹt 10-20MB/s, khả năng cao là do card mạng hoặc ổ cứng của bạn đang bị nghẽn.

Một mẹo cuối: gõ mount | grep nfs trên máy client để xem chi tiết các option mà hệ thống đang sử dụng. Hy vọng hướng dẫn này giúp bạn tự tin triển khai hệ thống lưu trữ tập trung cho riêng mình!

Share: