Change block size on the fly

Added by Vlad-Valeriu Velciu 10 months ago

I am new to nexenta storage so there is a lot of information for me to breathe in. I have recently stumbled upon a document named techbriefnexenta_virtualization.pdf where it says that the block size can be changed on the fly and when dealing with new environments a good start is to set it at 4KB.

I will run a few VMs: SQL database for project management, exchange server, 2 x DC controllers and a file server. I have defined two ZVOLs, one for O/S of 2 TB and the rest for Data storage. Both of the volumes where set using a 4KB block size.

Now I'm wondering if my decision was correct and if I have made the right decision in this aspect because, from what I can see, there is no way of changing the block size after creation so no "on the fly".

Any comments will be highly appreciated.

Thank you, Vlad

tech_brief_nexenta_virtualization.pdf - Nexenta Tech Brief VMWARE (486.4 KB)


Replies

RE: Change block size on the fly - Added by David Bond 10 months ago

[WARNINGS]
link-id not found - file system name

Dont think it can be done in the GUI, but in the shell you should be able to do it via

Zfs set recordsize=[size] [file system name]

RE: Change block size on the fly - Added by Derek Glover 10 months ago

And this will only change new files written, not existing stuff. Sorta like how de-dupe works.

RE: Change block size on the fly - Added by Vlad-Valeriu Velciu 10 months ago

[WARNINGS]
link-id not found - file system name

David Bond wrote:

Dont think it can be done in the GUI, but in the shell you should be able to do it via

Zfs set recordsize=[size] [file system name]

Thank you David. I will try it that way.

Do have any recommendations regarding block sizes for my system and data storage volumes?

Thanks, Vlad

RE: Change block size on the fly - Added by David Bond 10 months ago

The recommended size for the record size for VMs is 8KB, but thats just best performance on average. You should try to match the record size in the VM with that of ZFS. I believe the recommended size for SQL Server is 64KB for physical machines.

But again the only real way to make sure is to monitor performance on different settings, monitor the transaction sizes etc.

On nexentastor you can do that with

dtrace IO bitesize

leave that running for a while, with the VMs running doing what they normally do, after a while ctrl-c it and it will output the block sizes that have been requested, pick the most requested for that pool. That should give you the best performance.

If you have it spread evenly over multiple sizes, that you probably should create additional volumes with different record sizes, finding out which VM need the different record size and move it on to the correct one.

For block sizes you should read the best practice guides and white papers for each system (from microsoft) they will say what size NTFS block sizes should be used for each or how to determin the correct size, then the volume should have same as that.