Merge branch 'StorageServer' into 'main'
2024-01-12 Storage Server See merge request d_mcknight/blog-content!1
This commit is contained in:
		
						commit
						e023342df0
					
				
					 3 changed files with 113 additions and 0 deletions
				
			
		
							
								
								
									
										113
									
								
								2024-01-11_Storage-Server.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								2024-01-11_Storage-Server.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,113 @@ | ||||||
|  | --- | ||||||
|  | date: 2024-01-11 | ||||||
|  | title: Building a Storage Server | ||||||
|  | tags:  | ||||||
|  |   - homelab | ||||||
|  |   - hardware | ||||||
|  |   - truenas | ||||||
|  |   - storage | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | Since [my first post](https://blog.mcknight.tech/2023/11/29/Homelab-Upgrades/#Storage), I've done the research and settled on a storage solution. | ||||||
|  | I did a fair bit of reading up on different file systems, SAN (Storage Area Network) and NAS (Network Attached Storage) architectures, and backup/ | ||||||
|  | failover strategies. In the end I've decided to go with TrueNAS SCALE to serve up shares on a ZFS file system. I read a lot of articles and watched a | ||||||
|  | lot of YouTube videos and I'll include links to some of the resources I found helpful at the end of this post. | ||||||
|  | 
 | ||||||
|  | ## Why ZFS? | ||||||
|  | There are a lot of reasons to like ZFS and even more resources online explaining why you should use ZFS, but I'll highlight the ones that are important | ||||||
|  | to me for my use case. | ||||||
|  | - Expandability: you can add drives to an existing pool (not as easily as in Unraid, but its possible) | ||||||
|  | - Data Integrity: the way ZFS handles writes does a lot to avoid data corruption | ||||||
|  | - Snapshots: snapshots (aka shadow copies) allow for keeping backups at the file-system level with minimal effort and disk usage;  | ||||||
|  |   they also enable easy replication for external backups. | ||||||
|  | - Special Devices: a pool of hard drives can be augmented with a small amount of SSD storage for caching, file metadata, and more | ||||||
|  | 
 | ||||||
|  | ## Why TrueNAS SCALE? | ||||||
|  | One of my goals in my homelab is to make administration and maintenance easy since I'm doing this in my "free time". Having a good Web UI means there's | ||||||
|  | a shorter learning curve compared to needing to drop into a shell for things. TrueNAS SCALE is also a popular solution with an active community forum | ||||||
|  | as well as a number of tutorials and how-to articles/videos. I chose TrueNAS SCALE over TrueNAS CORE primarily because it is based on Linux instead of BSD, | ||||||
|  | so in the event I do need to drop into a terminal for something I will be more at home. To summarize, it checks a lot of boxes: | ||||||
|  | - Understandable Management Web UI | ||||||
|  | - Built on Linux for familiar permissions management and CLI | ||||||
|  | - Supports SMB and NFS shares | ||||||
|  | - Includes built-in backup (replication) services | ||||||
|  | - Supports iSCSI for exposing raw storage (this [video from Craft Computing](https://www.youtube.com/watch?v=9JL-RVUHj6o) explained to me why I  | ||||||
|  |   would care about iSCSI) | ||||||
|  | - *Bonus*: The web UI supports 2FA | ||||||
|  | 
 | ||||||
|  | ## The Hardware | ||||||
|  | Most of the hardware for this storage server came from ebay, so I'll list model numbers here (I don't want this to be another blog with a bunch of dead | ||||||
|  | ebay links). I've excluded incidentals like power cables and screws; I also already had the storage on hand to put in this. | ||||||
|  | 
 | ||||||
|  | |Component|Model|Description|Price| | ||||||
|  | |---------|-----|-----------|-----| | ||||||
|  | |Chassis|Supermicro SC826|2U Server with 12 3.5" bays|$219| | ||||||
|  | |CPU/MB|Supermicro X9SCL with Xeon E3-1230V2|Motherboard and CPU|$46| | ||||||
|  | |HBA|LSI 9207-8i|SAS Controller Card and cables|$84| | ||||||
|  | |RAM|Crucual ECC Unbuffered UDIMM PC3L|32GB RAM Kit|$50| | ||||||
|  | |Network Card|Intel E10G42BTDA|10GbE Network Card|$35| | ||||||
|  | |PSU|PWS-1K28P-SQ|2x Quiet PSU|$100| | ||||||
|  | |Fans|Nocuta NF-A8|3x fans|$56| | ||||||
|  | 
 | ||||||
|  | The core components come in just under $350 with another $250 for some upgrades for a total of around $600. I initially deployed my server without those | ||||||
|  | upgrades but ended up making them sooner rather than later for a few reasons: | ||||||
|  | - More RAM means more cache for ZFS which can significantly help with accessing commonly used files | ||||||
|  | - I already had a 10GbE network card in my old server, so adding one here means I can migrate data at faster than Gigabit speeds | ||||||
|  | - The stock PSUs can get loud and this server lives in my office, about 3 feet from my head when I'm at my desk. | ||||||
|  | - The stock fans can also get loud so I swapped in some appropriately sized Noctua replacements | ||||||
|  | 
 | ||||||
|  | ### Hard Drives | ||||||
|  | For the storage, I'm using some schucked WD 8TB external drives. If you're doing the same, these drives won't work when 3V3 power is supplied; I found a good  | ||||||
|  | [illustrated guide](https://imgur.com/a/BFdmB) for how to address this. I did this awhile ago with my drives and I did notice some of the tape was starting  | ||||||
|  | to peel; if I did it again I might consider using conformal coating, but these are about to be permanently installed in my server so I didn't bother doing | ||||||
|  | anything since they all worked immediately. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | ### 2.5" SSDs | ||||||
|  | I have 2 1TB SSDs that I'll be using for a metadata VDEV to speed up my Hard Drive array. In short, this 1TB will be used to store file metadata (file names, | ||||||
|  | access times, etc) while file contents will be stored on hard drives. This should significantly speed up browsing network shares and navigating the file | ||||||
|  | system.  | ||||||
|  | > I plan on re-doing this setup with 3 drives here so the redundancy matches my data VDEV (RAIDZ2) to resolve the warning in TrueNAS. It is also important to | ||||||
|  |   note that warning exists because if the metadata VDEV fails, then the data is inaccessible, just as it would be if the data VDEV failed. Realistically, I | ||||||
|  |   think its less likely for 2 concurrent SSD failures than it is for 2 concurrent HDD failures and rebuilding 1TB is faster than 8TB but its only another $50 | ||||||
|  |   to add a drive and I have the capacity in my chassis to accomodate it. | ||||||
|  | 
 | ||||||
|  | I found a [model on thingiverse](https://www.thingiverse.com/thing:262035) to mount these in drive sleds. I also noticed while doing this | ||||||
|  | that some of the drive sleds I got have 2.5" drive mounting holes and others don't. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Noctua Fans | ||||||
|  | If you have ever used a rack-mounted server, you know that noise is not really a consideration in their cooling solutions. The stock fans in these servers idle | ||||||
|  | fairly quietly, but ramp up fast with any appreciable CPU load (i.e. data compression). I found a printable fan carrier  | ||||||
|  | [on Thingiverse](https://www.thingiverse.com/thing:4919403) and printed out 3 of them to install Noctua fans in my server. The Thingiverse project notes  | ||||||
|  | how the fan connector needs to be modified slightly to fit the fan connectors and the fit is nearly perfect and things are *MUCH* quieter. | ||||||
|  | 
 | ||||||
|  | ## OS Installation | ||||||
|  | If you're building with the X9SCL board I'm using, I learned the hard way that PCIe storage devices will show up in BIOS, but you can *NOT* boot from PCIe. I | ||||||
|  | also learned (and I think there may be a warning in the installer) that it is *NOT* recommended to install TrueNAS SCALE to a USB flash drive. For the moment, | ||||||
|  | I've attached a 2.5" SSD to the internal USB port, but longer-term I intend on migrating to a SATA Disk-on-Module (DOM) to resolve the warnings in the Web UI | ||||||
|  | (and to remove the SSD installed with 3M VHB tape). | ||||||
|  | 
 | ||||||
|  | ## Wrap Up | ||||||
|  | There are a lot of considerations for how to structure ZFS VDEVs and implement shares and I'm still actively working out a solution for myself. Initially, I | ||||||
|  | have created a RAIDZ2 Data VDEV with a RAIDZ1 Metadata VDEV and that is working well. I already see that my storage pool isn't big enough though and | ||||||
|  | I might want to change some of the encryption and compression options so I'll wait to document things until I have a better idea of how I want this configured. | ||||||
|  | 
 | ||||||
|  | For the moment, I have duplicated data from my Unraid server and will keep things mostly in sync until I finalize the new setup. I also have an offline | ||||||
|  | backup of really important stuff, just in case. | ||||||
|  | 
 | ||||||
|  | ## References | ||||||
|  | Perhaps my first introduction to ZFS was from a Level1Techs video [on YouTube](https://www.youtube.com/c/Level1Techs). Wendell also wrote a couple of | ||||||
|  | forum posts about [TrueNAS SCALE](https://forum.level1techs.com/t/truenas-scale-ultimate-home-setup-incl-tailscale/186444) and | ||||||
|  | [ZFS Metadata devices](https://forum.level1techs.com/t/zfs-metadata-special-device-z/159954). | ||||||
|  | 
 | ||||||
|  | As I got closer to implementation, I found Lawrence Systems on YouTube has a  | ||||||
|  | [playlist](https://www.youtube.com/playlist?list=PLjGQNuuUzvmv_LHMcaub8QfrLD7Lc1nMW) of TrueNAS explainers and how-to videos. There's also some other videos | ||||||
|  | on the channel about ZFS and general network design. I also previously used this channel as a resource for pfSense setup, but that's a topic for another day. | ||||||
|  | 
 | ||||||
|  | There are many other great resources online so I encourage searching around and doing other research into alternatives; ZFS seems a good fit for me, but | ||||||
|  | it may not be the best option for everyone. | ||||||
|  | 
 | ||||||
							
								
								
									
										
											BIN
										
									
								
								drive_sleds.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								drive_sleds.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.5 MiB | 
							
								
								
									
										
											BIN
										
									
								
								hdd_mod.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								hdd_mod.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.1 MiB | 
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue