Thứ năm, 05/07/2018 | 00:00 GMT+7

Cách thiết lập NFS Mount trên Ubuntu 18.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 nhanh chóng và dễ dàng để 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 phải truy cập thường xuyên các tài nguyên được chia sẻ.

Trong hướng dẫn này, ta sẽ giới thiệu cho các bạn cách cài đặt các thành phần cần thiết cho chức năng NFS, cấu hình mount NFS và ngắt kết nối chia sẻ NFS 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 18.04. Mỗi người trong số này phải có một user không phải root với các quyền sudo cấu hình , một firewall đơn giản được cài đặt với UFW và mạng riêng, nếu nó khả dụng cho bạn.

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 . Để giữ cho chúng luôn ổn định, ta sẽ sử dụng các địa chỉ IP sau làm chỗ đứng cho các giá trị server máy khách :

  • Server : 203.0.113.0
  • Máy khách : 203.0.113.24

Khi các địa chỉ IP này xuất hiện trong các lệnh và file cấu hình, bạn cần thay thế chúng bằng địa chỉ IP server máy khách tương ứng của bạ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 , gói này cung cấp chức năng NFS mà không bao gồm các thành phần server không cần thiết. , 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 cho phép điều này, mặc dù nó dẫn đến một yếu tố rủi ro, vì như vậy user có thể giành đượ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 mount 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 siêu user của 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 một folder chia sẻ có tên là nfs :

  • 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 trên server .

  • ls -la /var/nfs/general
Output
4 drwxr-xr-x 2 root root 4096 Jul 25 15:26 .

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.

Mở file /etc/exports trong editor của bạn với 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 về cơ bản là:

/ 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ẻ. Vì ứng dụng client mẫu của ta có IP là 203.0.113.24 , các dòng của ta sẽ giống như sau. Đảm bảo thay đổi địa chỉ IP hiển thị ở đây thành địa chỉ IP của khách hàng của bạn:

/ etc / export
/var/nfs/general    203.0.113.24(rw,sync,no_subtree_check) /home       203.0.113.24(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 của khách hàng của bạn:

  • sudo ufw allow from 203.0.113.24 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 cách địa chỉ server lưu trữ của ta , trong hướng dẫn này là 203.0.113.0 :

  • sudo mount 203.0.113.0:/var/nfs/general /nfs/general
  • sudo mount 203.0.113.0:/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 đơn giản, nhưng df -h cung cấp kết quả dễ đọc hơn minh họa cách sử dụng đĩa được hiển thị khác nhau đối với chia sẻ NFS:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 238M 0 238M 0% /dev tmpfs 49M 628K 49M 2% /run /dev/vda1 20G 1.2G 18G 7% / tmpfs 245M 0 245M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 245M 0 245M 0% /sys/fs/cgroup tmpfs 49M 0 49M 0% /run/user/0 203.0.113.0:/home 20G 1.2G 18G 7% /nfs/home 203.0.113.0:/var/nfs/general 20G 1.2G 18G 7% /nfs/general

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 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 Thư mục chính 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
. . . 203.0.113.0:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0 203.0.113.0:/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

Server khách hàng 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 vài phút để 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

Đ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 /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 320K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user

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ý hiệu # ở đầ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 , tùy chọn này sẽ cho phép bạ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áy khách NFS của bạn . 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ẻ các file nhằm mục đích có thể truy cập , điều này không gây ra bất kỳ vấn đề nghiêm trọng nào.

Tuy nhiên, nếu bạn đang sử dụng NFS cho dữ liệu riêng tư, bạn cần quyết định cách bạn muốn bảo vệ dữ liệu đó. Bạn có thể định tuyến NFS qua SSH hoặc kết nối VPN để tạo trải nghiệm an toàn hơn, nhưng điều này thường đi kèm với việc giảm hiệu suất đáng kể. Nếu hiệu suất là một vấn đề, hãy xem xét SSHFS . Nó hơi chậm hơn so với lưu lượng NFS không được mã hóa, nhưng thường nhanh hơn nhiều so với NFS có tunnel . Mã hóa được xác thực Kerberos cho NFS là một tùy chọn khác để khám phá.


Tags:

Các tin liên quan

Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 18.04
2018-07-05
Cách thêm không gian swap trên Ubuntu 18.04
2018-07-05
Cách cài đặt và cấu hình Nextcloud trên Ubuntu 18.04
2018-07-05
Cách cài đặt và cấu hình ownCloud trên Ubuntu 18.04
2018-07-05
Cách thiết lập firewall với UFW trên Ubuntu 18.04
2018-07-05
Triển khai các ứng dụng React với Webhooks và Slack trên Ubuntu 16.04
2018-06-20
Cách đảm bảo chất lượng mã bằng SonarQube trên Ubuntu 16.04
2018-06-14
Cách cài đặt Webmin trên Ubuntu 18.04
2018-05-17
Cách thiết lập chia sẻ Samba cho tổ chức nhỏ trên Ubuntu 16.04
2018-05-11
Cách tự động hóa triển khai Elixir-Phoenix với Distillery và edeliver trên Ubuntu 16.04
2018-05-03