【服务器管理】Ubuntu实现目录手动挂载和自动挂载
鉴于本人需要开始服务器管理生涯,故此整理一系列关于服务器管理的知识等,作为个人技术笔记,也希望对同行有帮助。需要注意的是,本人是在 Ubuntu,特别是Ubuntu16.04下,进行服务器管理的!
一、什么是挂载?
挂载:指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。
针对服务器管理,本文主要解决以下问题:我在服务器上的其中一个服务器端节点/主机(假如这个节点是110.xxx.yyy.145)对应的硬件设备为10TB,我希望用户登录其他客户端节点/主机的时候,能通过某个文件夹,实现读写110.123.86.145节点上的某个文件夹。也就是,我希望把110.xxx.yyy.145这个节点/主机的某个文件夹挂载到其他节点/主机。
进一步给出后文具体示例:在110.123.86.145上创建文件夹/home/145dataset,在110.xxx.yyy.155、110.xxx.yyy.156上创建/145Dataset,并且实现访问110.xxx.yyy.155、110.xxx.yyy.156上的145Dataset等同于访问110.xxx.yyy.145上的145dataset。
二、配置服务器端的共享文件夹
1、在服务器端(110.xxx.yyy.145)创建需要挂载的文件夹/目录:
cd /home
sudo mkdir 145dataset
2、打开/etc/exports 文件,进行配置:
sudo vim /etc/exports
在/etc/exports文件当中的最后一行,添加
/home/145dataset *(rw,no_root_squash,no_all_squash,sync)
该语句说明:
参数 | 说明 |
---|---|
/home/145dataset | 要共享的目录 |
* | 代表限制访问的ip段,这里代表所有人可以访问,可以填110.xxx.yyy.145/24 、110.xxx.yyy.*等。 |
括号内第1个参数 | 填 rw或ro ,该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关 |
括号内第2个参数 | no_root_squash:客户端用root访问该共享文件夹时,不映射root用户;root_squash:客户端用root用户访问该共享文件夹时,将root用户映射成匿名用户 |
括号内第3个参数 | all_squash:不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户;no_all_squash:并非所有用户的身份都会被压缩成为匿名用户 |
括号内第4个参数 | sync:资料同步写入到内存与硬盘中;async:资料会先暂存于内存中,而非直接写入硬盘 |
以上为常用参数,更多参数可以自行搜索/etc/exports文件中可以设定的参数
。
3、刷新配置并且重启NFS
exportfs -r
service nfs restart
如果报错:
exportfs: could not open /var/lib/nfs/.etab.lock for locking: errno 13 (Permission denied)
exportfs: can't lock /var/lib/nfs/etab for writing
则使用超级用户模式
sudo exportfs -r
sudo service nfs restart
另外,可能因为版本原因,你需要使用nfs-kernel-server
代替nfs
,也就是使用以下语句刷新配置并且重启NFS:
sudo exportfs -r
sudo service nfs-kernel-server restart
4、查看主机的 /etc/exports 所分享的目录数据是否更新:
showmount -e localhost
终端返回如下结果,说明已经成功配置服务器端的/home/145dataset为共享文件夹:
Export list for localhost:
/home/145dataset *
三、客户端实现手动挂载服务端的目录
1、在110.xxx.yyy.155、110.xxx.yyy.156上分别创建/145Dataset,这个目录我们把它叫做110.xxx.yyy.145:/home/145dataset的挂载点:
ssh rootusername@110.xxx.yyy.155 # rootusername就是你的root用户账号名
su # 使用su或者sudo进入超级用户模式
cd / # 切换到根目录
sudo mkdir 145Dataset # 创建挂载点
sudo chmod 777 145Dataset # 修改目录的读写权限
2、查看服务器抛出的共享目录信息
showmount -e 110.xxx.yyy.145
返回如下结果:
Export list for 110.xxx.yyy.145:
/home/145dataset *
3、挂载目录:
sudo mount -t nfs -o vers=3 110.xxx.yyy.145:/home/145dataset /145Dataset -o proto=tcp -o nolock
上述命令只需要修改IP:共享目录以及挂载点,也就是110.xxx.yyy.145:/home/145dataset /145Dataset
4、查看挂载结果:
df -h # \查看当前主机的挂载情况
你可以在打印信息中找到:
Filesystem Size Used Avail Use% Mounted on
...
110.xxx.yyy.145:/home/145dataset 7.3T 92M 6.9T 1% /144Dataset
四、客户端实现自动挂载服务端的目录
磁盘被手动挂载之后,我们还必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。
系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中,我们就不需要每次开机启动之后手动进行挂载了。
1、修改 /etc/fstab:
ssh rootusername@110.xxx.yyy.155 # rootusername就是你的root用户账号名
su # 使用su或者sudo进入超级用户模式
vim /etc/fstab
在文件尾部添加下列语句:
110.xxx.yyy.145:/home/145dataset /145Dataset nfs rw,defaults,bg 0 0
这里,你需要把110.xxx.yyy.145
换成你的服务器端的IP,把/home/145dataset
换成需要共享的目录,把/145Dataset
换成当前客户端的挂载点。
退出并保存!
2、将/etc/fstab的所有内容重新加载:
mount -a # 重新加载/etc/fstab
df -h # \查看当前主机的挂载情况
五、日常管理共享目录
当我们需要了解服务器端的共享目录与客户端的 NFS 联机分享的状态时,=可以使用下列命令:
ssh rootusername@110.xxx.yyy.145 # 进入服务器端主机
showmount -a localhost # 查看联机分享的状态
终端返回以下内容:
All mount points on localhost:
110.xxx.yyy.155:/home/145dataset
110.xxx.yyy.156:/home/145dataset
...
本篇博文所有IP均为虚构!!!
【作者简介】陈艺荣,男,目前在华南理工大学电子与信息学院广东省人体数据科学工程技术研究中心攻读博士,担任IEEE Access、IEEE Photonics Journal的审稿人。两次获得美国大学生数学建模竞赛(MCM)一等奖,获得2017年全国大学生数学建模竞赛(广东赛区)一等奖、2018年广东省大学生电子设计竞赛一等奖等科技竞赛奖项,主持一项2017-2019年国家级大学生创新训练项目获得优秀结题,参与两项广东大学生科技创新培育专项资金、一项2018-2019年国家级大学生创新训练项目获得良好结题,发表SCI论文3篇,授权实用新型专利8项,受理发明专利13项。
我的主页
我的Github
我的CSDN博客
我的Linkedin