利用Linux主机创建NFS服务

Posted dingdingfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Linux主机创建NFS服务相关的知识,希望对你有一定的参考价值。

创建2个Linux主机,一个作为NFS Server,一个作为Linux Client。用户使用oracle(UID和GID均设为54321),文件系统大小为1T。

主机IP地址
NFS Server10.0.0.173
NFS Client10.0.0.223

NFS Server端的配置

创建oracle用户:

groupadd -g 54321 oinstall
useradd -u 54321 -g oinstall oracle

查看:

# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall)

为NFS Server上分配1T的块存储,建立文件系统,并挂载,为NFS Client使用:

fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
mkdir /fs4db
mount /dev/sdb1 /fs4db

查看状态:

[opc@nfs-server ~]$ df -H /fs4db
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       1.1T   75M  1.1T   1% /fs4db
[opc@nfs-server ~]$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="d4ccffc9-5cdd-40a0-a62f-190b25649b02" TYPE="ext4"

修改文件系统权限:

chown oracle:oinstall /fs4db

参考文档,配置NFS Server。

yum install nfs-utils -y
echo '/fs4db *(all_squash,anonuid=54321,anongid=54321,rw,sync)' >> /etc/exports
systemctl start nfs-server

查看:

[root@nfs-server opc]# cat /etc/exports
/fs4db *(all_squash,anonuid=54321,anongid=54321,rw)

[root@nfs-server opc]# exportfs -v
/fs4db          <world>(sync,wdelay,hide,no_subtree_check,anonuid=54321,anongid=54321,sec=sys,ro,secure,root_squash,all_squash)

[root@nfs-server opc]# showmount -e
Export list for nfs-server:
/fs4db *

[root@nfssrv opc]# showmount -e 10.0.0.173
Export list for 10.0.0.173:
/fs4db *

[root@nfs-server opc]# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  35361  status
    100024    1   tcp  40073  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  50678  nlockmgr
    100021    3   udp  50678  nlockmgr
    100021    4   udp  50678  nlockmgr
    100021    1   tcp  36961  nlockmgr
    100021    3   tcp  36961  nlockmgr
    100021    4   tcp  36961  nlockmgr

在文件/etc/sysconfig/nfs中可以查看到NFS监听的端口,据此配置防火墙,开放对应端口。

但是,虽然后续mount命令成功,但showmount命令仍不正常。参照这个帖子,就完全正常了。补充的命令如下:

firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --reload

-- verify
semanage port -l | grep 2049
netstat -tulpen | grep 2049

NFS Client端的设置

创建oracle用户,其uid和gid与NFS Server一致:

groupadd -g 54321 oinstall
useradd -u 54321 -g oinstall oracle

安装NFS包:

yum install nfs-utils -y

创建挂载目录并赋权:

mkdir -p /u02/app/oracle/oradata
chown -R oracle:oinstall /u02/app/oracle/oradata

挂载:

[root@nfs-client ~]# mount -t nfs -o rw,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600 10.0.0.173:/fs4db /u02/app/oracle/oradata/

也可以将以下内容加入到/etc/fstab:

10.0.0.173:/fs4db /u02/app/oracle/oradata/ nfs rw,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=4,timeo=600 0 0

查看:

[root@nfs-client opc]# df /u02/app/oracle/oradata
Filesystem         1K-blocks    Used  Available Use% Mounted on
10.0.0.173:/fs4db 1055845376 2098176 1000044544   1% /u02/app/oracle/oradata

-- 显示所有已挂载的文件系统,其协议是NFS4,dNFS支持的协议包括NFSv3, NFSv4, NFSv4.1, pNFS
[root@nfs-client opc]# mount
10.0.0.173:/fs4db on /u02/app/oracle/oradata type nfs4 (rw,nosuid,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.223,local_lock=none,addr=10.0.0.173)
...

[root@nfs-client opc]# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

[root@nfsclt opc]# showmount -e 10.0.0.31
Export list for 10.0.0.31:
/fs4db *

参考

  • https://docs.oracle.com/en/operating-systems/oracle-linux/7/fsadmin/ol7-sharedfs.html#ol7-about-nfs
  • https://stackoverflow.com/questions/7878707/how-to-unmount-a-busy-device
  • https://docs.oracle.com/en/database/oracle/oracle-database/19/ssdbi/about-direct-nfs-client-mounts-to-nfs-storage-devices.html

以上是关于利用Linux主机创建NFS服务的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础之-利用shell脚本实现自动监控系统服务

NFS

Linux下搭建nfs把远程主机目录挂载到本地主机

红帽7 NFS(网络文件系统)

linux---集群架构初探NFS深入讲解

linux---集群架构初探NFS深入讲解