4K扇区磁盘上的ZFS RAIDZ2的开销在哪里?


8

我首先创建了16个空文件,它们的大小分别为10亿字节。

for i in {1..16}; do dd if=/dev/zero of=/mnt/temp/block$i bs=1000000 count=1000 &> /dev/null; done

然后,我在文件上创建了越来越大的RAIDZ2卷,强制ashift = 12来模拟4K扇区驱动器,例如

zpool create tank raidz2 -o ashift=12 /mnt/temp/block1 /mnt/temp/block2...

然后比较使用df -B1以查看实际大小。

Filesystem  1B-blocks
tank        12787777536

我的结果:

+-------+-------------+-------------+------------+------------+
| disks |  expected   |   actual    |  overhead  | efficiency |
+-------+-------------+-------------+------------+------------+
|     3 |  1000000000 |   951975936 |   48024064 | 95.2       |
|     4 |  2000000000 |  1883766784 |  116233216 | 94.2       |
|     5 |  3000000000 |  2892234752 |  107765248 | 96.4       |
|     6 |  4000000000 |  3892969472 |  107030528 | 97.3       |
|     7 |  5000000000 |  4530896896 |  469103104 | 90.6       |
|     8 |  6000000000 |  5541068800 |  458931200 | 92.4       |
|     9 |  7000000000 |  6691618816 |  308381184 | 95.6       |
|    10 |  8000000000 |  7446331392 |  553668608 | 93.1       |
|    11 |  9000000000 |  8201175040 |  798824960 | 91.1       |
|    12 | 10000000000 |  8905555968 | 1094444032 | 89.1       |
|    13 | 11000000000 | 10403577856 |  596422144 | 94.6       |
|    14 | 12000000000 | 11162222592 |  837777408 | 93.0       |
|    15 | 13000000000 | 12029263872 |  970736128 | 92.5       |
|    16 | 14000000000 | 12787908608 | 1212091392 | 91.3       |
+-------+-------------+-------------+------------+------------+

作为图表:

效率图

  1. 我的结果是否正确,还是我遗漏了一些东西?
  2. 如果正确,为什么?空间要去哪里?
  3. 我可以做些什么来提高效率吗?
  4. 有没有计算效率的公式?

为什么?只是为什么?!?
ewwhite 2014年

@ewwhite-空间比我预期的少11%。举例来说,如果您拥有12x1TB的驱动器,那么您将拥有10TB的空间,但少于9TB。
steveh7

不,这是一个好问题。我不知道答案。我在ashift 9和12和相同的数据集之间的zpool使用方面有很大差异。
ewwhite

您是否可以使用0到12范围内的偏移值重新运行它们并以3D绘图?
2014年

Answers:


3

glib的答案,因为RAIDZ(2)在4k驱动器上很烂。

  • 问题#548:使用raidz2和ashift = 12时观察到的空间利用率非常低
  • 问题#1807:RAIDZ2上的zvol占用了预期空间的两倍#1807

它与奇偶校验计算有关,这会占用大量额外空间,尤其是对于较小的文件。如果您想查看实际的低效率,请尝试对50MB以下的文件进行相同的测试。


这个答案是不实际的,错误已得到修复...
Arman

@Arman如果您阅读了关于548的评论,则说明了为什么会这样。548中的“错误”尚未修复,只是关闭了。它不被视为错误。
RobbieCrash 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.