Giới thiệu về NFS
Hệ thống Tệp Mạng (NFS) là một giao thức chia sẻ tài nguyên được phát triển bởi Sun Microsystems, cho phép người dùng trên một máy tính khách truy cập các tệp và thư mục trên một máy tính chủ từ xa thông qua mạng như thể chúng được lưu trữ cục bộ. NFS hoạt động dựa trên giao thức TCP/IP, mang lại giải pháp hiệu quả cho việc quản lý dữ liệu tập trung và hỗ trợ đắc lực cho các hệ thống lưu trữ mạng (NAS) hoặc làm giải pháp lưu trữ dùng chung cho các cụm máy chủ.
Môi trường triển khai
- Máy chủ NFS: CentOS 7.x (Phiên bản 64-bit)
- Máy khách Linux: Bất kỳ bản phân phối Linux nào có hỗ trợ NFS client
- Máy khách Windows: Windows 10/11 với tính năng Client for NFS
Thiết lập máy chủ NFS trên CentOS 7
1. Cài đặt các gói phần mềm cần thiết
Trên máy chủ CentOS 7, bạn cần cài đặt các gói nfs-utils (chứa các công cụ NFS) và rpcbind (dịch vụ ánh xạ cổng cho RPC).
sudo yum -y install nfs-utils rpcbind
2. Cấu hình thư mục chia sẻ
Tạo một thư mục mới mà bạn muốn chia sẻ qua NFS và thiết lập quyền hạn phù hợp. Ví dụ, tạo thư mục /data/shared_nfs:
sudo mkdir -p /data/shared_nfs
sudo chmod 777 /data/shared_nfs
# Có thể điều chỉnh quyền hạn chặt chẽ hơn tùy theo yêu cầu bảo mật.
3. Định cấu hình tệp exports
Tệp /etc/exports xác định các thư mục được chia sẻ và quyền truy cập của máy khách. Mở tệp này bằng trình soạn thảo văn bản:
sudo vi /etc/exports
Thêm các dòng cấu hình tương tự như ví dụ dưới đây. Thay đổi địa chỉ IP hoặc dải mạng phù hợp với môi trường của bạn. Giả sử địa chỉ IP máy chủ NFS là 192.168.50.100.
Chia sẻ cho toàn bộ dải mạng (ví dụ: 192.168.50.0/24):
/data/shared_nfs 192.168.50.0/24(rw,sync,no_root_squash,no_all_squash,anonuid=1000,anongid=1000)
Chia sẻ cho một máy khách cụ thể (ví dụ: 192.168.50.150):
/data/shared_nfs 192.168.50.150(rw,sync,no_root_squash)
Giải thích các tùy chọn trong exports:
rw: Cấp quyền đọc và ghi cho máy khách. Sử dụngronếu bạn chỉ muốn cấp quyền đọc.sync: Đảm bảo dữ liệu được ghi đồng bộ vào cả bộ nhớ đệm và đĩa cứng trước khi trả về thành công cho máy khách, tăng tính nhất quán dữ liệu nhưng có thể giảm hiệu suất.async: Dữ liệu được ghi vào bộ nhớ đệm trước rồi mới ghi xuống đĩa. Có thể tăng hiệu suất nhưng tiềm ẩn rủi ro mất dữ liệu nếu máy chủ gặp sự cố trước khi dữ liệu được ghi hoàn toàn.no_root_squash: Cực kỳ không an toàn và không khuyến nghị sử dụng trừ khi bạn hiểu rõ rủi ro. Nếu người dùng root từ máy khách truy cập thư mục chia sẻ, họ sẽ có quyền root trên thư mục đó trên máy chủ.root_squash: Nếu người dùng root từ máy khách truy cập, quyền hạn của họ sẽ được "thu nhỏ" thành một người dùng ẩn danh (thường lànobody), giúp tăng cường bảo mật. Đây là mặc định khuyến nghị.all_squash: Tất cả người dùng, bất kể là root hay không, khi truy cập thư mục chia sẻ đều sẽ bị "thu nhỏ" quyền hạn thành người dùng ẩn danh.anonuid=ID: Gán một UID cụ thể (ví dụ:1000) cho người dùng ẩn danh khiroot_squashhoặcall_squashđược bật. ID này phải tồn tại trên hệ thống máy chủ.anongid=ID: Gán một GID cụ thể (ví dụ:1000) cho người dùng ẩn danh. ID này phải tồn tại trên hệ thống máy chủ.insecure: Cho phép các kết nối không an toàn (qua các cổng trên 1024) từ máy khách.
Sau khi chỉnh sửa tệp /etc/exports, hãy tải lại cấu hình NFS để các thay đổi có hiệu lực:
sudo exportfs -r
4. Khởi động và kích hoạt dịch vụ NFS
Khởi động dịch vụ rpcbind và nfs-server, đồng thời thiết lập chúng tự động khởi động cùng hệ thống:
sudo systemctl start rpcbind
sudo systemctl start nfs-server
sudo systemctl enable rpcbind
sudo systemctl enable nfs-server
5. Điều chỉnh tường lửa (Firewall)
Nếu bạn đang sử dụng firewalld, cần mở các cổng cần thiết cho NFS. Các dịch vụ NFS, mountd, và rpcbind thường sử dụng các cổng này:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload
Để kiểm tra các cổng mà NFS đang sử dụng (hữu ích cho việc cấu hình tường lửa thủ công hoặc kiểm tra):
rpcinfo -p
Kết quả hiển thị các dịch vụ và cổng của chúng. Các cổng chính bao gồm 111 (portmapper/rpcbind), 2049 (nfs), và cổng mountd (có thể thay đổi).
6. Xác minh thư mục chia sẻ trên máy chủ
Sử dụng lệnh showmount -e trên chính máy chủ NFS để xác nhận các thư mục đã được chia sẻ đúng cách. Thay 192.168.50.100 bằng địa chỉ IP của máy chủ của bạn:
showmount -e 192.168.50.100
Kết quả dự kiến:
Export list for 192.168.50.100:
/data/shared_nfs 192.168.50.0/24
Thiết lập máy khách NFS
1. Máy khách Linux
Trên máy khách Linux, bạn cần cài đặt gói nfs-utils để có thể gắn kết các thư mục NFS từ xa.
sudo yum -y install nfs-utils # Đối với CentOS/RHEL/Fedora
sudo apt-get update && sudo apt-get install -y nfs-common # Đối với Debian/Ubuntu
Kiểm tra các thư mục NFS được chia sẻ từ máy chủ (thay 192.168.50.100 bằng IP máy chủ của bạn):
showmount -e 192.168.50.100
Gắn kết thủ công
Tạo một điểm gắn kết cục bộ trên máy khách và gắn kết thư mục NFS từ máy chủ:
sudo mkdir -p /mnt/remote_nfs
sudo mount -t nfs 192.168.50.100:/data/shared_nfs /mnt/remote_nfs
Để kiểm tra trạng thái gắn kết:
df -h
Bạn sẽ thấy một dòng tương tự như sau:
Filesystem Size Used Avail Use% Mounted on
192.168.50.100:/data/shared_nfs 47G 8.5G 39G 18% /mnt/remote_nfs
Để hủy gắn kết:
sudo umount /mnt/remote_nfs
Gắn kết tự động khi khởi động
Để thư mục NFS tự động gắn kết mỗi khi máy khách khởi động, hãy thêm một dòng vào tệp /etc/fstab. Mở tệp này:
sudo vi /etc/fstab
Thêm dòng sau vào cuối tệp (thay IP và đường dẫn tương ứng):
192.168.50.100:/data/shared_nfs /mnt/remote_nfs nfs defaults,_netdev 0 0
Tùy chọn _netdev đảm bảo rằng hệ thống sẽ cố gắng gắn kết thư mục này chỉ sau khi mạng đã được khởi tạo hoàn toàn.
Để kiểm tra xem mục nhập fstab có đúng hay không mà không cần khởi động lại, bạn có thể chạy:
sudo mount -a
2. Máy khách Windows
Trên hệ điều hành Windows (ví dụ: Windows 10/11), bạn cần kích hoạt tính năng "Client for NFS" để có thể kết nối với máy chủ NFS.
- Mở "Control Panel" (Bảng điều khiển).
- Chọn "Programs" (Chương trình) và sau đó "Turn Windows features on or off" (Bật hoặc tắt tính năng của Windows).
- Trong danh sách tính năng, tìm và chọn "Services for NFS", sau đó đánh dấu vào "Client for NFS". Nhấn "OK" và đợi quá trình cài đặt hoàn tất.
Gắn kết ổ đĩa mạng NFS
Sau khi tính năng được bật, bạn có thể sử dụng Command Prompt (CMD) hoặc PowerShell để gắn kết thư mục NFS. Mở CMD/PowerShell với quyền quản trị viên.
mount -t nfs 192.168.50.100:/data/shared_nfs Z:
Lệnh trên sẽ gắn kết thư mục /data/shared_nfs từ máy chủ 192.168.50.100 vào ổ đĩa mạng Z: trên hệ thống Windows của bạn.
Để hủy gắn kết ổ đĩa mạng:
umount Z: