TrueNAS

From Bitpost wiki
Revision as of 02:07, 12 April 2022 by M (talk | contribs)

Overview

Pools

TrueNAS provides storage via Pools. A pool is a bunch of raw drives gathered and managed as a set. My pools are one of these:

Pool type Description
single drive no TrueNAS advantage other than health checks
raid1 pair mirrored drives give normal write speeds, fast reads, single-fail redundancy, costs half of storage potential
raid0 pair striped drives gives fast writes, normal reads, no redundancy, no storage cost
raid of multiple drives raidz: optimization of read/write speed, redundancy, storage potential

The three levels of raidz are:

  • raidz: one drive is consumed just for parity (no data storage, ie you only get (n-1) storage total), and one drive can be lost without losing any data; fastest
  • raidz2: two drives for parity, two can be lost
  • raidz3: three drives for parity, three can be lost; slowest

Datasets

Every pool should have one child dataset. This is where we set the permissions, important for SAMBA access. We could have more than one child dataset, but I haven't had the need.

Dataset settings (NOTE: "Perm type Basic" is important!):

name #pool#-ds
share type SMB
user m
group m
ACL
 who everyone@
 type Allow
 Perm type Basic
 Perm Full control
 Flags type Basic
 Flags Inherit

Windows SMB Shares

Share each dataset as a Samba share under:

Sharing > Windows Shares (SMB)

Use the pool name for the share name.

Use the same ACL as for the dataset.

WARNING I had to set these Auxiliary parameters in the SMB config so that symlinks would be followed.

  • Services > SMB > Actions > configuration > Auxiliary Parameters:
unix extensions = no
follow symlinks = yes
wide links = yes
  • Stop and restart SMB service

Maintenance

Pool speed check

dd if=/dev/zero of=/mnt/safe/safe-dd/speedtest.data bs=4M count=10000
# 4GB transferred in ~15sec at ~2.9GB/sec, WOW

Remove a bad pool

  • Make note of which drives use the pool; likely some are bad and some are good and perhaps worth reusing elsewhere.
  • Disconnect SMB connections to the pool
    • Update valid shares in mh-setup-samba-shares
    • Rerun mh-setup-samba-shares everywhere (eventually anyway)
    • One possible easier way to get SMB disconnected from the pool is to stop SMB service in TrueNAS
    • Sadly, to get through this for my splat pool, I had to remove pool, fail, restart hive, remove pool.
  • Pool > (gear) > Export/disconnect
    • [x] Delete configuration of shares that use this pool (to remove the associated SMB share)
    • [x] Destroy data on this pool (you MUST select this or the silly thing will attempt to export the data)

Configuration

Set up user

I set up m user (1000) and m group (1000)

Set up alert emails

Go to one of your google accounts to get an App password. It has to be an account that has 2fa turned on, bleh, so don't use moodboom@gmail.com. I went with abettersoftwaretrader@gmail.com.

Accounts > Users > root > edit password > abettersoftwaretrader@gmail.com
System > Email > from email > abettersoftwaretrader@gmail.com, smtp.gmail.com 465 Implicit SSL, SMTP auth: (email/API password)

Troubleshooting

SOME of my shares were throwing Permission Denied errors on mv. Solutions:

  • I applied permissions again, recursively, then restarted the SMB service on hive and the problem went away.
  • You can also always go to the melange hive console, request a shell, and things always seem to work from there (but you're in FreeBSD world and don't have any beauty scripts like mh-move-torrent!)