admindownload
03/11/2018
Share
Nfs là gì – 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.
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
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).
Đọ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.
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.