文章目录
场景
- 服务器:阿里云
- 容器技术:docker + docker-compose
- 容器:nginx、redis、mysql、mongo、spring boot 微服务
- 磁盘容量:40G
- 内存:8G
一、问题
- mongo异常关闭
二、原因
- 部署人员安装时没有查看客户磁盘容量,随着业务提升,磁盘容量不够用,影响数据库读写和整个业务
- 内存没有做限制,mongodb占用过大影响其它业务
三、解决方案
- 挂在数据盘,将docker所有容器迁移
- 对容器内存资源限制(容器:nginx、redis、mysql、mongo、spring boot 微服务)
四、实战一:阿里云新买云盘并挂载
在阿里云上挂载新购买的云盘(数据盘)需要经过分区、格式化、挂载等步骤。以下是详细操作流程:
一、确认云盘状态
登录阿里云控制台
- 进入ECS实例页面,确认云盘已购买且状态为 “待挂载” 或 “已挂载”(但未初始化)。
挂载云盘到ECS实例(若未自动挂载)
- 在ECS控制台找到目标云盘,点击 “挂载”,选择对应的ECS实例。
检查云盘是否被系统识别
- 通过SSH登录ECS实例,执行以下命令查看磁盘信息:
lsblk
- 新磁盘通常显示为
vdb
、xvdb
、nvme0n1
等(具体名称根据磁盘类型而定)。
- 新磁盘通常显示为
- 通过SSH登录ECS实例,执行以下命令查看磁盘信息:
二、分区与格式化
方案1:直接格式化整个磁盘(无需分区)
适用于数据盘整体作为一个分区使用。
# 使用ext4文件系统格式化(推荐)
mkfs.ext4 /dev/vdb
# 如果使用xfs文件系统
mkfs.xfs /dev/vdb
方案2:创建分区后再格式化
适用于需要多个分区的场景。
使用
fdisk
或parted
创建分区:fdisk /dev/vdb
- 输入
n
创建新分区,按提示设置分区大小(默认全盘可回车跳过)。 - 输入
w
保存分区表。
- 输入
格式化分区(例如分区为
/dev/vdb1
):mkfs.ext4 /dev/vdb1
三、挂载云盘
注意:第一步如果使用 mkfs.ext4 /dev/vdb,这里直接用/dev/vdb而不是 /dev/vdb1
创建挂载目录
mkdir /mnt/data
临时挂载(重启后失效)
mount /dev/vdb1 /mnt/data
永久挂载(推荐)
- 编辑
/etc/fstab
文件:echo '/dev/vdb1 /mntd ext4 defaults 0 0' >> /etc/fstab
- 验证配置是否正确:
mount -a
- 编辑
四、验证挂载
df -h
- 确认输出中显示
/dev/vdb1
已挂载到/mntd
。
常见问题
磁盘名称不匹配
- 根据
lsblk
结果替换/dev/vdb
为实际名称(如 NVMe 磁盘可能是/dev/nvme0n1
)。
- 根据
挂载失败
- 检查是否已格式化:
blkid /dev/vdb1
。 - 确保
/etc/fstab
条目无误。
- 检查是否已格式化:
Windows 系统挂载
- 在ECS控制台挂载云盘后,进入Windows实例的 “磁盘管理” 初始化并分配盘符。
注意事项
- 数据安全:操作前建议对重要数据备份。
- SSD性能盘:建议使用
ext4
或xfs
文件系统以发挥性能。 - 多磁盘场景:建议通过
/etc/fstab
使用磁盘的UUID挂载(通过blkid
获取UUID)。
如有其他问题,可参考阿里云官方文档:挂载数据盘。