Cách cài đặt NFS Client và Server trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Hệ thống tệp mạng hay viết tắt là NFS là giao thức hệ thống tệp phân tán cho phép bạn gắn các thư mục từ xa trên máy chủ của mình. NFS cho phép bạn truy cập các tệp và thư mục từ một máy chủ hoặc máy khách khác. Bạn có thể ghi vào máy chủ đó từ nhiều máy khách hoặc hệ thống từ xa qua mạng. Công nghệ này mang đến cho bạn sự linh hoạt khi chia sẻ tài nguyên trên nhiều hệ thống.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thiết lập Máy chủ NFS và cách gắn NFS Shares trên máy khách bằng Ubuntu 20.04.

Điều kiện tiên quyết​

  • Hai hệ thống Ubuntu 20.04. Mỗi máy chủ phải có một người dùng không phải root có đặc quyền sudo và tường lửa UFW được thiết lập.
  • Bạn có thể thiết lập cả máy chủ và máy khách qua mạng riêng. Đối với hướng dẫn của chúng tôi, tôi sẽ sử dụng host_ip để biểu thị địa chỉ host_ipclient_ip để tham chiếu đến địa chỉ IP của Máy khách.

Bước 1 - Cài đặt NFS trên Máy chủ và Máy khách​

Máy chủ​

Chúng ta cần cài đặt gói nfs-kernel-server trên máy chủ để chia sẻ các thư mục của bạn.
Mã:
$ sudo apt update$ sudo apt install nfs-kernel-server

Client​

Đối với máy khách, chúng tôi sẽ cài đặt gói nfs-common cho phép Máy khách gắn thư mục máy chủ nhưng không thể lưu trữ chính thư mục đó.
Mã:
$ sudo apt update$ sudo apt install nfs-common

Bước 2 - Tạo thư mục Chia sẻ trên Máy chủ​

Có hai cách bạn có thể cấp quyền truy cập vào các thư mục trên máy chủ cho máy khách. Theo mặc định, máy chủ NFS không cho phép các hoạt động yêu cầu quyền sudo. Điều này có nghĩa là siêu người dùng trên máy khách không thể ghi tệp dưới dạng root, chỉ định lại quyền sở hữu hoặc thực hiện bất kỳ tác vụ nào yêu cầu đặc quyền nâng cao.

Nhưng đôi khi, máy khách cần thực hiện một số thao tác nhất định trên máy chủ yêu cầu đặc quyền nâng cao nhưng không cần quyền truy cập siêu người dùng cho thao tác đó.

Phương pháp đầu tiên​

Đây là cách chia sẻ thư mục mặc định. Nó khiến người dùng root trên máy khách khó tương tác với máy chủ bằng các đặc quyền nâng cao.

Đầu tiên, hãy tạo thư mục chia sẻ.
Mã:
$ sudo mkdir /var/nfs/general -p
Nếu bạn thực hiện bất kỳ thao tác root nào trên máy khách, thì NFS sẽ dịch chúng thành thông tin xác thực nobody:nogroup trên máy chủ. Do đó, chúng ta cần cấp quyền sở hữu phù hợp cho thư mục được chia sẻ.
Mã:
$ sudo chown nobody:nogroup /var/nfs/general

Phương pháp thứ hai​

Ở đây, chúng ta sẽ chia sẻ thư mục home của máy chủ với máy khách. Điều này sẽ cho phép người dùng root trên máy khách truy cập đúng vào máy chủ.

Vì thư mục home đã tồn tại trên máy chủ lưu trữ nên chúng ta không cần phải tạo thư mục đó. Không cần phải thay đổi quyền trên đó vì nó sẽ tạo ra nhiều vấn đề cho người dùng trên máy chủ.

Bước 3 - Cấu hình NFS trên Máy chủ​

Đã đến lúc cấu hình NFS để thiết lập chia sẻ.

Mở tệp /etc/exports trên máy chủ Máy chủ.
Mã:
$ sudo nano /etc/exports
Thêm các dòng sau vào cuối, mỗi dòng một, cho mỗi thư mục mà bạn chia sẻ.
Mã:
/var/nfs/general client_ip(rw,sync,no_subtree_check)/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Chúng ta hãy cùng xem xét tất cả các tùy chọn này và ý nghĩa của chúng.
  • rw: Tùy chọn này cấp cho máy khách quyền đọc và ghi trên các thư mục lưu trữ.
  • sync: Tùy chọn này buộc NFS phải ghi các thay đổi trước khi trả lời. Nghĩa là NFS sẽ hoàn tất việc ghi vào thư mục lưu trữ trước rồi mới phản hồi máy khách. Tùy chọn này đảm bảo trạng thái thực tế của máy chủ lưu trữ được phản ánh nhưng có thể làm chậm tốc độ hoạt động của tệp.
  • no_subtree_check: Tùy chọn này vô hiệu hóa kiểm tra cây con. Kiểm tra cây con là một hoạt động trong đó với mỗi yêu cầu NFS, máy chủ phải kiểm tra xem tệp đã truy cập có hiện diện và tệp đó có nằm trong cây đã xuất hay không. Hoạt động này gây ra sự cố khi các tệp mà máy khách truy cập đang được đổi tên. Vì vậy, tốt nhất là để tắt trong hầu hết các trường hợp. Nó có một số tác động bảo mật nhẹ nhưng có thể cải thiện độ tin cậy.
  • no_root_squash: Theo mặc định, NFS sẽ dịch tất cả các hoạt động do máy khách thực hiện dưới dạng root sang người dùng không có đặc quyền trên máy chủ. Việc này được thực hiện với mục đích cải thiện tính bảo mật. Tùy chọn này vô hiệu hóa hành vi đó đối với một số chia sẻ nhất định.
Khi bạn hoàn tất, hãy đóng tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại máy chủ NFS để áp dụng các thay đổi.
Mã:
$ sudo systemctl restart nfs-kernel-server

Bước 4 - Cấu hình Tường lửa máy chủ​

Thực hành tốt nhất với NFS là bật riêng cho từng địa chỉ IP của máy khách thay vì cho phép truy cập vào từ mọi nơi.

NFS sử dụng cổng 2049. Bật quyền truy cập cho NFS bằng lệnh sau.
Mã:
$ sudo ufw allow from client_ip to any port nfs
Kiểm tra trạng thái để xác minh.
Mã:
$ sudo ufw statusTrạng thái: activeĐến Action From-- ------ ----OpenSSH ALLOW Anywhere2049 ALLOW 167.100.34.78OpenSSH (v6) ALLOW Anywhere (v6)

Bước 5 - Tạo Điểm gắn kết trên Máy khách​

Bây giờ máy chủ của chúng ta đã được cấu hình, đã đến lúc thiết lập máy khách.

Tạo hai thư mục để gắn kết trên máy khách.
Mã:
$ sudo mkdir -p /nfs/general$ sudo mkdir -p /nfs/home
Bây giờ chúng ta đã thiết lập mọi thứ ở phía máy chủ, chúng ta có thể gắn kết các chia sẻ bằng cách sử dụng địa chỉ IP của Máy chủ.
Mã:
$ sudo mount host_ip:/var/nfs/general /nfs/general$ sudo mount host_ip:/home /nfs/home
Bạn có thể kiểm tra xem chúng đã được gắn kết thành công hay chưa bằng lệnh sau.
Mã:
$ df -hKích thước hệ thống tệp đã sử dụng Có sẵn Sử dụng% Đã gắn kết trênudev 448M 0 448M 0% /devtmpfs 99M 664K 98M 1% /run/dev/vda1 25G 3.2G 21G 14% /tmpfs 491M 0 491M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 491M 0 491M 0% /sys/fs/cgrouptmpfs 99M 0 99M 0% /run/user/1000123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home
Bạn có thể thấy cả hai chia sẻ được gắn kết ở cuối danh sách. Vì cả hai đều được gắn kết từ cùng một hệ thống tệp, nên chúng hiển thị mức sử dụng đĩa đầy đủ chứ không phải mức sử dụng thực tế của các thư mục được gắn kết.

Để xem dung lượng thực tế đang được sử dụng trong mỗi lần gắn kết, hãy sử dụng lệnh sau.
Mã:
$ du -sh /nfs/general36K /nfs/general

Bước 6 - Kiểm tra Chia sẻ NFS​

Tạo tệp thử nghiệm vào chia sẻ /var/nfs/general.
Mã:
$ sudo touch /nfs/general/general.test
Kiểm tra quyền sở hữu của tệp đó.
Mã:
$ ls -l /nfs/general/general.test-rw-r--r-- 1 nobody nogroup 0 1 tháng 8 13:31 /nfs/general/general.test
Điều này được gắn kết bằng các tùy chọn NFS mặc định và vì chúng tôi đã tạo tệp bằng root từ máy khách, quyền sở hữu trên máy chủ đã được chuyển cho nobody:nogroup. Ở đây, người dùng máy khách không thể thực hiện các công việc quản trị trên máy chủ.

Tạo tệp thử nghiệm vào chia sẻ /nfs/home`.
Mã:
$ sudo touch /nfs/home/home.test
Kiểm tra quyền sở hữu của nó.
Mã:
$ ls -l /nfs/home/home.test-rw-r--r-- 1 root root 0 1 tháng 8 13:32 /nfs/home/home.test
Ở đây vì chúng tôi đã tạo tệp thử nghiệm bằng root từ máy khách, quyền sở hữu được giữ nguyên trên máy chủ. Điều này là do chúng tôi đã sử dụng cờ no_root_squash cho phép người dùng root trên máy khách cũng là người dùng root trên máy chủ.

Bước 7 - Gắn kết Chia sẻ NFS trong khi Khởi động​

Những mount này sẽ không được giữ lại sau khi bạn khởi động máy khách. Để chúng trở thành vĩnh viễn, chúng ta cần chỉnh sửa tệp /etc/fstab.

Mở tệp /etc/fstab để chỉnh sửa.
Mã:
$ sudo nano /etc/fstab
Dán các dòng sau vào cuối tệp. Mỗi dòng tương ứng với mỗi thư mục mà chúng ta muốn mount khi khởi động.
Mã:
. . .host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Để tìm hiểu về các tùy chọn này, hãy kiểm tra trang hướng dẫn của nfs.
Mã:
$ man nfs
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại máy chủ để kiểm tra các điểm gắn kết.
Mã:
$ sudo reboot
Đăng nhập vào máy khách-máy chủ và xác minh rằng các điểm gắn kết là hiện tại.
Mã:
$ df -hKích thước hệ thống tập tin Đã sử dụng Có sẵn Sử dụng% Đã gắn kết trênudev 448M 0 448M 0% /devtmpfs 99M 664K 98M 1% /run/dev/vda1 25G 3.2G 21G 14% /tmpfs 491M 0 491M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 491M 0 491M 0% /sys/fs/cgrouptmpfs 99M 0 99M 0% /run/user/1000123.175.112.87:/var/nfs/general 25G 18G 6.3G 74% /nfs/general123.175.112.87:/home 25G 18G 6.3G 74% /nfs/home

Bước 8 - Gỡ bỏ NFS Shares​

Khi bạn không cần gắn kết NFS nữa, bạn có thể gỡ bỏ chúng bằng lệnh sau.
Mã:
$ sudo umount /nfs/home$ sudo umount /nfs/general
Một lỗi thường gặp là sử dụng unmount thay vì umount, đây mới là lệnh thực tế.

Xác minh rằng chúng đã được gỡ bỏ đúng cách.
Mã:
$ df -hKích thước hệ thống tệp đã sử dụng Có sẵn Sử dụng% Đã gắn kết trênudev 448M 0 448M 0% /devtmpfs 99M 664K 98M 1% /run/dev/vda1 25G 3.2G 21G 14% /tmpfs 491M 0 491M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 491M 0 491M 0% /sys/fs/cgrouptmpfs 99M 0 99M 0% /run/user/1000
Bạn cũng sẽ cần xóa các mục nhập của chúng khỏi tệp /etc/fstab để chúng không được gắn lại khi khởi động. Bạn cũng có thể bỏ chú thích cho các mục nhập của chúng bằng cách đặt ký tự # ở phía trước trong trường hợp bạn cần sử dụng lại các mount.

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi, trong đó chúng tôi đã học cách tạo mount NFS trên máy chủ và cách truy cập chúng từ các máy khách khác nhau. Nếu bạn có bất kỳ thắc mắc nào, hãy gửi chúng trong phần bình luận bên dưới.
 
Back
Bên trên