NFS文件服务器系统搭建
1什么是NFS
NFS(network file system),网络文件系统,不同的操作系统可以通过NFS来共享文件,可以简单地将之看成是一个文件服务器。可以将远端的主机分享目录挂载到本地的目录下,使用的时候就像本地的目录一样,只要权限足够,可以直接在目录中创建文件并使用mv,cp,,rm等命令直接对之进行管理。用起来相当的方便。
2 NFS的原理
NFS使用TCP/IP协议进行通讯。所以肯定需要port端口进行通讯。这个端口是从1—1024中随机取得的端口。因为NFS的功能很多,需要分配很多的端口,客户端通过RPC来找到这个端口并进行通讯。NFS每次启动的时候都要向RPC进行注册才行。而RPC服务重启后,所有的端口信息都会丢失,所以如果RPC重启,则NFS SERVICE也必需重新启动重新向RPC服务注册。这样客户端才能知道该使用哪个端口通讯。客户端连接NFS服务器的步骤。
1 用户向服务器端的RPC(port 111)提出访问请求
2 服务器端查询NFS damon端口地址,提供给client端。
3 client通过port和server端进行通讯。
3 NFS的后台进程
NFS主要用来做文件的分享。最主要有两个后台进程,一个接受连接,一个提供服务。
rpc.nfsd 校验登入权限。
rpc.mount 管理文件系统。读设定文件/etc/exports,确定权限。
rpc.lockd 这个进程不是必需的。用途加锁管理。避免并发问题。如果多个会话同时存取一个文件,可能会有并发问题。为了解决这个问题。增加了这个进程,注意必需客户端和服务器端同时启动才行。通常与rpc.statd同时启用。
Rpc.statd,校验文件一致性的进程。通常与ntplockd同时启动
4 权限问题:
NFS共享目录的权限是通过UID,GID来判断的。 比方在服务器端共享目录的属主为503,503。如果共享目录的权限比较小,而如果客户端没有503,503的用户。用gid,uid为501的用户登入的时候,就既不能读,也不能写。。所以通常情况下都会将共享目录设置成777的权限。
当登入用户为root 0:0的时候,映射到服务端如果也是0:0就会有安全上的隐患。NFS默认将uid,0,gid0当成nobody来处理,
当登入的用户对应的uid,gid在服务端存在的时候,在该目录中的权限和服务端对应用户相同。
当登入的用户不存在的时候。创建的uid,gid为用户的uid,gid,服务端看到的文件有uid,gid,但是没有用户名。其读取的权限和nobody相同。
总之,只要client登入用户的uid和gid和服务器端的不对应,就会造成困扰。这也是NFS文件系统权限管理上的一个很容易引起混乱的问题。要有合适的读写权限。需要
/etc/export中的合理设置。以及登入者的对应用户在共享目录的权限足够才行。
5配置NFS服务
前面说配置NFS需要RPC服务的启动。在linux系统上RPC对应的服务名是portmap.所以首先需要启动portmap服务。而且如果portmap服务重启,NFS服务就会变得不可用,必须重新启动。
service portmap restart;
service nfs restart;
NFS的配置文件是/etc/exports.格式是
共享目录,主机ip(权限关键字) 可用主机名 带通配符的主机名(权限)。
一个例子
[root@vdx2 rmanbak]# more /etc/exports
/home/oracle/aa 10.10.100.14(rw,nohide,no_subtree_check)
()内的语法可以通过man exports来查看,在此不做详述。
与权限有关的有rw表示允许读写共享,ro表示只读共享。
配置完/etc/exports以后,只要重新启动NFS,服务器端的配置就完成了。
另外需要注意,只要修改了/etc/exports文件,NFS都要重新启动。
为了避免NFS SERVER重启后服务未启动,使用setup工具把portmap, nfs,
nfslock配置为自动启动。
为ORACLE配置NFS服务客户端
1挂载选项
如果仅仅只是做简单的拷贝动作,只要直接mount 就OK了。但是如果想让ORACLE直接访问NFS目录,除了权限设置正确外,mount必需加上-o选项。否则ORACLE无法直接读写,会给出mount选项不对的错误。
根据ORACLE,metalink Doc ID:359515.1,不同平台不同情况下的mount选项是不同的,如下是ORACLE提供的对照表。针对二进制文件(ORACLE_HOME,CRS_HOME),数据文件(包括控制文件和日志文件,数据文件),OCR和VOTING DISK的不同情况可以在如下表中查询。
注意linux内核版本需要>=2.6
RAC情况下。
Operating System |
Mount options for Binaries |
Mount options for Oracle Datafiles |
Mount options for CRS Voting Disk and OCR |
Sun Solaris * |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
AIX (5L) ** |
rw,bg,hard,nointr,rsize=32768, |
cio,rw,bg,hard,nointr,rsize=32768, |
cio,rw,bg,hard,intr,rsize=32768, |
HPUX 11.23 **** – |
rw,bg,vers=3,proto=tcp,noac, |
rw,bg,vers=3,proto=tcp,noac, |
rw,bg,vers=3,proto=tcp,noac, |
Linux x86# |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
Linux x86-64 # |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
Linux x86-64 # |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
rw,bg,hard,nointr,rsize=32768, |
根据BUG 5856342,在RAC使用网络存储设备,操作系统为linux X86或者X86_64, oracle版本低于10.2.0.4的情况下,必需设置初始化参数
filesystemio_options = DIRECTIO
在单实例(single-Instance)情况下的对照表
Operating System |
Mount options for Binaries |
Mount options for Oracle Datafiles |
Sun Solaris * |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
AIX (5L) ** |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
HPUX 11.23 **** |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
Linux x86 |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
Linux x86-64 # |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
Linux – Itanium |
rw,bg,hard,rsize=32768, |
rw,bg,hard,rsize=32768, |
其中acime=0*,*代表也可以使用noac
我们的操作系统为linux X86.所以可以root帐号执行以下语句来挂载
Shell> mount –t nfs –o rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,tcp 10.10.100.14:/home/oracle/aa /14dir;
2必需启动的服务
注意:ORACLE直接归档到nfs的时候必需启动ntplocked 服务,这个服务通常与rfs.statd同时启动。在server和client都需要,否则归档时会出现如下的错误。
ORA-19504: failed to create file "/u03/245dir/1_8665_567259761.dbf"
ORA-27086: unable to lock file - already in use
Linux Error: 37: No locks available
Additional information: 10
3修改归档位置
直接修改归档参数就可以了
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’LOCATION=/14dir’;
后续处理
1 修改/ETC/fstab文件实现自动挂载
为了避免系统重启需手动挂载NFS,可修改/etc/fstab文件来实现自动挂载。
使用root来编辑,加入一行
10.10.100.14:/home/oracle/aa /14dir nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 0 0
2 将必需的服务设定为自动启动
客户端需要设置portmap,ntplock自动启动。可以用setup工具来实现。
服务端配置portmap,nfs,ntplock自动启动。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10522540/viewspace-661561/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10522540/viewspace-661561/