核心目标是将数据库数据文件迁移到低延迟、高iops磁盘以提升性能,关键在于挂得稳、读得快、切得准:需选nvme/sata ssd并验证rota=0和rand=1,分区后用mkfs.ext4 -t largefile4 ^has_journal或mkfs.xfs优化格式化,挂载时用uuid写入fstab并配置noatime,nobarrier,最后通过rsync迁移数据、更新配置、修正权限后重启服务。

为数据库单独挂载高性能磁盘,核心目标是把数据库数据文件(如 MySQL 的 /www/server/data 或 PostgreSQL 的 data 目录)迁移到低延迟、高 IOPS 的物理盘上,同时保障数据安全与服务连续性。关键不在于“挂得上”,而在于“挂得稳、读得快、切得准”。以下是实操中真正起作用的要点:
选盘与识别:确认高性能盘真实可用
高性能盘通常是 NVMe SSD(如 /dev/nvme0n1)或高速 SATA SSD(如 /dev/sdb),而非机械盘。别只看容量,要验证实际性能:
- 用
lsblk -d -o NAME,ROTA,RAND,MODEL,SIZE查 ROTA=0(非旋转介质)和 RAND=1(支持随机读写) - 用
sudo smartctl -a /dev/nvme0n1检查健康状态和磨损余量 - 避免使用云平台的“通用型”EBS卷,优先选本地 NVMe 或预配置的超高 IO 类型(如阿里云 I/O 优化实例 + ESSD PL3)
分区与格式化:针对数据库负载优化
不建议直接挂载整块裸盘;合理分区+定制化格式化能显著提升数据库表现:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 用
parted /dev/nvme0n1创建单个主分区(mkpart primary 0% 100%),对 NVMe 推荐 GPT 分区表 - 格式化时启用数据库友好参数:
sudo mkfs.ext4 -T largefile4 -O ^has_journal,extent /dev/nvme0n1p1
其中-T largefile4优化大文件分配,^has_journal关闭日志(MySQL 自身有 redo log,双重日志反而拖慢写入) - 若用 XFS(更适合高并发写),命令为:
sudo mkfs.xfs -f -i size=512 -l size=128m /dev/nvme0n1p1
挂载与绑定:确保稳定、低延迟访问
挂载不是终点,而是数据库路径切换的前提。必须绕过潜在风险点:
- 创建挂载点:
sudo mkdir -p /data/mysql(路径名清晰,避免用/mnt这类临时语义目录) - 临时挂载测试:
sudo mount -o noatime,nobarrier,errors=remount-ro /dev/nvme0n1p1 /data/mysqlnoatime减少元数据更新,nobarrier(仅限有掉电保护的 SSD)提升写吞吐 - 写入
/etc/fstab时,**务必用 UUID 而非设备名**:UUID=xxxx-xxxx-xxxx /data/mysql ext4 noatime,nobarrier,errors=remount-ro 0 2
获取 UUID:sudo blkid /dev/nvme0n1p1 - 执行
sudo mount -a验证 fstab 无误,再重启测试自动挂载是否生效
数据库迁移:停服最小化,路径切换零误差
以宝塔面板 MySQL 为例(其他数据库逻辑一致),重点在“先停服务、再搬文件、最后改配置”:
- 在宝塔面板中停止 MySQL 服务(或命令行:
sudo bt stop mysql) - 确认原数据目录为空闲状态:
sudo lsof +D /www/server/data应无输出 - 安全迁移:
sudo rsync -avh --delete /www/server/data/ /data/mysql/(注意末尾斜杠!) - 修改 MySQL 配置指向新路径:
编辑/www/server/mysql/etc/my.cnf,修改datadir=/data/mysql;
同时检查socket、pid-file等路径是否需同步调整 - 修复权限:
sudo chown -R mysql:mysql /data/mysql;sudo chmod -R 755 /data/mysql - 启动服务:
sudo bt start mysql,查看错误日志/www/server/mysql/logs/error_log确认无 “Can't open file” 类报错
整个过程不复杂但容易忽略细节——比如忘记关 journal、用错设备名导致重启失败、权限没递归改全引发启动拒绝。只要每步验证到位,高性能盘就能真正为数据库提速。










