Hello all,
I hope someone can bring some light into my confusion and help me understand some (from my perspective) odd behavior I am seeing.
Some background information: My Proxmox setup was running fine since almost three years. I was using a Mirrored vDev ZPOOL using 5x individual mirrors.
While I thought I understand the risk and accept, that none of the two disks of a vDev will fail simultaniously, I was proven wrong last week.
One disk died. The other one in the mirror went off creating a lot of read-errors and so my pool was literally gone / corrupted all over the place.
So far so good (or bad). Backups are in place, tried to recover the pool, wasted a lot of time and finally dumped it completely.
I thought I use the opportunity (and the lesson) to redesign my storage pool(s). Since on the large HDD-Backed pool, primarily backups are stored I thought: Give a RAIDZ3 a try. Any 3 of 8 disks I was planning to use could die...
Went of upgrading to PVE 6.1 and ZOL 0.83, creating the new pool containing one vDev. Added a mirrored SLOG and L2ARC devices to speed things up a little. This is how it looks like:
Checking the size of the pool shows 5..45 TB in Size. That is expected since I am using 8x 750 GB disks which results in 8x 700 GB roughly (5.600 GB)
A "zfs list" reported a little over 3TB available space (used + avail in the following output), which was logical to me because the parity will eat up 3 drives. So my capacity is around 5x 700 GB = 3.500 GB
I started to create my volumes on top of the pool and this is where it gets really weird. Because the system told me "there is not enough space" for my largest backup-volume (after I only have copied a few hundred GBs).
This is the behavior I see (on a smaller disk):
On the RAIDZ3 pool creation of a 5GB volume results in the following consumption on the pool:
Yes. Exactly. It eats up roughly 12 GB in the pool. What the hack is going on here? That is
I can see the same behavior on larger scale. 1205GB volume eat up 2.29TB in the pool!
<edit>Forgot to mention. It is the very same behavior indpendent from UI and/or CLI. </edit>
I am totally confused/puzzled about my "understanding" of RAIDZ3 and the ZPOOL in general. Couldn't find anything via g**gle, bing and so on. All people explain a "hidden cost" when growing such a RAIDZ-Pool (in terms of vDevs need to be the same) but noone mentions, that you actually can only use half of your storage (as I seem to experience it).
It is my first try on anything else than mirrored vDevs - so someone might just tell me: "It's expected mate". If that is the case. Could you please explain?
Thanks for your help.
I hope someone can bring some light into my confusion and help me understand some (from my perspective) odd behavior I am seeing.
Some background information: My Proxmox setup was running fine since almost three years. I was using a Mirrored vDev ZPOOL using 5x individual mirrors.
While I thought I understand the risk and accept, that none of the two disks of a vDev will fail simultaniously, I was proven wrong last week.
One disk died. The other one in the mirror went off creating a lot of read-errors and so my pool was literally gone / corrupted all over the place.
So far so good (or bad). Backups are in place, tried to recover the pool, wasted a lot of time and finally dumped it completely.
I thought I use the opportunity (and the lesson) to redesign my storage pool(s). Since on the large HDD-Backed pool, primarily backups are stored I thought: Give a RAIDZ3 a try. Any 3 of 8 disks I was planning to use could die...
Went of upgrading to PVE 6.1 and ZOL 0.83, creating the new pool containing one vDev. Added a mirrored SLOG and L2ARC devices to speed things up a little. This is how it looks like:
Code:
NAME STATE READ WRITE CKSUM
HDD-POOL-RAIDZ3 ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
C0-S0 ONLINE 0 0 0
C0-S1 ONLINE 0 0 0
C0-S2 ONLINE 0 0 0
C0-S3 ONLINE 0 0 0
C0-S4 ONLINE 0 0 0
C0-S5 ONLINE 0 0 0
C0-S6 ONLINE 0 0 0
C0-S7 ONLINE 0 0 0
logs
mirror-1 ONLINE 0 0 0
ON-S3-part1 ONLINE 0 0 0
C1-S3-part1 ONLINE 0 0 0
cache
ON-S3-part2 ONLINE 0 0 0
C1-S3-part2 ONLINE 0 0 0
Checking the size of the pool shows 5..45 TB in Size. That is expected since I am using 8x 750 GB disks which results in 8x 700 GB roughly (5.600 GB)
Code:
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
HDD-POOL-RAIDZ3 5.45T 1.28T 4.17T - - 0% 23% 1.00x ONLINE -
A "zfs list" reported a little over 3TB available space (used + avail in the following output), which was logical to me because the parity will eat up 3 drives. So my capacity is around 5x 700 GB = 3.500 GB
Code:
NAME USED AVAIL REFER MOUNTPOINT
HDD-POOL-RAIDZ3 758G 2.27T 219K /HDD-POOL-RAIDZ3
I started to create my volumes on top of the pool and this is where it gets really weird. Because the system told me "there is not enough space" for my largest backup-volume (after I only have copied a few hundred GBs).
This is the behavior I see (on a smaller disk):
On the RAIDZ3 pool creation of a 5GB volume results in the following consumption on the pool:
Code:
NAME USED AVAIL REFER MOUNTPOINT
HDD-POOL-RAIDZ3/vm-1002-disk-0 11.6G 2.28T 128K -
Yes. Exactly. It eats up roughly 12 GB in the pool. What the hack is going on here? That is
- more than twice the space I want (5GB)
- There are already 3 disks off for my parity
Code:
NAME USED AVAIL REFER MOUNTPOINT
SSD-POOL/vm-1002-disk-0 5.16G 354G 56K -
I can see the same behavior on larger scale. 1205GB volume eat up 2.29TB in the pool!
<edit>Forgot to mention. It is the very same behavior indpendent from UI and/or CLI. </edit>
I am totally confused/puzzled about my "understanding" of RAIDZ3 and the ZPOOL in general. Couldn't find anything via g**gle, bing and so on. All people explain a "hidden cost" when growing such a RAIDZ-Pool (in terms of vDevs need to be the same) but noone mentions, that you actually can only use half of your storage (as I seem to experience it).
It is my first try on anything else than mirrored vDevs - so someone might just tell me: "It's expected mate". If that is the case. Could you please explain?
Thanks for your help.