Bài 18: NFS – Network File System v4

NFS được thiết kế để các thư mục trên file server có thể mount trên các máy tính đàng xa.

Tuy có những chọn lựa thay thế khác chẳng hạn như SAMBA, nhưng lợi điểm của NFS là đã được tích hợp trong nhân HDH, đó đó hoạt động hiệu quả hơn. Nó cũng cho phép chúng ta mount hệ thống file đàng xa một cách tự động khi khởi động mà không qua chứng thực, rất tiện với hệ thống file trong mạng gia đình bao gồm các máy chạy Linux, Windows 7, Windows Server hay Windows 8 Enterprise.

Cài đặt NFS server

Để làm máy chủ NFS, cần cài đặt các gói sau

sudo apt-get install nfs-kernel-server --no-install-recommends

Cài đặt IPv6 và chạy rpcbind từ khi khởi động

sudo modprobe ipv6
sudo update-rc.d rpcbind defaults

Cấu hình NFS server

Thêm vào file cấu hình /etc/exports mỗi dòng tương ứng với một thư mục chia sẻ, có dạng như sau

#chia sẻ thư mục /home trên RPI cho mọi máy trên mạng cục bộ với quyền (rw,sync,no_subtree_check)
/home/share 192.168.0.*/255.255.255.0(rw,no_subtree_check)

192.168.0.*/255.255.255.0 nghĩa là mọi máy trong mạng 192.168.0.0 trong khi * có nghĩa là tất cả máy. Các máy khách có thể được mô tả qua tên , ip, wildcards hay netmasks và không có khoảng trắng với options

Ý nghĩa các option như sau

  • rw : cho phép máy khách đọc lẫn ghi.
  • ro : máy khách chỉ có thể đọc.
  • insecure : NFS server sử dụng các cổng không cần được cấp quyền (ports > 1024).
  • no_subtree_check : không kiểm tra thư mục con sẽ giúp tăng tốc độ truyền dữ liệu.
  • async : không đồng bộ sẽ giúp tăng tốc độ truyền dữ liệu.

Cho phép kết nối từ bên ngoài

  • Đế máy khách có thể kết nối, chúng ta cần cho phép các kết nối từ bên ngoài tới dịch vụ NFS (mặc định bị hạn chế)

Thêm các dòng dưới đây vào file /etc/hosts.allow (giả sử subnet của RPI là 192.168.0.*/24)

portmap: 192.168.0.*/255.255.255.0
lockd: 192.168.0.*/255.255.255.0
rquotad: 192.168.0.*/255.255.255.0
mountd: 192.168.0.*/255.255.255.0
statd: 192.168.0.*/255.255.255.0

hay

ALL: 192.168.0.*/255.255.255.0
  • Firewall (nếu có)

Nếu có firewall trên RPI, ta cần cấu hình NFS dùng các port cố định và cho phép bên ngoài kết nối đến các port đó.

sudo nano /etc/default/nfs-common

# Options for rpc.statd.
STATDOPTS="-p 32765 -o 32766"
sudo nano /etc/default/nfs-kernel-server

# Options for rpc.mountd.
RPCMOUNTDOPTS="--manage-gids -p 32767"

Các option phải ở trong ngoặc kép như bên trên.

Kế đến, cho phép bên ngoài kết nối đến các port này qua firewall. Sau đây là các lệnh và kết quả trả về

# ufw allow from 192.168.0.0/24 to any port 111 proto tcp
  Rule added
# ufw allow from 192.168.0.0/24 to any port 111 proto udp
  Rule added
# ufw allow from 192.168.0.0/24 to any port 2049 proto tcp
  Rule added
# ufw allow from 192.168.0.0/24 to any port 32765:32767 proto tcp
  Rule added
# ufw allow from 192.168.0.0/24 to any port 32765:32767 proto udp
  Rule added
  • Để các thay đổi có hiệu lực, cần phải nạp lại NFS server theo cấu hình mới.
/etc/init.d/nfs-common restart
/etc/init.d/nfs-kernel-server reload
/etc/init.d/nfs-kernel-server restart
  • Để kiểm tra, dùng lệnh exportfs liệt kê các thư mục đang được chia sẻ

Mount một thư mục được chia sẻ từ NFS server

  • Lệnh sau sẽ mount thư mục được chia sẻ trên máy khách Linux
sudo mount -t nfs NFS-Server-Name:/home/share /mnt

hoặc cấu hình để tự động mount qua /etc/fstab.

NFS-Server-Name:/share /mnt nfs user,noauto 0 0
hay
NFS-Server-Name:/share /mnt nfs defaults 0 0
  • Với Windows 7, Windows Server và Windows 8 Ent, cần phải cài NFS Client, sau đó mount thư mục được chia sẻ qua dòng lệnh.

 

Leave a Comment

Filed under Software

Leave a Reply