正文
背景
随着公司软件的发展.客户越来越多.
测试环境和兼容环境也越来越多.
不管是虚拟化,还是裸金属做数据库
存储都是绕不开的一道门槛.
最近又上架了几台服务器, 所以想趁着周末总结一下
最近服务器上架的一些得失,
以及未来客户现场部署的一些可能的事项.
关于存储
存储是一切软件的基础
没有存储软件几乎是无法运行和交付的.
存储也是数据的栖身之所,他的性能和稳定性会影响良多.
现阶段服务器看的很多是CPU和内存,但是在传统应用里面
存储的性能也会决定非常多的地方.
甚至存储性能不好会导致再高的CPU和内存都无法弥补的性能下降.
存储比较核心的地方在于Raid的设置
虽然可以单盘,但是单盘的性能和容量都非常有限,安全性也不是很好.
所以需要进行一些Raid设置.这一块是非常关键的.
RAID的一些说明
磁盘阵列(Redundant Arrays of Independent Disks,RAID),
有"数块独立磁盘构成具有冗余能力的阵列”之意。
RAID 一般常用的有 0 1 10 5 6 50 60
用的比较多的是 5 6 10
但是因为有写惩罚
RAID0 写惩罚 是1
RAID1 写惩罚 是2
RAID10 写惩罚 是2
RAID5 写惩罚 是4
RAID6 写惩罚 是6
所以一般很不建议将RAID6用于生产, 如果想节约成本可以使用
RAID5+HOT_Spare盘的方式进行部署. 安全和写入基本上都可以保证.
关于RAID的设置
除了核心的Raid级别的设置还有以下事项也比较重要:
是否开启缓存.
是否开启写缓存
写入的方式是wirte through还是write back
是否开启磁盘缓存
是否开启条带化
是否最大化性能还是最大化安全
RAID设置的说明
是否开启缓存
以装机量比较大的LSI 9361-8i 或者是PMC8204-2G进行说明
都可以有2G DDR的缓存.
但是大家也都知道DDR是易失性的,如果一场断电或者是宕机会导致无法挽回的损失.
所以一般会要求带一个BBU
但是BBU 一般有时效性可能需要定期更换.
能够保证再宕机或者是断电时能够将RAID卡内存缓存中的数据写入到非易失性的设备中
保证数据的安全与稳定.
RAID设置的说明
Write through和Write back
则是两种方式, 是写入到缓存就告知操作系统, 写入完成
还是必须写入到磁盘才能告知操作系统, 写入完成
使用缓存模式能够极大的提高写入性能 back的效率可能有十倍甚至一百倍的提升
但是如果缓存耗尽,磁盘写入来不也会导致性能断崖式的下降
所以虽然可以使用缓存. 但是也必须保证磁盘的性能不能太差
对应的write back 虽然性能好,但是存在丢失数据的风险, 除非有非常全面的数据保护机制
核心的数据库还是建议慎用.
磁盘缓存
现阶段因为 叠瓦硬盘的存在, 硬盘的缓存一般都有了巨大的提升
开启硬盘的缓存对硬盘写入也是有所提升的
但是与write back 一样需要有机制来保证数据安全
也跟write back一样缓存被耗尽,性能也会出现断崖式的下降
甚至导致上层应用出现爆CPU 大量等待磁盘返回的故障.
所以这一块性能测试 必须要长时间大压力进行压测, 压穿缓存才可以验证具体的性能.
关于数据库的配置
1. 操作系统最好在单独的RAID磁盘组上面. 避免跟核心数据在相同的硬盘上面,出现问题难以解决.
操作系统可以单独一个两块盘的RAID1进行处理. 可以不用太大,不用强求SSD.
2. 数据库的数据盘最好采用搞转速的HDD SAS盘,或者是高吞吐的SSD进行部署搭建.
因为数据库的数据盘更多的是离散读和离散写.对磁盘的性能要求极高.
3. 数据库的日志盘可以放到顺序写性能比较好的RAID10的HDD磁盘组上面.
日志盘需要大量的顺序写并且读比较少. 所以可以如此设置. 缓存也可以开除大量的写入缓存保证性能.
4. 备份盘建议走场外, 如果必须在当前机器上面建议至少再简历单独的RAID组进行设置
避免部分村损坏出现严重的数据丢失无法挽回.