Nfs là gì

Network File System (NFS) – Dịch vụ chia sẻ tài nguyên

Bạn có từng gặp phải nhu cầu trao đổi và chia sẻ dữ liệu trên môi trường máy chủ RedHat? Trong trường hợp đó, dịch vụ Network File System (NFS) sẽ giúp bạn giải quyết vấn đề này. Dịch vụ NFS cho phép chia sẻ tập tin cho nhiều người dùng trên cùng mạng và người dùng có thể thao tác như với tập tin trên ổ cứng của mình.

Hiện nay, NFS có 2 phiên bản phổ biến, đó là NFS version 2 (NFSv2) và NFS version 3 (NFSv3). Trong đó, phiên bản NFSv2 được sử dụng khá phổ biến trong thời gian qua. Phiên bản NFSv3 có thêm điểm mới là hỗ trợ đọc/ghi tập tin có kích thước thay đổi và thông báo lỗi tốt hơn. Từ phiên bản Linux 7.2 trở đi, RedHat đã hỗ trợ cả NFSv2 và NFSv3.

Cài đặt NFS server:

NFS sử dụng giao thức RPC (Remote Procedure Calls) để gửi, nhận yêu cầu giữa máy trạm và máy chủ, vì vậy dịch vụ portmap (dịch vụ quản lý yêu cầu RPC) cần phải được khởi động trước. Trên máy chủ NFS (máy dự định sẽ chia sẻ dữ liệu), bạn cần khởi động hai dịch vụ nfs và portmap bằng hai câu lệnh sau:

service nfs start
service portmap start

Để NFS hoạt động, Linux cần khởi động ít nhất ba tiến trình sau:

Portmapper: Tiến trình này không làm việc trực tiếp với dịch vụ NFS mà tham gia quản lý các yêu cầu RPC từ máy trạm gửi đến.

Mountd: Tiến trình này sẽ ánh xạ tập tin trên máy chủ tới thư mục mà máy trạm yêu cầu. Bỏ ánh xạ khi máy trạm phát ra lệnh umount.

Nfs: Là tiến trình chính, thực thi nhiệm vụ của giao thức NFS, có nhiệm vụ cung cấp cho máy trạm các tập tin hoặc thư mục được yêu cầu.

Bạn có thể kiểm tra hoạt động của các dịch vụ liên quan đến NFS bằng câu lệnh:

rpcinfo -p

Câu lệnh trên sẽ hiển thị các dịch vụ đang hoạt động và các cổng liên quan.

Cấu hình NFS Server:

Việc cấu hình dịch vụ NFS khá đơn giản. NFS sử dụng tập tin /etc/exports để lưu danh sách tập tin hệ thống được chia sẻ và tên máy tính (hoặc địa chỉ IP tương ứng) được cấp quyền sử dụng. Khi thay đổi nội dung tập tin này, bạn cần lưu ý một số điểm sau:

  • Tất cả các dòng trắng không được đọc.
  • Các ký tự đứng sau dấu # được hiểu là chú thích.
  • Nếu dòng quá dài, bạn có thể xuống dòng bằng cách sử dụng dấu backslash ().

Tập tin /etc/exports có cấu trúc như sau:

<tên_thư_mục_chia_sẻ> <tên_máy_tính_địa_chỉ_IP>(quyền_hạn)

Trong đó, các tham số được hiểu như sau:

  • Tên_thư_mục_chia_sẻ là tên thư mục cần chia sẻ cho máy trạm.
  • Tên_máy_tính_địa_chỉ_IP là tên máy được chia sẻ hoặc địa chỉ IP tương ứng. Nếu bạn dùng địa chỉ IP, có thể liệt kê nhiều máy theo địa chỉ mạng con.
  • Quyền_hạn: các máy trạm có thể có các quyền hạn sau:
    • rw: quyền đọc và viết.
    • ro: quyền chỉ đọc.
    • noaccess: cấm truy cập vào các thư mục cấp con của thư mục được chia sẻ.

Ví dụ: bạn cần chia sẻ thư mục /home/project cho các máy có địa chỉ từ 192.168.0.0 đến 192.168.0.15 với quyền đọc và ghi, thì tập tin /etc/exports sẽ được viết như sau:

/home/project 192.168.0.0/28(rw)

Lưu ý: giữa tên máy hoặc địa chỉ IP và quyền hạn thường không có dấu cách. Nếu viết lại tập tin /etc/exports như sau:

/home/project 192.168.0.0/28  (rw)  # có dấu cách.

Thì các máy từ 192.168.0.0 đến 192.168.0.15 chỉ có quyền đọc, còn các máy khác (địa chỉ IP không thuộc đoạn trên) lại có quyền đọc và ghi đầy đủ.

Khi cần chia sẻ cho nhiều máy, tên các máy (hoặc địa chỉ IP) có thể viết trên cùng một dòng nhưng cách nhau bằng khoảng trắng.

Ví dụ: Bạn muốn chia sẻ thư mục /var/www/html cho các máy tính có địa chỉ IP là 192.168.3.2, 192.168.3.5, 192.168.3.7 và home.iti.vnu có quyền đọc và ghi, bạn viết như sau:

/var/www/html      192.168.3.2(rw) 192.168.3.5(rw) 192.168.3.7(rw) home.iti.vnu(rw).

Đọc dữ liệu chia sẻ từ máy trạm

Bất kỳ thư mục chia sẻ nào trên server đều có thể đọc bằng nhiều cách khác nhau. Tất nhiên, bạn có thể đọc thủ công bằng cách sử dụng câu lệnh mount, nhưng cách này đòi hỏi người dùng phải có quyền quản trị. Nếu bạn dự định làm theo cách này, sử dụng 2 câu lệnh sau:

Câu lệnh ánh xạ dữ liệu từ server lên thư mục máy trạm:

mount <tên_máy_chủ:/tên_thư_mục_chia_sẻ>  < /tên_thư_mục_cần_ánh_xạ>

Lưu ý: trước khi chạy câu lệnh này, bạn cần kiểm tra xem thư mục cần ánh xạ đã tồn tại thực hay chưa.

Ví dụ: bạn cần ánh xạ thư mục /home/project trên máy có địa chỉ IP 192.16.3.3 lên thư mục /etc/project trên máy trạm bạn đang làm việc, thì câu lệnh là:

mount 192.16.3.3:/home/project  /etc/project

Sau khi câu lệnh này chạy, bạn có thể thực thi các thao tác trên thư mục /etc/project như trên một thư mục vật lý thông thường. Sau khi kết thúc việc đọc ghi dữ liệu hoặc tắt máy, bạn có thể bỏ ánh xạ bằng câu lệnh:

umount /mnt/project

Ngoài cách mount (ánh xạ) thủ công này, bạn có thể để hệ thống tự động ánh xạ khi khởi động bằng cách viết thêm dòng lệnh có cấu trúc sau vào tập tin /etc/fstab:

<tên_server:/đường_dẫn_đến_thư_mục_chia_sẻ> </đường_dẫn_cục_bộ> nfs

Trong đó:

  • Tên_server là tên của server có thư mục và tập tin chia sẻ đã khai báo.
  • Đường_dẫn_đến_thư_mục_chia_sẻ là đường dẫn tuyệt đối đến thư mục chia sẻ trên server.
  • Đường_dẫn_cục_bộ là đường dẫn đến thư mục bạn cần ánh xạ đến trên máy trạm.
  • NFS chỉ cho hệ điều hành biết đây là thư mục của NFS.

Ví dụ: bạn có thể ánh xạ thư mục /home/project trên máy có địa chỉ IP 192.16.3.3 lên thư mục /etc/project trên máy trạm bằng cách thêm dòng sau vào tập tin /etc/fstab:

192.16.3.3:/home/project /etc/project nfs

Với cách ánh xạ này, người dùng không nhất thiết phải có quyền quản trị. Thay vào đó, khi muốn sử dụng một thư mục NFS nào đó, họ chỉ cần sử dụng câu lệnh mount với một tham số:

mount <tên_thư_mục_NFS_cục_bộ>

Ví dụ: Để đọc các tập tin trên thư mục /home/project của máy 192.16.3.3 (đã được ánh xạ lên thư mục /etc/project của máy cục bộ), bạn có thể nhập câu lệnh sau tại máy trạm:

mount /etc/project

Tất cả các tập tin và thư mục có trên /home/project của máy 192.16.3.3 sẽ hiển thị trên thư mục /etc/project.

Khởi động, ngừng và kiểm tra hoạt động của dịch vụ NFS

Sau khi sửa đổi tập tin cấu hình /etc/exports, NFS không thể hiểu ngay sự thay đổi này. Do đó, bạn phải khởi động lại dịch vụ bằng câu lệnh:

/etc/init.d/nfs start

hoặc

service nfs restart

Ngược lại khi muốn dừng dịch vụ, bạn có thể dùng một trong hai câu lệnh sau:

/etc/init.d/nfs stop

hoặc

service nfs stop

Đôi khi bạn cũng cần kiểm tra trạng thái hoạt động của dịch vụ NFS trên server của mình để biết rằng dịch vụ này hiện đang hoạt động hay đã ngừng.

Câu lệnh:

/etc/init.d/nfs status

hoặc

service nfs status

sẽ thông báo tình trạng hoạt động hiện tại của dịch vụ. Nếu dịch vụ hoạt động tốt, bạn sẽ nhận được thông báo như sau:

rpc.mountd (pid 756) is running...
nfsd (pid 768 767 766 765 764 763 762 761) is running...
rpc.rquotad (pid 751) is running...

Số pid (Process Identification) trên máy tính của bạn có thể sẽ khác tùy thuộc vào việc hệ điều hành quản lý các tiến trình như thế nào. Vì vậy bạn không cần băn khoăn về sự khác biệt này.

Nếu đã quen với chức năng chia sẻ trên máy sử dụng hệ điều hành Windows thì giờ đây với RedHat, bạn sẽ thấy NFS rất hữu ích, đặc biệt với mạng máy tính có nhiều người cộng tác.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *