【问题标题】:AWS EC2: Moving /var to EBSAWS EC2:将 /var 移至 EBS
【发布时间】:2015-10-24 05:04:53
【问题描述】:

在过去的 5 个小时左右,我一直在用头撞墙。

我使用 Plesk 安装了全新的 Centos 6。机器启动后,我会尝试将 /var 文件夹移动到附加的 EBS (/dev/xvdj):

#copy original /var to /dev/xvdj
mkdir /mnt/new
mount /dev/xvdj /mnt/new
cd /var
cp -Rax * /mnt/new
cd /
mv var var.old
#mount EBS as new /var
umount /dev/xvdj
mkdir /var
mount /dev/xvdj /var

我知道在移动 /var 之前,我应该将实例启动到运行级别 1(单用户),以防止从 /var 写入和读取任何内容。但是,这使我无法接触到我很难学会的实例。

我试图手动停止 mysql、webserver 和邮件服务器,但是在我移动 /var 后我无法恢复这些服务,当我尝试启动时它们只是声明 [FAILED]。他们也不会在/var/log 中写入任何内容。乍一看,/var 内的目录权限看起来不错,符号链接也存在。

有什么想法吗?

【问题讨论】:

  • 您应该会发现,除非您停止并启动 syslog 服务,否则 syslogs 仍将进入 /old.var/log。重命名一个目录不会改变它下面已经打开的文件的任何内容——它们仍然会在新路径上打开,直到被打开它们的进程关闭。另外,您是否在复制文件之前停止了 MySQL 等?
  • 好的,谢谢。这解释了丢失的 mysql 日志 - 将查看 var.old。是的,我确实在移动之前停止了 MySQL 和其他服务。知道如何在移动之前停止一切吗?您提到了 syslog,可能还有其他的。

标签: linux amazon-web-services amazon-ec2 centos plesk


【解决方案1】:

最好的方法可能是离线。从第一个实例中分离您的 EBS 磁盘,附加到另一个实例,挂载它们并进行更改,包括根 EBS 的 fstab。然后,将其分离并再次附加到原始实例并启动。我会那样做。

【讨论】:

  • 这个主意不错,下次我试试。我最终发现了这个问题 - Selinux 已启用并阻止所有类型的东西在 /var 以外的不同位置运行!在尝试让 selinux 工作后,我认为这将是一项不平凡的工作。所以我switched it off。我猜对安全性不太好,但至少我的设置现在可以工作了。此外,我将 vhost、mysql、邮件和 psa 转储链接到 EBS 上的各个目录,而不是整个 /var
  • pre-systemd 在停止几乎所有内容后,我只会在单一用户中执行此操作,但 systemd 使这变得困难。这是上面最好的建议。
【解决方案2】:

这是所有企业客户非常普遍的要求,拥有单独的分区确实有助于在任何给定时间点增加卷大小。

大多数人在进行分区后会遇到 SSH 连接问题,这时他们使用更通用的方法进行分区。

我为此专门写了一篇博客,详细介绍了在 AWS EBS 上执行此类操作的分步过程。

Steps to create separate /var partition on AWS EBS volume

此外,如果您选择使用 LVM 进行分区,那么这里还有一篇文章,其中包含详细的分步过程和屏幕截图。

Create root swap and LVM partition on AWS EBS volume

希望这会有所帮助! :)

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2018-12-29
    • 2015-01-10
    • 2018-09-17
    • 2015-12-16
    • 2019-06-07
    • 2015-10-07
    • 2022-01-05
    • 2017-12-05
    相关资源
    最近更新 更多