设为首页 收藏本站
查看: 555|回复: 0

[经验分享] RedHat搭建NFS服务器

[复制链接]
发表于 2018-5-11 08:43:21 | 显示全部楼层 |阅读模式
  首先说一下什么是NFS,其实就是Network File System的缩写,是sun公司开发的。能够实现不同的机器,不同的操作系统乐意彼此共享文件。在我前面的文章中有提到Samba,它也是一种文件共享服务器。不同的是,NFS实现的是linux客户机之间的文件共享,而Samba主要是为了实现windows和linux之间的文件共享,前者相对简单,后者相对复杂,但是复杂必然有复杂的道理。

  下面我介绍下如何搭建NFS服务器,以及客户机如何能够实现文件共享:

  •   场景
  某单位需要配置 NFS 服务器, 为另外一台运行 Oracle 数据库的 Linux 服务器提供备份存储。
DSC0000.png

主机名               IP 地址
nfs1.abc.local    192.168.1.241
db1.abc.local     192.168.1.242
  2. 实验环境
  2.1. 操作系统安装
  # cat /etc/redhat-release
  Red Hat Enterprise Linux Server release 6.4 (Santiago)
  # uname -a
  Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29
  11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
  2.2. 服务器基本配置
  修改 IP 地址。 (注意:根据您的实现环境进行配置)
  # vi /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  TYPE=Ethernet
  ONBOOT=yes
  NM_CONTROLLED=yes
  BOOTPROTO=static
  IPADDR=192.168.1.241
  NETMASK=255.255.255.0
  GATEWAY=192.168.1.1
  修改主机名
  # vi /etc/sysconfig/network
  NETWORKING=yes
  #HOSTNAME=localhost.localdomain
  HOSTNAME=nfs1.abc.local
  # service network restart
  为了方便实验,将防火墙关闭。
  # service iptables stop
  # chkconfig iptables off
  同时关闭 selinux。
# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  

  重新启动以便生效。
  # reboot
  3. NFS 服务器安装与配置
  3.1. 安装 NFS 服务器组件
  3.1.1. 方法 1:通过 RPM 来进行安装
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
# cd /mnt/cdrom/Packages/  
# ls nfs*
nfs4-acl-tools-0.3.3-6.el6.x86_64.rpm  
nfs-utils-1.2.3-36.el6.x86_64.rpm  
nfs-utils-lib-1.1.5-6.el6.i686.rpm  
nfs-utils-lib-1.1.5-6.el6.x86_64.rpm
# rpm -ivh nfs-utils-1.2.3-36.el6.x86_64.rpm  
error: Failed dependencies:
        keyutils >= 1.4-4 is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libevent is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libevent-1.4.so.2()(64bit) is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libgssglue is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libgssglue.so.1()(64bit) is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libgssglue.so.1(libgssapi_CITI_2)(64bit) is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libnfsidmap.so.0()(64bit) is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libtirpc is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        libtirpc.so.1()(64bit) is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        nfs-utils-lib >= 1.1.0-3 is needed by nfs-utils-1:1.2.3-36.el6.x86_64
        rpcbind is needed by nfs-utils-1:1.2.3-36.el6.x86_64
解决包的依赖性
# rpm -ivh nfs-utils-1.2.3-36.el6.x86_64.rpm \
nfs-utils-lib-1.1.5-6.el6.x86_64.rpm \
rpcbind-0.2.0-11.el6.x86_64.rpm keyutils-1.4-4.el6.x86_64.rpm  \
libevent-1.4.13-4.el6.x86_64.rpm \
libgssglue-0.1-11.el6.x86_64.rpm  \
libtirpc-0.2.1-5.el6.x86_64.rpm  
Preparing...                ########################################### [100%]
   1:libgssglue             ########################################### [ 14%]
   2:libtirpc               ########################################### [ 29%]
   3:rpcbind                ########################################### [ 43%]
   4:libevent               ########################################### [ 57%]
   5:keyutils               ########################################### [ 71%]
   6:nfs-utils-lib          ########################################### [ 86%]
   7:nfs-utils              ########################################### [100%]  3.1.2. 方法 2:通过 YUM 来进行安装
  通过 YUM 来解决包的相关性,需要配置yum源
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only  
# vi /etc/yum.repos.d/rhel-dvd.repo
创建新的文件,添加如下内容:
[rhel-dvd]
name=Red Hat Enterprise Linux $releasever - $basearch - DVD
baseurl=file:///mnt/cdrom/Server/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
# yum list | grep nfs
nfs-utils.x86_64           1:1.2.3-36.el6  rhel-dvd  
nfs-utils-lib.i686         1.1.5-6.el6     rhel-dvd  
nfs-utils-lib.x86_64       1.1.5-6.el6     rhel-dvd  
nfs4-acl-tools.x86_64      0.3.3-6.el6     rhel-dvd  
sblim-cmpi-nfsv3.i686      1.1.1-1.el6     rhel-dvd  
sblim-cmpi-nfsv3.x86_64    1.1.1-1.el6     rhel-dvd  
sblim-cmpi-nfsv4.i686      1.1.0-1.el6     rhel-dvd  
sblim-cmpi-nfsv4.x86_64    1.1.0-1.el6     rhel-dvd   
# yum -y install nfs-utils  很方便地就安装完毕了
  3.2. 启动 NFS 服务
  NFS 依赖 rpcbind 服务,设置为其自动启动
  由于nfs服务依赖于rpc(远程过程调用)服务,所以在启动nfs服务之前,需要先启动rpc服务
# chkconfig rpcbind on
# service rpcbind start
# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
# tail /var/log/messages 中
rpc.mountd[1797]: Version 1.2.3 starting
kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state
recovery directory
kernel: NFSD: starting 90-second grace period
# chkconfig nfs on  3.3. 配置 NFS 服务器
  查看当前共享的 NFS 信息
  # showmount -e localhost
  Export list for localhost: 空白无输出
  下面,做一个最基础的测试。创建 export 目录,分配权限
  # mkdir /nfsdata
  # ll /nfsdata/ -d
  drwxr-xr-x 2 root root 4096 Jul 31 15:16 /nfsdata/
  # chmod a+w /nfsdata/
  # ll /nfsdata/ -d
  drwxrwxrwx 2 root root 4096 Jul 31 15:16 /nfsdata/
  配置 export 文件
  # vi /etc/exports
  添加如下内容,注意选项中逗号之间没有空格!
  /nfsdata *(rw,root_squash,no_all_squash,sync)
  这里的意思是说,需要共享/nfsdata这个目录,对所有客户端(*)都是可读写的(rw),并且是异步方式来访问。 因为不设置其他参数, 客户端创建文件或目录时默认的属主和组就是nfsnobody,即使客户端使用的账号是root。
  

  # exportfs -r
  Tip: -r Reexport all directories, synchronizing /var/lib/nfs/etab with /etc/exports. This option
  removes entries in /var/lib/nfs/etab which have been deleted from /etc/exports, and removes
  any entries from the kernel export table which are no longer valid.
  # showmount -e localhost
  Export list for localhost:
  /nfsdata *
  自己连接一下自己,测试一下。
  # mkdir /mnt/nfs
  # mount 127.0.0.1:/nfsdata/ /mnt/nfs
  查看 mount 的信息
  # mount
  /dev/mapper/VolGroup-lv_root on / type ext4 (rw)
  proc on /proc type proc (rw)
  sysfs on /sys type sysfs (rw)
  devpts on /dev/pts type devpts (rw,gid=5,mode=620)
  tmpfs on /dev/shm type tmpfs (rw)
  /dev/sda1 on /boot type ext4 (rw)
  none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
  /dev/sr0 on /mnt/cdrom type iso9660 (ro)
  sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
  nfsd on /proc/fs/nfsd type nfsd (rw)
  127.0.0.1:/nfsdata/ on /mnt/nfs type nfs (rw,vers=4,addr=127.0.0.1,clientaddr=127.0.0.1)
  检查目录是否可以写入。
  # touch /mnt/nfs/testfile1.txt
  # ll /mnt/nfs/testfile1.txt
  -rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 31 15:28 /mnt/nfs/testfile1.txt
  注:如果以后直接在服务器上的共享目录创建文件或目录,要记得将属主和组设置为nfsnobody。否则客户端在访问时会出现“Permission denied”。
  3.4. 配置 NFS 客户机
  NFS 客户机也需要安装 nfs-utils 包。
  # showmount -e 192.168.1.241
  Export list for 192.168.1.241:
  /nfsdata *
  [root@db1 ~]# mount 192.168.1.241:/nfsdata /mnt/nfs/
  [root@db1 ~]# ls /mnt/nfs/ -l
  total 0
  -rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 31 15:28 testfile1.txt
  [root@db1 ~]# echo test >> /mnt/nfs/testfile1.txt
  [root@db1 ~]# ls /mnt/nfs/testfile1.txt
  /mnt/nfs/testfile1.txt
  [root@db1 ~]# ls /mnt/nfs/testfile1.txt  -l
  -rw-r--r-- 1 nfsnobody nfsnobody 5 Jul 31 15:47 /mnt/nfs/testfile1.txt
  4.排错

  4.1 启动NFS服务时出错
  原因可能是rpcbind没有启动

  # service rpcbind start
  # service nfs start
  4.2 权限出错
  是文件系统的权限不足
  # chmod a+w /nfsdata
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-458407-1-1.html 上篇帖子: RedHat Enterprise Linux6.4 使用CentOS yum 下篇帖子: yum源仓库配置(基于Redhat5.6和centos6.5)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表