文件服務器——NFS
一 常見文件服務器
NFS:局域網共享數據(Linux Unix之間)
NFS是Network File System的簡寫,即網絡文件系統.
網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱為NFS. NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。
Samba:不同的平台之間
Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。
SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
FTP:互聯網中使用,安全
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。
二 NFS相關知識
組成
NFS至少有兩個主要部分:一台服務器和一台(或者更多)客戶機。客戶機遠程訪問存放在服務器上的數據。為了正常工作,一些進程需要被配置並運行。
應用
NFS 有很多實際應用。下面是比較常見的一些:
1.多個機器共享一台CDROM或者其他設備。這對於在多台機器中安裝軟件來說更加便宜跟方便。
2.在大型網絡中,配置一台中心 NFS 服務器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網絡以便用戶不管在哪台工作站上登錄,總能得到相同的home目錄。
3.幾台機器可以有通用的/usr/ports/distfiles 目錄。這樣的話,當您需要在幾台機器上安裝port時,您可以無需在每台設備上下載而快速訪問源碼。
三 NFS簡單應用
[sql]
--第一步,安裝軟件
[root@serv01 ~]# yum install nfs* -y
--第二步,修改配置文件
[root@serv01 ~]# vim /etc/exports
[root@serv01 ~]# cat /etc/exports
/share *(ro)
#共享目錄 共享IP地址或者網段 共享參數
[root@serv01 ~]# mkdir /share
--第三步,重啟服務
[root@serv01 ~]# /etc/init.d/rpcbind restart
Stopping rpcbind: [ OK ]
Starting rpcbind: [ OK ]
[root@serv01 ~]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@serv01 ~]# exportfs -v
/share <world>(ro,wdelay,root_squash,no_subtree_check)
--第四步,serv02掛載
#serv02
[root@serv02 ~]# mount192.168.1.11:/share /mnt
mount: wrong fs type, bad option, badsuperblock on 192.168.1.11:/share,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
#出現這個錯誤,安裝nfs相關的包
[root@serv02 ~]# yum install nfs* -y
[root@serv02 ~]# mount 192.168.1.11:/share/mnt
[root@serv02 ~]# cd /mnt
[root@serv02 /]# umount /mnt
[root@serv02 /]# mkdir /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.7G 1.1G 8.1G 12% /
tmpfs 188M 0 188M 0% /dev/shm
/dev/sda1 194M 25M 160M 14% /boot
/dev/sda5 4.0G 137M 3.7G 4% /opt
/dev/sr0 3.4G 3.4G 0 100% /iso
192.168.1.11:/share 9.7G 1.1G 8.1G 12% /data
--第五步,拷貝文件
#serv01
[root@serv01 share]# cp /boot/* . -rvf
[root@serv02 /]# cd /data
[root@serv02 data]# ll
total 18592
-rw-r--r--. 1 4294967294 4294967294 100182 Aug 12 21:45config-2.6.32-131.0.15.el6.x86_64
drwxr-xr-x. 3 4294967294 4294967294 4096Aug 12 21:45 efi
drwxr-xr-x. 2 4294967294 4294967294 4096 Aug 12 21:45 grub
-rw-r--r--. 1 4294967294 4294967294 12587318Aug 12 21:45 initramfs-2.6.32-131.0.15.el6.x86_64.img
drwx------. 2 4294967294 4294967294 4096 Aug 12 21:45 lost+found
-rw-r--r--. 1 4294967294 4294967294 165812 Aug 12 21:45symvers-2.6.32-131.0.15.el6.x86_64.gz
-rw-r--r--. 1 4294967294 4294967294 2278446 Aug 12 21:45System.map-2.6.32-131.0.15.el6.x86_64
-rwxr-xr-x. 1 4294967294 4294967294 3881120 Aug 12 21:45 vmlinuz-2.6.32-131.0.15.el6.x86_64
[root@serv02 data]# cpvmlinuz-2.6.32-131.0.15.el6.x86_64 /root -rvf
`vmlinuz-2.6.32-131.0.15.el6.x86_64' ->`/root/vmlinuz-2.6.32-131.0.15.el6.x86_64'
#不能創建文件,修改配置文件
[root@serv02 data]# touch aa01.txt
touch: cannot touch `aa01.txt': Read-onlyfile system
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share *(rw)
#重啟服務
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
#沒有權限解決
[root@serv02 data]# touch aa01.txt
touch: cannot touch `aa01.txt': Permissiondenied
[root@serv01 share]# ls -l /share/ -d
drwxr-xr-x. 5 root root 4096 Aug 12 21:45/share/
[root@serv01 share]# chmod 777 /share
[root@serv01 share]# ls -l /share/ -d
drwxrwxrwx. 5 root root 4096 Aug 12 21:45/share/
[root@serv02 data]# touch aa01.txt
[root@serv02 data]# ll aa01.txt
-rw-r--r—. 1 4294967294 4294967294 0 Aug 1221:50 aa01.txt
#mount過去後不再是root用戶
[root@serv01 share]# ll aa01.txtconfig-2.6.32-131.0.15.el6.x86_64
-rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 12 21:50 aa01.txt
-rw-r--r—. 1 root root 100182 Aug 12 21:45 config-2.6.32-131.0.15.el6.x86_64
#普通用戶默認不切換身份
#添加用戶
[root@serv02 data]# useradd zhink
#切換到普通用戶
[root@serv02 data]# su - zhink
[zhink@serv02 ~]$ cd /data
#創建文件
[zhink@serv02 data]$ touch aa02.txt
[zhink@serv02 data]$ ll aa02.txt
-rw-rw-r—. 1 4294967294 4294967294 0 Aug 1221:57 aa02.txt
#共享目錄裡查看文件權限
[root@serv01 share]# useradd zhink
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 zhink zhink 0 Aug 12 21:57aa02.txt
#serv02刪除用戶,發現用戶變成編號了
[root@serv01 share]# userdel zhink -rf
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 500 500 0 Aug 12 21:57 aa02.txt
#添加新用戶,發現文件的擁有者和組又變成新添加的用戶,也就是沒法區分
[root@serv01 share]# useradd larry
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 larry larry 0 Aug 12 21:57aa02.txt
[root@serv02 ~]# cd /data
[root@serv02 data]# touch aa03.txt
[zhink@serv02 data]$ su -
Password:
[root@serv02 ~]# userdel -rf zhink
[root@serv01 share]# ll aa03.txt
-rw-r--r—. 1 nfsnobody nfsnobody 0 Aug 1222:00 aa03.txt
#root用戶不轉換
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share *(rw,no_root_squash)
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
#重新掛載
[root@serv02 data]# cd /
[root@serv02 data]# umount /data
[root@serv02 data]# mount 192.168.1.11:/share/data
#創建文件
[root@serv02 data]# touch aa04.txt
#查看文件屬性,發現變化成root用戶
[root@serv01 share]# ll aa04.txt
-rw-r--r--. 1 root root 0 Aug 12 22:03 aa04.txt
#查看幫助文件
[root@serv01 share]# man exports
#遠程接口調用,NFS借助此服務
[root@serv01 share]# /etc/init.d/rpcbindrestart
#映射成其他用戶
[root@serv01 share]# useradd linux
[root@serv01 share]# id linux
uid=501(linux) gid=501(linux)groups=501(linux)
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share*(rw,all_squash,anonuid=501,anongid=501)
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# cd /data
[root@serv02 data]# ll
[root@serv01 share]# ll aa05.txt
-rw-r--r--. 1 linux linux 0 Aug 12 22:14aa05.txt
[root@serv02 data]# useradd larry
[root@serv02 data]# su - larry
[larry@serv02 ~]$ cd /data
[larry@serv02 data]$ touch aa06.txt
[root@serv01 share]# ll aa06.txt
-rw-rw-r--. 1 linux linux 0 Aug 12 22:15aa06.txt
四 NFS——指定某一個IP地址訪問
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share192.168.1.12(rw,all_squash,anonuid=501,anongid=501)
--第二步,重啟服務
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,測試
[root@serv02 data]# cd /
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# cd /data
五 NFS——指定網段訪問
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share 192.168.1.0/255.255.255.0(rw,all_squash,anonuid=501,anongid=501)
#/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)
--第二步,重啟服務
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,測試
[root@serv02 data]# cd /
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
六 NFS——指定多個網段訪問
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share 192.168.1.0/255.255.255.0(rw,all_squash,anonuid=501,anongid=501)172.16.1.0/255.255.255.0(rw)
#/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)
--第二步,重啟服務
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,測試
#真實機掛載
[root@larrywen 0812]# mount192.168.1.11:/share /mnt
[root@larrywen 0812]# mount |grep share
192.168.1.11:/share on /mnt type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.1)
#serv01添加網卡,真實機使用其他網段掛載
[root@serv01 share]# ifconfig eth1 172.16.1.11netmask 255.255.255.0
[root@larrywen 0812]# umount /mnt
[root@larrywen 0812]# mount172.16.1.11:/share /mnt
#永久掛載
[root@serv02~]# tail -n1 /etc/fstab
192.168.1.11:/share /data nfs defaults 00
#讀取fstab文件
[root@serv02 ~]# mount -a
[root@serv02 ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts(rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /opt type ext4 (rw)
none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)
/dev/sr0 on /iso type iso9660 (ro)
192.168.1.11:/share on /data type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.12)
#查看有哪些用戶掛載到本機?
[root@serv01 ~]# netstat -langput | grep nfs
[root@serv01 ~]# ps -ef|grep nfs
root 1246 2 0 22:29 ? 00:00:00 [nfsiod]
root 1323 2 0 22:35 ? 00:00:00 [nfsd4]
root 1324 2 0 22:35 ? 00:00:00 [nfsd4_callbacks]
root 1325 2 0 22:35 ? 00:00:00 [nfsd]
root 1326 2 0 22:35 ? 00:00:00 [nfsd]
root 1327 2 0 22:35 ? 00:00:00 [nfsd]
root 1328 2 0 22:35 ? 00:00:00 [nfsd]
root 1329 2 0 22:35 ? 00:00:00 [nfsd]
root 1330 2 0 22:35 ? 00:00:00 [nfsd]
root 1331 2 0 22:35 ? 00:00:00 [nfsd]
root 1332 2 0 22:35 ? 00:00:00 [nfsd]
root 1360 1219 0 22:36 pts/0 00:00:00 grep nfs
[root@serv01 ~]# ps -aux|grep nfs
Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ
root 1246 0.0 0.0 0 0 ? S 22:29 0:00 [nfsiod]
root 1323 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd4]
root 1324 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd4_callbacks]
root 1325 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1326 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1327 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1328 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1329 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1330 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1331 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1332 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1362 0.0 0.2 103228 868 pts/0 S+ 22:36 0:00 grep nfs
[root@serv01 ~]# netstat -langput | grep192.168.1.12
tcp 0 0 192.168.1.11:2049 192.168.1.12:906 ESTABLISHED -