我继承了使用 Linux Ubuntu 14、megaraid_sas 和 ZFS 的设置。
我们遇到了一些性能问题(无法充分利用 raid 的 6GB 带宽),我很好奇这是否与 ZFS 设置有关 - 这似乎有点不寻常。
问题确实是:
这种设置(见下文)有问题吗?充其量,它似乎不必要地复杂(为什么要使用 ZFS,而不是直接在 raid 和挂载时控制数据空间大小?)
我们似乎没有利用 raid 的最大读取速率。这个设置可能是原因吗?
设置
RAID 具有多个 RAID 5 和 6 虚拟磁盘,它们作为本地设备呈现给 Linux 服务器。即
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 14,6T 0 disk
├─sda1 8:1 0 14,6T 0 part
└─sda9 8:9 0 8M 0 part
sdb 8:16 02,6G 0 disk
├─sdb1 8:17 0 94,6G 0 part /
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 128G 0 part [SWAP]
sdc 8:32 0 14,6T 0 disk
├─sdc1 8:33 0 14,6T 0 part
└─sdc9 8:41 0 8M 0 part
sdd 8:48 0 10,9T 0 disk
├─sdd1 8:49 0 10,9T 0 part
└─sdd9 8:57 0 8M 0 part
sd<N> 8:64 0 7,3T 0 disk
├─sd<N>1 8:65 0 7,3T 0 part
└─sd<N>9 8:73 0 8M 0 part
然后将它们全部重新捆绑在一起作为 zpool。即
# zpool status
pool: zpool
state: ONLINE
scan: scrub repaired 0 in 84h36m with 0 errors on Tue Aug 29 00:48:43 2017
config:
NAME STATE READ WRITE CKSUM
zpool ONLINE 0 0 0
sd<N> ONLINE 0 0 0
sda ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
errors: No known data errors
...然后将其分成数据集。例如
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 12K 63G 1% /dev
tmpfs 13G 23M 13G 1% /run
/dev/sdb1 94G 13G 76G 15% /
zpool/dataset1 13T 11T 2,3T 82% /common/share
zpool/dataset1/archive 3,9T 1,6T 2,3T 41% /common/share/archive
zpool/dataset2 6,6T 4,3T 2,3T 66% /h2t
zpool 5,2T 2,9T 2,3T 56% /zpool
zpool/dataset3 12T 8,8T 2,3T 80% /zpool/backup
zpool/dataset4 2,4T 28G 2,3T 2% /zpool/homes
zpool/dataset4/extern 2,7T 317G 2,3T 12% /zpool/homes/externstaff
zpool/homes/students 14T 12T 2,3T 84% /zpool/homes/students
zpool/temp 2,4T 50G 2,3T 3% /common/temp
答案1
您实际获得的速度是多少?来自哪些工作负载?哪种磁盘?
我一般不建议在 ZFS 下使用硬件 RAID,但这是可以做到的。人们对条带阵列的误解之一是,它们在大多数工作负载下的性能趋向于单身的磁盘,而不是阵列中磁盘数量的吞吐量。在完全理想的条件下,您可以从 6 磁盘 raid6 阵列中获得 4 个磁盘的吞吐量,但在最多条件下,你将绑定 IOPS,而不是吞吐量 - 并且每秒输入/输出次数任何条带阵列的容量大致等于单个磁盘的容量,无论阵列有多宽(并且它会变得更差阵列并非越宽越好。
6 Gbps =~ 768 MB/秒;我不会指望从外面条带阵列中的一堆锈蚀磁盘中获得如此大的吞吐量非常专业和非常精心控制的工作负载。如果有多个用户访问大量文件 - 更不用说任何类型的数据库或 VM 访问模式 - 您将看不到任何类似级别的性能。