文件服务器—NFS

一 常见文件服务器

 

NFS:局域网共享数据(Linux Unix之间)

NFSNetwork File System的简写,即网络文件系统.

网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

 

Samba:不同的平台之间

Samba是在LinuxUNIX系统上实现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]  view plain  copy
  1.  --第一步,安装软件  
  2. [root@serv01 ~]# yum install nfs* -y  
  3. --第二步,修改配置文件  
  4. [root@serv01 ~]# vim /etc/exports  
  5. [root@serv01 ~]# cat /etc/exports  
  6. /share *(ro)  
  7. #共享目录 共享IP地址或者网段 共享参数  
  8. [root@serv01 ~]# mkdir /share  
  9. --第三步,重启服务  
  10. [root@serv01 ~]# /etc/init.d/rpcbind restart  
  11. Stopping rpcbind:                                         [  OK  ]  
  12. Starting rpcbind:                                         [  OK  ]  
  13. [root@serv01 ~]# /etc/init.d/nfs restart  
  14. Shutting down NFS mountd:                                  [  OK  ]  
  15. Shutting down NFS daemon:                                  [  OK  ]  
  16. Shutting down NFS services:                                [  OK  ]  
  17. Starting NFS services:                                     [  OK  ]  
  18. Starting NFS daemon:                                       [  OK  ]  
  19. Starting NFS mountd:                                       [  OK  ]  
  20. [root@serv01 ~]# exportfs -v  
  21. /share         <world>(ro,wdelay,root_squash,no_subtree_check)  
  22.         
  23.  --第四步,serv02挂载  
  24.  #serv02  
  25. [root@serv02 ~]# mount192.168.1.11:/share /mnt  
  26. mount: wrong fs type, bad option, badsuperblock on 192.168.1.11:/share,  
  27.       missing codepage or helper program, or other error  
  28.       (for several filesystems (e.g. nfs, cifs) you might  
  29.       need a /sbin/mount.<type> helper program)  
  30.       In some cases useful info is found in syslog - try  
  31.       dmesg | tail  or so  
  32. #出现这个错误,安装nfs相关的包  
  33. [root@serv02 ~]# yum install nfs* -y  
  34.    
  35. [root@serv02 ~]# mount 192.168.1.11:/share/mnt  
  36. [root@serv02 ~]# cd /mnt  
  37.    
  38. [root@serv02 /]# umount /mnt  
  39. [root@serv02 /]# mkdir /data  
  40. [root@serv02 /]# mount 192.168.1.11:/share/data  
  41. [root@serv02 /]# df -h  
  42. Filesystem            Size  Used Avail Use% Mounted on  
  43. /dev/sda2             9.7G  1.1G 8.1G  12% /  
  44. tmpfs                 188M     0 188M   0% /dev/shm  
  45. /dev/sda1             194M   25M 160M  14% /boot  
  46. /dev/sda5             4.0G  137M 3.7G   4% /opt  
  47. /dev/sr0              3.4G  3.4G    0 100% /iso  
  48. 192.168.1.11:/share   9.7G 1.1G  8.1G  12% /data  
  49.    
  50. --第五步,拷贝文件  
  51. #serv01  
  52. [root@serv01 share]# cp /boot/* . -rvf  
  53.    
  54. [root@serv02 /]# cd /data  
  55. [root@serv02 data]# ll  
  56. total 18592  
  57. -rw-r--r--. 1 4294967294 4294967294   100182 Aug 12 21:45config-2.6.32-131.0.15.el6.x86_64  
  58. drwxr-xr-x. 3 4294967294 4294967294     4096Aug 12 21:45 efi  
  59. drwxr-xr-x. 2 4294967294 4294967294     4096 Aug 12 21:45 grub  
  60. -rw-r--r--. 1 4294967294 4294967294 12587318Aug 12 21:45 initramfs-2.6.32-131.0.15.el6.x86_64.img  
  61. drwx------. 2 4294967294 4294967294     4096 Aug 12 21:45 lost+found  
  62. -rw-r--r--. 1 4294967294 4294967294   165812 Aug 12 21:45symvers-2.6.32-131.0.15.el6.x86_64.gz  
  63. -rw-r--r--. 1 4294967294 4294967294  2278446 Aug 12 21:45System.map-2.6.32-131.0.15.el6.x86_64  
  64. -rwxr-xr-x. 1 4294967294 4294967294  3881120 Aug 12 21:45 vmlinuz-2.6.32-131.0.15.el6.x86_64  
  65. [root@serv02 data]# cpvmlinuz-2.6.32-131.0.15.el6.x86_64 /root -rvf  
  66. `vmlinuz-2.6.32-131.0.15.el6.x86_64' ->`/root/vmlinuz-2.6.32-131.0.15.el6.x86_64'  
  67. #不能创建文件,修改配置文件  
  68. [root@serv02 data]# touch aa01.txt  
  69. touch: cannot touch `aa01.txt': Read-onlyfile system  
  70.         
  71. [root@serv01 share]# vim /etc/exports  
  72.        [root@serv01 share]# cat /etc/exports  
  73. /share *(rw)  
  74. #重启服务  
  75. [root@serv01 share]# /etc/init.d/nfs restart  
  76. Shutting down NFS mountd:                                  [  OK  ]  
  77. Shutting down NFS daemon:                                  [  OK  ]  
  78. Shutting down NFS services:                                [  OK  ]  
  79. Starting NFS services:                                     [  OK  ]  
  80. Starting NFS daemon:                                       [  OK  ]  
  81. Starting NFS mountd:                                       [  OK  ]  
  82.    
  83. #没有权限解决  
  84.        [root@serv02 data]# touch aa01.txt  
  85. touch: cannot touch `aa01.txt': Permissiondenied  
  86. [root@serv01 share]# ls -l /share/ -d  
  87. drwxr-xr-x. 5 root root 4096 Aug 12 21:45/share/  
  88. [root@serv01 share]# chmod 777 /share  
  89. [root@serv01 share]# ls -l /share/ -d  
  90. drwxrwxrwx. 5 root root 4096 Aug 12 21:45/share/  
  91. [root@serv02 data]# touch aa01.txt  
  92. [root@serv02 data]# ll aa01.txt  
  93. -rw-r--r—. 1 4294967294 4294967294 0 Aug 1221:50 aa01.txt  
  94.        #mount过去后不再是root用户  
  95. [root@serv01 share]# ll aa01.txtconfig-2.6.32-131.0.15.el6.x86_64  
  96. -rw-r--r--. 1 nfsnobody nfsnobody      0 Aug 12 21:50 aa01.txt  
  97. -rw-r--r—. 1 root      root     100182 Aug 12 21:45 config-2.6.32-131.0.15.el6.x86_64  
  98.    
  99. #普通用户默认不切换身份  
  100. #添加用户  
  101. [root@serv02 data]# useradd zhink  
  102. #切换到普通用户  
  103. [root@serv02 data]# su - zhink  
  104. [zhink@serv02 ~]$ cd /data  
  105. #创建文件  
  106. [zhink@serv02 data]$ touch aa02.txt  
  107. [zhink@serv02 data]$ ll aa02.txt  
  108. -rw-rw-r—. 1 4294967294 4294967294 0 Aug 1221:57 aa02.txt  
  109. #共享目录里查看文件权限  
  110. [root@serv01 share]# useradd zhink  
  111. [root@serv01 share]# ll aa02.txt  
  112. -rw-rw-r—. 1 zhink zhink 0 Aug 12 21:57aa02.txt  
  113. #serv02删除用户,发现用户变成编号了  
  114. [root@serv01 share]# userdel zhink -rf  
  115. [root@serv01 share]# ll aa02.txt  
  116. -rw-rw-r—. 1 500 500 0 Aug 12 21:57 aa02.txt  
  117. #添加新用户,发现文件的拥有者和组又变成新添加的用户,也就是没法区分  
  118. [root@serv01 share]# useradd larry  
  119. [root@serv01 share]# ll aa02.txt  
  120. -rw-rw-r—. 1 larry larry 0 Aug 12 21:57aa02.txt  
  121. [root@serv02 ~]# cd /data  
  122. [root@serv02 data]# touch aa03.txt  
  123. [zhink@serv02 data]$ su -  
  124. Password:  
  125. [root@serv02 ~]# userdel -rf zhink  
  126. [root@serv01 share]# ll aa03.txt  
  127. -rw-r--r—. 1 nfsnobody nfsnobody 0 Aug 1222:00 aa03.txt  
  128.    
  129. #root用户不转换  
  130. [root@serv01 share]# vim /etc/exports  
  131. [root@serv01 share]# cat /etc/exports  
  132. /share *(rw,no_root_squash)  
  133. [root@serv01 share]# /etc/init.d/nfs restart  
  134. Shutting down NFS mountd:                                  [  OK  ]  
  135. Shutting down NFS daemon:                                  [  OK  ]  
  136. Shutting down NFS services:                                [  OK  ]  
  137. Starting NFS services:                                     [  OK  ]  
  138. Starting NFS daemon:                                       [  OK  ]  
  139. Starting NFS mountd:                                       [  OK  ]  
  140. #重新挂载  
  141. [root@serv02 data]# cd /  
  142. [root@serv02 data]# umount /data  
  143. [root@serv02 data]# mount 192.168.1.11:/share/data  
  144. #创建文件  
  145. [root@serv02 data]# touch aa04.txt  
  146. #查看文件属性,发现变化成root用户  
  147. [root@serv01 share]# ll aa04.txt  
  148. -rw-r--r--. 1 root root 0 Aug 12 22:03 aa04.txt  
  149.    
  150.    
  151. #查看帮助文件  
  152. [root@serv01 share]# man exports  
  153.    
  154. #远程接口调用,NFS借助此服务  
  155. [root@serv01 share]# /etc/init.d/rpcbindrestart  
  156.    
  157. #映射成其他用户  
  158. [root@serv01 share]# useradd linux  
  159. [root@serv01 share]# id linux  
  160. uid=501(linux) gid=501(linux)groups=501(linux)  
  161. [root@serv01 share]# vim /etc/exports  
  162. [root@serv01 share]# cat /etc/exports  
  163. /share*(rw,all_squash,anonuid=501,anongid=501)  
  164. [root@serv01 share]# /etc/init.d/nfs restart  
  165. Shutting down NFS mountd:                                  [  OK  ]  
  166. Shutting down NFS daemon:                                  [  OK  ]  
  167. Starting NFS services:                                     [  OK  ]  
  168. Starting NFS daemon:                                       [  OK  ]  
  169. Starting NFS mountd:                                       [  OK  ]  
  170. [root@serv02 /]# umount /data  
  171. [root@serv02 /]# mount 192.168.1.11:/share/data  
  172. [root@serv02 /]# cd /data  
  173. [root@serv02 data]# ll  
  174. [root@serv01 share]# ll aa05.txt  
  175. -rw-r--r--. 1 linux linux 0 Aug 12 22:14aa05.txt  
  176.    
  177. [root@serv02 data]# useradd larry  
  178. [root@serv02 data]# su - larry  
  179. [larry@serv02 ~]$ cd /data  
  180. [larry@serv02 data]$ touch aa06.txt  
  181. [root@serv01 share]# ll aa06.txt  
  182. -rw-rw-r--. 1 linux linux 0 Aug 12 22:15aa06.txt  

四 NFS——指定某一个IP地址访问

[sql]  view plain  copy
  1. --第一步,修改配置文件  
  2. [root@serv01 share]# vim /etc/exports  
  3. [root@serv01 share]# cat /etc/exports  
  4. /share192.168.1.12(rw,all_squash,anonuid=501,anongid=501)  
  5.    
  6. --第二步,重启服务  
  7. [root@serv01 share]# /etc/init.d/nfs restart  
  8. Shutting down NFS mountd:                                  [  OK  ]  
  9. Shutting down NFS daemon:                                  [  OK  ]  
  10. Shutting down NFS services:                                [  OK  ]  
  11. Starting NFS services:                                     [  OK  ]  
  12. Starting NFS daemon:                                       [  OK  ]  
  13. Starting NFS mountd:                                       [  OK  ]  
  14.    
  15. --第三步,测试  
  16. [root@serv02 data]# cd /  
  17. [root@serv02 /]# umount /data  
  18. [root@serv02 /]# mount 192.168.1.11:/share/data  
  19. [root@serv02 /]# cd /data  


五 NFS——指定网段访问

[sql]  view plain  copy
  1.  --第一步,修改配置文件  
  2. [root@serv01 share]# vim /etc/exports  
  3. [root@serv01 share]# cat /etc/exports  
  4. /share 192.168.1.0/255.255.255.0(rw,all_squash,anonuid=501,anongid=501)  
  5. #/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)  
  6.    
  7. --第二步,重启服务  
  8. [root@serv01 share]# /etc/init.d/nfs restart  
  9. Shutting down NFS mountd:                                  [  OK  ]  
  10. Shutting down NFS daemon:                                  [  OK  ]  
  11. Shutting down NFS services:                                [  OK  ]  
  12. Starting NFS services:                                     [  OK  ]  
  13. Starting NFS daemon:                                       [  OK  ]  
  14. Starting NFS mountd:                                       [  OK  ]  
  15.    
  16. --第三步,测试  
  17. [root@serv02 data]# cd /  
  18. [root@serv02 /]# umount /data  
  19. [root@serv02 /]# mount 192.168.1.11:/share/data  

六 NFS——指定多个网段访问

[sql]  view plain  copy
  1. --第一步,修改配置文件  
  2. [root@serv01 share]# vim /etc/exports  
  3. [root@serv01 share]# cat /etc/exports  
  4. /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)  
  5. #/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)  
  6.    
  7. --第二步,重启服务  
  8. [root@serv01 share]# /etc/init.d/nfs restart  
  9. Shutting down NFS mountd:                                  [  OK  ]  
  10. Shutting down NFS daemon:                                  [  OK  ]  
  11. Shutting down NFS services:                                [  OK  ]  
  12. Starting NFS services:                                     [  OK  ]  
  13. Starting NFS daemon:                                       [ OK  ]  
  14. Starting NFS mountd:                                       [  OK  ]  
  15.    
  16. --第三步,测试  
  17. #真实机挂载  
  18. [root@larrywen 0812]# mount192.168.1.11:/share /mnt  
  19. [root@larrywen 0812]# mount |grep share  
  20. 192.168.1.11:/share on /mnt type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.1)  
  21. #serv01添加网卡,真实机使用其他网段挂载  
  22. [root@serv01 share]# ifconfig eth1 172.16.1.11netmask 255.255.255.0  
  23. [root@larrywen 0812]# umount /mnt  
  24. [root@larrywen 0812]# mount172.16.1.11:/share /mnt  
  25.    
  26. #永久挂载  
  27. [root@serv02~]# tail -n1 /etc/fstab  
  28. 192.168.1.11:/share   /data                   nfs  defaults 00  
  29. #读取fstab文件  
  30. [root@serv02 ~]# mount -a  
  31. [root@serv02 ~]# mount  
  32. /dev/sda2 on / type ext4 (rw)  
  33. proc on /proc type proc (rw)  
  34. sysfs on /sys type sysfs (rw)  
  35. devpts on /dev/pts type devpts(rw,gid=5,mode=620)  
  36. tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0")  
  37. /dev/sda1 on /boot type ext4 (rw)  
  38. /dev/sda5 on /opt type ext4 (rw)  
  39. none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)  
  40. /dev/sr0 on /iso type iso9660 (ro)  
  41. 192.168.1.11:/share on /data type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.12)  
  42.    
  43. #查看有哪些用户挂载到本机?  
  44. [root@serv01 ~]# netstat -langput | grep nfs  
  45. [root@serv01 ~]# ps -ef|grep nfs  
  46. root     1246     2  0 22:29 ?        00:00:00 [nfsiod]  
  47. root     1323     2  0 22:35 ?        00:00:00 [nfsd4]  
  48. root     1324     2  0 22:35 ?        00:00:00 [nfsd4_callbacks]  
  49. root     1325     2  0 22:35 ?        00:00:00 [nfsd]  
  50. root     1326     2  0 22:35 ?        00:00:00 [nfsd]  
  51. root     1327     2  0 22:35 ?        00:00:00 [nfsd]  
  52. root     1328     2  0 22:35 ?        00:00:00 [nfsd]  
  53. root     1329     2  0 22:35 ?        00:00:00 [nfsd]  
  54. root     1330     2  0 22:35 ?        00:00:00 [nfsd]  
  55. root     1331     2  0 22:35 ?        00:00:00 [nfsd]  
  56. root     1332     2  0 22:35 ?        00:00:00 [nfsd]  
  57. root     1360  1219  0 22:36 pts/0    00:00:00 grep nfs  
  58. [root@serv01 ~]# ps -aux|grep nfs  
  59. Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ  
  60. root     1246  0.0  0.0     0     0 ?        S   22:29   0:00 [nfsiod]  
  61. root     1323  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd4]  
  62. root     1324  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd4_callbacks]  
  63. root     1325  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  64. root     1326  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  65. root     1327  0.0  0.0      0    0 ?        S    22:35  0:00 [nfsd]  
  66. root     1328  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  67. root     1329  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  68. root     1330  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  69. root     1331  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  70. root     1332  0.0  0.0     0     0 ?        S   22:35   0:00 [nfsd]  
  71. root     1362  0.0  0.2 103228  868 pts/0    S+   22:36  0:00 grep nfs  
  72. [root@serv01 ~]# netstat -langput | grep192.168.1.12  
  73. tcp       0      0 192.168.1.11:2049           192.168.1.12:906            ESTABLISHED -  

七 参考资料

 

NFS——百度百科

Samba——百度百科

FTP——百度百科

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值