Mục lục
NFS là gì?
NFS (Network File System) là một giao thức chia sẻ file phát triển bởi Sun Microsystems từ năm 1984, cho phép một người dùng trên một máy tính khách truy cập tới hệ thống file chia sẻ thông qua một mạng máy tính giống như truy cập trực tiếp trên ổ cứng. Hiện tại có 3 phiên bản NFS là NFSv2, NFSv3, NFSv4.
Cài đặt NFS Server và NFS Client trên CentOS 7
Mô hình LAB
- NFS Server: 10.10.10.11 – CentOS 7
- NFS Client: 10.10.10.12 – CentOS 7
Vô hiệu hoá SELinux theo bài viết: Cách vô hiệu hóa SELinux trên CentOS
Cài đặt NFS Server CentOS 7
Thực hiện trên NFS Server 10.10.10.11
Để cài đặt NFS Server các bạn cài package nfs-utils:
yum install nfs-utils -y
Tạo thư mục chia sẻ tài nguyên trên server:
mkdir /var/nfs
Sửa file /etc/exports để tạo mountpoint export, thêm nội dung sau:
/var/nfs 10.10.10.0/24(rw,sync,no_root_squash,no_subtree_check)
Trong đó:
- /var/nfs là đường dẫn chia sẻ trên Server.
- 10.10.10.0/24 là dải mạng cho phép kết nối truy xuất tài nguyên trên Server. Nếu IP thay bằng
*
thì mọi client có quyền truy cập. - (rw,no_root_squash) là các tuỳ chọn chia sẻ tài nguyên.
Các tuỳ chọn bao gồm:
- rw: Tùy chọn này cung cấp cho client cả quyền truy cập đọc và ghi.
- sync: Tùy chọn này buộc NFS ghi các thay đổi trước khi trả lời. Điều này dẫn đến một môi trường ổn định và nhất quán hơn vì nó đồng bộ thông tin liên tục nhưng lại làm chậm máy.
- no_subtree_check: Tùy chọn này ngăn việc kiểm tra tệp tin phụ, đây là quá trình mà Server phải kiểm tra xem tệp có thực sự vẫn có sẵn trong thư mục được xuất ra cho mỗi yêu cầu hay không. Điều này có thể gây ra nhiều vấn đề khi một tệp được đổi tên trong khi client đã mở. Trong hầu hết các trường hợp, tốt hơn là vô hiệu hóa kiểm tra này.
- no_root_squash : Theo mặc định, NFS dịch các yêu cầu từ người dùng root thành người dùng không có đặc quyền trên máy chủ. Điều này được đặt là tính năng bảo mật để ngăn tài khoản root trên client sử dụng hệ thống tệp của Server làm root. no_root_squash vô hiệu hóa hành vi này.
Cấu hình xong, ta khởi động NFS Server:
systemctl start rpcbind nfs-server
Cho phép NFS Server khởi động cùng hệ thống:
systemctl enable rpcbind nfs-server
Kiểm tra Status của NFS Server:
systemctl status rpcbind nfs-server
Kiểm tra các port sử dụng bởi NFS:
rpcinfo -p
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --permanent --add-port=2049/tcp sudo firewall-cmd --permanent --add-port=2049/udp sudo firewall-cmd --reload
Kiểm tra mount point trên server:
showmount -e localhost
Cài đặt và cấu hình NFS Client CentOS 7
Thực hiện trên NFS Client 10.10.10.12
Trên máy Client, thực hiện cài đặt NFS Client bằng việc cài gói nfs-utils:
yum install nfs-utils -y
showmount -e 10.10.10.11
Tạo thư mục để mount tài nguyên được chia sẻ từ NFS Server:
mkdir -p /var/nfs-data
sử dụng lệnh sau để Mount NFS:
mount -t nfs 10.10.10.11:/var/nfs /var/nfs-data
Trong đó:
- mount -t nfs là lệnh mount cho loại file system là NFS
- 10.10.10.11:/var/nfs là ip và đường dẫn đến thư mục tài nguyên chia sẻ trên NFS Server
- /var/nfs-data là đường dẫn của thư mục trên client hay còn gọi là mount point.
Để kiểm tra thông tin đã mount trên client sử dụng command sau:
nfsstat -m
df -h
10.10.10.11:/var/nfs /var/nfs-data nfs rw,sync,hard,intr 0 0
Cài đặt NFS Server và NFS Client trên Ubuntu 18.04
Mô hình LAB
- NFS Server: 10.10.10.21 – Ubuntu 18.04
- NFS Client: 10.10.10.22 – Ubuntu 18.04
Cài đặt NFS Server Ubuntu 18.04
Thực hiện trên NFS Server 10.10.10.21
Update và cài đặt gói nfs-kernel-server:
sudo apt update && sudo apt install -y nfs-kernel-server
Tạo thư mục để chia sẻ NFS:
sudo mkdir /var/nfs -p
NFS sẽ chuyển mọi quyền root trên client sang nobody:nobody như một phương thức bảo mật. Do đó, chúng ta cần phải thay đổi quyền sở hữu:
sudo chown nobody:nogroup /var/nfs
Sửa file /etc/exports để tạo mountpoint export, thêm nội dung sau:
/var/nfs 10.10.10.0/24(rw,sync,no_root_squash,no_subtree_check)
Trong đó:
- /var/nfs là đường dẫn chia sẻ trên Server.
- 10.10.10.0/24 là dải mạng cho phép kết nối truy xuất tài nguyên trên Server. Nếu IP thay bằng
*
thì mọi client có quyền truy cập. - (rw,no_root_squash) là các tuỳ chọn chia sẻ tài nguyên. (Các tuỳ chọn đã được giải thích phía trên)
Lưu lại và thoát khỏi file /etc/exports.
Khởi động lại NFS Service:
sudo systemctl restart nfs-kernel-server
Cấu hình Allow rule trên ufw để cho phép Client kết nối đến NFS Server:
sudo ufw allow from 10.10.10.22 to any port nfs
Trong đó 10.10.10.22 là ip của Client.
Cài đặt và cấu hình NFS Client Ubuntu 18.04
Update và cài đặt gói nfs-common:
sudo apt update && sudo apt install -y nfs-common
Tạo thư mục để mount tài nguyên được chia sẻ từ NFS Server:
sudo mkdir -p /var/nfs-data
sử dụng lệnh sau để Mount NFS:
sudo mount 10.10.10.21:/var/nfs /var/nfs-data
chạy lệnh sau để kiểm tra kết quả Mount:
sudo df -h
10.10.10.21:/var/nfs /var/nfs-data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Như vậy ta đã cấu hình xong NFS trên Ubuntu 18.04.
Các file cấu hình quan trọng của NFS
- /etc/exports : Đây là file config chính của NFS, chứa thông tin danh sách các file và thư mục chia sẻ trên NFS Server.
- /etc/fstab : Để tự động mount một thư mục NFS trên hệ thống sau khi reboot.
- /etc/sysconfig/nfs : File config của NFS để quản lý port đang lắng nghe của rpc và các service khác.
Một số command hay dùng
- showmount -e : Hiển thị thư mục Share trên hệ thống của bạn
- showmount -e <server-ip or hostname>: Hiển thị danh sách thư mục share trên một Remote Server
- showmount -d : Liệt kê danh sách các thư mục
- exportfs -v : Hiển thị danh sách các tài nguyên chia sẻ và các options trên server
- exportfs -a : Exports toàn bộ thư mục share trong /etc/exports
- exportfs -u : Unexports toàn bộ thư mục share trong /etc/exports
- exportfs -r : Refresh sau khi đã chỉnh sửa /etc/exports
Vậy là Zhost cùng bạn đã cài đặt và cấu hình thành công NFS Server và NFS Client