NFS服务器搭建
实验搭建了NFS服务器
Samba 服务器可以用于 Linux 和 Windows 之间的文件共享,而 NFS 可以用于 Linux 之间的文件共享
以后肯定会用到的知识,做个笔记吧
搭建 NFS 服务器
注意
: 为了客户端能够连接上服务器,记得防火墙方行或者关闭防火墙
软件安装
Arch Linux 只需要安装 nfs-utils
1 |
|
RHEL 需要 rpcbind, nfs-utils 两个软件
1 |
|
创建共享目录
出于安全考虑,建议定义一个单独的目录为NFS根,这可以将用户限制在该挂载点中,绑定的挂载点(bind mounts)将文件系统上别处的目录与被分享的挂载点连接起来
此时就需要用到 mount
命令的 bind
参数了
1 |
|
自动挂载共享目录,编辑 /etc/fstab
1 |
|
mount bind 命令
这也是我第一次知道这个参数的,在看了这个参数的描述后,发现这个方式来可以实现目录的”硬连接”,之所以硬链接打了引号,是因为目录不能做硬链接
众所周知,软连接可以对目录进行操作,但是软连接可以理解为 Windows 中的快捷方式,所以并不能实现从一个位置访问另外一个位置的文件的功能
但是,硬链接可以做到,然而硬链接只能对文件进行操作,不能对目录进行操作,当然,我们可以通过如下命令对一个目录下的所有的文件做硬链接
1 |
|
- cp 复制
- -l 硬链接复制
虽然这样可以做到把一堆文件做到从 /foo 硬链接到 /bar 下,但是如果我对其中一个目录下的文件进行删除,或者创建新的文件,另外一个目录可以做到同步吗,答案是否定的,这时候 mount bind 就派上用场了
1 |
|
通过 --bind
参数,将 /bar 目录作为 /foo 目录的一个镜像目录
这就很容易理解了,名字描述的很清楚了,就是作为一个镜像,一个改变了,另外一个就跟着改变
这还不是 bind 的最好使用方法,在创建某一个目录的镜像后,它的挂载点中的文件就会被屏蔽掉,注意不是消失,而是被屏蔽了,消挂载后又会出现
通过这种方式,可以用来做测试操作,假如要对 /etc 下某文件进行修改测试,但是又怕改错了导致服务崩溃,这时就可以用 mount bind 了
1 |
|
- -a 保留链接、文件属性,并复制目录下的所有内容
此时对 /etc 下的任何修改都不会影响的原来的配置,因为原来的配置都被屏蔽了,现在的操作都是对 /tmp/etc 的文件进行操作
测试结束后,取消挂载,原 /etc 下的文件又会重新出现,没有做任何修改
1 |
|
通过 mount bind 来挂载共享目录可以将 NFS 的所有共享目录都在一个根 NFS 目录下
这样可以让程序运行起来更加安全,而且资源也更容易管理
编辑配置文件
NFS 的配置文件为 /etc/exports
配置的格式如下
1 |
|
权限选项:
- rw:读写
- ro:只读
- sync:同步模式,内存数据实时写入磁盘
- async:非同步模式,它会每隔一段时间才会将数据刷新到磁盘
- no_root_squash:客户端挂载NFS共享目录后,root用户不受约束,权限很大
- root_squash:客户端上的root用户受到约束,被限定成某个普通用户
- all_squash客户端上所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
- anonuid:定义被限定用户的uid
- anongid:定义被限定用户的gid
example1:
1 |
|
对于 /srv/nfs/music
目录,192.168.1.0/24 这个网段下的主机拥有读写权限,且内存数据实时写入磁盘
example2:
1 |
|
对于 /srv/nfs/movie
目录,192.168.2.0/24 这个网段的主机拥有只读权限,且所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
而 nero 这台主机拥有读写权限,所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户,并指定该普通用户的uid为65534,gid为65534
启用并运行服务
Arch Linux 运行如下命令
1 |
|
RHEL 运行如下命令
1 |
|
客户端挂载 NFS 共享目录
安装客户端
Arch Linux 需要安装 nfs-utils
1 |
|
RHEL 也只需要安装 nfs-utils
1 |
|
挂载共享目录,假设服务器地址为 192.168.10.10/24
1 |
|
这样共享目录就被挂载到了客户端
两个文件共享系统都学了一些,这样以后的文件共享的方法又有了新的方式
对于一个仓鼠来讲,存储容量是一大要务,文件存储后的共享更是一大要务 ٩(ˊᗜˋ*)و