【docker 迁移 - 上】阿里云挂在新购磁盘

发布于:2025-07-08 ⋅ 阅读:(19) ⋅ 点赞:(0)

场景

  • 服务器:阿里云
  • 容器技术:docker + docker-compose
  • 容器:nginx、redis、mysql、mongo、spring boot 微服务
  • 磁盘容量:40G
  • 内存:8G

一、问题

  • mongo异常关闭

二、原因

  • 部署人员安装时没有查看客户磁盘容量,随着业务提升,磁盘容量不够用,影响数据库读写和整个业务
  • 内存没有做限制,mongodb占用过大影响其它业务

三、解决方案

  • 挂在数据盘,将docker所有容器迁移
  • 对容器内存资源限制(容器:nginx、redis、mysql、mongo、spring boot 微服务)

四、实战一:阿里云新买云盘并挂载

在阿里云上挂载新购买的云盘(数据盘)需要经过分区、格式化、挂载等步骤。以下是详细操作流程:


一、确认云盘状态

  1. 登录阿里云控制台

    • 进入ECS实例页面,确认云盘已购买且状态为 “待挂载”“已挂载”(但未初始化)。
  2. 挂载云盘到ECS实例(若未自动挂载)

    • 在ECS控制台找到目标云盘,点击 “挂载”,选择对应的ECS实例。
  3. 检查云盘是否被系统识别

    • 通过SSH登录ECS实例,执行以下命令查看磁盘信息:
      lsblk
      
      • 新磁盘通常显示为 vdbxvdbnvme0n1 等(具体名称根据磁盘类型而定)。

二、分区与格式化

方案1:直接格式化整个磁盘(无需分区)

适用于数据盘整体作为一个分区使用。

# 使用ext4文件系统格式化(推荐)
mkfs.ext4 /dev/vdb

# 如果使用xfs文件系统
mkfs.xfs /dev/vdb
方案2:创建分区后再格式化

适用于需要多个分区的场景。

  1. 使用 fdiskparted 创建分区:

    fdisk /dev/vdb
    
    • 输入 n 创建新分区,按提示设置分区大小(默认全盘可回车跳过)。
    • 输入 w 保存分区表。
  2. 格式化分区(例如分区为 /dev/vdb1):

    mkfs.ext4 /dev/vdb1
    

三、挂载云盘

注意:第一步如果使用 mkfs.ext4 /dev/vdb,这里直接用/dev/vdb而不是 /dev/vdb1

  1. 创建挂载目录

    mkdir /mnt/data
    
  2. 临时挂载(重启后失效)

    mount /dev/vdb1 /mnt/data
    
  3. 永久挂载(推荐)

    • 编辑 /etc/fstab 文件:
      echo '/dev/vdb1 /mntd ext4 defaults 0 0' >> /etc/fstab
      
    • 验证配置是否正确:
      mount -a
      

四、验证挂载

df -h
  • 确认输出中显示 /dev/vdb1 已挂载到 /mntd

在这里插入图片描述


常见问题

  1. 磁盘名称不匹配

    • 根据 lsblk 结果替换 /dev/vdb 为实际名称(如 NVMe 磁盘可能是 /dev/nvme0n1)。
  2. 挂载失败

    • 检查是否已格式化:blkid /dev/vdb1
    • 确保 /etc/fstab 条目无误。
  3. Windows 系统挂载

    • 在ECS控制台挂载云盘后,进入Windows实例的 “磁盘管理” 初始化并分配盘符。

注意事项

  • 数据安全:操作前建议对重要数据备份。
  • SSD性能盘:建议使用 ext4xfs 文件系统以发挥性能。
  • 多磁盘场景:建议通过 /etc/fstab 使用磁盘的UUID挂载(通过 blkid 获取UUID)。

如有其他问题,可参考阿里云官方文档:挂载数据盘