Raid
執行硬體 raid 和 zfs 時的頻寬和 IO 問題
我繼承了使用 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 訪問模式 - 您將看不到那種級別的性能。