NFS设置和共享目录
架构
在Linux平台,NFS共享是内置且使用非常方便的共享文件模式,但是NFS v3也存在安全权限设置简单(仅通过gid/uid区分权限,仅通过IP地址安全限制),无法满足动态IP客户端访问。
所以结合sshfs和NFS以及NAT模式的kvm虚拟化环境,构建以下
远程开发的桌面系统由于DHCP获得的IP地址不固定,所以较难实现通过IP来认证和限制安全访问。所以远程开发桌面系统采用sshfs来访问物理服务器上共享目录,通过ssh认证实现安全。
采用libvirt的NAT模式,虚拟机访问物理服务器NFS共享目录是可以固定IP地址,并且NAT模式也确保了虚拟机不会被物理网络中非授权客户端访问,在物理服务器上设置共享目录的NFS只对NAT网段开放。
NFS设置
物理服务器设置
/etc/exports
配置如下
这里网段
192.168.122.0/24
是libvirt默认的NAT网段,只有该物理服务器上的虚拟机能够访问,屏蔽了外部物理网络访问,所以可以保证NFS访问安全性。
设置nfs相关服务在操作系统启动时启动
启动nfs服务
NFS挂载(虚拟机访问物理服务器上NFS共享)
在开发环境kvm虚拟机上,编辑
/etc/fstab
配置挂载NFS共享目录(即挂载这个虚拟机所在物理服务器的共享目录)
执行挂载
在个人目录下创建软链接,链接到共享目录下子目录,以便后续使用
这样huatai
用户登录系统后,只需要简单访问~/works
目录,就可以将该目录作为开发目录使用,并且与其他虚拟机共享,也可以通过sshfs访问这个物理服务器共享目录。
Docker共享目录
如果原先的docker容器已经在运行,则可以先制作镜像,然后通过镜像再次启动容器以便能够共享存储
详细的Docker卷
Docker容器的外部TCP访问通过host主机HAProxy实现,这样可以不必依赖复杂的Docker端口映射。
sshfs
桌面电脑的用户账号是
huatai
(uid=1000,gid=1000),远程服务器的用户账号是admin
(uid=505,gid=505);所有容器中用户账号都是admin
(uid=505,gid=505)桌面通过
ssh admin@server_ip
访问服务器,挂载sshfs,这样就可以统一访问所有的虚拟机的数据目录
远程服务器运行Docker环境,所有容器共享卷位于
/var/lib/docker/volumes/share-data/_data
- 参考 Docker卷
远程服务器目录权限设置
远程docker需要配合设置:首先将
admin
用户加入到root
用户组,然后修改docker目录使得root
组用户能够访问 - 这是因为Docker目录的安全设置,默认只有root用户可以访问俄,root组则只能只读访问,修改以后,则root组用户可以在其中子目录中读写文件,方便远程共享访问。
执行sshfs挂载
如果远程主机的ssh端口是9876,则
sshfs
命令还可以加上参数-p 9876
卸载sshfs挂载
参考
Last updated