Thứ năm, 14/05/2020 | 00:00 GMT+7

Cách thiết lập NFS Mount trên Ubuntu 20.04

NFS, hay Hệ thống file mạng, là một giao thức hệ thống file phân tán cho phép bạn gắn các folder từ xa trên server của bạn . Điều này cho phép bạn quản lý không gian lưu trữ ở một vị trí khác và ghi vào không gian đó từ nhiều client . NFS cung cấp một cách tương đối chuẩn và hiệu quả để truy cập các hệ thống từ xa qua mạng và hoạt động tốt trong các tình huống mà các tài nguyên được chia sẻ phải được truy cập thường xuyên.

Trong hướng dẫn này, ta sẽ giới thiệu cho các bạn cách cài đặt phần mềm cần thiết cho chức năng NFS trên Ubuntu 20.04, cấu hình hai mount NFS trên server và client cũng như mount và ngắt kết nối các chia sẻ từ xa.

Yêu cầu

Ta sẽ sử dụng hai server trong hướng dẫn này, với một phần chia sẻ hệ thống file của nó với phần còn lại. Để làm theo, bạn cần :

  • Hai server Ubuntu 20.04. Mỗi người trong số này phải có user không phải root với các quyền sudo , firewall được cài đặt với UFW và mạng riêng, nếu nó khả dụng với bạn.

    • Để được hỗ trợ cài đặt user không phải root với quyền sudo và firewall , hãy làm theo hướng dẫn Cài đặt server ban đầu với Ubuntu 20.04 của ta .
    • Nếu bạn đang sử dụng DigitalOcean Server cho server và ứng dụng client của bạn , bạn có thể đọc thêm về cách cài đặt mạng riêng trong tài liệu của ta về Cách tạo VPC .

Trong suốt hướng dẫn này, ta đề cập đến server chia sẻ các folder của nó với quyền là server và server mount các folder này với quyền là máy khách . Bạn cần biết địa chỉ IP cho cả hai. Đảm bảo sử dụng địa chỉ mạng riêng , nếu có.

Trong suốt hướng dẫn này, ta sẽ đề cập đến các địa chỉ IP này bởi trình giữ chỗ host_ipclient_ip . Vui lòng thay thế nếu cần.

Bước 1 - Download và cài đặt các thành phần

Ta sẽ bắt đầu bằng cách cài đặt các thành phần cần thiết trên mỗi server .

Trên server

Trên server lưu trữ , hãy cài đặt gói nfs-kernel-server , gói này sẽ cho phép bạn chia sẻ các folder của bạn . Vì đây là thao tác đầu tiên bạn thực hiện với apt trong phiên này, hãy cập nhật OS local của bạn trước khi cài đặt:

  • sudo apt update
  • sudo apt install nfs-kernel-server

Một khi các gói được cài đặt, chuyển sang server của khách hàng.

Trên khách hàng

Trên server khách hàng , ta cần cài đặt một gói có tên nfs-common , cung cấp chức năng NFS mà không bao gồm bất kỳ thành phần server nào. , hãy cập nhật OS local trước khi cài đặt đảm bảo rằng bạn có thông tin cập nhật:

  • sudo apt update
  • sudo apt install nfs-common

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

Bước 2 - Tạo Thư mục Chia sẻ trên Server lưu trữ

Ta sẽ chia sẻ hai folder riêng biệt, với các cài đặt cấu hình khác nhau, để minh họa hai cách chính mà các ngàm NFS có thể được cấu hình liên quan đến quyền truy cập siêu user .

Superusers có thể làm bất cứ điều gì ở bất cứ đâu trên hệ thống của họ. Tuy nhiên, các folder được gắn với NFS không phải là một phần của hệ thống mà chúng được gắn, vì vậy theo mặc định, server NFS từ chối thực hiện các hoạt động yêu cầu quyền của user siêu cấp. Hạn chế mặc định này nghĩa là superuser trên máy khách không thể ghi file dưới dạng root , gán lại quyền sở hữu hoặc thực hiện bất kỳ tác vụ superuser nào khác trên NFS mount.

Tuy nhiên, đôi khi có những user tin cậy trên hệ thống máy khách cần thực hiện các hành động này trên hệ thống file được mount nhưng họ không cần quyền truy cập siêu user trên server . Bạn có thể cấu hình server NFS để cho phép điều này, mặc dù nó có một yếu tố rủi ro, vì như vậy user có thể có quyền truy cập root vào toàn bộ hệ thống server .

Ví dụ 1: Xuất một Giá đỡ Mục đích Chung

Trong ví dụ đầu tiên, ta sẽ tạo một ngàm NFS có mục đích chung sử dụng hành vi NFS mặc định để gây khó khăn cho user có quyền root trên máy khách tương tác với server bằng các quyền của siêu user máy khách đó. Bạn có thể sử dụng thông tin như thế này để lưu trữ các file được tải lên bằng hệ thống quản lý nội dung hoặc để tạo không gian cho user dễ dàng chia sẻ file dự án.

Đầu tiên, tạo folder chia sẻ:

  • sudo mkdir /var/nfs/general -p

Vì ta đang tạo nó bằng sudo , nên folder thuộc sở hữu của user root của server :

  • ls -la /var/nfs/general
Output
drwxr-xr-x 2 root root 4096 May 14 18:36 .

NFS sẽ dịch bất kỳ hoạt động gốc nào trên máy khách sang thông tin đăng nhập nobody:nogroup như một biện pháp bảo mật. Do đó, ta cần thay đổi quyền sở hữu folder để phù hợp với các thông tin đăng nhập đó.

  • sudo chown nobody:nogroup /var/nfs/general

Đến đây bạn đã sẵn sàng để xuất folder này.

Ví dụ 2: Xuất Danh mục Trang chủ

Trong ví dụ thứ hai của ta , mục tiêu là làm cho các folder chủ của user được lưu trữ trên server lưu trữ sẵn có trên các server khách hàng , đồng thời cho phép administrator tin cậy của các máy chủ khách đó có quyền truy cập mà họ cần để quản lý user một cách thuận tiện.

Để làm điều này, ta sẽ xuất folder /home . Vì nó đã tồn tại nên ta không cần tạo nó. Ta cũng sẽ không thay đổi các quyền. Nếu ta làm vậy , nó có thể dẫn đến một loạt vấn đề cho bất kỳ ai có folder chính trên server .

Bước 3 - Cấu hình xuất NFS trên Server lưu trữ

Tiếp theo, ta sẽ đi sâu vào file cấu hình NFS để cài đặt việc chia sẻ các tài nguyên này.

Trên server , mở file /etc/exports trong editor của bạn với các quyền root :

  • sudo nano /etc/exports

Tệp có chú thích thể hiện cấu trúc chung của từng dòng cấu hình. Cú pháp như sau:

/ etc / export
directory_to_share    client(share_option1,...,share_optionN) 

Ta cần tạo một dòng cho từng folder mà ta định chia sẻ. Đảm bảo thay đổi trình giữ chỗ client_ip hiển thị ở đây thành địa chỉ IP thực của bạn:

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

Ở đây, ta đang sử dụng các tùy chọn cấu hình giống nhau cho cả hai folder ngoại trừ no_root_squash . Hãy xem mỗi tùy chọn này có ý nghĩa gì:

  • rw : Tùy chọn này cung cấp cho máy tính khách quyền truy cập cả đọc và ghi vào ổ đĩa.
  • sync : Tùy chọn này buộc NFS ghi các thay đổi vào đĩa trước khi trả lời. Điều này dẫn đến một môi trường ổn định và nhất quán hơn vì câu trả lời phản ánh trạng thái thực tế của âm lượng từ xa. Tuy nhiên, nó cũng làm giảm tốc độ hoạt động của file .
  • no_subtree_check : Tùy chọn này ngăn chặn việc kiểm tra cây con, đây là một quá trình mà server lưu trữ phải kiểm tra xem file có thực sự còn trong cây được xuất cho mọi yêu cầu hay không. Điều này có thể gây ra nhiều vấn đề khi một file được đổi tên trong khi khách hàng đã mở nó. Trong hầu hết mọi trường hợp, tốt hơn hết là bạn nên tắt tính năng kiểm tra cây con.
  • no_root_squash : Theo mặc định, NFS dịch các yêu cầu từ user root từ xa thành user không có quyền trên server . Đây được coi là tính năng bảo mật để ngăn account gốc trên máy khách sử dụng hệ thống file của server làm account gốc . no_root_squash vô hiệu hóa hành vi này đối với một số chia sẻ nhất định.

Khi bạn thực hiện xong các thay đổi, hãy lưu file . Sau đó, để chia sẻ có sẵn cho các client mà bạn đã cấu hình, hãy khởi động lại server NFS bằng lệnh sau:

  • sudo systemctl restart nfs-kernel-server

Tuy nhiên, trước khi bạn có thể sử dụng các chia sẻ mới, bạn cần phải đảm bảo lưu lượng truy cập vào các chia sẻ được cho phép bởi các luật firewall .

Bước 4 - Điều chỉnh Tường lửa trên Server

Trước tiên, hãy kiểm tra trạng thái firewall để xem nó có được bật hay không và nếu có, để xem những gì hiện được cho phép:

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

Trên hệ thống của ta , chỉ lưu lượng SSH mới được phép thông qua, vì vậy ta cần thêm luật cho lưu lượng NFS.

Với nhiều ứng dụng, bạn có thể sử sudo ufw app list dụng sudo ufw app list và kích hoạt chúng theo tên, nhưng nfs không phải là một trong số đó. Tuy nhiên, vì ufw cũng kiểm tra /etc/services cho cổng và giao thức của một dịch vụ, ta vẫn có thể thêm NFS theo tên. Phương pháp hay nhất khuyên bạn nên bật luật hạn chế nhất sẽ vẫn cho phép lưu lượng truy cập bạn muốn cho phép, vì vậy thay vì chỉ cho phép lưu lượng truy cập từ bất kỳ đâu, ta sẽ nói cụ thể.

Sử dụng lệnh sau để mở cổng 2049 trên server , đảm bảo thay thế địa chỉ IP máy khách của bạn:

  • sudo ufw allow from client_ip to any port nfs

Bạn có thể kiểm tra thay đổi bằng lệnh :

  • sudo ufw status

Bạn sẽ thấy lưu lượng cho phép từ cổng 2049 trong kết quả :

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

Điều này xác nhận UFW sẽ chỉ cho phép lưu lượng NFS trên cổng 2049 từ máy khách của ta .

Bước 5 - Tạo điểm mount và gắn folder trên client

Bây giờ server lưu trữ đã được cấu hình và phục vụ chia sẻ của nó, ta sẽ chuẩn bị cho máy khách của bạn .

Để làm cho các chia sẻ từ xa có sẵn trên máy khách , ta cần gắn các folder trên server lưu trữ mà ta muốn chia sẻ vào các folder trống trên máy khách .

Lưu ý: Nếu có các file và folder trong điểm mount của bạn, chúng sẽ bị ẩn ngay sau khi bạn gắn phần chia sẻ NFS. Để tránh mất các file quan trọng, hãy đảm bảo nếu bạn mount trong một folder đã tồn tại mà folder đó trống.

Ta sẽ tạo hai folder cho các mount của ta :

  • sudo mkdir -p /nfs/general
  • sudo mkdir -p /nfs/home

Bây giờ ta đã có một vị trí để đặt các chia sẻ từ xa và ta đã mở firewall , ta có thể mount các chia sẻ bằng địa chỉ IP của server lưu trữ của ta :

  • sudo mount host_ip:/var/nfs/general /nfs/general
  • sudo mount host_ip:/home /nfs/home

Các lệnh này sẽ gắn các chia sẻ từ máy tính chủ vào máy khách . Bạn có thể kiểm tra lại xem chúng đã mount thành công hay chưa bằng một số cách. Bạn có thể kiểm tra bằng lệnh mount hoặc findmnt , nhưng df -h cung cấp kết quả dễ đọc hơn:

  • 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 cổ phiếu ta đã mount đều xuất hiện ở dưới cùng. Bởi vì chúng được mount từ cùng một hệ thống file , chúng hiển thị mức sử dụng đĩa giống nhau. Để xem có bao nhiêu dung lượng thực sự đang được sử dụng dưới mỗi điểm mount , hãy sử dụng lệnh sử dụng đĩa du và đường dẫn của điểm mount . Cờ -s cung cấp một bản tóm tắt về việc sử dụng thay vì hiển thị việc sử dụng cho mọi file . -h in ra kết quả mà con người có thể đọc được.

Ví dụ:

  • du -sh /nfs/home
Output
36K /nfs/home

Điều này cho ta thấy rằng nội dung của toàn bộ folder chính chỉ sử dụng 36K không gian có sẵn.

Bước 6 - Kiểm tra quyền truy cập NFS

Tiếp theo, hãy kiểm tra quyền truy cập vào các chia sẻ bằng cách viết một cái gì đó cho mỗi người trong số họ.

Ví dụ 1: Chia sẻ Mục đích Chung

Đầu tiên, hãy ghi một file thử nghiệm vào /var/nfs/general share:

  • sudo touch /nfs/general/general.test

Sau đó, hãy kiểm tra quyền sở hữu của nó:

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

Vì ta đã gắn ổ đĩa này mà không thay đổi hành vi mặc định của NFS và tạo file với quyền là user gốc của máy khách thông qua sudo , quyền sở hữu file được mặc định cho nobody:nogroup . những người quản lý cấp trên client sẽ không thể thực hiện các hành động quản trị điển hình, như thay đổi chủ sở hữu của file hoặc tạo folder mới cho một group user , trên phần chia sẻ được gắn với NFS này.

Ví dụ 2: Chia sẻ Thư mục Trang chủ

Để so sánh các quyền của phần chia sẻ Mục đích chung với phần chia sẻ Thư mục gia đình, hãy tạo file trong /nfs/home theo cách tương tự:

  • sudo touch /nfs/home/home.test

Sau đó, hãy xem quyền sở hữu của file :

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

Ta đã tạo home.test dưới dạng root bằng cách sử dụng sudo , giống hệt như cách ta tạo file general.test . Tuy nhiên, trong trường hợp này, nó thuộc sở hữu của root vì ta ghi no_root_squash hành vi mặc định khi ta chỉ định tùy chọn no_root_squash trên mount này. Điều này cho phép người sử dụng gốc của ta trên máy khách hàng để đóng role như là user root và làm cho việc quản lý account user thuận tiện hơn nhiều. Đồng thời, điều đó nghĩa là ta không phải cấp cho những user này quyền truy cập root trên server .

Bước 7 - Gắn các folder NFS từ xa khi khởi động

Ta có thể gắn các chia sẻ NFS từ xa tự động khi khởi động bằng cách thêm chúng vào file /etc/fstab trên máy khách .

Mở file này với quyền root trong editor của bạn:

  • sudo nano /etc/fstab

Ở cuối file , thêm một dòng cho mỗi chia sẻ của ta . Chúng sẽ trông như thế này:

/ etc / fstab
. . . 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 thêm thông tin về các tùy chọn mà ta chỉ định ở đây trong trang người đàn ông NFS. Bạn có thể truy cập điều này bằng cách chạy lệnh sau:

  • man nfs

Máy khách sẽ tự động mount các phân vùng từ xa khi khởi động, mặc dù có thể mất một chút thời gian để cài đặt kết nối và để chia sẻ khả dụng.

Bước 8 - Ngắt kết nối chia sẻ từ xa NFS

Nếu bạn không muốn mount folder từ xa trên hệ thống của bạn nữa, bạn có thể ngắt kết nối nó bằng cách di chuyển ra khỏi cấu trúc folder của chia sẻ và ngắt kết nối, như sau:

  • cd ~
  • sudo umount /nfs/home
  • sudo umount /nfs/general

Hãy lưu ý lệnh được đặt tên umount không được unmount như bạn có thể mong đợi.

Điều này sẽ xóa các chia sẻ từ xa, chỉ để lại bộ nhớ local của bạn có thể truy cập được:

  • 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 cũng muốn ngăn chúng bị đếm lại trong lần khởi động lại tiếp theo, hãy chỉnh sửa /etc/fstab và xóa dòng hoặc comment nó bằng cách đặt ký tự # ở đầu dòng. Bạn cũng có thể ngăn tự động gắn bằng cách loại bỏ tùy chọn auto , điều này sẽ cho phép bạn vẫn gắn nó theo cách thủ công.

Kết luận

Trong hướng dẫn này, ta đã tạo một server NFS và minh họa một số hành vi NFS chính bằng cách tạo hai giá đỡ NFS khác nhau, ta đã chia sẻ với một client NFS.

Nếu bạn đang tìm cách triển khai NFS trong production , điều quan trọng cần lưu ý là bản thân giao thức không được mã hóa. Trong trường hợp bạn đang chia sẻ qua mạng riêng, đây có thể không phải là vấn đề. Trong các trường hợp khác, VPN hoặc một số loại tunnel được mã hóa khác cần thiết để bảo vệ dữ liệu .


Tags:

Các tin liên quan

Cách cài đặt R trên Ubuntu 18.04 [Khởi động nhanh]
2020-05-14
Cách cài đặt R trên Ubuntu 18.04
2020-05-14
Cách cài đặt R trên Ubuntu 20.04
2020-05-14
Cách cài đặt MariaDB trên Ubuntu 20.04
2020-05-12
Cách cài đặt MariaDB trên Ubuntu 18.04
2020-05-12
Cách cài đặt MariaDB trên Ubuntu 20.04 [Quickstart]
2020-05-12
Cách nâng cấp lên Ubuntu 20.04 Focal Fossa
2020-05-12
Cách cài đặt và cấu hình VNC trên Ubuntu 20.04
2020-05-11
Cách cài đặt và cấu hình VNC trên Ubuntu 20.04 [Quickstart]
2020-05-11
Cách cài đặt Node.js trên Ubuntu 20.04
2020-05-08