Goal 1 and biggest priority -- Fix the performance issue that is killing this production server. Starting to wonder if I made a mistake not going with VMWare.
Cold ZFS can_be/is slow. It have to load data and metadata to ARC.
Goal 2 - Storage problem, after reading how great ZFS is in the documentation and the threads I decided to go that route. I don't fully regret this, but there are some consequences I was not aware of and would like to fix. The only image option is RAW and that means thick provisioning and wasted space. PVE thinks I am completely out of drive space even though "zpool list" shows I have 4.95TB free. I am thinking I might have missed a step and PVE is using the raw RAIDZ pool as a block device. I have been wondering if there was a way to put a file system on it before telling PVE to use the storage. I mean for example, could I have created the RAIDZ and gotten all of the advantages of that for the LVM portion of the picture, but then formatted it EXT4 or something so I could have used a better image format that would have allowed for thin provisioning? How do I get there from here? Can I move my images to an external HD, redo the storage pool, move the images back and reattach them? I assume so, but I have been unable to figure out how to do that.
Add ZFS as directory and you can use qcow.
Code:root@the-verse:~# zpool status -v guests-zpool pool: guests-zpool state: ONLINE status: Some supported features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(5) for details. scan: scrub repaired 0B in 32h25m with 0 errors on Mon Oct 9 08:49:09 2017 config: NAME STATE READ WRITE CKSUM guests-zpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ata-ST2000NX0403_W46069PW ONLINE 0 0 0 ata-ST2000NX0403_W4606CZP ONLINE 0 0 0 ata-ST2000NX0403_W46069Z8 ONLINE 0 0 0 ata-ST2000NX0403_W4606DHW ONLINE 0 0 0 errors: No known data errors
Its not mine but look at this ZFS calculator https://forum.proxmox.com/threads/slow-io-and-high-io-waits.37422/#post-184974
Code:root@the-verse:~# zfs list NAME USED AVAIL REFER MOUNTPOINT guests-zpool 4.95T 156G 140K none guests-zpool/vm-100-disk-1 792G 695G 253G - guests-zpool/vm-101-disk-1 792G 458G 490G - guests-zpool/vm-102-disk-1 792G 432G 516G - guests-zpool/vm-103-disk-1 823G 772G 197G - guests-zpool/vm-104-disk-1 792G 889G 58.6G - guests-zpool/vm-105-disk-1 542G 611G 79.4G - guests-zpool/vm-105-state-Still_Evaluation 8.76G 163G 2.02G - guests-zpool/vm-106-disk-1 318G 401G 59.2G - guests-zpool/vm-106-state-Sentora 8.76G 160G 4.14G - guests-zpool/vm-107-disk-1 198G 331G 22.8G -
Do you use snapshots?
Suggestions for performance
1. compression = lz4
2. volblocksize = 128k
3. Count your RAM usage. Limit ARC min/max and don`t let others programs to shrink it.
Suggestions for storage usage.
1. ashift 12 will use more space then ashift 9
2. Look at ZFS calculator
3. Persistent L2ARC can be good improvement https://github.com/zfsonlinux/zfs/pull/2672
4. volblocksize 8k use more space then volblocksize 128k.
5. On linux VM discard/fstrim can free space on ZFS. On Windows it is done already.
Just use scsi and discard=on in VM config.
Try to defragment your VM storage to get performance and less space usage.
p.s. Was a time then it took ~2 hours to start all VM after server reboot. After some tuning I need only ~1 hour on the same server. BTW I start VM manually.