云服务器数据盘挂载与 I/O 优化实录

记录一次实测:将 MongoDB 存储路径从系统盘迁移至独立 SSD 数据盘后,读写延迟降低 40% 的全过程

背景

随着业务数据快速增长,MongoDB 数据库的 I/O 性能逐渐成为瓶颈。系统盘的空间和 I/O 性能已无法满足日益增长的数据存储和访问需求。为此,我们购买了一块独立的高性能 SSD 数据盘,并实施了以下迁移方案。

操作步骤

  1. 在云服务商控制台购买并挂载新的 SSD 数据盘
  2. 登录服务器,确认新磁盘设备已被识别:
    lsblk
  3. 格式化数据盘并创建文件系统:
    # 格式化为 ext4 文件系统
    sudo mkfs.ext4 /dev/vdb
    
    # 创建挂载点
    sudo mkdir -p /data/mongodb
    
    # 挂载数据盘
    sudo mount /dev/vdb /data/mongodb
  4. 迁移现有 MongoDB 数据文件:
    # 停止 MongoDB 服务
    sudo systemctl stop mongod
    
    # 备份原数据目录
    sudo cp -r /var/lib/mongo /var/lib/mongo.bak
    
    # 移动数据到新位置
    sudo rsync -av /var/lib/mongo/ /data/mongodb/
    
    # 修改 MongoDB 配置文件
    sudo vim /etc/mongod.conf
    # 将 storage.dbPath 改为新路径: /data/mongodb
  5. 更新 fstab 配置,确保重启后自动挂载:
    # 获取数据盘 UUID
    sudo blkid /dev/vdb
    
    # 编辑 fstab 文件
    sudo vim /etc/fstab
    
    # 添加一行(替换 YOUR_UUID 为实际值)
    UUID=YOUR_UUID /data/mongodb ext4 defaults,nofail 0 2
  6. 启动 MongoDB 并验证: sudo systemctl start mongod

性能对比测试

迁移前后,我们使用 fio 工具进行了 I/O 性能测试,结果如下:

指标 迁移前 (系统盘) 迁移后 (SSD数据盘) 提升幅度
随机读 IOPS 1,200 8,600 +616%
随机写 IOPS 800 6,200 +675%
MongoDB 查询延迟 45ms 27ms -40%
<< 返回首页