WinSCP往NFS共享文件如何读写存储读写文件

多台NFS客户机挂载同一台NFS服务器时,每台客户机都能对共享文件进行读写操作
欲实现的功能:
实现当多台NFS客户机挂载同一台NFS服务器时,每台客户机都能对共享文件进行读写操作。
解决思路:
让所有NFS客户端写入到NFS Server的目录或文件在NFS Server上的用户和组都是同一个名称(nfs-test)。老表用一台服务器(nfs-server)和两台客户机(nfs-client001和nfs-client002)进行测试。
实施和测试:
1.创建一个NFS共享用户(nfs-test),并且所有机器的UID和GID都一样。
a.在nfs-server上:useradd -u 555 nfs-test。创建后用id nfs-test查看。
可用groupmod -g 更改gid:
b.在nfs-client上:和上边方法一样。
2.配置/etc/exports文件:vim /etc/exports
配置内容如下:
/share 192.168.1.0/24(rw,sync,all_squash,anonuid=555,anongid=555)
内容解释:
all_squash:保证所有用户都能压缩成一个用户。
anonuid=555和anongid=555:指定每个用户下都有并且存在的。
3.平滑重启nfs服务生效:/etc/init.d/nfs-kernel-server reload
注意:上边是ubuntu下的重启,在CentOS下命令为:/etc/init.d/nfs reload
启动之后用showmount -e ServerIP检查。
4.在客户端挂载:mount -t nfs 192.168.1.103:/share /mnt
在nfs-client002上挂载和上边的方式是一样的。
a.在nfs-server上查看/share目录权限:ls -ld /share
当此目录的权限为上图中所示和属主是root时测试如下:
因为在前边配置/etc/exports文件时配置内容如下:
/share 192.168.1.0/24(rw,sync,all_squash,anonuid=555,anongid=555)
解析:即/share这个共享目录可以被属主为555的所有用户使用,但是现在的/share属主为root,不是nfs-test,且nfs-test的属主为555。所以这里操作时提示为权限不够。所以需要修改nfs-test的属主。
b.修改nfs-test的属主:chown -R nfs-test.nfs-test /share/
修改后测试:
1.注意共享目录或文件的属主,要将共享目录或文件的属主修改为服务器和客户机同UID的属主才可实现功能。如何通过Windows&Server&2008&R2建立NFS存储
学习XenServer有一段时间了,最苦恼和困惑我的一个问题是如何建立NFS共享存储,今天在网上搜了一下,发现原来通过Windows
Server 2008 R2也可以建立NFS存储,MY GOD<img TYPE="face" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6692EN00SIGG.gif"
ALT="如何通过Windows&Server&2008&R2建立NFS存储"
TITLE="如何通过Windows&Server&2008&R2建立NFS存储" />,下面讲述如何操作:
& & 首先,打开服务管理器,选择添加角色;
& & 选中文件服务,下一步;
& & 出现一个提示,不管它,继续下一步;
在接下来的页面中选中“网络文件系统服务”(NFS),下一步;
& & 点击安装;
& & 系统开始安装,大约需要几分钟;
& & 安装完成,点击关闭;
& & 这样,在Windows Server 2008
R2建立了NFS服务,然后选择一个分区,新建一个文件夹,比如NFS;
在文件夹上右键,属性,可以看到属性列表多了一个NFS共享;
点击管理NFS共享,选择共享此文件夹,下面的验证默认就好;
点击“权限”,这里默认显示所有计算机都有只读权限,不允许根目录访问,不必管它,选择“添加”;
在添加名称这里输入XenServer主机的ip地址,访问类型选择“读写”,并选中“允许根目录访问”,如果不选择这个,在XenCenter中是不能新建存储的,然后“确定”
因为我的2台主机都安装了XenServer,因此这里添加了2台主机的ip地址;
接下来,回到XenCenter中,选择新建存储;
& &选择第一个NFS VHD,下一步;
& & 输入存储的名称,下一步;
& & 输入Windows Server 2008
R2的ip地址和文件夹路径,我这里是配置的192.168.0.105,因此就是:192.168.0.105:/NFS,然后点击“完成”;
& & XenCenter中就出现了新建的存储。
& & 本文完!
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。生产中NFS案例记录---写入权限解决过程
&&&&&案例记录---写入权限解决过程
1、 文件写入到NFS Server端,注意权限要与oracle端一致。
uid:500 gid
命令显示过程&&&
端挂载后无权限写入
[root@db-0415 ~]# useradd& -u 501 -g 500
#新建用户指定gid uid
[root@db-0415 tmp]# tail -1 /etc/passwd #确认新建用户是否符合要求
oracle:x:501:500::/home/oracle:/bin/bash
[root@db-0415 ~]# vim /etc/exports&&&
#编辑nfs主配置文件,读写权限,所有用户映射为指定用指定匿名用户映射的gid uid.&
&&&&&&&&&&&&&&&
/opt/tmp& 10.0.0.0/16
(rw,sync,all_squash.anonuid=501,anongid=500)
[root@db-0415 ~]# exportfs& -rv&&&
&#重新加载NFS共享配置
exportfs: No options for /opt/tmp 10.0.0.0/16: suggest
10.0.0.0/16(sync) to avoid warning
exportfs: No host name given with /opt/tmp
(rw,sync,all_squash,anonuid=501,anongid=500), suggest
*(rw,sync,all_squash,anonuid=501,anongid=500) to avoid
exporting 10.0.0.0/16:/opt/tmp
exporting *:/opt/tmp
[root@db-0415 ~]# showmount& 127.0.0.1& #本地查看NFS共享列表,报错
per failure - RPC: Unable to
[root@db-0415 ~]# /etc/init.d/portmap start& #启动portmap
Starting portmap:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[root@db-0415 ~]# /etc/init.d/nfs start&&&
&#启动nfs服务,这个时候还有报错
Starting NFS services:& exportfs: No options
for /opt/tmp 10.0.0.0/16: suggest 10.0.0.0/16(sync) to avoid
exportfs: No host name given with /opt/tmp
(rw,sync,all_squash,anonuid=501,anongid=500), suggest
*(rw,sync,all_squash,anonuid=501,anongid=500) to avoid
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Starting NFS quotas:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Starting NFS daemon:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Starting NFS mountd:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Starting RPC idmapd:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[root@db-0415 ~]# chkconfig& portmap
#配置nfs两个必须服务随机启动
[root@db-0415 ~]# chkconfig& nfs on&&&&&&
[root@db-0415 ~]# showmount -e& 127.0.0.1
#server端本地再次查看共享列表,似乎正常没有问题。
Export list for 127.0.0.1:
/opt/tmp (everyone)
二、Client 挂载测试无法写入:
[root@NFSclient1 ~]# mount -t& nfs
10.0.4.15:/opt/tmp /opt/oracle/tmp/ #挂载共享目录
[root@NFSclient1 ~]# cd
[root@NFSclient1 tmp]# touch tt&&
#测试写入报权限拒绝
touch: cannot touch `tt': Permission denied
三、开始排查NFS权限相关设置问题:
首先检查client端gid
uid 与server端对应正常。
[root@NFSclient1 tmp]# su -
-bash-3.2$ id
uid=501(oracle) gid=500(oinstall)
groups=500(oinstall)
-bash-3.2$ exit
第二、检查client本地文件系统针对目录/opt/oracle/tmp/读写权限,并使用oracle用户写入文件测试。
[root@NFSclient1 oracle]# ll
/opt/oracle/tmp/ -d& #查看tmp目录权限
drwxr-xr-x& 0 abc4ftp oinstall 0
Mar 20 16:53 /opt/oracle/tmp/
[root@NFSclient1 oracle]# su -
-bash-3.2$ cd
/opt/oracle/&&
-bash-3.2$ touch 1
-bash-3.2$ rm 1&&&&&&&&&&
&&#测试权限正常
#可是挂载以后还是报权限错误:
[root@NFSclient1 ~]#& mount -t& nfs&
10.0.4.15:/opt/tmp&
/opt/oracle/tmp/
[root@NFSclient1 ~]# cd
/opt/oracle/tmp/
[root@NFSclient1 tmp]# touch
touch: cannot touch `tt': Permission
[root@NFSclient1 tmp]# ll
drwxr-xr-x& 2 oracle oinstall
4096 Mar 20 17:35 .
[root@NFSclient1 tmp]# ls
[root@NFSclient1 tmp]# ll
-rw-r--r--& 1 oracle oinstall 0
Mar 20 17:36 tt
[root@NFSclient1 tmp]# rm
rm: remove write-protected regular
empty file `tt'? y
rm: cannot remove `tt': Permission
第三、确认NFS
Server端rw权限设置,因为一直记得设置的rw权限,总觉着这没有问题。但其他方面都没有问题,配置文件参数较多需要细心再看看。
[root@db-0415 ~]# cat
/etc/exports
/opt/tmp& 10.0.0.0/16
(rw,sync,all_squash,anonuid=501,anongid=500)
[root@db-0415 ~]# cat
/var/lib/nfs/etab &#主要记录NFS共享目录的完整权限设置值。
/opt/tmp&&&&&&&
*(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=501,anongid=500)
乍一看似乎两个文件内容没有问题,仔细对比之发现主配置文件ip段后多了一个空格“ 10.0.0.0/16 (rw
”,这个应该就是问题所在。
第四、重新编辑配置文件exports :
[root@db-0415 ~]# vim
/etc/exports
10.0.0.0(rw,sync,all_squash,anonuid=501,anongid=500)
[root@db-0415 ~]#
-rv #重新加载NFS配置,输出已无报错。
10.0.0.0:/opt/tmp
[root@db-0415 tmp]# cat
/var/lib/nfs/etab &#再次确认,与上面的区别
/opt/tmp&&&&&&&
10.0.0.0/16(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=501,anongid=500)
第五、Client再次挂载测试:
[root@NFSclient1 ~]# mount
10.0.4.15:/opt/tmp /opt/oracle/tmp/
[root@NFSclient1 ~]# cd
/opt/oracle/tmp/
[root@NFSclient1 tmp]# touch
[root@NFSclient1 tmp]# ls
[root@NFSclient1 tmp]# ll
-rwxrwxr-x& 1 oracle oinstall 5
Mar 20 18:03 test
-rw-r--r--& 1 oracle oinstall 0
Mar 21 10:16 tt
[root@NFSclient1 tmp]# rm -rf
test&&&即可
[root@NFSclient1 tmp]# rm -rf
&#权限测试符合要求,至此问题解决。但下面还有一些细节处理。&
[root@NFSclient1 tmp]# chkconfig
--list portmap #检查客户端portmap是否随机启动
portmap&&&&&&&&
[root@NFSclient1 tmp]# chkconfig
portmap on&&&
#设置随机启动
[root@NFSclient1 tmp]# chkconfig
--list portmap #确认设置正确
portmap&&&&&&&&
[root@NFSclient1 tmp]#
/opt/oracle/tmp/ #继续后面的测试,先卸载
四、设置NFS随机启动挂载:
1、编辑fstab
[root@NFSclient1 tmp]# cd /etc
[root@NFSclient1 etc]# cp fstab fstab.bak$(date
+%F)& #备份fstab文件
[root@NFSclient1 etc]# vim fstab&&&&&&&&&&&&&
#编辑fstab加入以下内容
10.0.4.15:/opt/tmp on /opt/oracle/tmp type nfs
(rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,nfsvers=3,timeo=600,actimeo=0,addr=10.0.4.15)&&
2、确认修改内容
[root@NFSclient1 etc]# diff fstab fstab.bak
& 10.0.4.15:/opt/tmp&&&&&
/opt/oracle/tmp/&&&&&&&
rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0&&&&&&&&&&&&
3、挂载测试。
[root@NFSclient1 etc]# mount -a& #从fstab文件挂载文件系统,同时也是对刚才编辑内容的检查,如果没有报错就证明一切正常。此步骤很关键,若配置有误,没及时检查发现问题,系统重启后可能无法正常进入系统。
[root@NFSclient1 etc]# mount &#再次确认挂载内容正常。
………………省略内容………………
10.0.4.15:/opt/tmp on /opt/oracle/tmp type nfs
(rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,nfsvers=3,timeo=600,actimeo=0,addr=10.0.4.15)
#再次确认权限正常
[root@NFSclient1 etc]# cd /opt/oracle/tmp/
[root@NFSclient1 tmp]# touch test
[root@NFSclient1 tmp]# ll
-rw-r--r--& 1 oracle oinstall 0
Mar 21 10:30 test
[root@NFSclient1 tmp]# rm test
rm: remove regular empty file `test'? y
方法二(推荐的方式):
避免系统无法正常启动,推荐将挂载命令写入rc.local
echo ' /bin/mount& -t nfs -o
rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0
10.0.4.15:/opt/tmp /opt/oracle/tmp'
&& /etc/rc.local
至此已经满足要求,NFS配置完毕。
问题一解决过程涉的知识点:
Server和client端的配置
1、修改NFS挂载匿名账户。
2、NFS挂载权限问题分析解决过程。
3、设置NFS开机自动挂载。
4、创建指定uid、gid用户
5、NFS服务相关命令mount、showmont、exportfs、chkconfig
6、记录NFS
server完整权限的配置文件/var/lib/nfs/etab
挂载问题二: Client端挂载后一直不动要等很久才有错误输出,原因因为没有启动portmap服务。
[root@study ~]# mount -t& nfs
10.0.4.15:/opt/tmp /mnt&
mount.nfs: Input/output error
[root@study ~]# /etc/init.d/portmap status
portmap is stopped
[root@study ~]# /etc/init.d/portmap start
Starting portmap:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[root@study ~]# mount -t& nfs
10.0.4.15:/opt/tmp /mnt
[root@study ~]# chkconfig portmap on
问题二结论:
client 必须要启用portmap服务
server 必须要先启动portmap服务然后启用nfs服务。
注意设置随机启动。
NFS权限需要注意三个条件:
1、用户账户的UID
GID及对应用户名组名。
2、NFS服务器端主配置文件/etc/exports允许读写权限。
3、文件系统需要具有读写的权限,特别说明这个权限不是以用户名组名为根据,了解文件系统的同学应该知道,这个权限是比对uid、gid。
老男孩&点评:
1、杀鸡不用牛刀,这个要注意!
[root@NFSclient1&tmp]#&rm&-rf&test
[root@NFSclient1&tmp]#&rm&-rf&tt&&
2、另外,nfs放fstab里不是很妥。
老男孩&点评!http://oldboy.blog.51cto.com&
本文出自 “Dreamway的linux博客” 博客,请务必保留此出处&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3514)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'nfs实现开发板与虚拟机linux系统间文件共享',
blogAbstract:'
为实现宿主机上交叉编译后的应用程序能方便的下载到嵌入式开发板上运行,一般通过在开发板上采用网络挂载虚拟机nfs文件系统实现,虚拟机充当nfs server,目标板充当nfs client。
实验环境:宿主机是虚拟机centos5.6,目标机是mini2440上的linux,这里我用交叉网线来连接。
一 要在虚拟机安装nfs服务器
1 需要安装下面两个文件# rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm
若没有安装包这可以:',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:1,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}linux系统之间通过nfs网络文件系统挂载设置方法
NFS允许一个系统在网络上与他人共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,下面介绍linux系统之间通过nfs网络文件系统挂载的设置方法
NFS是Network File System的简写,即网络文件系统. 网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
以下是NFS最显而易见的好处:   
1.本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。   2.用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS服务器上并且在网络上处处可用。  3.诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储设备可以在网络上面被别的机器使用。这可以减少整个网络上的可移动介质设备的数量。
Linux 服务器 192.168.190.199 服务端Linux 服务器 192.168.190.208 客户端
192.168.190.199(服务端)配置操作:
1.安装服务
检查是否看安装nfs,portmap服务
若没有安装nfs ,portmap用 yum search & 包名& 安装相应的包
2.配置/etc/exports
在 /etc/exports 文件中配置
配置参数如下
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
下面是一些NFS共享的常用参数:
ro 只读访问rw 读写访问sync 所有数据在请求时写入共享async NFS在写入数据前可以相应请求secure NFS通过1024以下的安全TCP/IP端口发送insecure NFS通过1024以上的端口发送wdelay 如果多个用户要写入NFS目录,则归组写入(默认)no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。hide 在NFS共享目录中不共享其子目录no_hide 共享NFS目录的子目录subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)no_subtree_check 和上面相对,不检查父目录权限all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。no_all_squash 保留共享文件的UID和GID(默认)root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)no_root_squas root用户具有根目录的完全管理访问权限anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UIDanongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
复制代码代码如下:
/home/share208 192.168.190.208(rw,sync) *(ro) 配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。
3. NFS服务
启动NFS服务
复制代码代码如下:
/etc/init.d/portmap start/etc/init.d/nfs start
停止NFS服务
复制代码代码如下:
/etc/init.d/nfs stop/etc/init.d/portmap stop
重新启动NFS服务
复制代码代码如下:
/etc/init.d/nfs restart/etc/init.d/portmap restart
检查portmap和nfs服务的状态
复制代码代码如下:
/etc/init.d/portmap status/etc/init.d/nfs status
设置自动启动NFS服务
对于实际应用中的Linux系统,每次开机后都手工启动nfs服务是不现实的,应该设置系统在指定的运行级别(通常为3和5)自动启动portmap和nfs服务。
复制代码代码如下:
chkconfig &level 35 portmap onchkconfig &level 35 nfs on
执行&ntsysv&命令启动服务配置程序,找到&nfs&和&portmap&服务,分别在其前面加上&*&,然后选择&确定&即可。
4.192.168.190.208(客服端) 配置客户端
在指定目录下创建文件夹挂载服务端文件夹
复制代码代码如下:
mkdir &p /home/share208mount 192.168.190.199:/home/share208 /home/share208 (挂载)
5.测试挂载
复制代码代码如下:
192.168.190.208 /home/share208 创建目录 test192.168.190.199 /home/share208 查看已经有test 目录
阅读(...) 评论()

我要回帖

更多关于 c 读写共享文件夹 的文章

 

随机推荐