将tmp文件夹从“ /”分区移至已挂载的分区(/ mnt)


15

我有一个Amazon EC2实例,它为我提供了一个很小的'/'分区和一个很大的'/ mnt'分区。因此,我已将mysql数据目录移至/ mnt分区。但是,我现在在大型联接查询中/ tmp文件夹空间不足时遇到了问题,并且正在尝试将/ tmp移至/ mnt / tmp。我试图通过符号链接来做到这一点,但这导致mysql服务无法启动。

请提供有关如何将/ tmp的存储移至/ mnt(/ dev / xvdb)的建议

Answers:


15

您可以将/tmp挂载点绑定到/mnt/tmp

sudo mount -B /tmp /mnt/tmp

太棒了!一旦知道了就很容易。
Programster

4
您必须非常了解的一件事是/ mnt分区是临时存储。如果停止实例(或实例降级并由AWS移动),则/ mnt中的数据将丢失。建议(尤其是对于您的MySQL)挂载EBS卷,并将其用于要持久化的数据。
凯文·威洛克

@KevinWillock我认为他的/mnt(按大小)是持久的(或他在其中安装了持久的东西),因为他实际上是在那里保存数据。顺便说一句,您实际上可能想(使用@)对他进行ping操作,因为我几乎可以确定没有对它进行ping操作。
Braiam

@Braiam我没有被ping通,但是运气再次检查了这个线程。凯文(Kevin)认为这是临时存储是正确的。我知道这是非常不安全的,但是是为了测试使用本地存储的性能而故意进行的。如果要使用这样的系统,我将确保复制到EBS卷或RDS本身并从那里备份。我很清楚这种风险。
Programster

1
我是否需要在每次重新启动时执行该命令?
hithwen14年

3

移动“ / tmp”分区需要在此错误答案/ubuntu//a/371628/298086中未建议的一些额外建议。

移动数据意味着一旦将其克隆到目标地址,就从原始分区中擦除数据,这绝对不是绑定安装执行的操作。

建议:如果您想了解什么是绑定安装,阅读这篇精彩的文章/unix//a/198591

如果尝试使用正确的 挂载选项(“ MOVE”,不绑定):

mount -M /tmp /mnt/tmp

我坚信它将无法报告“ tmp是共享的安装点 ”(这实际上意味着“ 如果仍然有任何进程在使用它,我将无法移动它 ”)

您要查找的“答案”可能需要在移动内容之前使用/访问/ tmp停止和重新启动服务。

您可以通过运行以下列表列出这些服务/进程:

lsof +D /tmp/

因此,一旦列出了实际访问/使用的内容/tmp,便是您真正可以决定“如何采取行动”的时候。

我认为最安全的路过

  1. 停止所有访问/ tmp的服务(如果可以的话)
  2. 完全将/ tmp内容复制到新位置
  3. 编辑/ etc / fstab并更改/ tmp安装点的物理位置(无论是绑定安装还是设备安装)
  4. 重新启动系统以执行重新安装

但是还有另一种方法不需要系统重新启动,但是不像以前那样安全。据这里描述,由在umounting /tmp在一个慵懒的方式,我应该让你执行mount -M

这两个链接将对您的需求有所帮助:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.