HƯỚNG DẪN Thiết lập một NFS mount trên Ubuntu 16.04

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 27/10/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    NFS, hoặc Network File System, là một giao thức hệ thống tập tin phân phối cho phép bạn gắn kết (mount) các thư mục từ xa trên máy chủ của bạn. Điều này cho phép bạn quản lý không gian lưu trữ trong một vị trí khác nhau và ghi vào không gian từ nhiều khách hàng.
    NFS cung cấp một cách tương đối nhanh chóng và dễ dàng để truy cập vào hệ thống từ xa qua mạng và hoạt động tốt trong các tình huống nơi mà các tài nguyên chia sẻ sẽ được truy cập thường xuyên.

    Trong hướng dẫn này, chúng tôi sẽ giới thiệu cách cấu hình NFS gắn kết (mount).
    Điều kiện tiên quyết

    Chúng tôi sẽ sử dụng hai máy chủ trong hướng dẫn này: một sẽ chia sẻ một phần của hệ thống tập tin của mình với các khác.
    Để làm theo hướng dẫn này, bạn sẽ cần:

    Hai máy chủ Ubuntu 16.04, mỗi máy đều có một người dùng không phải root sử dụng lệnh sudo và mạng riêng.
    Để bắt đầu, chúng tôi sẽ sử dụng 2 địa chỉ IP sau cho các giá trị máy chủ (host) và máy khách (client):
    Host: 203.0.113.0
    Client: 203.0.113.256
    Lưu ý: Bạn nên thay thế các giá trị trên bằng địa chỉ ip host và client của bạn.

    Bước 1 - Tải về và cài đặt các thành phần
    Chúng tôi 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 máy chủ.
    Trên máy chủ
    Trên máy chủ, chúng tôi sẽ cài đặt các gói nfs-kernel-server, nó cho phép chia sẻ các thư mục của chúng tôi.
    Mã:
     
    sudo apt-get update
    sudo apt-get install nfs-kernel-server
    Một khi các gói được cài đặt, chuyển sang các máy chủ client.
    Trên Client
    Trên máy chủ client, chúng tôi cài đặt một gói phần mềm được gọi là nfs-common, trong đó cung cấp chức năng NFS mà không bao gồm các thành phần máy chủ không cần thiết.
    Mã:
    sudo apt-get update
    sudo apt-get install nfs-common
    Bây giờ cả hai máy chủ có các gói cần thiết, chúng ta có thể bắt đầu cấu hình chúng.

    Bước 2 - Tạo thư mục chia sẻ trên máy chủ
    Chúng tôi sẽ tạo ra hai thư mục chia sẻ riêng biệt, với các thiết lập cấu hình khác nhau, để minh họa hai cách chính mà NFS gắn kết (mount) có thể được cấu hình liên quan đến truy cập superuser.

    Superusers có thể làm bất cứ điều gì bất cứ nơi nào trên hệ thống. Tuy nhiên, các thư mục NFS-mounted không phải là một phần của hệ thống mà nó được gắn kết, vì vậy mặc định, máy chủ NFS từ chối thực hiện các hoạt động đòi hỏi đặc quyền superuser.
    Hạn chế mặc định này có nghĩa là superusers trên máy khách (client) không thể ghi tập tin như là root, chỉ định lại quyền sở hữu, hoặc thực hiện bất kỳ nhiệm vụ nào trên NFS mount.
    Ví dụ 1: Tạo một thư mục cho mục đích chia sẻ chung (a General Purpose Mount)
    Bạn có thể sử dụng một cái gì đó như thế này để lưu trữ các tập tin được tải lên bằng cách sử dụng hệ thống quản lý nội dung hay tạo ra không gian cho người dùng dễ dàng chia sẻ các file project.
    Đầu tiên, tạo một thư mục chia sẻ được gọi là nfs
    Mã:
     sudo mkdir /var/nfs/general -p
    Vì chúng ta đang tạo ra nó với lệnh sudo, thư mục này được sở hữu bởi root trên máy chủ.
    Mã:
    ls -la /var/nfs/general
    Chúng ta hay đổi quyền sở hữu thư mục:
    Mã:
    sudo chown nobody:nogroup /var/nfs/general
    Thư mục này đã sẵn sàng để xuất (export).

    Ví dụ 2: Xuất thư mục home
    Trong ví dụ thứ hai của chúng tôi, mục đích là để làm cho các thư mục người dùng trong home được lưu trữ trên các máy chủ có sẵn trên các máy chủ client, trong khi cho phép các quản trị viên đáng tin cậy của các máy chủ client truy cập để thuận tiện quản lý người dùng.
    Để làm điều này, chúng tôi sẽ xuất thư mục /home. Kể từ khi nó đã tồn tại, chúng tôi không cần phải tạo ra nó. Chúng tôi sẽ không thay đổi quyền. Nếu chúng tôi làm việc đó, nó sẽ gây ra vấn đề.

    Bước 3 - Cấu hình Xuất NFS trên máy chủ Host
    Tiếp theo, chúng ta sẽ đi sâu vào các tập tin cấu hình NFS để thiết lập việc chia sẻ các nguồn tài nguyên.
    Mở tập tin /etc/exports trong trình soạn thảo văn bản của bạn với quyền root:
    Mã:
     sudo nano /etc/exports
    Các tập tin có comment cho thấy cấu trúc chung của mỗi dòng cấu hình. Cú pháp cơ bản là:
    Mã:
    directory_to_share client(share_option1,...,share_optionN)
    Chúng tôi sẽ cần phải tạo ra một dòng cho mỗi thư mục mà chúng tôi dự định chia sẻ. Từ ví dụ client của chúng tôi có IP là 203.0.113.256, dòng đó của chúng tôi sẽ trông giống như sau đây.

    Mã:
    /var/nfs/general 203.0.113.256(rw,sync,no_subtree_check)
    /home 203.0.113.256(rw,sync,no_root_squash,no_subtree_check) 
    Chúng tôi đang sử dụng các tùy chọn cấu hình tương tự cho cả hai thư mục với ngoại lệ của no_root_squash.
    Ý nghĩa của một số kí tự:
    • rw: Tùy chọn này cho phép máy tính client truy cập cả đọc và viết vào bộ đĩa (volume).
    • sync: Tùy chọn này bắt buộc NFS phải 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à phù hợp hơn kể từ khi trả lời phản ánh tình trạng thực tế của bộ đĩa (volume) từ xa. Tuy nhiên, nó cũng làm giảm tốc độ của hoạt động tập tin.
    • no_subtree_check: tùy chọn này ngăn cản việc kiểm tra cây con, đó là một quá trình mà host phải kiểm tra xem các tập tin thực sự vẫn có sẵn trong cây xuất cho mỗi yêu cầu.
    • no_root_squash: Theo mặc định, NFS chuyển yêu cầu từ người dùng root từ xa vào một người dùng không có đặc quyền trên máy chủ. Điều này đã được dự định như là tính năng bảo mật để ngăn chặn một tài khoản root trên máy khách (client) sử dụng hệ thống tập tin của máy chủ như là root.
    Khi bạn thực hiện xong các thay đổi của bạn, lưu và đóng file. Sau đó, khởi động lại máy chủ NFS với các lệnh sau đây:
    Mã:
    sudo systemctl restart nfs-kernel-server 
    Bước 4 - Điều chỉnh Firewall trên máy chủ
    Trước tiên, hãy kiểm tra tình trạng tường lửa để xem những gì hiện đang được cho phép:
    Mã:
     sudo ufw status
    Mã:
    Output
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    
    Trên hệ thống của chúng tôi, chỉ có lưu lượng SSH đã được cho phép, vì vậy chúng tôi sẽ cần phải thêm một quy tắc cho lưu lượng NFS.
    Với nhiều ứng dụng, bạn có thể sử dụng danh sách ứng dụng sudo ufw và cho phép chúng theo tên, nhưng nfs không phải là một trong số đó. Bởi vì ufw cũng kiểm tra /etc/services cho các cổng và giao thức của một dịch vụ, chúng tôi vẫn có thể thêm NFS theo tên. Cách làm như sau:

    Sử dụng lệnh sau để mở cổng 2049 trên máy chủ:
    Mã:
     sudo ufw allow from 203.0.113.0 to any port nfs
    Bạn có thể xác minh thay đổi bằng cách dùng lệnh:
    Mã:
    sudo ufw status 
    Bạn sẽ thấy lưu lượng cho phép từ cổng 2049 ở đầu ra:
    Mã:
    Output
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere                 
    2049                       ALLOW       203.0.113.256       
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    
    Điều này khẳng định rằng UFW sẽ chỉ cho phép lưu lượng NFS trên cổng 2049 từ máy client của chúng tôi.

    Bước 5 - Tạo điểm núi trên Client
    Bây giờ các máy chủ lưu trữ được cấu hình và phục vụ shares, chúng tôi sẽ chuẩn bị client.
    Để làm cho các shares từ xa có sẵn trên máy khách, chúng tôi cần phải gắn kết (mount) các thư mục host trên một thư mục client trống.
    Lưu ý: Nếu có những tập tin và thư mục trong điểm gắn kết (mount) của bạn, ngay sau khi bạn gắn kết (mount) chia sẻ NFS, chúng sẽ được ẩn. Hãy chắc chắn rằng bạn gắn kết trong một thư mục đã tồn tại, thư mục này phải rỗng.
    Chúng tôi sẽ tạo hai thư mục để gắn kết của chúng tôi:
    Mã:
    sudo mkdir -p /nfs/general
    sudo mkdir -p /nfs/home 
    Bước 6 - Gắn kết các thư mục trên Client
    Bây giờ chúng ta có một số nơi để đưa các shares từ xa và chúng tôi đã mở tường lửa, chúng ta có thể gắn kết các shares bằng cách giải quyết máy chủ lưu trữ của chúng tôi, mà trong hướng dẫn này là 203.0.113.0, như thế này:
    Mã:
    sudo mount 203.0.113.0:/var/nfs/general /nfs/general
    sudo mount 203.0.113.0:/home /nfs/home
    
    Những lệnh này sẽ gắn kết các shares từ các máy chủ trên máy client. Bạn có thể kiểm tra rằng chúng gắn kết thành công trong một số cách. Dùng lệnh sau:
    Mã:
    df -h
    Mã:
    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 shares chúng tôi gắn kết xuất hiện ở phía dưới. Bởi vì chúng đã được gắn kết từ cùng hệ thống tập tin, chúng cho thấy việc sử dụng cùng một đĩa. Để xem có bao nhiêu không gian thật sự đang được sử dụng theo từng điểm gắn kết, sử dụng lệnh sau:
    Mã:
     du -sh /nfs/home
    Mã:
    Output
    36K /nfs/home
    
    Điều này cho chúng ta thấy rằng nội dung của toàn bộ thư mục home chỉ sử dụng 36K của không gian có sẵn.

    Bước 7 - Kiểm tra NFS truy cập
    Tiếp theo, hãy kiểm tra quyền truy cập vào các shares bằng cách viết một cái gì đó cho từng người.
    Ví dụ 1: Mục đích chia sẻ chung (The General Purpose Share)

    Đầu tiên, hãy viết một tập tin thử nghiệm tới /var/nfs/general share.
    Mã:
    sudo touch /nfs/general/general.test 
    Mã:
     ls -l /nfs/general/general.test
    Mã:
    Output
    -rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test
    
    Bởi vì chúng tôi gắn kết bộ đĩa (volume) này không làm thay đổi hoạt động mặc định NFS và tạo ra các tập tin với người dùng root máy client thông qua lệnh sudo, quyền sở hữu của các tập tin mặc định đến nobody:nogroup.

    Superusers client sẽ không thể thực hiện hành động quản trị điển hình, như thay đổi chủ sở hữu của một tập tin hoặc tạo ra một thư mục mới cho một nhóm người dùng, trên chia sẻ NFS-mounted này.

    Ví dụ 2: thư mục chia sẻ Home
    Để so sánh các điều khoản của mục đích chia sẻ chung với các phần Home Directory, tạo một tập tin Home Directory cùng một cách:
    Mã:
     sudo touch /nfs/home/home.test
    Sau đó nhìn vào quyền sở hữu của tập tin:
    Mã:
     ls -l /nfs/home/home.test
    Mã:
    Output
    -rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test
    
    Chúng tôi tạo ra home.test như root thông qua lệnh sudo, chính xác cách mà chúng tôi tạo ra các tập tin general.test. Tuy nhiên, trong trường hợp này nó được sở hữu bởi root bởi vì chúng ta huỷ bỏ hoạt động mặc định khi chúng tôi xác định các tùy chọn no_root_squash trên gắn kết (mount) này.
    Điều này cho phép người sử dụng root của chúng tôi trên máy client hoạt động như root và làm cho việc quản lý các tài khoản người dùng thuận tiện hơn nhiều.

    Bước 8 - Gắn kết thư mục NFS từ xa lúc khởi động
    Chúng tôi có thể gắn kết các shares NFS từ xa tự động lúc khởi động bằng cách thêm chúng vào tập tin /etc/fstab trên máy khách.
    Mở file này với quyền root trong trình soạn thảo văn bản của bạn:
    Mã:
     sudo nano /etc/fstab 
    Mã:
    . . .
    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
    
    Các máy chủ client sẽ tự động gắn kết (mount) các phân vùng từ xa lúc khởi động, mặc dù nó có thể mất một vài phút để kết nối được thực hiện và các shares có sẵn.

    Bước 9 - Unmounting một Share NFS từ xa
    Nếu bạn không còn muốn các thư mục từ xa để được gắn kết vào hệ thống của bạn, bạn có thể gỡ bỏ nó bằng cách di chuyển ra khỏi cấu trúc thư mục của phần và unmounting, như thế này:

    Mã:
    cd ~
    sudo umount /nfs/home
    sudo umount /nfs/general
    
    
    Kiểm tra dùng lênh:
    Mã:
     df -h 
    Mã:
    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 cản chúng được remounted trong lần khởi động tiếp theo, chỉnh sửa /etc/fstab và xóa các dòng hoặc comment nó bằng cách đặt một biểu tượng # ở đầu dòng
     

Chia sẻ trang này

Đang tải...