Cài đặt NFS Server – Client trên Server Linux (CentOS 7 – Ubuntu 18.04)

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

cau hinh nfs linux 1

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

cau hinh nfs linux 2

Kiểm tra các port sử dụng bởi NFS:

rpcinfo -p

cau hinh nfs linux 3

Cấu hình Allow Rule trên Firewalld để cho phép truy cập các port NFS:

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

cau hinh nfs linux 4

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

Kiểm tra mount point trên NFS Server từ client:

showmount -e 10.10.10.11

Trong đó 10.10.10.11 là ip của NFS Server.

cau hinh nfs linux 5

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
 cau hinh nfs linux 6

Kiểm tra xem mount point đã hoạt động hay chưa ta sử dụng lệnh:

df -h

cau hinh nfs linux 7

Ta thấy Client đã nhận dung lượng và mount thành công tài nguyên từ server lên.

Để tự động mount tới NFS Server khi máy chủ reboot, thì bạn sửa file /etc/fstab, thêm dòng sau vào cuối file:

10.10.10.11:/var/nfs /var/nfs-data nfs rw,sync,hard,intr 0 0
Như vậy ta đã hoàn thành việc cài đặt NFS trên CentOS 7.

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

cau hinh nfs linux 8

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

cau hinh nfs linux 9

Để tự động mount tới NFS Server khi máy chủ reboot, thì bạn sửa file /etc/fstab, thêm dòng sau vào cuối file:

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