Search This Blog

Sunday, June 5, 2011

Giới thiệu NFS, Lab NFS trên CentOS Linux

http://ipmac.vn/forum/showthread.php?t=3370

Giới thiệu NFS, Lab NFS trên CentOS Linux


Giới thiệu NFS
NFS (Network File System) là hệ thống cung cấp dịch vụ chia sẻ file phổ biến hiện nay trong hệ thống mạng Linux và Unix.

NFS sử dụng hệ thống mô hình Client/Server. Trên Server có các ổ đĩa cứng vật lý chứa các file system được chia sẻ và 1 số dịch vụ chạy ngầm trên hệ thống (daemon) phục vụ cho việc chia sẻ với client (gọi là quá trình export). Ngoài ra các dịch vụ chạy trên Server cũng cung cấp chức năng bảo mật file và quản lý lưu lượng sử dụng file system quota.

Các Client muốn sử dụng các file system được chia sẻ trên Server chỉ đơn giản dùng giao thức NFS mount các file system đó lên hệ thống của mình.

Hệ thống chia sẻ file NFS được sử dụng với nhiều chức năng khác nhau.
Ví dụ thay vì mỗi hệ thống Client/Server của bạn phải có một phân vùng /home/username của từng người dùng thì chỉ cần lưu trữ thư mục /home/username của từng người dùng đó lên 1 máy chủ trung tâm (NFS Server) sau đó sử dụng giao thức NFS để mount thư mục /home/username tương ứng của từng người dùng khi họ đăng nhập vào hệ thống.

Danh sách các file cấu hình, các dịch vụ, các file script và câu lệnh của NFS Server
Các file cấu hình NFS Server
/etc/exports
/var/lib/nfs/rmtab
/var/lib/nfs/xtab
/etc/host.allow
/etc/host.deny

Các dịch vụ NFS Server
rpc.portmap
rpc.mountd
rpc.nfsd
rpc.statd
rpc.lockd
rpc.rquotad

Các file script và câu lệnh
/etc/rc.d/init.d/nfs
nfstat
showmount
rpcinfo
exportfs

Nội dung file cấu hình NFS Server
Các dòng text trong file cấu hình /etc/exports có cú pháp như sau :

dir host1(options) host2(options) hostN(options) …

Trong đó :
dir : thư mục hoặc file system muốn chia sẻ.
host :
1 hoặc nhiều host được cho phép mount dir.

có thể được định nghĩa là 1 tên, 1 nhóm sử dụng ký tự ?, * hoặc 1 nhóm sử dụng 1 dải địa chỉ mạng/subnetmask...
options : định nghĩa 1 hoặc nhiều options khi mount.

Ví dụ 1 file cấu hình mẫu /etc/exports :

/usr/local *.ipmac.vn(ro)
/home 192.168.1.0/255.255.255.0(rw)
/var/tmp 192.168.1.1(rw)

Dòng thứ nhất : cho phép tất cả các host với tên miền định dạng “somehost”.ipmac.vn được mount thư mục /usr/local với quyền chỉ đọc.

Dòng thứ hai : cho phép bất kỳ host nào có địa chỉ IP thuộc subnet 192.168.1.0/24 được mount thư mục /home với quyền đọc và ghi.

Dòng thứ ba : chỉ cho phép host có địa chỉ IP là 192.168.1.1 được mount thư mục /var/tmp với quyền đọc và ghi.


Bài thực hành cài đặt và cấu hình dịch vụ NFS

Nội dung bài thực hành
Xây dựng 2 máy ảo Linux chạy hệ điều hành CentOS-5. Trong đó 1 máy làm NFS Server và 1 máy làm NFS Client kết nối theo mô hình bên dưới.

Tạo 1 thư mục /sharing trên máy NFS Server để chia sẻ file cho máy NFS Client.

Địa chỉ IP sử dụng trong bài thực hành

Máy NFS Server : 192.168.1.1/24.
Máy NFS Client : 192.168.1.2/24.

Mô hình bài thực hành

 Bước 1 : Đặt địa chỉ IP trên 2 máy ảo Linux. Tắt firewall trên 2 máy ảo Linux. Đảm bảo máy NFS Server ping được đến máy NFS Client và ngược lại
[root@NFSServer]# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
[root@NFSServer]# service iptables stop
[root@NFSClient]# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
[root@NFSClient]# service iptables stop
[root@NFSServer]# ping 192.168.1.2
[root@NFSClient]# ping 192.168.1.1
 Bước 2 : Kiểm tra xem package portmap và nfs-utils đã được cài đặt trên NFS Server hay chưa. Nếu chưa tiến hành cài đặt 2 packages này qua yum hoặc rpm
[root@NFSServer]# rpm -qa | grep -e portmap -e nfs
[root@NFSServer]# yum install portmap nfs-utils
[root@NFSServer]# rpm -qa | grep -e portmap -e nfs
nfs-utils-1.0.9-47.el5_5
nfs-utils-lib-1.0.8-7.6.el5
portmap-4.0-65.2.2.1
 Bước 3 : Cấu hình quản lý truy cập thông qua TCP Wrapper để chi cho phép các client trong subnet 192.168.1.0/24 được sử dụng dịch vụ NFS trên NFS Server
[root@NFSServer]# vi /etc/hosts.deny
portmap: ALL
[root@NFSServer]# vi /etc/hosts.allow
portmap: 192.168.1.
Bước 4 : Tạo thư mục chia sẻ /sharing trên NFS Server và copy 1 số dữ liệu vào thư mục đó
[root@NFSServer]# mkdir /sharing
[root@NFSServer]# cp /var/log/*.log /sharing
Bước 5 : Cấu hình chia sẻ thư mực /sharing trên NFS Server
[root@NFSServer]# vi /etc/exports
/sharing 192.168.1.0/24(rw,sync)
 Bước 6 : Khởi động dịch vụ portmap và nfs trên NFS Server
[root@NFSServer]# service portmap start
[root@NFSServer]# service nfs start
 Bước 7 : Trên NFS Client kiểm tra thông tin dịch vụ NFS và danh sách các thư mục được export trên NFS Server
[root@NFSClient]# rpcinfo -p 192.168.1.1
[root@NFSClient]# showmount --exports 192.168.1.1
 Bước 8 : Trên NFS Client tạo mountpoint và thực hiện việc mount thư mục chia sẻ ( sử dụng account root ). Kiểm tra quá trình mount
[root@NFSClient]# mkdir /mnt/nfs
[root@NFSClient]# mount -t nfs 192.168.1.1:/sharing /mnt/nfs
[root@NFSClient]# mount
[root@NFSClient]# ls /mnt/nfs
 Bước 9 : Trên NFS Client thử tạo 1 thư mục mới trong thư mục chia sẻ
[root@NFSClient]# cd /mnt/nfs
[root@NFSClient]# mkdir test
mkdir: cannot create directory `test': Permission denied
 Bước 10 : Trên NFS Server thay đổi thông tin về thư mục chia sẻ để cho phép user root có toàn quyền truy cập. Sau khi thay đổi, reload lại cấu hình cho nfs
[root@NFSServer]# vi /etc/exports
/sharing 192.168.1.0/24(no_root_squash,rw,sync)
[root@NFSServer]# exportfs -r
 Bước 11 : Trên NFS Client thử tạo lại thư mục mới trong thư mục chia sẻ
[root@NFSClient]# cd /mnt/nfs
[root@NFSClient]# mkdir test
[root@NFSClient]# ls
test
 Bước 12 : Trên NFS Server kiểm tra trạng thái của dịch vụ NFS
[root@NFSServer]# nfsstat
[root@NFSServer]# showmount - -all localhost
 Bước 13 ( Tùy chọn ) : Trên NFS client cấu hình file /etc/fstab để tự động mount thư mục chia sẻ mỗi khi khởi động hệ thống
[root@NFSClient]# vi /etc/fstab

192.168.1.1:/sharing /mnt/nfs nfs defaults 0 0