1.
存储类型总览及选择原则
- 常见类型:HDD(SATA)、SAS(企业盘)、SATA SSD、NVMe SSD。
- 选择原则:预算→吞吐→IOPS→延迟。静态大文件优先HDD/RAID;数据库/高并发优先NVMe/企业SSD。
- 实操建议:先列出业务指标(QPS、并发连接、I/O模式),再根据IOPS和MB/s需求决定。
2.
性能指标与简单测试步骤
- 关键指标:随机4K IOPS、顺序读写MB/s、延迟(ms)、TBW(写入寿命)。
- 测试工具:fio、dd。示例fio命令:fio --name=test --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60。
- 读写测试流程:1) 卸载盘并确保无挂载;2) 运行fio;3) 记录iops/latency,比较不同盘型。
3.
RAID实操:mdadm创建与维护(软件RAID)
- 创建RAID1示例:mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc。
- 格式化并挂载:mkfs.xfs /dev/md0;mkdir /data; echo '/dev/md0 /data xfs defaults,noatime 0 0' >> /etc/fstab; mount -a。
- 故障恢复:mdadm --manage /dev/md0 --fail /dev/sdb;mdadm --manage /dev/md0 --remove /dev/sdb;mdadm --manage /dev/md0 --add /dev/sdd。
4.
SSD/NVMe专用优化步骤
- 启用TRIM:在挂载选项里加 discard 或定期fstrim。建议用定时任务:echo "0 3 * * 0 root /sbin/fstrim -av" > /etc/cron.d/fstrim。
- noatime/nodiratime:在/etc/fstab加 noatime,nodiratime 减少写放大。
- 调整I/O调度器:echo noop > /sys/block/nvme0n1/queue/scheduler(对NVMe/SSD优先noop或none)。
5.
bCache 与 dm-cache(混合缓存)实操
- 场景:用小容量NVMe做SSD缓存加速大容量HDD。
- bcache流程(简化):apt install bcache-tools;make-bcache -B /dev/sdb1 -C /dev/nvme0n1p1(B为backing,C为cache);注册设备后格式化 /dev/bcache0 并挂载。
- 注意:先备份数据,测试并监控写入放大与缓存命中率(/sys/fs/bcache/*)。
6.
文件系统与挂载优化要点
- 推荐文件系统:XFS(大文件、高并发)或EXT4(通用)。
- 挂载选项示例:noatime,nodiratime,attr2(ext4),对于XFS使用 logbufs=8 可提升日志性能。
- LVM缓存:lvcreate/lvconvert --type cache 可以将SSD做LVM cache,命令需严格按文档执行并备份。
7.
内核与系统缓存调优(sysctl 实操)
- 关键参数:vm.swappiness=10(降低交换倾向);vm.vfs_cache_pressure=50(保留inode/dentry缓存)。
- 写回控制:设置 vm.dirty_background_bytes=67108864 vm.dirty_bytes=134217728 或用百分比,避免大量后台写导致峰值延迟。应用命令:echo "vm.swappiness=10" >> /etc/sysctl.conf; sysctl -p。
- TCP/网络:调整 net.core.somaxconn、net.ipv4.tcp_fin_timeout 根据并发调整。
8.
应用层缓存策略(Nginx/Redis/页面缓存)
- Nginx静态缓存:启用 proxy_cache 或 fastcgi_cache,设置 keys_zone、max_size、inactive、use_temp_path off,并用缓存键控制缓存粒度。
- Redis/Memcached:把热点会话/查询结果放入内存,设置合理maxmemory policy(allkeys-lru)。
- CDN与浏览器缓存:设置Cache-Control、ETag,减轻源服务器I/O。
9.
监控与故障排查步骤
- 必装工具:iostat(sysstat)、iotop、smartctl、dstat。
- 常见问题排查:高延迟→iotop找写入进程;IOPS不足→fio复测;SMART报错→尽快换盘并重建RAID。
- 日志与报警:配置Prometheus+Grafana监控磁盘延迟、队列长度和吞吐,设置阈值报警。
10.
问:香港托管选NVMe还是SATA SSD更合适?
答:若预算允许且业务为高并发数据库/缓存/搜索,优先NVMe(低延迟、高IOPS)。若以成本为主且多为静态大文件,SATA SSD或SAS配RAID更划算。
11.
问:如何在不重装系统的情况下启用TRIM与优化?
答:编辑/etc/fstab在SSD分区挂载项加入discard或定期添加fstrim定时任务;调整I/O调度器为noop;修改sysctl(swappiness、vfs_cache_pressure)后sysctl -p生效。
12.
问:部署bcache/dm-cache前需要注意什么?
答:务必备份数据,确认缓存盘比后端盘小且速度快;先在测试环境跑fio评估命中率;监控写入放大与寿命;按官方步骤创建并验证缓存回退策略。
来源:香港托管服务器硬盘服常见类型对比及缓存优化方法