Tìm kiếm Blog này

Translate

Thứ Tư, 4 tháng 11, 2020

NFS Server / Client

 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:


Server

Ip Address

OS

nfs-server

192.168.60.14

Ubuntu 20.04 LTS

nfs-client

192.168.60.9

Ubuntu 20.04 LTS



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


Như vậy, chúng ta đã hoàn thành thiết lập một hệ thống NFS server đơn giản bao gồm 1 server và 1 client. 

Chúc các bạn thành công!

Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến