文章目录
前言
共享磁盘
将一台主机上的磁盘或者某个目录共享给其他主机;
既:多台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
回到服务端,查看文件和目录是否已经同步;
在服务端,也做同样的操作,验证;
总结
无中生有!