Nfs 将另一台服务器,挂载到本地
文件,实际存储在1.13.152.31
中
但是,想将31这台服务器,挂载到118.195.220.169
上
先定义,31是挂载的源服务器,169是挂载的目标服务器
源服务器
1.在源服务器上设置NFS共享目录:
# 在1.13.152.31上
yum install nfs-utils
# 查看nfs-utils是否已安装
[root@VM-8-4-opencloudos ~]# rpm -qa | grep nfs
sssd-nfs-idmap-2.9.4-3.oc8.x86_64
nfs-utils-2.3.3-59.oc8.x86_64
libnfsidmap-2.3.3-59.oc8.x86_64
2.创建要共享的目录,假设,我的共享目录是/opt/source
3、编辑 NFS 服务器的配置文件以添加共享目录。打开 /etc/exports 文件,并在末尾添加以下行:
这允许 <另一台服务器的IP地址> 访问 /opt/source目录。
vim /etc/exports
/opt/source 118.195.220.169(rw,sync,no_root_squash)
4.使用固定端口
https://blog.csdn.net/qq_34777982/article/details/126756015
nfs通信是使用udp或tcp协议进行的,上面的nfs环境是建立在nfs服务器防火墙关闭的情况下的搭建,即需要已经放通相关的端口,一般线上环境要求较高,会开启防火墙并授权一些策略来控制访问,
由于nfs默认除了用·111
(portmapper使用,客户端向服务器发出NFS文件存取功能的询问请求)和2049
(nfs使用)端口是固定的,
其他的几个端口是随机的,因此需要在nfs服务器(1.13.152.31)上配置成固定的端口,再通过防火墙进行开放,步骤如下:
vim /etc/services
# 在这个文件中,可以看到如下
mountd 20048/tcp # NFS mount protocol
mountd 20048/udp # NFS mount protocol
rquotad 875/tcp # rquota daemon
rquotad 875/udp # rquota daemon
# 添加自定义端口配置
lockd 30002/tcp
lockd 30002/udp
statd 30004/tcp
statd 30004/udp
vim /etc/nfs.conf
#在原来的标签下添加内容
[lockd]
port=30002
udp-port=30002
[statd]
port=30004
# 启动 NFS 服务,并重新加载配置文件:
systemctl start rpcbind
systemctl start nfs-server
systemctl enable nfs-server
exportfs -a
#以下命令,作为参考
systemctl restart nfs-idmap
systemctl restart nfs-lock
systemctl restart nfs-server
systemctl restart rpcbind
重新查看端口情况
rpcinfo -p localhost
# 可看到端口已经使用固定的端口
[root@VM-8-4-opencloudos source]# rpcinfo -p localhost
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 30004 status
100024 1 tcp 30004 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
100021 1 udp 30002 nlockmgr
100021 3 udp 30002 nlockmgr
100021 4 udp 30002 nlockmgr
100021 1 tcp 30002 nlockmgr
100021 3 tcp 30002 nlockmgr
100021 4 tcp 30002 nlockmgr
查看服务状态
systemctl status rpcbind
systemctl status nfs-server
systemctl stop nfs-server
systemctl stop rpcbind
打开对应的防火墙端口
firewall-cmd --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=20048/tcp --add-port=20048/udp --add-port=30002/tcp --add-port=30002/udp --add-port=30004/tcp --add-port=30004/udp --permanent
firewall-cmd --reload
目标服务器
yum install nfs-utils
# 显示NFS服务器上所有的共享目录
[root@VM-8-13-opencloudos mnt]# showmount -e 1.13.152.31
Export list for 1.13.152.31:
/opt/source 118.195.220.169
# 创建挂载点目录
mkdir /mnt/nfsclient
# 使用以下命令挂载NFS共享目录
mount -t nfs <源服务器的IP地址>:/opt/source /mnt/nfsclient
mount -t nfs 1.13.152.31:/opt/source /mnt/nfsclient
# 验证目录是否已挂载。
[root@VM-8-13-opencloudos mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 843M 0 843M 0% /dev
tmpfs 861M 24K 861M 1% /dev/shm
tmpfs 861M 18M 844M 3% /run
tmpfs 861M 0 861M 0% /sys/fs/cgroup
/dev/vda1 40G 4.1G 34G 11% /
tmpfs 173M 0 173M 0% /run/user/0
1.13.152.31:/opt/source 40G 3.8G 34G 10% /mnt/nfsclient
有上面一行ip是源服务器ip表示成功
在 NFS 客户端上配置永久挂载点
refer to : https://cn.linux-console.net/?p=20713#google_vignette
上述方法临时挂载了目录,开机后需要重新挂载。为了使挂载持久化,我们需要添加一个 fstab
条目,如下所示。
编辑/etc/fstab文件
vim /etc/fstab
# 格式如下:
server:/share /mnt/nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
# 示例:
1.13.152.31:/opt/source /mnt/nfsclient nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
- server:/share:NFS服务器的IP和共享的路径。
- /mnt/nfs:本地的挂载点。
- nfs:这是文件系统类型,指示要使用NFS协议进行挂载。
- auto:这表示在启动时自动挂载文件系统。
- nofail:这表示如果无法挂载,系统将继续启动,而不会阻止它。
- noatime:这将禁用对访问时间的写入,这有助于提高文件系统的性能。
- nolock:这将禁用对锁定管理的使用,这对于某些NFS服务器可能有用。
- intr:这表示允许中断挂起的NFS操作,这可以提高操作可靠性。
- tcp:这表示使用TCP协议进行NFS通信,这通常是默认设置。
- actimeo=1800:这表示NFS客户端将在1800秒内缓存文件属性,以提高性能。
- 0 0:这是用于fsck检查和备份常规操作的选项,0表示无需检查。
nfs 共享目录的权限配置
常见的选项:
ro:默认选项,以只读的方式共享。
rw:以读写的方式共享。
root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。
no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。
all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。
anonuid:设置映射到本地的匿名用户的UID
anongid:设置映射到本地的匿名用户的GID
sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。
async:异步,先将数据写入到内存,在将数据写入到硬盘。
secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。
insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)。
Nfs挂载选项
rw (读/写) / ro (只读)
- 对需要修改数据的用户使用rw。由于你挂载一个读/写目录,NFS服务器必须输出它的读/写特性。
- 当你不希望用户改变数据时,请使用ro。从多个服务器自动挂载的目录应该是只读的,以便在所有服务器上保持版本相同。
- 默认为rw。
suid / nosuid
- 指定suid,如果你想允许挂载的程序有setuid权限运行与他们的所有者的权限,无论谁启动他们。如果一个具有setuid权限的程序由root拥有,那么它将以root权限运行,而不管谁启动它。
- 指定nosuid,以保护您的系统不受setuid程序的影响,这些程序可能以root身份运行,并损坏您的系统。
- 默认值是suid。
hard / soft
- 指定用户是否将写入已挂载的目录或运行其中的程序。当NFS试图访问硬挂载目录时,它会一直尝试,直到成功或有人打断它的尝试。如果服务器宕机,使用挂载目录的任何进程都会挂起,直到服务器恢复正常,然后继续处理,不会出现错误。可中断的硬挂载可以用CTRL-C或kill中断(稍后请参阅intr选项)。
- 指定软如果服务器是不可靠的,你想要防止系统挂起时,服务器是关闭。当NFS试图访问软挂载目录时,它会放弃,并在尝试retrans多次之后返回错误消息(稍后请参阅retrans选项)。如果服务器宕机,使用挂载目录的任何进程都将返回错误。
- 默认值是hard。
intr / nointr
- 如果用户不太可能通过手动中断NFS请求而损坏关键数据,则指定intr。如果硬挂载是可中断的,用户可以按[CTRL]-C或发出kill命令来中断NFS挂载,NFS挂载由于服务器宕机而无限期挂载。
- 指定nointr,如果用户可能通过手动中断NFS请求而损坏关键数据,您宁愿在服务器宕机时挂起系统,也不愿冒客户机和服务器之间数据丢失的风险。
- 默认值为intr。
fg (前景) / bg (背景)
- 为客户端机器引导或正确操作所需的目录指定fg。如果前台挂载失败,将在前台重试它,直到成功或中断。所有自动加载的目录都安装在前台;不能使用自动挂载目录指定bg选项。
- 指定bg用于安装客户端不需要引导或正确操作的目录。失败的后台挂载将在后台重新尝试,从而允许挂载进程认为挂载已完成并继续进行下一个挂载。如果您将两台机器配置为彼此挂载目录,则将其中一台机器上的挂载配置为后台挂载。这样,如果两个系统都尝试同时启动,它们就不会陷入死锁,每个系统都等待从另一个系统挂载目录。bg选项不能与自动加载的目录一起使用。
- 默认值是fg。
devs / nodevs
- 如果你是安装设备文件从服务器其设备文件将正确工作在客户端,请使用devs选项。devs选项允许使用NFS挂载的设备文件从NFS客户机读写设备。如果您的所有系统都配置类似,那么它对于维护一组标准的、集中的设备文件非常有用。
- 如果从服务器上挂载的设备文件不能正确地用于读取和写入NFS客户机上的设备,请指定nodevs选项。如果NFS客户机上的进程试图读取或写入NFS安装的设备文件,nodevs选项将生成一个错误。
- 默认值是devs。
timeo=n
- NFS请求的超时,以十分之一秒为单位(读取和写入挂载目录的请求)。如果NFS请求超时,这个超时值将加倍,请求将重新传输。在通过retrans选项指定的次数重新传输NFS请求之后(参见下面),软挂载返回一个错误,而硬挂载重试请求。最大时间o值是30(3秒)。
- 如果您看到多个服务器在几分钟内没有响应消息,请尝试将timeo值加倍。这可能是因为您正在跨网关挂载目录,因为您的服务器很慢,或者因为您的网络忙于处理繁重的流量。
- 默认值为timeo=7
retrans=n
- NFS请求(对挂载目录的读或写请求)超时后重新传输的次数。如果在n次重传之后请求没有成功,软挂载将返回一个错误,而硬挂载将重试请求。
- 增加从服务器软挂载的目录的retrans值,该目录频繁、短时间停机。这使服务器有足够的时间恢复,因此软挂载不会返回错误。
- 默认值是retrans=4。
retry=n
- NFS客户机在第一次尝试失败后尝试挂载目录的次数。如果指定intr,可以在n次重试之前中断挂载。但是,如果指定nointr,则必须等待n次重试,直到挂载成功,或者重新引导系统。
- 如果挂载失败是因为您的服务器非常忙,增加重试值可以修复问题。
- 默认值是retry=1。
rsize=n
- NFS客户机在单个读取请求中从NFS服务器请求的字节数。
- 如果在客户端和服务器之间丢弃数据包,将rsize减小到4096或2048。要查明是否正在删除数据包,请在HP-UX提示符下发出“nfsstat -rc”命令。如果这个命令返回的超时和retrans值很高,但是badxid号接近于零,那么数据包将被丢弃在网络中的某个位置。
- 默认值为rsize=8192。
wsize=n
- NFS客户机在单个写请求中向NFS服务器发送的字节数。
- 如果在客户端和服务器之间丢弃数据包,将wsize减小到4096或2048。要查明是否正在删除数据包,请在HP-UX提示符下发出“nfsstat -rc”命令。如果这个命令返回的超时和retrans值很高,但是badxid号接近于零,那么数据包将被丢弃在网络中的某个位置。
- 默认值是wsize=8192。
O (重叠挂载)
- 允许将文件系统挂载在现有挂载点上,使基础文件系统不可访问。如果尝试在没有-O选项的情况下将文件系统挂载到现有挂载点上,挂载将失败,错误设备将处于繁忙状态。
- 注意:使用-O挂载选项会使系统处于混乱状态。O选项允许您在NFS挂载点下隐藏本地数据,而不会收到任何警告。在常规系统备份期间,NFS挂载点下隐藏的本地数据将不会得到备份。
- 在HP-UX上,-O选项仅对nfs挂载的文件系统有效。因此,如果指定-O选项,还必须为mount命令指定-F nfs选项,或者在/etc/fstab文件中指定nfs文件系统类型。
- 没有为该参数指定默认值。
remount
- 如果文件系统是只读挂载的,此选项将重新挂载它的读/写。这允许您将访问权限从只读更改为读/写,而不必强制每个人离开挂载的目录或杀死使用该目录的所有进程。
- 此参数未指定默认值。
noac
- 如果指定,此选项将防止NFS客户机缓存挂载目录的属性。
- 为许多NFS客户机经常使用的目录指定noac。noac选项确保服务器上的文件和目录属性是最新的,因为客户机上不缓存任何更改。但是,如果使用相同NFS服务器的许多NFS客户机都禁用了属性缓存,那么服务器可能会因属性请求和更新而过载。还可以使用actimeo选项将所有缓存超时设置为少量秒,比如1秒或3秒。
- 如果指定noac,则不要指定其他缓存选项。
- 此参数未指定默认值。
nocto
- 如果指定,此选项将在打开文件时禁用新属性。
- 指定一个从未更改的文件或目录的nocto,以减少网络上的负载。
- 此参数未指定默认值。
acdirmax=n
- NFS客户机上缓存目录属性的最大秒数。当这个超时期间过期时,客户机刷新它的属性缓存,如果属性已经更改,客户机将它们发送到NFS服务器。
- 对于很少更改或只有一个用户拥有和修改的目录,比如用户的主目录,可以通过设置acdirmax=120或更高来减少网络上的负载。
- 默认值是acdirmax=60。
acdirmin=n
- NFS客户机上缓存目录属性的最小秒数。如果在此超时过期之前修改了目录,超时时间将延长acdirmin秒。
- 对于很少更改或仅由一个用户拥有和修改的目录,比如用户的主目录,可以通过设置acdirmin=60或更高来减少网络上的负载。
- 默认值是acdirmin=30。
acregmax=n
- NFS客户机上缓存文件属性的最大秒数。当这个超时期间过期时,客户机刷新它的属性缓存,如果属性已经更改,客户机将它们发送到NFS服务器。
- 对于很少更改或只有一个用户拥有和修改的文件,比如用户的主目录中的文件,可以通过设置acregmax=120或更高来减少网络上的负载。
- 默认值是acregmax=60。
actimeo=n
- 将actimeo设置为n秒相当于将acdirmax、acdirmin、acregmax和acregmin设置为n秒。
- 将actimeo=1或actimeo=3设置为许多NFS客户机经常使用和修改的目录。这确保文件和目录属性保持合理的最新,即使它们经常从不同的客户端位置更改。
- 设置actimeo=120或更高,用于一个很少或从不更改的目录。
- 如果设置actimeo值,不要设置acdirmax、acdirmin、acregmax或acregmin值。
- 此参数未设置默认值。
vers=n
- 要使用的NFS协议的版本。默认情况下,本地NFS客户机将尝试使用NFS version 3挂载文件系统。如果NFS服务器不支持版本3,则将使用版本2挂载文件系统。
- 如果您知道NFS服务器不支持版本3,那么指定vers=2,您将在挂载期间节省时间,因为客户端在使用版本2之前不会尝试使用版本3。
- 参数的默认值是vers=3。
grpid
- 强制挂载文件系统中新创建的文件继承父目录的组ID。
- 默认情况下,新创建的文件继承调用进程的有效组ID,除非在父目录上设置GID位。如果设置了GID位,新文件将继承父目录的组ID。
- 此参数未设置默认值。