Is Unraid suitable for building 10G NAS with at least 400MB/s sequential read speeds for small VFX production?


Recommended Posts

Hello.

 

I am a VFX artist running a small studio. Sometimes I am working alone, sometimes in a team of up to 5 people. I am looking forward to upgrading my "NAS" server. I need redundancy, speed and VMs. I am running a 10G network. Up to this time I was using RAID5 or RAID6 on Qnap. Jumping to ZFS will be reasonable for stripping some vdevs on "raid6" for speed and redundancy. That is why I am choosing between FreeNAS and Unraid. Native ZFS in FreeNAS is tempting, but your community, VM capabilities, Docker support and no fear if I am not using Intel Xeon and ECC memory are very tempting :)

 

My ideal workflow will be to have a fast enough HDD based volume from 6-8 drives. It will not sature the 10G but it can be 300- 600MB/s Reads with conventional RAIDS or 600 - 800MB/s on ZFS with two striped vdevs, but it is scary to have everything chain linked together if I am not a big company with proper server grade HW and multiple backup servers. That is why I am not considering ZFS plugin on the Unraid. If there is L1ARC as is in FreeNAS I don't want to risk and run it on the hardware I dedicated for my server (older i7 and non ECC memory).

That is why I am looking forward to have ssd caching volume / tier for interactive data access via network and HDD based array that I can expand one by one drive. My fier in this solution is having too much trouble with manual data sorting and transferring between fast and slow tier.

 

I understand that Unraid is not using typical RAID with striping on the main Array. My question is if it can be configured to perform for my use case?

 

Main discussion about the speed of the Unraid array I found was about the write speeds. That is not my main concern. I can use the cache pool. We work with relatively big datasets, but in most cases it is not more than a few TBs at the start of the project and that means i can bought big enough SSDs for that ingesting process :D My main question is about Read speeds for image sequences.

Advanced VFX are in most cases done from image sequences of EXR, or DPX image files, not from video files. For example 30MB per frame. Every frame is a separate file. Can that help with read speed with some file spreading setting in Unraid? Or read speeds cant exceed the speed of one drive?

I am not very interested in RAM caching on the server. My workstations are caching these image sequences to internal SSDs if they are coming from the network. "Firsttime" reading speeds are my concern.

 

If the main array is not good for this task, what about the cache pools? I did not find information about using the separate pool as a share. If I understand that correctly, there is a need to assign a share to drive/s in the main array and enable the cache pool with settings like prefer or only for that share. That can work, but if I am using that SMB share via Windows I will see the size report of assigned drives in the array or of that cache pool? Yeah I can remember how much I can put on that volume, but that is a bit meh if I want to use my pool as working volume.

 

Can I promote specific data from the array back to the cache pool? My hierarchy is for example VFXProjects/*year*/*Client*/*ProjectName*/---uderlaying project structure. I don't want to promote the whole share, there will be no space in the cache for that, and I don't want to promote the whole HDD, because I will assign a bunch of drives for this VFXProjects root folder.

If not, that can be a complication for my use case. Sometimes I need to go back to some projects if there is a new year version of some commercial, or if we are working on a new season of the TV series and we want to reuse some older data and don't want to use it in one HDD speed territory.

 

45 drives had a blog post about the Unraid running workstation/NAS with 10G saturating speeds via network for video editing. They used SSDs in the cache pool for that, but I don't know how they handled data promoting from the cache pool to the array and vice versa. They said that data will be automatically transferred from the cache to array. Is there some more sophisticated mechanism as a basic mover in the Unraid for tasks like that?

 

Thank you guys in advance for your advice.

Michal

Link to comment
49 minutes ago, MSabik said:

read speeds cant exceed the speed of one drive

This, for the main parity array. Pools are based on standard BTRFS RAID levels, so the performance can vary depending.

50 minutes ago, MSabik said:

Can I promote specific data from the array back to the cache pool?

Not automatically, but it can be done manually on a folder by folder basis.

51 minutes ago, MSabik said:

I did not find information about using the separate pool as a share.

You can assign a share to only exist on a specific pool, and it will run out of space based on only that pool. However, if a folder from that share is manually moved to the main array then the free space will reflect the main array.

 

54 minutes ago, MSabik said:

Is there some more sophisticated mechanism as a basic mover in the Unraid for tasks like that?

The built in mover script only operates on whole shares, so as I said above if you want to have specific subfolders in specific locations that will have to be done manually and setting the built in mover to not alter that share. I have my VM's set up this way, when I create a new VM it automatically goes to a cache pool, and if I later decide I don't need the performance I manually move the specific VM files to the parity array but since it's still in the same folder structure it appears to the user share to be in the same spot.

/mnt/disk1/domains/VM1/vdisk1.img and /mnt/cache/domains/VM2/vdisk1.img both show up in /mnt/user/domains/VM1... and VM2....

 

It sounds to me like you could force Unraid to act like you want by manually moving data around, but it can't automatically work the way you are asking without customization.

Link to comment

Thank you jonathanm.
Your answer is very helpful to me. I know about BTRFS for RAIDing in cache pools but I did not know if all this is possible. Promoting data between main array and cache pool by folder basis with possibility to present it in the same "spot" to the end user on the network is looking like something that can satisfy my needs.
If some automation will be needed I can write something for linux to do it for me, or Unraid has its own scripting environment?

Link to comment
20 minutes ago, MSabik said:

If some automation will be needed I can write something for linux to do it for me, or Unraid has its own scripting environment?

Yes. 😁

Unraid is just heavily customized slackware, so you can use scripts at the console, or use the user scripts plugin to manage them with the webgui.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.