当前位置: 首页 > Linux

Linux不改变目录结构,将主目录移动到新分区

时间:2023-04-06 11:08:58 Linux

问题是公司的开发测试服务器部署在阿里云上。阿里云给的例子一般只有一个分区,20G到40G,然后买存储挂载到其他目录。主目录在以下20G目录分区下。随着开发人员的增多,根目录分区很快就被大家填满了。因为很多地方都在开发,所以需要一个非感性的解决方案来解决大家的搬家问题。接到这个任务的基本原理,首先想到的是bind挂载方式:mount--bind/some/where/else/where可以实现非感知搬家。感觉搜索中文没有把这个命令解释的太清楚。这个问答比较清楚。英语好的同学可以参考一下。当然也可以问“男人”:manmount具体操作首先,选择一个夜深人静的时间,使用who命令查看是否还有小孩还在服务器上不肯离开,调用到一一清除字段:$whoFrodopts/02017-04-1709:07(xx.xxx.xxx.xx)Sampts/12017-04-1808:45(xx.xxx.xxx.xx)Pippinpts/32017-04-1809:06(xx.xxx.xxx.xx)Merrypts/42017-04-1809:07(xx.xxx.xxx.xx)确认周围没有人后,开始移动(复制)。使用cp命令复制时,记得带上-p参数,保持文件权限设置。使用root权限,假设目标分区是/new_disk:#cp-p-r/home/new_disk/新家建好了,我们先给老家再弄个门牌号,免得给完房子新家的号码,我找不到旧家。使用mount--bind将原来的home目录挂载到一个新的目录:#mkdir/home_bkp#mount--bind/home/home_bkp这时候,我们可以使用/home_bkp这个目录下的旧home中查找所有文件.您可以将门牌号/home给新家:#mount--bind/new_disk/home/home移动完成!你可以告诉你的朋友你正在愉快地工作。其实不用通知大家,搬家这件事其实大家都无所谓。我知道。当然,有同学会问,新房子的门牌号和老房子一样,都是/home,怎么知道是否搬家成功呢?可以使用df命令确认:#cd/home_bkp#df-h.FilesystemSizeUsedAvailUse%Mountedon/dev/xvda120G17G2.1G90%/#cd/home#df-h.FilesystemSizeUsedAvail使用%Mountedon/dev/xvdb1296G42G240G15%/new_disk-h是人类可读的,如果不加,列出的单元就是“反人类”块。上面的命令,先去老家看看,挂载点是/;然后去新家,挂载点是/new_disk。现在你可以放心了,持久化工作还没有完成。上面的工作只是保证当前新的家庭住址发生变化。但是重启之后,这个信息就会丢失,home地址又改回来了。我们需要找到一种方法来保留这些信息。修改/etc/fstab文件。打开这个文件,在末尾添加如下两行:/home/home_bkpnonebind00/new_disk/home/homenonebind00就完成了home切换分区的全部工作。后记这个方案是心血来潮想出来的,没有找到前车之鉴,也不知道会不会有坑……目前这个方案下的服务器已经运行了将近一年了,一直没有问题。大家工作的很开心,很多人甚至都不知道有这么一个东西。Home项目的目录/home_bkp执行了一个月,没有出现问题,所以清空腾出空间。如果哪位高手路过,发现问题,请留言指点。