我继承了使用 Linux Ubuntu 14、megaraid_sas 和 ZFS 的设置。
我们遇到了一些性能问题(永远无法充分利用 RAID 的 6GB 带宽),我很好奇这是否与 ZFS 设置有关——这似乎有点不寻常。
问题真的是:
这个设置(见下文)有问题吗?充其量,它似乎不必要地复杂(为什么要使用 ZFS 而不是直接在 raid 上控制数据空间大小并直接挂载?)
我们似乎没有利用突袭的最大读取率。这个设置可能是为什么?
设置
RAID 有许多 RAID 5 和 6 虚拟磁盘,它们作为本地设备呈现给 Linux 服务器。IE
# 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。IE
# 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
...然后将其划分为数据集。IE
# 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
您实际获得的速度是多少?来自哪些工作负载?什么样的磁盘?
我通常不建议在 ZFS 下使用硬件 RAID,但可以这样做。人们对条带阵列的误解之一是,它们在大多数工作负载下的性能趋向于单个磁盘的性能,而不是阵列中磁盘数量的性能。在非常理想的条件下,您可以从 6 磁盘 raid6 阵列中获得 4 个磁盘的吞吐量,但在大多数情况下,您将绑定 IOPS,而不是吞吐量 - 任何条带阵列的IOPS大致是单个阵列的 IOPS磁盘,无论阵列有多宽(阵列越宽越差,而不是更好)。
6 Gbps =~ 768 MB/秒;我不希望在非常专业且非常仔细控制的工作负载之外,从条带阵列中的一堆 rust 磁盘中获得类似这样的吞吐量。如果您有多个用户访问大量文件 - 更不用说任何类型的数据库或 VM 访问模式 - 您将看不到那种级别的性能。