How to organize pool, datasets an vdevs?

fosaq

Dabbler
Joined
Jun 24, 2020
Messages
17
Hello,

some time ago I read about FreeNAS, ZFS and it's possibilities and want to set up my own NAS for home use, mainly for sharing and backups, maybe a PLEX-Server later.
For testing and playing around I followed some hardware guides and recommendations (not from this forum, I found it too late) and endet up with frankenstein's NAS: I managed it to "run" which means it doesn't crash anymore every 5 minutes.... But I don't want to go into hardware detail, thats another story.

Realizing that the hardware won't fit I started to search for... what exactly? After some days of reading across the internet and this forum I realized also, that just throwing hardware together and hope it will do it's thing won't work. Before I can choose proper hardware, I need to be clear what it's supposed to do. Therefore I startet thinking of my goals and how the data structure should be in order to achieve these goals. That's why I'm writing this post. It turns out, this topic is way more complex than I thought but I want to learn the necessary details in how it can be usefull und how it works. At the moment I feel a bit lost and don't know where to start. As you may already determine, I'm not an english native speaker which makes it more difficult for me to understand those things.

I need help how I should organize vdev's, datasets and the pool in order to not make it too complex but well working.

My rough goal is a NAS for home use for some Windows clients with the following requirements:
1. (most important)
A backup solution where I don't need to fear one of the clients hard disk/ssd completely fail.
In case one of the clients die I just want to take a fresh machine, connect it to the NAS and all the Data for this client is just right back online with no headache if there is maybe some data loss.
My idea is some kind of "live" backup where the home directories of the clients are either directly mirrored to the NAS or not stored locally on the client but directly on the NAS. If a machine fails the data loss should be at a maximum of maybe the last some minutes.
2.
Automatic alerts where I will be warned if something goes wrong and I have to take action. (disk fail, not enough space, temperatures, BIOS battery low, too much cpu usage ...)
3.
File sharing in the local network with seperate, password-protected spaces for every user. (should be pretty easy)
4.
FTP-server for the scanners where I can just push a button and the scanned document showes up in the storage. (should be pretty easy)
5.
The NAS should use as less power as possible because I expect it to be 80% of the time in idle.
6.
Possibility to upgrade the components so a PLEX server can run on it later
7.
Let's see what usefull functions the system can offer me in the future :)

All that reliable and fast enough to do the job.
According to the hardware guide here in the forum this is a light to medium usage so with the propper hardware it should be no problem and do not cost thousands of €.

Environment:
Up to 5 Windows clients running simultaneously
Most mobile clients only support Wifi 802.11g (2,4 GHz) but will change in the future to ac (5 GHz)
The switch got 2 SFP ports (not SFP+) and will be connected to the NAS with two fibre cables using LACP (but only 1 G).
When a switch with SFP+ and 10 G becomes cheaper I want to switch to such a device.

Hardware I already got:
Some old case (should be replaced if needed [not enough drive bays, temperatures to high...])
Power supply (should be replaced with a better one)
Board and CPU will be sold (Fujitsu D3417-B11 and Intel Core i3-7100)
Intel X520 network card
2x 8 GB Samsung DDR4 ECC memory
16 GB Intel NVMe SSD
The first NAS HDD: Seagate Iron Wolf Pro 2 TB


There are noob questions that I'm not able to awnser myself by just reading the docs or the forum. For example:
I understand that a dataset is like it's own ZFS within a pool and can contain another dataset or vdev but what is the exact point in doing this? What is the advantage? What are cases where you do this?
For the configuration it's those things like: "how do I define a mirrored vdev?" because the only option I have in the storage Menu is to create pools.
I'm missing some kind of "best practice recommendations for dummies" or I just didn't found it.


I hope you have some suggestions for me and thank you for reading this wall of text but I wanted to give you as much detail as possible :)
 

garm

Wizard
Joined
Aug 19, 2017
Messages
1,556
There is a stickie somewhere of resources to consume before starting out. You need to grasp the basics of ZFS and then look at your hardware. Start by reading the manual, cover-to-cover, at least 2 times, then when you think you got it, read it again.
 

Samuel Tai

Never underestimate your own stupidity
Moderator
Joined
Apr 24, 2020
Messages
5,399
 

fosaq

Dabbler
Joined
Jun 24, 2020
Messages
17
I read those threads and the documentation and at the moment I have two questions:

How does the system know, if incoming writes are sync or async? I think it's best for my workload to leave the setting "standard" because I expect a little traffic to be sync writes. Can I just trust the system at that point or should I do some testing?

What are typical use cases for zvols? I read they are (or act as) block devices but I don't know what the conclusion is from this information.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
What are typical use cases for zvols? I read they are (or act as) block devices but I don't know what the conclusion is from this information.
A block device can either be used as a VM disk or be shared via iSCSI.

How does the system know, if incoming writes are sync or async?
The system making the request for a storage operation has an option to specify that it wants a write to be sync. You can set ZFS to ignore that request (sync=never... or the reverse sync=always).

Some methods of access won't ever do that (like FTP) so if you haven't specified it it will be async.

I think it's best for my workload to leave the setting "standard" because I expect a little traffic to be sync writes. Can I just trust the system at that point or should I do some testing?
If anything's important to you, TEST.
 
Top