当前位置: 澳门新濠3559 > 服务器运维 > 正文

基于内核的文件系统,通过修改相关配置文件并

时间:2019-11-03 09:31来源:服务器运维
在SLES8/9中可以用yastnfs_serv来配置nfs服务,也可以通过修改配置文件的方式加以支持 SUSE如何配置NFS服务 通过修改相关配置文件并运行命令管理进行配置 首先编辑/etc/exports文件 # export /o

在SLES8/9中可以用yast nfs_serv来配置nfs服务,也可以通过修改配置文件的方式加以支持

SUSE 如何配置NFS服务
通过修改相关配置文件并运行命令管理进行配置
首先编辑/etc/exports文件
# export /opt to any host with option ro,async
/opt *(ro,async)
# export /media to hosts 192.168.0.0/255.255.255.0 with option ro,root_squash,sync
/media 192.168.0.0/255.255.255.0(ro,root_squash,sync)

NFS(network file system)的简称,是linux系统之间常用的一种文件共享方式,下面简述其搭建过程,需要两个linux系统的虚拟机,假设客户端的ip为192.168.1.105,服务端的ip为192.168.1.107.

#NFS介绍 ##NFS ``` Network File System 网络文件系统,基于内核的文件系统。 Sun 公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,主要是基于RPC (RemoteProcedure Call Protocol 远程过程调用)实现。 NFS服务启动时至少需要两个daemons,一个管理客户端是否能够登入的问题,一个管理客户端能够取得的权限。 ``` ##RPC ``` 采用C/S 模式。 RPC通过函数调用一部分功能由本地程序完成,另一部分功能由远程主机上的函数完成,两者共同完成资源的分享。 客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。 在服务器端,进程保持睡眠状态直到调用信息到达为止,当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 RPC最主要的功能就是在指定每个NFS功能所对应的端口号,并且将端口反馈给客户端,让客户端可以连结到正确的端口上去。 当服务器在启动NFS时会随机取用数个端口,并主动的向RPC注册,因此RPC可以知道每个端口对应的NFS功能,然后RPC又是固定使用端口111来监听客户端的需求并向客户端反馈对应的端口,因此NFS的启动必须在PRC相关服务之后,否则NFS的启动是会报错的。 ``` ##NFS 优势 ``` 节省本地存储空间,将常用的数据如:home 目录,存放在一台NFS 服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用 ``` ##NFS服务介绍 ``` 软件包:nfs-utils 相关软件包:rpcbind (必须),tcp_wrappers Kernel支持:nfs.ko 端口:2049(nfsd),其它端口由portmap(111)分配 配置文件:/etc/exports,/etc/exports.d/*.exports 日志:/var/lib/nfs/ CentOS7 不支持同一目录同时用nfs 和samba 共享,因为使用锁机制不同 CentOS6 开始portmap 进程由rpcbind 代替 NFS 服务主要进程: rpc.nfsd 最主要的NFS 进程,管理客户端是否可登录 rpc.mountd 挂载和卸载NFS 文件系统,包括权限管理 rpc.lockd 非必要,管理文件锁,避免同时写出错 rpc.statd 非必要,检查文件一致性,可修复文件 要在客户端向NFS服务器端的文件系统写入操作是,需要具有: NFS服务器有开放可写入(w)的权限(与/etc/exports设置有关) 实际的文件权限具有可写入(w)的权限 ``` #NFS配置 ##NFS的软件包nfs-utils以及相关文件 ``` rpm -ql nfs-utils(centos7) /etc/exports.d /etc/gssproxy/24-nfs-server.conf /etc/modprobe.d/lockd.conf /etc/nfs.conf /etc/nfsmount.conf /etc/request-key.d/id_resolver.conf /etc/sysconfig/nfs /sbin/mount.nfs /sbin/mount.nfs4 /sbin/osd_login /sbin/rpc.statd /sbin/umount.nfs /sbin/umount.nfs4 /usr/sbin/blkmapd /usr/sbin/exportfs /usr/sbin/mountstats /usr/sbin/nfsdcltrack /usr/sbin/nfsidmap /usr/sbin/nfsiostat /usr/sbin/nfsstat /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/rpcdebug /usr/sbin/showmount /usr/sbin/sm-notify /usr/sbin/start-statd /usr/share/doc/nfs-utils-1.3.0/ /var/lib/nfs /var/lib/nfs/etab /var/lib/nfs/rmtab /var/lib/nfs/rpc_pipefs /var/lib/nfs/statd /var/lib/nfs/statd/sm /var/lib/nfs/statd/sm.bak /var/lib/nfs/state /var/lib/nfs/v4recovery /var/lib/nfs/xtab rpm -ql nfs-utils(centos6) /etc/nfsmount.conf /etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd /etc/request-key.d/id_resolver.conf /etc/sysconfig/nfs /sbin/mount.nfs /sbin/mount.nfs4 /sbin/nfs_cache_getent /sbin/rpc.statd /sbin/umount.nfs /sbin/umount.nfs4 /usr/sbin/exportfs /usr/sbin/mountstats /usr/sbin/nfsidmap /usr/sbin/nfsiostat /usr/sbin/nfsstat /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/rpc.svcgssd /usr/sbin/rpcdebug /usr/sbin/showmount /usr/sbin/sm-notify /usr/sbin/start-statd /var/lib/nfs /var/lib/nfs/etab /var/lib/nfs/rmtab /var/lib/nfs/rpc_pipefs /var/lib/nfs/statd /var/lib/nfs/statd/sm /var/lib/nfs/statd/sm.bak /var/lib/nfs/state /var/lib/nfs/v4recovery /var/lib/nfs/xtab 端口: 2049(nfsd),其它端口由portmap(111)分配 配置文件: /etc/exports /etc/exports.d/*.exports 日志: /var/lib/nfs/ ``` ##配置防火墙 ``` 配置防火墙,开放NFS 服务 配置NFS 使用固定端口 vim /etc/sysconfig/nfs RQUOTAD_PORT=875 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 STATD_PORT=662 STATD_OUTGOING_PORT=2020 防火墙除开放上述端口,还需开放TCP 和UDP 的111 和2049共4个端口 ``` ##NFS配置文件 ``` /etc/exports导出的文件系统的格式: /dir 主机1(opt1,opt2) 主机2(opt1,opt2)... 以#开头的为注释 主机格式: 单个主机: ipv4 ,ipv6 ,FQDN, IP networks: 两种掩码格式均支持 172.18.0.0/255.255.0.0 172.18.0.0/16 wildcards : 主机名通配,例如*.magedu.com ,IP 不可以 netgroups : NIS 域的主机组,@group_name anonymous : 表示使用*通配所有客户端 每个条目指定目录导出到的哪些主机,及相关的权限和选项 默认选项:(ro,sync,root_squash,no_all_squash) ro,rw 只读和读写 async 异步,数据变化后不立即写磁盘,性能高 sync (1.0.0 后为默认) 同步,数据在请求时立即写入共享 no_all_基于内核的文件系统,通过修改相关配置文件并运行命令管理进行配置。squash (默认) 保留共享文件的UID 和GID all_squash 所有远程用户( 包括root) 都变成nfsnobody root_squash (默认) 远程root 映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody) no_root_squash 远程root 映射成root 用户 anonuid 和anongid 指明匿名用户映射为特定用户UID 和组GID ,而非nfsnobody, 可配合all_squash ``` ##NFS配置示例 ``` 在/etc/exports 文件中定义导出目录 /myshare server.example.com /myshare *.example.com /myshare server?.example.com /myshare server[0-20].example.com /myshare 172.25.11.10 /myshare 172.25.0.0/16 /myshare 2000:472:18:b51:c32:a21 /myshare 2000:472:18:b51::/64 /myshare *.example.com 172.25.0.0/16 /myshare desktop.example.com(ro) /myshare desktop.example.com(ro) server[0-20].example.com(rw) /myshare diskless.example.com(rw,no_root_squash) ``` ##启动NFS ``` NFS服务依赖于RPC,所以要先启动RPC服务,然后再启动NFS服务 service rpcbind start service nfs start ``` ##客户端NFS挂载 ``` 基于安全考虑,建议使用nosuid,nodev,noexec 挂载选项 NFS 相关的挂载选项: fg (默认) 前台挂载,bg 后台挂载 hard (默认) 持续请求,soft 非持续请求 intr 和hard 配合 请求可中断 rsize 和wsize 一次读和写数据最大字节数,rsize=32768 _netdev 无网络不挂载 示例: mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/ 开机挂载:/etc/fstab 172.16.0.1:/public /mnt/nfs nfs defaults 0 0 ``` ##自动挂载 ``` 可使用autofs 按需要挂载NFS共享,在空闲时自动卸载 由autofs 包提供 系统管理器指定由/etc/auto.master 自动挂载器守护进程控制的挂载点 自动挂载监视器访问这些目录并按要求挂载文件系统 文件系统在失活的指定间隔5 分钟后会自动卸载 为所有导出到网络中的NFS配启用特殊匹配 -host 至 "browse" 参看帮助:man 5 autofs 支持含通配符的目录名 * server:/export/& ``` ##直接匹配 ``` 直接匹配包括绝对路径名称 不会影响本地目录结构 示例: /etc/auto.master: /- /etc/auto.direct /etc/auto.direct: /foo server1:/export/foo /user/local/ server1:/usr/local ``` ##实现NFS服务 ``` systemctl start nfs-server systemctl enable nfs-server mkdir /nfsshare chown nfsnobody /nfsshare vi /etc/exports /nfsshare desktop-ip(rw) exporfs –r mkdir /mnt/nfsshare mount server-ip:/nfsshare /mnt/nfsshare(临时) vim /etc/fstab nfsserver:/nfsshare /mnt/nfsshare nfs defaults 0 0 mount -a ``` ##实现NFS伪根 ``` 配置NFS 服务器 vi /etc/fstab /data/read /exports/read none bind 0 0 /data2/write /exports/write none bind 0 0 vi /etc/exports /exports *(fsid=o,rw,crossmnt) /exports/read 192.168.0.0/24(ro) /exports/write 192.168.0.0/24(rw) 配置NFS 客户端 mount nfsserver:/ /mnt/nfs vi /etc/fstab nfsserver:/ /mnt/ nfs4 ro 0 0 ``` ##NFS相关SELinux 设置 ``` CentOS7 默认SELinux 的布尔值 nfs_export_all_ro 和 nfs_export_all_rw 都启用。这允许NFS 服务可以读写任意文件,基于安全考虑可关闭. 对于只读的NFS 目录SELinux 安全上下文件应设为 public_content_t 或 nfs_t . 对于读写的NFS 目录SELinux 安全上下文件应设为 public_content_rw_t 或 nfs_t context ,并且布尔值nfsd_anon_write Boolean 必须启用,以允许写操作. 帮助参考nfsd_selinux(8)(selinux-policy-devel包)nfs(5), mount(8), mount.nfs(8), exportfs(8), exports(5), nfsd_selinux(8) ``` ##NFS工具 ``` rpcinfo rpcinfo — report RPC information rpcinfo makes an RPC call to an RPC server and reports what it finds. rpcinfo [-m | -s] [host] rpcinfo -p [host] rpcinfo -T netid host prognum [versnum] rpcinfo -l host prognum versnum rpcinfo [-n portnum] -u | -t host prognum [versnum] rpcinfo -a serv_address -T netid prognum [version] rpcinfo -b prognum versnum rpcinfo -d [-T netid] prognum versnum 例子: rpcinfo -p hostname rpcinfo –s hostname 查看RPC注册程序 exportfs exportfs - maintain table of exported NFS file systems exportfs [-aruv] [host:/path –v 查看本机所有NFS 共享 –r 重读配置文件,并共享目录 –a 输出本机所有共享 –au 停止本机所有共享 showmount showmount - show mount information for an NFS server showmount [options] [host] -a or --all 在主机中列出客户端主机名或IP地址和已装载目录:dir格式 -d or --directories 仅列出某些客户端安装的目录 -e or --exports 显示NFS服务的导出文件 --no-headers 禁止输出中的描述性标题 例子 showmount -e hostname mount,mount.nfs 挂载工具 NFSv4 支持通过挂载NFS 服务器的共享“根”,从而浏览NFS 服务器上的共享目录列表 mount nfsserver:/ /mnt/nfs ```

方法1. 通过yast2管理工具进行配置
在console中运行yast2工具配置nfs服务
# yast2 nfs_server

然后运行下面的命令激活并启动nfs服务
# chkconfig -a nfsserver
# /etc/init.d/nfsserver restart (这里和RedHat不同,/etc/init.d/nfs start/stop/restart)

服务端:1,安装nfs-utils 和rpcbind包。

"Configuration of the NFS server" 选择 "Start NFS server" 然后单击"Next"按钮
"Add directory"添加要输出的目录,例如/opt
"Hosts wildcard"输入可以使用此服务的网络或主机信息,例如192.168.0.0/255.255.255.0
"Options"输入所需选项,选项sync或async必须填写,其它选项可以参见man exports(5)

检查及排错:
可以用下面的命令查看nfs服务有没有起来
# rpcinfo -p localhost | grep nfs

yum install -y nfs-utils#安装nfs-utils时会把rpcbind一起安装

方法2. 通过修改相关配置文件并运行命令管理进行配置
首先编辑/etc/exports文件
# export /opt to any host with option ro,async
/opt *(ro,async)
# export /media to hosts 192.168.0.0/255.255.255.0 with option ro,root_squash,sync
/media 192.168.0.0/255.255.255.0(ro,root_squash,sync)

用下面的命令加载上面输出的nfs文件系统,占位符<ipaddr>是服务器的 ip 地址
# mount -t nfs <ipaddr>:/opt /mnt

2,vim /etc/exports

然后运行下面的命令激活并启动nfs服务
# chkconfig -a nfsserver
# /etc/init.d/nfsserver restart

图片 1

添加:
/mnt  192.168.1.105    (rw,sync,all_squash,annouid=501,anongid=501)#可以是一个网段192.168.1.0/24

检查及排错:
可以用下面的命令查看nfs服务有没有起来
# rpcinfo -p localhost | grep nfs

1,共享的目录
2,允许访问的IP或者某个网段 192.168.1.0/24 
3,选项  
rw ,读写
ro,只读
sync,同步模式,将内存的数据实时写入磁盘
async,不同步 ,将内存的数据定期写入磁盘
all_squash ,   限制所有用户,排除后面设定的uid的用户
root_squash   限制root用户
no_root_squash   不限制root用户
anonuid   用于指定使用NFS的用户限定后的uid和gid。
anongid  

用下面的命令加载上面输出的nfs文件系统,占位符<ipaddr>是服务器的 ip 地址
# mount -t nfs <ipaddr>:/opt /mnt

 

nfs_serv来配置nfs服务,也可以通过修改配置文件的方式加以支持 方法1. 通过yast2管理工具进行配置 在console中运行yast2工具...

3,启动rpcbind服务和nfs服务
/etc/init.d/rpcbind start
/etc/init.d/nfs start

客户端,
1,yum install -y nfs-utils (因为需要使用到showmount这个命令)
2,showmount -e 192.168.1.107
显示如下,
Export list for 192.168.1.105:
/mnt 192.168.1.105
3,挂载 
mount -t nfs -o nolock  -o nfsvers=3 192.168.1.105:/mnt /opt ==》mount -t nfs -o nolock,nfsvers=3 192.168.1.105:/mnt /opt
-o  nolock 挂载时不加锁   目的是可以在此目录创建文件、修改文件的时间缩短,如果不加的话,会过很长时间才会有反应。
-o  nfsvers  指定nfs的版本为3  避免权限混乱(不加这个选项,创建的文件的属主和属组可能会是nobody)
4,df -h 查看挂载的分区
5,在/mnt目录下创建文件或目录提示权限不够,将共享的目录设为777(在server段设置)

另外,如果更改了/etc/exports的配置文件  可以通过exportfs -avr的命令来重新加载或者重启nfs服务。
exportfs 
-a  全部挂载或者卸载
-r 重新挂载
-v 显示贡献的目录
-u 卸载某个目录
6,如果想让系统开机就挂载此分区的话,vim /etc/fstab,添加如下信息
192.168.1.105:/mnt  /opt  nfs  nolock  00
卸载 umout /mnt   

挂载 mount -a

常见错误:

mount.nfs: access denied by server while mounting

可能是配置错误或者端口号大于1024时需要在/etc/exports下加入insecure选项

或者是server端目录没有权限

[root@localhost ~]# showmount -e 192.168.1.107

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

解决方法:

被访问的NFS服务器上的防火墙没有添加规则,向iptables里面添加以下查看的所有端口即可

#iptables -F

#service iptables stop  //关闭防火墙

 

 

编辑:服务器运维 本文来源:基于内核的文件系统,通过修改相关配置文件并

关键词: