VPS
Hosting
Email
Máy chủ
Firewall Anti DDoS
Tên Miền
SSL
5
4

Hướng dẫn cách thiết lập NFS trên Ubuntu 20.04

1
Lượt xem
Home System Hướng dẫn cách thiết lập NFS trên Ubuntu 20.04

NFS (Network File System) là một giao thức chia sẻ file cho phép người dùng truy cập tới hệ thống file trên một máy khách được chia sẻ thông qua một mạng máy tính. Bài viết dưới đây của Vietnix sẽ hướng dẫn bạn cách cài đặt NFS trên Ubuntu 20.04 và cấu hình NFS mount trên một server và một client, cách mount và unmount các chia sẻ từ xa.

Yêu cầu chuẩn bị để thiết lập NFS trên Ubuntu 20.04

Trong hướng dẫn này cần sử dụng hai máy chủ Ubuntu 20.04, một máy sẽ có chức năng chia sẻ phần file hệ thống với máy khác. Đồng thời, mỗi máy nên có một user non-root với quyền sudo, tường lửa được thiết lập với UFW và sử dụng mạng private.

Lưu ý, trong hướng dẫn dưới đây, server chia sẻ thư mục sẽ được gọi là host và server mount thư mục được gọi là client. Bạn cần biết địa chỉ IP của cả hai máy chủ này, các bước dưới đây sẽ đề cập đến địa chỉ IP của hai máy là host_ip client_ip. Bạn hãy thay thế IP của máy chủ tương ứng khi thực hiện theo hướng dẫn.

Nếu chưa sở hữu máy chủ hoặc đang tìm kiếm giải pháp máy chủ tiết kiệm chi phí thì có thể tham khảo thuê VPS tại Vietnix. Lúc này, bạn sẽ sở hữu máy chủ với toàn quyền quản trị để thiết lập NFS mà không tốn kém nhiều chi phí. Bạn có thể dễ dàng chọn lựa máy chủ theo nhu cầu sử dụng, từ VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU. Nếu băn khoăn, hãy liên hệ với Vietnix để được tư vấn nhanh chóng và chi tiết nhất.

Event sinh nhật 11 tuổi

Chương trình mừng sinh nhật lần thứ 11 Vietnix

Các bước cài đặt và cấu hình NFS trên Ubuntu 20.04

Khi đã chuẩn bị đầy đủ các yêu cầu trên, bạn có thể bắt đầu tiến hành cài đặt và cấu hình NFS trên máy chủ Ubuntu 20.04 với các bước sau đây:

Bước 1: Tải xuống và cấu hình các thành phần

Đầu tiên, bạn cần cài đặt các thành phần cần thiết trên cả hai máy chủ.

Trên Host

Trên host server, bạn cần cài gói nfs-kernel-server để hỗ trợ việc chia sẻ các thư mục. Do đây là lần đầu tiên thực hiện với apt trong phiên làm việc nên bạn cần cập nhật lại local package index trước khi cài đặt.

host:$ sudo apt update
host:$ sudo apt install nfs-kernel-server

Sau khi cài xong gói này, bạn chuyển sang cài trên client server.

Trên Client

Trên client server, bạn cần cài đặt gói nfs-common, cung cấp chức năng NFS không bao gồm bất kỳ thành phần máy chủ nào. Tương tự, hãy cập nhật local package index để có thông tin mới nhất:

client:$ sudo apt update
client:$ sudo apt install nfs-common

Bây giờ, cả hai server đã có các gói cần thiết để bắt đầu cấu hình.

Bước 2: Tạo các thư mục chia sẻ trên Host

Dưới đây là 2 cách tạo thư mục chia sẻ với các cấu hình khác nhau để minh họa hai cách chính mà các NFS được cấu hình phù hợp với quyền truy cập superuser.

Lưu ý: Superuser có thể thực hiện mọi hành động tại bất cứ vị trí nào trên hệ thống. Tuy nhiên các thư mục được mount bằng NFS không thuộc hệ thống mà chúng được mount. Do đó mặc định máy chủ NFS từ chối thực hiện các hoạt động được yêu cầu từ superuser. Điều này có nghĩa là superuser trên client không thể viết file với tư cách root, phân quyền sở hữu hoặc thực hiện bất cứ thao tác superuser nào khác trên NFS mount.

Tuy nhiên, đôi lúc vẫn có những user đáng tin cậy trên client system muốn thực hiện những hành động trên mà không cần quyền truy cập superuser trên host. Bạn sẽ cần cấu hình NFS server để cho phép điều này nhưng cần đề phòng các rủi ro do người dùng có thể truy cập root vào toàn bộ host system.

Ví dụ 1: Xuất một mount đa dụng

Trong ví dụ đầu tiên, bạn sẽ được hướng dẫn cách tạo một mount NFS đa dụng sử dụng hành vi mặc định của NFS để giới hạn quyền tương tác của user root client khi tương tác với server host. Điều này cũng có thể được thực hiện nếu muốn lưu trữ các file đã được upload bằng hệ thống quản lý nội dung hoặc muốn tạo không gian làm việc cho user chia sẻ file project dễ dàng.

Đầu tiên, hãy tạo thư mục chia sẻ:

host:$ sudo mkdir /var/nfs/general -p

Do bạn đang tạo thư mục với quyền sudo nên thư mục này thuộc sở hữu của root user trên host.

host:$ ls -la /var/nfs/general
Output

drwxr-xr-x 2 root root 4096 May 14 18:36 .

NFS sẽ chuyển tất cả tác vụ của root trên client thành thông tin đăng nhập nobody:nogroup như một biện pháp bảo mật. Do đó, bạn cần thay đổi quyền sở hữu thư mục để phù hợp với thông tin đăng nhập này.

host:$ sudo chown nobody:nogroup /var/nfs/general

Như vậy, bạn đã sẵn sàng để xuất thư mục này.

Ví dụ 2: Chia sẻ thư mục Home

Trong ví dụ thứ hai, mục tiêu thực hiện là để chia sẻ các thư mục home của người dùng được lưu trữ trên host cho các client server. Đồng thời cho phép các administrator đáng tin cậy trên các client server truy cập dễ dàng để quản lý người dùng.

Để làm điều này, bạn cần chia sẻ thư mục /home. Vì thư mục này đã tồn tại nên bạn không cần phải tạo mới. Bạn cũng không cần thay đổi quyền truy cập bởi nếu làm vậy sẽ gây khó khăn cho bất kỳ người dùng nào có thư mục home trên host.

Bước 3: Cấu hình NFS Export trên Host server

Tiếp theo, bạn cần đi đến file cấu hình NFS để thiết lập chia sẻ tài nguyên. Trên server host, mở file /etc/exports bằng trình soạn thảo văn bản với quyền root:

host:$ sudo nano /etc/exports

File chứa các comment hiển thị cấu trúc chung của mỗi dòng cấu hình. Cú pháp như sau:

directory_to_share    client(share_option1,...,share_optionN)

Bạn cần tạo một dòng cho mỗi thư mục dự định chia sẻ. Lưu ý thay thế client_ip bằng địa chỉ IP cụ thể của bạn:

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

Ở đây, bạn sẽ sử dụng các tùy chọn cấu hình giống nhau cho cả hai thư mục, trừ no_root_squash. Ý nghĩa của các tùy chọn như sau:

  • rw: Tùy chọn này cho phép máy client đọc và ghi vào volume.
  • sync: Tùy chọn cho phép máy client ghi các thay đổi vào ổ đĩa trước khi phản hồi. Điều này giúp cho môi trường ổn định và nhất quán hơn nhờ việc phản ánh trạng thái thực tế của ổ đĩa từ xa. Tuy nhiên nó cũng làm giảm tốc độ hoạt động của các file.
  • no_subtree_check: Tùy chọn này ngăn chặn việc kiểm tra nhánh con (subtree checking), quá trình mà host phải thực hiện để xem file có còn thực sự khả dụng trong cây thư mục đã xuất không. Điều này có thể gây ra nhiều vấn đề khi file được đổi tên trong khi client đang mở nó. Tốt nhất trong các trường hợp, bạn nên tắt subtree checking.
  • no_root_squash: Mặc định, NFS dịch các yêu cầu từ root user từ xa thành non-privileged user trên server. Đây là một tính năng bảo mật để ngăn chặn tài khoản root trên client sử dụng file system của host như root. Lệnh no_root_squash sẽ vô hiệu hóa hành vi này cho một số phần chia sẻ.

Khi bạn hoàn tất các thay đổi, nhấn lưu và đóng file. Sau đó, để các client đã cấu hình có thể truy cập vào những phần đã chia sẻ, bạn tiến hành khởi động lại máy chủ NFS bằng lệnh sau:

host:$ sudo systemctl restart nfs-kernel-server

Trước khi sử dụng các phần này, bạn cần đảm bảo rằng lưu lượng truy cập đã được cho phép trong các quy tắc firewall.

Bước 4: Điều chỉnh firewall trên Host

Trước hết, hãy kiểm tra trạng thái hiện tại của firewall đã bật hay chưa. Nếu firewall đang bật, kiểm tra xem các hoạt động nào được cho phép:

host:$ sudo ufw status
Output
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Như kết quả ở trên cho thấy, hiện chỉ có truy cập SSH được cấp phép. Do đó bạn cần thêm một số rule cho NFS traffic.

Đối với các ứng dụng khác, bạn có thể dùng lệnh sudo ufw app list và kích hoạt qua tên, còn đối với nfs không thể làm như thế. Tuy nhiên, do ufw cũng kiểm tra /etc/services để tìm cổng và giao thức của dịch vụ nên bạn vẫn có thể thêm NFS bằng tên. Để đảm bảo an toàn tốt nhất, bạn nên kích hoạt quy tắc hạn chế và chỉ cho phép các truy cập mong muốn cụ thể thay vì cho phép tất cả.

Sử dụng lệnh sau để mở cổng 2049 trên host, nhớ thay địa chỉ IP client của bạn:

host:$ sudo ufw allow from client_ip to any port nfs

Xác nhận thay đổi bằng cách nhập lệnh:

host:$ sudo ufw status

Kết quả trả về cần hiển thị lưu lượng được phép truy cập từ cổng 2049:

Output
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
2049                       ALLOW       203.0.113.24        
OpenSSH (v6)               ALLOW       Anywhere (v6)

Điều này cho thấy UFW chỉ cho phép NFS truy cập trên cổng 2049 từ client.

Bước 5: Tạo mount point và mount thư mục trên Client

Bây giờ trên host đã được cấu hình và có sẵn các phần chia sẻ, bước tiếp theo bạn cần thiết lập một số cài đặt trên client. Bạn sẽ cần mount các thư mục trên host muốn chia sẻ đến các thư mục trống trên client.

Lưu ý, nếu tồn tại file và thự mục trong mount point, chúng sẽ bị ẩn ngay sau khi mount NFS share. Để tránh mất các file quan trọng, bạn cần kiểm tra và đảm bảo thư mục được mount phải là thư mục trống.

Bạn cần tạo hai thư mục:

client:$ sudo mkdir -p /nfs/general

client:$ sudo mkdir -p /nfs/home

Bây giờ bạn đã có nơi để lưu trữ các file từ xa và đã mở firewall. Bạn có thể mount file chia sẻ bằng cách sử dụng địa chỉ IP của host server:

client:$ sudo mount host_ip:/var/nfs/general /nfs/general
client:$ sudo mount host_ip:/home /nfs/home

Các lệnh trên sẽ mount các file chia sẻ từ máy host đến các máy client. Để kiểm tra xem mount đã thực hiện thành công chưa, bạn có thể dùng lệnh mount hoặc findmnt. Tuy nhiên nếu dùng df -h thì kết quả trả về sẽ dễ đọc hơn:

client:$ df -h
Output
Filesystem                       Size  Used Avail Use% Mounted on
udev                             474M     0  474M   0% /dev
tmpfs                             99M  936K   98M   1% /run
/dev/vda1                         25G  1.8G   23G   8% /
tmpfs                            491M     0  491M   0% /dev/shm
tmpfs                            5.0M     0  5.0M   0% /run/lock
tmpfs                            491M     0  491M   0% /sys/fs/cgroup
/dev/vda15                       105M  3.9M  101M   4% /boot/efi
tmpfs                             99M     0   99M   0% /run/user/1000
10.132.212.247:/var/nfs/general   25G  1.8G   23G   8% /nfs/general
10.132.212.247:/home              25G  1.8G   23G   8% /nfs/home

Cả hai file chia sẻ đã mount sẽ xuất hiện ở cuối danh sách. Do chúng được mount từ cùng một file system nên kết quả hiển thị với ổ đĩa giống nhau. Để kiểm tra có bao nhiêu không gian đang được sử dụng với mỗi mount point, sử dụng lệnh du và đường dẫn của mount. Tùy chọn -s cung cấp tóm tắt sử dụng cho mỗi file. Tùy chọn -h giúp in kết quả để bạn dễ đọc hơn.

Ví dụ:

client:$ du -sh /nfs/home
Output 
36K /nfs/home

Output trên cho biết nội dung toàn bộ thư mục home chỉ sử dụng 36K.

Bước 6: Kiểm tra truy cập NFS

Tiếp theo, bạn cần kiểm tra truy cập vào các folder share bằng cách ghi một số thông tin vào mỗi folder.

Ví dụ 1: Share dùng chung

Đầu tiên, hãy ghi một file kiểm tra vào /var/nfs/general:

client:$ sudo touch /nfs/general/general.test

Sau đó kiểm tra quyền sở hữu file:

client:$ ls -l /nfs/general/general.test
Output
-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

Do bạn mount volume này mà không thay đổi hành vi mặc định của NFS, đồng thời tạo file dưới dạng root user của client thông qua lệnh sudo, cho nên quyền sử hữu của file vẫn mặc định là nobody:nogroup. Client superuser sẽ không thể thực hiện các hoạt động quản trị tính năng thông thường như thay đổi chủ sở hữu file hoặc tạo thư mục mới cho một nhóm user trên folder share được mount bằng NFS này.

Ví dụ 2: Share thư mục home

Để so sánh quyền hạn của share dùng chung và share thư mục home, bạn tạo một file trong /nfs/home tương tự:

client:$ sudo touch /nfs/home/home.test

Sau đó kiểm tra quyền sở hữu file:

client:$ ls -l /nfs/home/home.test
Output
-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

Bạn đã tạo home.test với quyền root bằng cách sử dụng lệnh sudo tương tự như cách tạo file general.test. Tuy nhiên trong trường hợp này, home.test được sở hữu bởi root do bạn đã ghi đè lệnh hành vi mặc định khi chỉ định tùy chọn no_root_squash trên mount này. Điều này cho phép người dùng root trên client thao tác như root và giúp việc quản trị tài khoản người dùng thuận tiện hơn. Bạn cũng không cần phải cấp quyền truy cập root cho người dùng trên host nữa.

Bước 7: Mount các thư mục NFS từ xa khi khởi động

Bạn có thể mount các thư mục NFS từ xa khi khởi động bằng cách thêm vào file /etc/fstab trên client.

Mở file với quyền root trên trình soạn thảo văn bản:

client:$ sudo nano /etc/fstab

Ở cuối file, thêm một dòng cho mỗi folder share:

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Lưu ý, bạn có thể tìm hiểu thêm thông tin về các tùy chọn này trong NFS man page. Truy cập bằng câu lệnh sau:

$ man nfs

Client sẽ tự động mount các phân vùng từ xa khi khởi động, sẽ mất vài giây để thiết lập kết nối và để các folder share sẵn sàng.

Bước 8: Ngắt kết nối NFS remote share

Nếu muốn loại bỏ thư mục từ xa trên hệ thống, bạn có thể ngắt kết nối bằng cách di chuyển nó khỏi cấu trúc thư mục của folder share và ngắt kết nối bằng cách sau:

client:$ cd ~
client:$ sudo umount /nfs/home
client:$ sudo umount /nfs/general

Lưu ý, lệnh được đặt tên là umount chứ không phải unmount. Lệnh này sẽ giúp gỡ bỏ các chia sẻ từ xa, chỉ giữ lại các lưu trữ cục bộ.

client:$ df -h
Output
Filesystem                       Size  Used Avail Use% Mounted on
udev                             474M     0  474M   0% /dev
tmpfs                             99M  936K   98M   1% /run
/dev/vda1                         25G  1.8G   23G   8% /
tmpfs                            491M     0  491M   0% /dev/shm
tmpfs                            5.0M     0  5.0M   0% /run/lock
tmpfs                            491M     0  491M   0% /sys/fs/cgroup
/dev/vda15                       105M  3.9M  101M   4% /boot/efi
tmpfs                             99M     0   99M   0% /run/user/1000

Nếu bạn muốn ngăn cản việc các folder sẽ được kết nối lại vào lần khởi động tiếp theo, hãy chỉnh sửa /etc/fstab và xóa dòng đó hoặc đặt dấu # ở đầu dòng để chú thích. Hoặc là bạn có thể loại bỏ tùy chọn auto, cách này vẫn cho phép bạn thực hiện mount thủ công.

Vietnix là nhà cung cấp giải pháp VPS với hơn 10 năm kinh nghiệm trong lĩnh vực. Trong thời gian này, Vietnix đã phục vụ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp, bao gồm GTV, UB Group, iVIVU, Vietnamworks, SEOSONA và SAGO Media và kích hoạt hơn 100.000 dịch vụ. Đặc biệt, Vietnix càng tự hào hơn khi tỷ lệ khách hàng giới thiệu dịch vụ lên đến 97% sau khi sử dụng.

Năm 2022, Vietnix đã đạt được giải thưởng Thương hiệu Việt Nam xuất sắc. Đây là minh chứng cho chất lượng dịch vụ và sự tin tưởng của khách hàng với chúng tôi. Hãy để Vietnix trở thành người đồng hành cùng bạn trên con đường kinh doanh trực tuyến.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093.
  • Email: sales@vietnix.com.vn.

Lời kết

Trong hướng dẫn trên về cách thiết lập NFS trên Ubuntu 20.04, Vietnix đã chỉ ra các bước tạo một NFS host, thực hiện một số hành vi NFS quan trọng thông qua việc tạo 2 NFS mount khác nhau và chia sẻ chúng với một NFS client. Trong trường hợp bạn muốn triển khai NFS không thông qua mạng riêng, hãy sử dụng một VPN hoặc một kênh mã hóa để bảo vệ dữ liệu một cách an toàn. Chúc các bạn thành công. 

Chia sẻ bài viết
Đánh giá
5/5 - (3 bình chọn)
Kết nối với mình qua
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix
Bài viết liên quan
Bình luận
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận