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.
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 đó.
Đầu tiên, hãy tạo thư mục chia sẻ.
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
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ủ.
Mở tệp
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ẻ.
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.
Khởi động lại máy chủ NFS để áp dụng các thay đổi.
NFS sử dụng cổng 2049. Bật quyền truy cập cho NFS bằng lệnh sau.
Kiểm tra trạng thái để xác minh.
Tạo hai thư mục để gắn kết trên máy khách.
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ủ.
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.
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.
Kiểm tra quyền sở hữu của tệp đó.
Đ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
Tạo tệp thử nghiệm vào chia sẻ /nfs/home`.
Kiểm tra quyền sở hữu của nó.
Ở đâ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ờ
Mở tệp
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.
Để 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
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.
Đă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ột lỗi thường gặp là sử dụng
Xác minh rằng chúng đã được gỡ bỏ đúng cách.
Bạn cũng sẽ cần xóa các mục nhập của chúng khỏi tệp
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_ip và client_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óinfs-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óinfs-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
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
Mã:
/var/nfs/general client_ip(rw,sync,no_subtree_check)/home client_ip(rw,sync,no_root_squash,no_subtree_check)
- 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.
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
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
Mã:
$ sudo mount host_ip:/var/nfs/general /nfs/general$ sudo mount host_ip:/home /nfs/home
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
Để 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
Mã:
$ ls -l /nfs/general/general.test-rw-r--r-- 1 nobody nogroup 0 1 tháng 8 13:31 /nfs/general/general.test
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
Mã:
$ ls -l /nfs/home/home.test-rw-r--r-- 1 root root 0 1 tháng 8 13:32 /nfs/home/home.test
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
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
nfs
.
Mã:
$ man nfs
Khởi động lại máy chủ để kiểm tra các điểm gắn kết.
Mã:
$ sudo reboot
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
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
/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.