Ben ook bezig met ZFS, maar weet niet of alles helemaal klopt. Vermoedelijk een 512/4k issue.
Het gaat om een ZRAID1 met 3 x 3TB WD RED schijven op ubuntu 12. Boot disk is een 64GB sandisk ssd. 4GB geheugen, waarvan 2GB voor ZFS. Ik gebruik geen compressie in mijn datasets.
1) Ik formateer de drie raw-disks naar gpt (met disk utility)
2) Maak zpool met volgende commando (waarbij disk pseudo taal is)
code:
1
| zpool create -o ashift=12 -O atime=off poolnaam raidz /dev/disk/1 /dev/disk/2 /dev/disk/3 |
3) Datasetje
code:
1
| sudo zfs create poolnaam/TEST |
4) output met "sudo fdisk -l" levert voor alle drie disks het volgende op:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| WARNING: GPT (GUID Partition Table) detected on '/dev/sdd'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
256 heads, 63 sectors/track, 363376 cylinders, total 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdd1 1 4294967295 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary. |
5) "sudo parted -l" levert voor alle drie disks:
code:
1
2
3
4
5
6
7
8
| Model: ATA WDC WD30EFRX-68E (scsi)
Disk /dev/sdd: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 3001GB 3001GB zfs zfs
9 3001GB 3001GB 8389kB |
6) "sudo parted /dev/sdb align-check m 1" levert voor alle drie de disks:
Nou vraag ik mij dus af of de pool nu wel of niet goed aligned is op 4k. Want fdisk heeft het over
Partition 1 does not start on physical sector boundary, terwijl het parted -l commando aangeeft dat ze
1 algined zijn.
Een ander (misschien gerelateerd) probleem gaat over de performance
ZPOOL:
dd if=/dev/zero of=/poolnaam/TEST/test.bin bs=128M count=64
8589934592 bytes (8.6 GB) copied, 34.4053 s,
250 MB/s
dd if=/poolnaam/TEST/test.bin of=/dev/null bs=128M
8589934592 bytes (8.6 GB) copied, 35.4744 s,
242 MB/s
SSD:
dd if=/dev/zero of=/tmp/test.bin bs=128M count=64
8589934592 bytes (8.6 GB) copied, 16.6924 s,
515 MB/s
dd if=/tmp/test.bin of=/dev/null bs=128M
8589934592 bytes (8.6 GB) copied, 23.0986 s,
372 MB/s
Dat lijk allemaal als verwacht, maar onderling kopieren is een beetje gek:
ZPOOL --> SSD
dd if=/poolnaam/TEST/test.bin of=/tmp/test.bin bs=128M
8589934592 bytes (8.6 GB) copied, 31.0286 s,
277 MB/s
SSD --> ZPOOL
dd if=/tmp/test.bin of=/poolnaam/TEST/test.bin bs=128M
8589934592 bytes (8.6 GB) copied, 65.4327 s,
131 MB/s
Zoals je opvalt is het schrijven naar de ssd gelimiteerd door de leessnelheid van de zpool, wat ook logisch is. Het schrijven naar de zpool, blijft echter op ongeveer 130 MB/s hangen. Hoe kan dit?
Hoop dat jullie me in de juiste richting kunnen wijzen. Als er nog meer info nodig is, dan kan ik dat leveren.