Linux磁盘共享nfs


前言

共享磁盘

将一台主机上的磁盘或者某个目录共享给其他主机;
既:多台Linux主机使用同一个磁盘或目录;

NFS

  • nfs (network file system) 网络文件系统工具;
  • 通过网络,让不同的机器、不同的操作系统可以共享彼此的文件;
  • 用于宿主机和目标机之间的文件分享;

NFS服务,需要两个软件,分别是:

  • RPC主程序:rpcbind
    NFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。

  • NFS主程序:nfs-utils
      就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。

NFS的相关文件:

  • 主要配置文件:/etc/exports
    这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。

  • NFS 文件系统维护指令:/usr/sbin/exportfs
    这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。

  • 分享资源的登录档:/var/lib/nfs/*tab
    在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。

  • 客户端查询服务器分享资源的指令:/usr/sbin/showmount
    这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。


服务端

1、选择一台主机作为服务端

根据自己的情况选择一台主机作为服务端,一般可以选择性能较好的;

2、安装nfs

一般centos系统自带nfs
安装命令

yum -y install nfs*

启停命令

systemctl restart nfs-server.service
systemctl status nfs-server.service
systemctl stop nfs-server.service
systemctl start nfs-server.service

设置开机启动

systemctl enable nfs-server.service

如下图,查看状态,Loaded 一行,第二项为 enable 即为设置成功;
在这里插入图片描述

检查rpcbind是否启动,并设置了开机启动

systemctl status rpcbind
systemctl start rpcbind
systemctl stop rpcbind
systemctl restart rpcbind
systemclt enable rpcbind

3、建立共享目录

创建一个需要共享的目录;

mkdir /root/share
# 为了之后可以在多台机子上操作,需要设置一下权限
chmod 777 -R /root/share

4、客户端配置

vim /etc/exports
# 添加如下语句
/root/share 192.168.122.102(rw,no_root_squash,sync)

解释:

  • /root/share:要共享的目录

  • 192.168.122.102:客户端IP地址
    192.168.122.102:指定特定IP
    *:指定所有网段及ip
    192.168.1.0/24:指定子网中的所有主机
    nfs.caotch.com:指定域名的主机

  • rw:可读可写;

  • sync:数据同步写入内存和硬盘;

  • no_root_squash:是 nfs 客户端分享目录使用者的权限,如果服务端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限;

其他 nfs 常用的参数有:

  • ro:只读(还与文件系统的rwx有关)
  • async :数据先暂存于内存当中,不会直接写入硬盘;
  • secure: nfs 通过以下的安全 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_squash root:用户具有根目录的完全管理访问权限
  • anonuid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户多的 UID
  • anongid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户的 GID

5、重新加载,使/etc/exports文件修改生效

exportfs -r
# exportfs [-aruv]
参数说明如下。
1)-a:全部挂载(或卸载)/etc/exports文件内的设定。
2)-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
3)-u:卸载某一目录。
4)-v:在export时将共享的目录显示在屏幕上。

6、查看是否共享成功

可看到共享的目录及客户端,即为成功

showmount -e localhost

7、开放端口(nfs用到两个端口:111 和 2049)

firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

客户端

1、安装nfs

一般centos系统自带nfs

安装命令

yum -y install nfs*

启停命令

systemctl restart nfs-server.service
systemctl status nfs-server.service
systemctl stop nfs-server.service
systemctl start nfs-server.service

设置开机启动

systemctl enable nfs-server.service

如下图,查看状态,Loaded 一行,第二项为 enable 即为设置成功;在这里插入图片描述
检查rpcbind是否启动,并设置了开机启动

systemctl status rpcbind
systemctl start rpcbind
systemctl stop rpcbind
systemctl restart rpcbind
systemclt enable rpcbind

2、建立挂载目录

创建一个需要挂载的目录;
这个最好和服务端共享目录保持一直;

mkdir /root/share

3、挂载远程磁盘(目录)

1、使用mount命令挂载

mount -t nfs 192.168.122.101:/root/share /root/share
命令  挂载nfs  服务端IP:共享目录  挂载目录

2、修改 /etc/fstab 配置文件挂载(这种方式开机启动后会自动挂载)

vim /etc/fstab
# 把下面这段加入配置中,保存退出
192.168.122.101:/root/share /root/share nfs defaults 0 0
# 执行下面的命令,使配置文件 /etc/fstab 生效
mount -a

3、查看是否挂载成功

df -h

测试

# 创建一个文件
touch 1.txt
# 创建一个目录
mkdir t1
# 在目录里创建一个文件
cd t1
touch t11.txt

回到服务端,查看文件和目录是否已经同步;
在服务端,也做同样的操作,验证;


总结

无中生有!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值