Network File System (NFS) là hệ thống giao thức chia sẻ file được phát triển bởi Sun Microsystems từ năm 1984. NFS cho phép người dùng truy cập tài liệu qua mạng máy tính giống như truy cập trực tiếp trên ở cứng cục bộ.
Trong phạm vi bài viết này, chúng ta sẽ đi qua các bước thiết lập cần thiết cho chức năng NFS cho server và client.
1. Thiết lập môi trường
Chúng ta sẽ sử dụng 2 máy ảo đóng vai trò máy chủ NFS và máy trạm, cả 2 nằm trong cùng 1 network.
Một account không phải root, có quyền sudo trên mỗi máy.
Để thực hành dễ dàng hơn, bạn có thể cài đặt Multipass trong bài viết sau.
Chạy 2 dòng lệnh sau để tạo nfs-server và nfs-client
$ multipass launch -n nfs-server
$ multipass launch -n nfs-client
Kết quả sau khi chạy lệnh tương tự như sau:
2. Tải xuống và cài đặt các thành phần cần thiết
2.1 NFS SERVER
Mở shell command vào nfs-server
$ multipass shell nfs-server
Cập nhật index APT Package và cài đặt gói nfs-kernel-server
ubuntu@nfs-server:$ sudo apt update
ubuntu@nfs-server:$ sudo apt install nfs-kernel-server
2.2 NFS CLIENT
Mở shell command vào nfs-client
$ multipass shell nfs-client
Cập nhật index APT Package và cài đặt gói nfs-commons
ubuntu@nfs-client:$ sudo apt update
ubuntu@nfs-client:$ sudo apt install nfs-common
3. Thiết lập cấu hình máy chủ nfs-server
3.1 Tạo thư mục chia sẻ trên máy chủ
Đầu tiên, chúng ta cần tạo một thư mục dùng để chia sẻ
ubuntu@nfs-server:$ sudo mkdir /var/nfs/shares -p
Do chúng ta tạo thư mục với sudo, nên thư mục mới được tạo sẽ thuộc quyền quản lý của user root trên nfs-server. NFS sẽ chuyển bất kỳ hoạt động nào của user root trên nfs-client sang nobody:nogroup như một biện pháp bảo mật. Do vậy, chúng ta cần đổi quyền sở hữu thư mục vừa tạo sang nobody:nogroup cho phù hợp với credential đó.
$ sudo chown nobody:nogroup /var/nfs/shares
3.2 Thiết lập cấu hình NFS Exports trên máy chủ nfs-server
Mở file /etc/exports
ubuntu@nfs-server:$ sudo nano /etc/exports
Mặc định nội dung như sau
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
Để chia sẻ, chúng ta thêm 1 một dòng tương ứng với từng thư mục cần chia sẻ theo định dạng như sau
/path/to/directory client_ip(share_option_1, share_option_2,...share_option_n)
Như vậy, chúng ta thêm 1 dòng như sau vào file /etc/exports trên nfs-server
/var/nfs/shares 192.168.60.9(rw,sync,no_subtree_check)
Diễn giải ý nghĩa một số share_option:
rw: client có quyền đọc và ghi trong thư mục được chia sẻ.
sync: NFS ghi nội dung cập nhật vào ổ cứng trước khi trả về thông báo. Đảm bảo tính nhất quán tuy nhiên nó cũng làm giảm tốc độ truy vấn.
no_subtree_checking: ngăn chặn quá trình kiểm tra sự tồn tại vật lý của tài liệu trên từng request. Trong hầu hết trường hợp, tốt nhất nên disable tính năng kiểm tra.
3.3 Restart nfs-kernel-server
ubuntu@nfs-server:$ sudo systemctl restart nfs-kernel-server
3.4 Cấu hình firewall
Kiểm tra trạng thái firewall
ubuntu@nfs-server:$ sudo ufw status
Nếu UFW đang hoạt động, chúng ta cần tạo rule mới cho nfs traffic.
ubuntu@nfs-client:$ sudo ufw allow from 192.168.60.9 to any port nfs
4. Thiết lập cấu hình máy khách nfs-client
4.1 Tạo một thư mục trên máy nfs-client
ubuntu@nfs-client:$ sudo mkdir -p /nfs/shares
4.2 Tạo liên kết với thư mục được chia sẻ trên nfs-server
ubuntu@nfs-client:$ sudo mount 192.168.60.14:/var/nfs/shares /nfs/shares
Kiểm tra lại bằng lệnh
ubuntu@nfs-client:$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 442M 0 442M 0% /dev
tmpfs 92M 1.1M 91M 2% /run
/dev/sda1 4.7G 1.4G 3.3G 30% /
tmpfs 459M 0 459M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 459M 0 459M 0% /sys/fs/cgroup
/dev/sda15 105M 3.9M 101M 4% /boot/efi
/dev/loop0 31M 31M 0 100% /snap/snapd/9607
/dev/loop1 56M 56M 0 100% /snap/core18/1885
tmpfs 92M 0 92M 0% /run/user/1000
/dev/loop2 71M 71M 0 100% /snap/lxd/16922
192.168.60.14:/var/nfs/shares 4.7G 1.4G 3.3G 30% /nfs/shares
5. Kiểm tra kết quả
Trên nfs-client, tạo một file tên general.txt vào thư mục /nfs/shares
ubuntu@nfs-client:$ sudo touch /nfs/shares/general.txt
ubuntu@nfs-client:$ ls -l /nfs/shares/general.txt
-rw-r--r-- 1 nobody nogroup 0 Nov 4 23:12 /nfs/shares/general.txt
Kiểm tra trên nfs-server
ubuntu@nfs-server:~$ ls -l /var/nfs/shares/
total 0
-rw-r--r-- 1 nobody nogroup 0 Nov 4 23:12 general.txt
6. Tạo liên kết thư mục NFS mỗi khi khởi động
Sau khi hoàn thành 5 bước trên, mọi thứ đã gần như hoàn hảo. Tuy nhiên, vẫn còn một vấn đề tồn tại, là liên kết NFS sẽ bị mất nếu nfs-client khởi động lại.
Để giải quyết vấn đề trên, chúng ta cần thêm một dòng config vào file /etc/fstab.
Mở file /etc/fstab trên máy khách nfs-client. thêm 1 dòng bên dưới
192.168.60.14:/var/nfs/shares /nfs/shares nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
nfs-client sẽ tự động tạo liên kết đến nfs-server mỗi khi reboot, tuy nhiên, sẽ có độ trễ nhất định.
7. Hủy liên kết NFS
ubuntu@nfs-client:$ sudo umount /nfs/shares
Xóa dòng config trong /etc/fstab
Không có nhận xét nào:
Đăng nhận xét