Di mana overhead untuk ZFS RAIDZ2 pada disk sektor 4K pergi?

8

Saya mulai dengan membuat 16 file kosong dengan tepat 1 miliar byte:

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

Kemudian saya membuat volume RAIDZ2 yang lebih besar dan lebih besar di atas file, memaksa ashift = 12 untuk mensimulasikan drive sektor 4K, misalnya

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

dan kemudian dibandingkan menggunakan df -B1untuk melihat ukuran sebenarnya.

Filesystem  1B-blocks
tank        12787777536

Hasil saya:

+-------+-------------+-------------+------------+------------+
| 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       |
+-------+-------------+-------------+------------+------------+

Sebagai bagan:

grafik efisiensi

  1. Apakah hasil saya benar, atau sudahkah saya meninggalkan sesuatu?
  2. Jika itu benar, mengapa? Kemana perginya ruang?
  3. Bisakah saya melakukan apa saja untuk meningkatkan efisiensi?
  4. Apakah ada rumus untuk menghitung efisiensi?
steveh7
sumber
Mengapa? Kenapa?!?
ewwhite
@ewwhite - Ada ruang hingga 11% lebih sedikit dari yang saya harapkan. Jika Anda memiliki, katakanlah, drive 12x1TB, Anda akan mengharapkan memiliki 10TB, tetapi memiliki kurang dari 9TB.
steveh7
Tidak, ini pertanyaan yang bagus. Saya tidak tahu jawabannya. Saya memiliki perbedaan besar dalam penggunaan zpool antara ashift 9 dan 12 dan kumpulan data yang sama.
ewwhite
Bisakah Anda menjalankannya kembali dengan nilai ashift mulai dari 0 hingga 12 dan plot dalam 3D?
Andrew

Jawaban:

3

Jawaban glib, karena RAIDZ (2) mengisap 4k drive.

  • Masalah # 548 : Penggunaan ruang yang sangat tidak efisien diamati ketika menggunakan raidz2 dengan ashift = 12
  • Masalah # 1807 : zvol pada RAIDZ2 membutuhkan dua kali lipat ruang yang diharapkan # 1807

Ini berkaitan dengan perhitungan paritas yang menelan banyak ruang tambahan, terutama dengan file yang lebih kecil. Coba lakukan pengujian yang sama terhadap file yang di bawah 50MB jika Anda ingin melihat beberapa inefisiensi nyata.

RobbieCrash
sumber
Jawaban ini tidak aktual, bug diperbaiki ...
Arman
@Arman Jika Anda membaca komentar di 548 itu menjelaskan mengapa ini masalahnya. 'Bug' pada 548 tidak diperbaiki, baru saja ditutup; itu tidak dianggap sebagai bug.
RobbieCrash