
网络盘的功能是使多台服务共享一个文件数据.
NFS是什么?
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS(网络文件系统 Network File System)是一种分布式文件系统协议,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由 Sun 公司(已被 Oracle 收购)开发,于 1984 年发布,最新版本 NFSv4.2 于 2016 年发布。NFS 基于开放网络运算远程过程调用(ONC RPC)协议:一个开放、标准的 RFC 协议,任何人或组织都可以依据标准实现它。
NFS 通常使用在 Unix 操作系统上(比如 Solaris、AIX 及 HP-UX)和其他类 Unix 操作系统(例如 Linux 及 FreeBSD),同时在 macOS 和 Windows 系统也提供了 NFS 实现。不过在 Windows 系统上挂载 NFS 共享目录时,由于 Windows 自带的 NFS 客户端长久以来不支持 UTF-8,会致中文文件和目录显示为乱码。
NFS 的优点是内核直接支持,部署简单、运行稳定,协议简单、传输效率高。
NFS 的缺点是没有加密授权等功能,仅依靠 IP 地址或主机名来决定用户能否挂载共享目录,对具体目录和文件无法进行 ACL 权限控制(NFSv4 以前)。通常的做法是通过 Kerberos 对 NFS 进行认证及加密,不过部署配置比较麻烦。
rpcbind是什么?
- rpcbind工具可以将RPC程序号码和通用地址互相转换。要让某主机能向远程主机的服务发起RPC调用, 则该主机上的rpcbind必须处于已运行状态。
- 当RPC服务启动后,它会告诉rpcbind它监听在哪个地址上,还会告诉它为服务准备好提供的PRC程序 号码。当客户端要向某个给定的程序号码发起RPC调用时,它首先会联系服务端的rpcbind以确定RPC 请求应该发送到哪个地址上。
- rpcbind工具应该在所有RPC管理的服务(rpc service)启动之前启动。一般来说,标准的rpc服务由端 口监视器来启动,因此rpcbind必须在端口监视器被调用之前已经启动完成。
- 当rpcbind工具已经启动后,它会检查特定的name-to-address的转换调用功能是否正确执行。如果失 败,则网络配置数据库会被认为过期,由于RPC管理的服务在这种情况下无法正确运行,rpcbind会输 出这些信息并终止。
另外,rpcbind工具只能由super-user启动
主机(文件服务器)设置
#yum install -y rpcbind nfs-utils
//主机配置文件:
#vi /etc/exports
------------------------------------------------------------------
/storage2 192.168.0.*(rw,no_root_squash,sync)
/storage 192.168.0.130(rw)
/tmp 192.168.0.131(rw,sync,no_root_squash,no_subtree_check)
//将服务端的/storage2目录开放
//开放给后边这个ip,* 表示任意,
//rw代表指定可读写read-write,ro:read-only,只读;
//no_root_squash客户端拥有root权限,
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
//sync
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
------------------------------------------------------
//刷新
#exportfs -r
//启动
service rpcbind restart
service nfs-server restart
//自启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
//查看 RPC 服务的注册状况
#rpcinfo -p localhost
//检测共享文件是否生效
#showmount -e
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/storage80/videos/video1 192.168.0.0/24
/storage80/storage 192.168.0.0/24
/storage80 192.168.0.0/24
固定NFS服务端口 仅主机开放防火墙
//NFS启动时会随机启动多个端口并向RPC注册,这样如果使用防火墙对NFS端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。
vi /etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
NFS服务包括用于允许访问NFS服务器的预定义规则。
#firewall-cmd --permanent --new-zone=nfs
#firewall-cmd --permanent --zone=nfs --add-service=nfs
#firewall-cmd --permanent --zone=nfs --add-service=rpc-bind
#firewall-cmd --permanent --zone=nfs --add-service=mountd
#firewall-cmd --permanent --zone=nfs --add-source=192.168.0.0/24 //允许从192.168.0.0/24子网进行访问
#firewall-cmd --permanent --zone=nfs --add-source=192.168.0.100 //允许100访问主机
#firewall-cmd --reload
#firewall-cmd --list-all --zone=nfs
客户端挂载NFS中共享的目录
#yum install -y rpcbind nfs-utils //测试过了,客户端两个都一定要装
#showmount -e 192.168.0.80
service rpcbind restart
service nfs-server restart
挂载目录
为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议
mount -t nfs -o vers=3 192.168.0.90:/storage2 /storage2 -o proto=tcp -o nolock -r
mount命令详解
mount [-Vh]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,…]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-V: 显示 mount 工具版本号;
-l: 显示已加载的文件系统列表;
-h: 显示帮助信息并退出;
-v: 输出指令执行的详细信息;
-n: 加载没有写入文件/etc/mtab 中的文件系统;
-r: 将文件系统加载为只读模式;
-a: 加载文件/etc/fstab 中配置的所有文件系统;
-o: 指定 mount 挂载扩展参数,常见扩展指令:rw、remount、loop 等,
其中-o 相关指令如下:
-o atime: 系统会在每次读取文档时更新文档时间;
-o noatime: 系统会在每次读取文档时不更新文档时间;
-o defaults: 使用预设的选项 rw,suid,dev,exec,auto,nouser 等;
-o exec 允许执行档被执行;
-o user、-o nouser: 使用者可以执行 mount/umount 的动作;
-o remount: 将已挂载的系统分区重新以其他再次模式挂载;
-o ro: 只读模式挂载;
-o rw: 可读可写模式挂载;
-o loop 使用 loop 模式,把文件当成设备挂载至系统目录。
-o vers = [2|3]
指定 NFS 版本。缺省值是在客户机和服务器之间使用的 NFS 协议的版本,是在两个系统上可获得的最大值。如果 NFS 服务器不支持 NFS V3, NFS 安装将使用 NFS V2。使用 vers = [2|3] 选项选择 NFS 版本。此选项只用在 AIX 4.2.1 或以后版本。
-o proto=[udp|tcp]
指定传输协议。AIX 4.2.1 NFS 安装使用的缺省传输协议如果在服务器上有则是 udp。对于 AIX 4.3 或以后版本缺省值是 tcp。 使用 proto=[udp|tcp] 选项覆盖缺省值。此选项只用在 AIX 4.2.1 或以后版本。
-o nolock表示禁用nfs locking,不启用lock
-t: 指定 mount 挂载设备类型,常见类型 nfs、ntfs-3g、vfat、iso9660 等,
其中-t 相关指令如下:
iso9660 光盘或光盘镜像;
msdos Fat16 文件系统;
vfat Fat32 文件系统;
企业常用 Mount 案例
mount /dev/sdb1 /data 挂载/dev/sdb1 分区至/data/目录
mount /dev/cdrom /mnt 挂载 Cdrom 光盘至/mnt 目录;
mount -t ntfs-3g /dev/sdc /data1 挂载/dev/sdc 移动硬盘至/data1 目录;
mount -o remount,rw / 重新以读写模式挂载/系统;
mount -t iso9660 -o loop centos7.iso /mnt 将 centos7.iso 镜像文件挂载至/mnt 目录;
mount -t fat32 /dev/sdd1 /mnt 将 U 盘/dev/sdd1 挂载至/mnt/目录;
mount -t nfs 192.168.1.11:/data/ /mnt 将远程 192.168.1.11:/data目录挂载至本地/mnt目录。
挂接光盘镜像文件
1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
2、将文件和目录制作成光盘镜像文件,执行下面的命令。
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk
3、光盘镜像文件的挂接(mount)
#mkdir /mnt/vcdrom
注:建立一个目录用来作挂接点(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。