我有相当大数量的RAIDarrays(服务器控制器以及中端SAN存储),都遭遇同样的问题:几乎不足以保持最高的I / O性能以及大量未使用的磁盘空间。
我想这是一个普遍的问题,因为厂商提供的容量最小的硬盘容量为300GB,但随着最小硬盘容量为36GB,随机I / O性能并没有真正增长。
一个例子是一个300 GB的数据库,需要3200 IOPS的随机性能,所以它得到16个磁盘(4800 GB减去300 GB,我们有4.5 TB的浪费空间)。
另一个常见的例子是对响应时间敏感的OLTP数据库的重做日志。 重做日志有自己的300 GB的镜像,但需要30 GB的:270 GB的浪费。
我想看到的是Linux和Windows环境下的系统化方法。 如何设置空间,以便提醒系统pipe理员团队阻碍主分贝/应用程序性能的风险? 或者,甚至更好,从这个风险保护? 我想到的典型情况是“哦,我有这个非常大的zip文件,我在哪里解压缩?呃,让我们看看df -h ,我们立刻找出一些东西……”我不把强调严格的安全性(系统pipe理员被信任为真诚行事),而是总体上简单的方法。
对于Linux来说,将文件系统定制为将I / O速率限制在一个非常低的水平是非常好的 – 这是可能的吗?
我会考虑将高IOPS /低空间req数据库移动到基于SSD的arrays – 这些磁盘很小,并提供出色的吞吐量。 这是一个非常简单的方法
LUN , 分区和资源的select性显示
仅仅因为SAN由16个磁盘主轴支持,并不意味着使用该数据的服务器需要查看arrays的全部容量。 与直接连接存储一样的东西。 有时候我可能会在arrays中拥有大量的磁盘,但是我仍然可以正确设置提供给操作系统的LUN /分区/设备的大小。
以下HP ProLiant SmartArray控制器示例显示了RAID 1 + 0arrays中的4个480GB SSD。 这是960GB可用。 我用960GB刻出了一个400GB的LUN。 操作系统只有400GB。 而且即使是400GB也被划分成了对应用程序有意义的逻辑块。 关键是你可以控制存储空间的消费者看到:
array B (Solid State SATA, Unused Space: 1012121 MB) logicaldrive 3 (400.0 GB, RAID 1+0, OK) physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 480.1 GB, OK) physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 480.1 GB, OK) physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 480.1 GB, OK) physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 480.1 GB, OK)
但最后,如果性能满足您的需求,组织可以负担得起当前的configuration,为什么您认为未使用的空间是“浪费”?
顺便说一句 – 有可能使用cgroups在块设备级别上限制Linux中的I / O。 但是,如果您的主要应用程序或数据库存在风险,为什么不分离工作负载?