• Thứ Sáu, 09/01/2004 14:14 (GMT+7)

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

    Khi nhu cầu trao đổi, chia sẻ (sharing) dữ liệu phát sinh trên môi trường máy chủ RedHat, bạn có thể sử dụng dịch vụ Network File System (NFS) để giải quyết.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 chính đĩa cứng của mình.

    Hiện nay tồn tại 2 phiên bản: 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, thông báo lỗi tốt hơn. Từ phiên bản Linux 7.2 trở đi, RedHat lập trình hỗ trợ cả NFSv2 và NFSv3.

     

    1. Cài đặt nfs server:

    NFS sử dụng thủ tục RPC (Remote Procedure Calls) để gửi, nhận yêu cầu giữa máy trạm và máy chủ nên 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) khởi động hai dịch vụ nfs và portmap bằng hai câu lệnh sau:

    [root@tienna root]# service nfs start

    [root@tienna root]# 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

    [root@tienna root]# rpcinfo -p

    program  vers  proto   port

    100000    2   tcp    111  portmapper

    100000    2   udp    111  portmapper

    100003    2   udp   2049  nfs

    100003    3   udp   2049  nfs

    100005    2   udp   1027  mountd

    100005    2   tcp   1067  mountd

    100005    3   udp   1027  mountd

    100005    3   tcp   1067  mountd

     

    2. 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 quan tâm một số điểm sau:

    • Tất cả các dòng trắng đều 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 báo xuống dòng (\).

    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_hoặc_đị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_hoặc_đị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 thì 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 quyền đọc viết  thì tập tin /etc/exports viết là:

    /home/project 192.168.0.0/28(rw)

     

    Lưu ý: giữa tên máy hoặc địa chỉ IP với quyền hạn thường không có dấu cách. Nếu bạn 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 dải trên) lại có quyền đọc và ghi đầy đủ.

    Khi cần chia sẻ cho nhiều máy thì 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, ghi là:

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

     

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

    Bất cứ 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, các thư mục này 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 sử dụng phải có quyền quản trị. Nếu bạn dự định làm theo cách này thì sử dụng 2 câu lệnh dưới đây:

    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 như 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ạn đang làm việc 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 dưới đây 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.

     

    4. Khởi động, ngừng và kiểm tra hoạt động của dịch cụ 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ịch vụ ngừng hoạt động, bạn có thể dùng một trong hai câu lệnh dưới đây:

    /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ụ. Cũng như các dịch vụ khác, nếu dịch vụ hoạt động tốt thì 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 tuỳ 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.

     

    Nguyễn Anh Tiến

    tienna@vnu.edu.vn

    E3- 144 Xuân Thuỷ - Cầu Giấy – Hà nội

    ID: A0212_102