1.前言
需求一:我们本地的硬盘空间不够用了,需要挂载到其他服务器的硬盘,实现把远端的硬盘当做本地硬盘来使用
需求二:我们通常使用ssh连接登录服务器,如果登录的服务器不止一个,一个一个来回切换会显得麻烦,可以使用将目录挂载到本地,就可以对远端的服务器进行操作
需求三:挂载是可以挂载了,如何做到开机自启呢?(这里有个小小的坑让我来给大家踩吧)
2.安装sshfs
#首先需要安装fuse和sshfs [root@test ~]# yum install -y fuse-sshfs.x86_64
3.手动挂载测试
[root@test ~]# sshfs root@192.168.1.126:/root /data/ -o allow_other -o reconnect root@192.168.1.126 s password: #这边输入目标服务器的密码 #root@192.168.1.126:/root ——目标服务器的root家目录路径 #/data ——本地挂载的路径 #后面的-o 是参数 #-o allow_other ——挂载过来的目录非root能够访问(这个必须要加的 很重要!) #-o reconnect ——断网自动重连 [root@test ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 root@192.168.1.126:/root 30G 3.5G 27G 12% /data
4.开机自启自动挂载
#创建个脚本文件 [root@test ~]# touch /opt/mount.sh [root@test ~]# vim /opt/mount.sh echo 123456 | sshfs root@192.168.1.126:/root /data/ -o allow_other -o reconnect -o password_stdin #后面加个参数 -o password_stdin ,前面加个 echo + 目标服务器密码, 意思是不需要输目标服务器密码免密挂载 123456就是我服务器192.168.1.126的密码 #给脚本执行权限 [root@test ~]# chmod +x /opt/mount.sh #脚本执行脚本放到开机自启配置文件里并给执行权限 [root@test ~]# echo sh /opt/mount.sh >> /etc/rc.d/rc.local [root@test ~]# chmod +x /etc/rc.d/rc.local
扩展:取消挂载命令
#两个方式取消挂载,第一个是基于fuse-sshfs的取消挂载命令 [root@test ~]# fusermount -u /data #或者 [root@test ~]# umount /data
5.完成,重启测试
说明一下为什么要用脚本方式自启
这里就是那个坑,网上有很多人写在fstab里面挂载,我进行N遍测试,采取了N种方法!发现这就是坑!
原因是什么呢?sshfs是基于ssh网络传输的,fstab配置文件在网络加载之前自动的,网络都没有加载好,fstab怎么可能成功?
不明白为什么很多人会选择那种方式?
然后又有人说了,在fstab可以添加_netdev条目,告诉系统这个是网络设备,等网络服务启动完成后再尝试进行挂载
我特么试了,还是不行,感觉还是脚本香。