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

1. Cài đặt nfs server:

Với hệ thống NFS server, chúng ta sẽ sử dụng lệnh sau:

yum install nfs-utils nfs-utils-lib

và tạo đường dẫn khởi động cho NFS server và kích hoạt luôn dịch vụ này:

chkconfig nfs on
/etc/init.d/nfs start

Với hệ thống NFS client cũng tương tự:

yum install nfs-utils nfs-utils-lib

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:

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 họa động của các dịch vụ liên quan đến NFS bằng câu lệnh

# 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/gocit 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/gocit 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/gocit 192.168.0.0/28  (rw)

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à www.gocit.vn có quyền đọc, ghi là:

var/www/html      192.168.3.2(rw) 192.168.3.5(rw) 192.168.3.7(rw) www.gocit.vn(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/gocit trên máy có địa chỉ IP 192.16.3.3 lên thư mục /etc/gocit 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/gocit  /etc/gocit

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/gocit  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 /etc/gocit

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/gocit trên máy có địa chỉ IP 192.16.3.3 lên thư mục /etc/gocit 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/gocit /etc/gocit 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/gocit của máy 192.16.3.3 (đã được ánh xạ lên thư mục /etc/gocit 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/gocit

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

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.

5. Một số hướng dẫn thêm về NFS

Trên server, chúng ta sẽ thử thao tác trên thư mục /home và /var/nfs sẽ được truy cập từ phía client, do vậy cần thiết phải export chúng ngay trên server. Khi 1 client truy cập tới thư mục NFS chia sẻ, thông thường đó là tài khoản nobody, và thư mục /home không thuộc quyền quản lý của tài khoản nobody này, thêm 1 điểm nữa là chúng ta cần phân quyền đọc và ghi trên thư mục /home, ta cần “thông báo” với NFS rằng các kết nối truy cập sẽ được tạo ra từ tài khoản root (nếu thư mục /home có thuộc tính read-only thì bước này hoàn toàn không cần thiết). Thư mục /var/nfs không tồn tại, do vậy chúng ta phải tạo và gán các thuộc tính thích hợp cho nó. Trong bài thử nghiệm này, tài khoản người dùng và nhóm đều có ID là 99 trên cả 2 hệ thống server và client. Khi cố gắng thực hiện lệnh ghi dữ liệu đến /var/nfs từ phía NFS client, ta sẽ nhận được lỗi Permission denied, do đó hãy sử dụng lệnh chmod 777 /var/nfs để bất cứ tài khoản nào cũng có thể thực hiện thao tác ghi trên thư mục đó, và áp dụng tương tự với /var/nfs. Nhưng trên hệ thống server, chúng lại được quản lý bởi các tài khoản và nhóm nonexistant – với ID 65534:

mkdir /var/nfs
chown 65534:65534 /var/nfs
chmod 755 /var/nfs

Tiếp theo, chúng ta phải thiết lập /etc/exports tại nơi ta export các thư mục chia sẻ NFS. Khởi tạo tham số /home và /var/nfs như NFS share và tạo ra các truy cập tới /home như tài khoản root (để tìm hiểu thêm về lệnh /etc/exports, các định dạng cho phép và lựa chọn phù hợp, hãy tham khảo thêm tại đây – man 5 exports):

vi /etc/exports

/home 192.168.0.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.0.101(rw,sync,no_subtree_check)

(lựa chọn no_root_squash sẽ khiến cho /home được truy cập như tài khoản root). Mỗi khi chỉnh sửa /etc/exports chúng ta phải thực hiện lệnh:

exportfs -a

thì các thay đổi mới có hiệu quả.

Gán các thư mục NFS chia sẻ trên client:

Trên hệ thống client, hãy tạo thư mục để gán dữ liệu NFS chia sẻ, ví dụ:

mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs

sau đó áp dụng lệnh sau:

mount 192.168.0.100:/home /mnt/nfs/home
mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs

và bạn sẽ thấy trong kết quả hiển thị của lệnh:

df -h

là 2 thư mục chia sẻ vừa được gán:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G 2.2G 25G 8% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 250M 0 250M 0% /dev/shm
192.168.0.100:/home 28G 2.6G 25G 10% /mnt/nfs/home
192.168.0.100:/var/nfs
28G 2.6G 25G 10% /mnt/nfs/var/nfs

và lệnh:mount

# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.0.100)

Kiểm tra:

Trên thành phần client, bạn hãy thử tạo file thử nghiệm trên NFS chia sẻ:

touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt

Trên server:

# ls -l /home/
total 55540
-rw-r–r– 1 root root 0 Sep 16 17:30 test.txt

# ls -l /var/nfs
total 0
-rw-r–r– 1 65534 65534 0 Sep 16 17:30 test.txt

Hãy lưu ý đến thuộc tính quyền sở hữu của file test, thư mục /home NFS được gán quyền truy cập như root, do đó file /home/test.txt thuộc về tài khoản root, và tương tự, /var/nfs sẽ thuộc quyền quản lý của 65534.

Tự động ghép các thư mục NFS chia sẻ khi hệ thống khởi động:

Thay vì việc gán các thư mục chia sẻ này theo cách thủ công từ phía client, chúng ta có thể chỉnh lại file /etc/fstab để hệ thống tự động nhận dạng khi khởi động. Trên client, mở file /etc/fstab:

vi /etc/fstab

[…]
192.168.0.100:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0
192.168.0.100:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0

thay vì rw,sync,hard,intr bạn có thể sử dụng các lựa chọn khác nhau. Để tìm hiểu thêm về những lựa chọn này, hãy xem thêm tại dòng lệnh:

man nfs

Kiểm tra lại xem việc chỉnh sửa /etc/fstab có mang lại hiệu quả hay không, hãy khởi động lại hệ thống client:

reboot

Sau quá trình này, bạn sẽ thấy 2 thư mục chia sẻ NFS khi gõ lệnh:

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G  2.2G   25G   8% /
/dev/sda1              99M   13M   82M  14% /boot
tmpfs                 250M     0  250M   0% /dev/shm
192.168.0.100:/home    28G  2.6G   25G  10% /mnt/nfs/home
192.168.0.100:/var/nfs
28G  2.6G   25G  10% /mnt/nfs/var/nfs

và:

# mount

/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,sync,hard,intr,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,sync,hard,intr,addr=192.168.0.100)

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 Linux, 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.

Theo : PCWorld Việt Nam

Bài viết này nằm trong dự án  website : www.gocit.vn, forum hổ trợ forum.gocit.vn , xem thêm tại link http://www.gocit.vn/du-an-linux-toan-tap/
Thảo luận bài viết tại forum : http://forum.gocit.vn/threads/network-file-system-nfs.441/
Print Friendly

Comments

comments

Bài viết liên quan