一台linux服务器挂载另外一台linux服务器文件系统

目标:在服务器A上访问服务器B上指定的文件系统

服务器B配置步骤:

1、编辑/etc/exports 

格式:共享目录     指定共享对象(共享参数)

例: /data/nfs   192.168.1.240(rw,sync)

将 /data/nfs 目录 共享给192.168.1.240 ,客户端权限rw

其中共享对象可以用通配符,比如 * 代表所有地址。

配置参数:

rw: 读写

ro :只读

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:是大数据时使用,是先写到缓存区,必要时再写到磁盘里。

all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;

root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
 
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
 
subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check(默认):即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

2、查看是否安装rpcbind 和 nfs

rpm -qa |grep nfs

rpm -qa |grep rpcbind

Linux安装配置NFS方法

 3、使用yum -y install nfs-utils rpcbind命令进行安装 nfs 和 rpcbind

 Linux安装配置NFS方法

 4、关闭防火墙

 5、启动服务,一定要先启动rpc再启动nfs

nfs需要向rpc注册,rpc一旦重启,所以注册的文件都丢失,其他向注册的服务都需要重启

启动rpc服务:

systemctl start rpcbind.service      

启动nfs服务: 

systemctl start nfs.service

Linux安装配置NFS方法

查询nfs挂载,showmount  -e  192.168.1.240 后面可以接ip来查看。

[root@localhost data]# showmount -e
Export list for localhost:
/data/nfs 192.168.1.240

NFS服务开启后,查看共享目录参数

[root@localhost data]# cat /var/lib/nfs/etab
/data/nfs   192.168.1.240(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

让nfs服务开机启动

[root@localhost ~]# chkconfig rpcbind on
[root@localhost ~]# chkconfig nfs on
 
[root@localhost ~]# chkconfig --list rpcbind
rpcbind 0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost ~]# chkconfig --list nfs
nfs 0:off   1:off   2:on    3:on    4:on    5:on    6:off

 服务器A配置步骤:

1、查看是否安装rpcbind 和 nfs

2、使用yum -y install nfs-utils rpcbind命令进行安装 nfs 和 rpcbind

3、启动rpcbind,nfs可以不启动

4、客户端挂载nfs共享目录

mount -t nfs4 192.168.1.240:/data/nfs  /nfs    #挂载服务器B的/data/nfs 目录到服务器A的 /nfs

5、查看磁盘

1
2
3
4
5
6
7
8
[root@centos68 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.5G  2.0G  7.1G  22% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             190M   33M  147M  19% /boot
/dev/sdb1             4.8G   11M  4.6G   1% /data
192.168.1.240:/data/nfs
                      2.9G  2.7G  126M  96% /nfs  # nfs挂载信息

 注:一般不将nfs挂载信息写入fstab,因为nfs依赖于rpc服务,rpc服务启动晚于fstab时会出错。可以将挂载信息写入 /etc/rc.local

 vim  /etc/rc.local

mount -t nfs 192.168.1.240:/data/nfs  /data/nfs
 
参考以上配置,在服务器A中可以查看到服务器B目录;
若 docker 容器挂载服务器A目录且docker 容器在mount之前先启动,这时候进入容器内部无法在挂载的目录下查看到文件;重启容器在进入可以查看到远程目录文件
若在docker 容器内部执行mount -t nfs4 192.168.1.240:/data/nfs /data/nfs ,这时候是可以在容器内部可以查看到远程目录文件;在宿主机上无法看到远程目录文件。
卸载挂载目录命令:umount /data/nfs
 
注:还需注意,此容器需添加--privileged参数表示容器的用户有SYS_ADMIN权限,此时才可顺利的执行mount命令。
 
 
原文地址:https://www.cnblogs.com/burro/p/10444087.html