Linux系统下如何利用数据盘承接系统盘下的业务数据

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如果您的系统盘因写入不断增长的业务数据而导致压力激增,希望利用数据盘承接特定目录下的业务数据,缓解系统盘负担。您可参考本文进行操作。本文档将详细阐述如何将特定目录下的业务数据转移至数据盘,并利用数据盘承接后续写入该目录下的业务数据。

警告

此文档涉及原有系统目录下数据的迁移,可能会影响您业务系统的正常运行。强烈建议您直接扩容系统盘以缓解系统盘压力,具体操作,请参见步骤一:扩容云盘容量

前提条件

  • 请确保系统盘使用率未达到100%。

    重要

    为确保操作顺利进行,请登录实例并执行df -h命令,以确认根分区的使用率未达到100%。如根分区的使用率已达到100%,请参见解决Linux实例磁盘空间满问题以获取相应的解决方案。

  • 请确保数据盘满足以下条件:

    • 状态为使用中(In_use)。

    • 已完成初始化操作,但未挂载文件系统。具体操作,您可查看初始化数据盘(Linux)

本文档以在Alibaba Cloud Linux 3.2104下,将储存在/userdata下的业务数据转移到/dev/vdb1为例,您需要根据实际情况替换分区或设备名称及目标目录名称。

流程指引

image

操作步骤

步骤一:系统盘数据备份

为避免操作过程中误操作导致数据丢失,建议您提前为系统盘创建快照,做好数据备份。具体操作,请参见创建快照

说明

使用快照会产生计费,更多信息,请参见快照计费

步骤二:复制业务数据至数据盘

  1. 运行以下命令新建文件目录/temporary,并将数据盘分区挂载至此目录下。请根据实际情况修改数据盘分区名称。

    sudo mkdir /temporary
    sudo mount /dev/vdb1 /temporary
  2. 将目标目录/userdata下数据备份至数据盘挂载的/temporary中。请根据实际情况修改目标目录名称。

    sudo cp -v /userdata/* /temporary

    或者您也可以额外安装rsync工具,用于文件复制及进度查看。

    sudo yum install -y rsync
    rsync --progress /userdata/* /temporary

步骤三:将数据盘挂载点设置为业务数据目录

  1. 步骤二完成复制后,执行以下指令,卸载/temporary目录节点。

    sudo umount /temporary
  2. 执行以下命令将目标目录/userdata改名为/userdata_bak,用作短期备份,防止数据迁移出现异常情况。

    sudo mv /userdata /userdata_bak
    警告

    该步骤会改变原目录节点的名称,可能导致业务系统报错,且存在短期数据丢失的风险。请您谨慎评估业务风险,并在业务低谷期执行迁移操作。

  3. 执行以下命令将/temporary改名为目标目录/userdata。目标目录名称请根据实际情况进行修改。

    sudo mv /temporary /userdata
  4. 将数据盘/dev/vdb1挂载至目标目录/userdata下。请根据实际情况修改数据盘分区名称和目标目录名称。

    sudo mount /dev/vdb1 /userdata
  5. 输入df -Th命令查看数据盘分区是否已经挂载至目标系统目录下。如下图,表示/dev/vdb1已挂载至 /userdata。 截屏2025-01-22 10

步骤四:验证业务系统是否正常运行

  1. 建议立即重启业务系统,验证业务系统是否正常运行。

    若操作存在问题,您可按照以下方法恢复业务系统。

    • 方法一:仿照步骤三快速恢复。

      1. 卸载/userdata;

      2. 将其命名为/temporary;

      3. 将/userdata_bak命名为目标目录名称/userdata;

      4. 重启业务系统。

    • 方法二:利用系统盘快照,将系统盘回滚至创建快照时的状态。具体操作,请参见使用快照回滚云盘

  2. 确认业务系统正常运行后,删除改名后的/userdata_bak文件夹。