linux – 8个SSD驱动器的软件RAID10阵列写入性能差
我的服务器配有Supermicro X10DRW-i主板和8个KINGSTON SKC400S SSD的RAID10阵列;操作系统是CentOS 6
# cat /proc/mdstat Personalities : [raid10] [raid1] md2 : active raid10 sdj3[9](S) sde3[4] sdi3[8] sdd3[3] sdg3[6] sdf3[5] sdh3[7] sdb3[1] sda3[0] 3978989568 blocks super 1.1 512K chunks 2 near-copies [8/8] [UUUUUUUU] bitmap: 9/30 pages [36KB],65536KB chunk – # mdadm --detail /dev/md2 /dev/md2: Version : 1.1 Creation Time : Wed Feb 8 18:35:14 2017 Raid Level : raid10 Array Size : 3978989568 (3794.66 GiB 4074.49 GB) Used Dev Size : 994747392 (948.67 GiB 1018.62 GB) Raid Devices : 8 Total Devices : 9 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Fri Sep 14 15:19:51 2018 State : active Active Devices : 8 Working Devices : 9 Failed Devices : 0 Spare Devices : 1 Layout : near=2 Chunk Size : 512K Name : ---------:2 (local to host -------) UUID : 8a945a7a:1d43dfb2:cdcf8665:ff607a1b Events : 601432 Number Major Minor RaidDevice State 0 8 3 0 active sync set-A /dev/sda3 1 8 19 1 active sync set-B /dev/sdb3 8 8 131 2 active sync set-A /dev/sdi3 3 8 51 3 active sync set-B /dev/sdd3 4 8 67 4 active sync set-A /dev/sde3 5 8 83 5 active sync set-B /dev/sdf3 6 8 99 6 active sync set-A /dev/sdg3 7 8 115 7 active sync set-B /dev/sdh3 9 8 147 - spare /dev/sdj3 我注意到写入速度非常糟糕,甚至没有接近SSD性能. # dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=dsync 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied,16.511 s,65.0 MB/s 读取速度很好 # hdparm -tT /dev/md2 /dev/md2: Timing cached reads: 20240 MB in 1.99 seconds = 10154.24 MB/sec Timing buffered disk reads: 3478 MB in 3.00 seconds = 1158.61 MB/sec 在对这个问题进行一些故障排除之后,我发现可能我最初搞乱了存储配置:X10DRW-i有Intel C610,它有两个独立的SATA控制器,6端口SATA和4端口sSATA.因此阵列中的磁盘连接到不同的控制器,我相信这是性能不佳的根本原因. 所以我想确认以下内容: 我对根本原因是对的,还是应该仔细检查一下? 我的解决方案能运作吗 如果我将驱动器重新连接到新控制器,我的RAID和数据会存活吗?我的研究表明,是的,因为分区的UUID将保持不变,但我只是想确定. 感谢大家提前. UPD:iostat -x 1执行dd测试时:https://pastebin.com/aTfRYriU # hdparm /dev/sda /dev/sda: multcount = 16 (on) IO_support = 1 (32-bit) readonly = 0 (off) readahead = 256 (on) geometry = 124519/255/63,sectors = 2000409264,start = 0 – # cat /sys/block/md2/queue/scheduler none 虽然AFAIK调度程序设置在物理驱动器上: # cat /sys/block/sda/queue/scheduler noop anticipatory [deadline] cfq – smartctl -a(在设备上,而不是分区上):https://pastebin.com/HcBp7gUH UPD2: # dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied,14.389 s,74.6 MB/s UPD3: 我只是在/ partition上运行fstrim并且产生了一些效果,仍然写入速度太低:连续五次测试中227 MB / s,162 MB / s,112 MB / s,341 MB / s,202 MB / s. 解决方法
测量的低性能是各种因素的结果:
>创建后,阵列完全同步,导致在一半SSD上分配大多数(如果不是全部)闪存数据页.这将使SSD处于低性能状态,直到安全擦除/修整“释放”所有/大多数/某些页面.这解释了fstrim之后性能的提升; 你能做些什么来纠正现状?首先,你必须接受擦除磁盘/阵列;显然,您需要将备份作为第一步.然后: >停止并删除数组(mdadm -S / dev / md2) 关于SATA设置的最后一个注意事项:应该明确避免以这种方式拆分磁盘以获得最大的性能.也就是说,你的写入速度非常低,我不会责怪你的SATA控制器.在购买任何新东西之前,我会真正重新制作上述指令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |