解决办法之Linux新硬盘挂载某目录后原目录的文件消失 | 您所在的位置:网站首页 › 文件夹空的里面有文件 › 解决办法之Linux新硬盘挂载某目录后原目录的文件消失 |
问题描述
项目初期用户文件较少,全部存储在/home目录下 /home目录没有单独划开分区,随着项目网站做大,用户文件越来越多,/home目录不够空间,想挂载一个新硬盘来负责储存 挂载硬盘1、若挂载到一个新的目录下, 请查看原先的博客:挂载硬盘处理 2、若挂载到一个原先有文件的目录下(以挂载到 /home为例子) 当挂载时候发现新挂载/home到新硬盘时,/home原来数据变空了 原因:是由于linux的VFS(虚拟文件系统)机制导致的 正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。 3、处理 处理思路: (1)先将硬盘挂载到一个新建的空目录作为跳板目录 先建立一个空白目录,作跳板 mkdir /new(2)将硬盘先挂载到跳板目录上 首先要查看硬盘是否挂载及其名称 lsblk得知目录名称的/dev/sdb (3)将原要挂载的目录中所有文件复制过来 复制/home目录(你原本想挂载的目录)所有数据到/new先 cp -R /home/* /new(3)删除原目录下的所有文件 删除原先的文件,可选,主要为了腾出空间给原来的硬盘 rm -rf /home/*(4)将硬盘挂载到原要挂载的目录 挂载/home mount /dev/sdb /home此时你会神奇的发现之前的/home目录文件已经全部转移过来了,也许你会有点疑问,我并没有复制或移动/new文件到新挂载的/home目录啊,其实此时的/home目录相当于/new目录的硬链接,可以测试下mkdir /new/test 你会发现/home目录也存在test (5)删除跳板目录 解除跳板目录挂载,可能会出现占用无法删除,可以使用 umount -fl 强行卸载, umount /new -f 强制卸载 -l 一空闲马上卸载所有占用的文件系统。 删除跳板目录 rm -rf /new 设置开机自动启动挂载使用以上方法挂载分区,重启系统之后,分区并不会自动挂载 需要修改 /etc/fstab配置文件。为配置/etc/fstab,我们需要先获取硬盘的uuid 首先获取磁盘的uuid ls -l /dev/disk/by-uuid接下来,我们将先备份原有的 /etc/fstab 文件 这一步非常重要,因为如果后面需要取下硬盘,会导致无法进入系统,这时需要恢复该文件 sudo cp /etc/fstab /etc/fstab.bak然后编辑 /etc/fstab 文件, vim /etc/fstab将以下内容添加到 /etc/fstab 末尾 UUID=fac1d540-30fd-46d7-a834-a13941f80bac /home/sjtuer/MechanicalHardDrive ext4 defaults 0 2这里配置的含义如下: UUID 为硬盘分区的 UUID 值 路径 为挂载的目标路径 分区格式 这里一般为 ext4 挂载参数 一般为默认 defaults 备份 0为不备份, 1为每天备份,2为不定期备份 检测 0为不检测,其他为优先级 修改权限这周挂载,原本目录的文件夹权限会统一变为root权限 若根据需要可进行修改,常用命令如下: chmod u=rwx,g=rw,o=r 文件/目录名:所有者有读写执行,组有读写,其他组只有读 chmod u-x,g+x 文件/目录名:给所有者去掉执行权限,组加上执行权限 chmod a+r 文件/目录名:给三种类型都加上读权限 chmod 777 文件/目录名:所有者有读写执行 chown 用户名 文件名:改变文件的所有者 chown -R 用户名 目录名:改变目录下的所有文件、目录的所有者 chown 用户名:组名 文件名:改变文件的所有者和所在组 chgrp -R 组名 文件名/目录名称:改变目录下的所有文件的所在组 题外话小潘的个人微信公众号【小潘学程序】,有兴趣可给个关注~ 一起学习,一起成长 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |