From FreeNAS 11.3 to TrueNAS Core 12 - Upgrade Stories

Tony Self

Contributor
Joined
Jan 30, 2017
Messages
130
I have FreeNAS 11.3-U3.2 running on two HP Proliant Microservers. I also run Plex, Sonarr, Radarr, Sabnzbd and Transmission plug-ins.

I am quite keen to upgrade to the TrueNAS Core 12 Beta train as soon as I can, but I am obviously a bit weary about rushing in if there are problems. I have been checking the forum since the Beta was released last week looking for feedback on the upgrade. So far the only issue I have seen is with a Plex Server installation that sounds a non-standard configuration.

The trouble is that users only tend to post when they have problems, not when the upgrade goes smoothly.

So this is your opportunity to report your upgrade experiences, good or bad, and instill some confidence in to those of us who haven't bitten the bullet yet.

I am hoping I will wake up to lots of replies when I get up in the morning.

Tony Self
 

c77dk

Patron
Joined
Nov 27, 2019
Messages
467
As long as I'm sticking to simple shares (primary user+group) everything seems quite stable for me, even my jails. If using groups for access, I would advise waiting for BETA2

Time machine from my OSX machines have been rock solid and fast since upgrade.
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
As long as I'm sticking to simple shares (primary user+group) everything seems quite stable for me, even my jails. If using groups for access, I would advise waiting for BETA2

Time machine from my OSX machines have been rock solid and fast since upgrade.
Did you notice a speedup for time machine after upgrading?
 

c77dk

Patron
Joined
Nov 27, 2019
Messages
467
Did you notice a speedup for time machine after upgrading?
Yup, used to take ages, but after moving to 12-BETA1 I had to take a look at the TM status, since I thought it had failed - but it had finished extremely fast compared to 11.3. So for that part I'm a happy camper :smile:
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
Yup, used to take ages, but after moving to 12-BETA1 I had to take a look at the TM status, since I thought it had failed - but it had finished extremely fast compared to 11.3. So for that part I'm a happy camper :smile:
Glad to hear that. Replacing the event backend and rewriting AIO was a huge change. Glad that it's working better.
 

ThreeDee

Guru
Joined
Jun 13, 2013
Messages
698
I just did a quick update and Plex and Ubiquiti Controller jails wouldn't even start so reverted back to 11.3. Reading up on what I need to do to get my jails going after the update.
 

Tony Self

Contributor
Joined
Jan 30, 2017
Messages
130
I just did a quick update and Plex and Ubiquiti Controller jails wouldn't even start so reverted back to 11.3. Reading up on what I need to do to get my jails going after the update.
From what I have read, I believe you have to update the jails once you have done the upgrade to TrueNAS Core 12. The only trouble is once you have updated the jails, they won't work if you roll back to FreeNAS.

This is the main reason I am holding back on upgrading myself.
 

ThreeDee

Guru
Joined
Jun 13, 2013
Messages
698
From what I have read, I believe you have to update the jails once you have done the upgrade to TrueNAS Core 12. The only trouble is once you have updated the jails, they won't work if you roll back to FreeNAS.

This is the main reason I am holding back on upgrading myself.
I tried updating my Ubiquiti jail .. and it failed I forget how far into it .. :confused:
 

Tony Self

Contributor
Joined
Jan 30, 2017
Messages
130
I tried updating my Ubiquiti jail .. and it failed I forget how far into it .. :confused:
That doesn't surprise me that you have had trouble with Ubiquiti. The Unifi Controller has some old dependancies. I run my UniFi Controller on a Raspberry Pi for that reason.
 

Yorick

Wizard
Joined
Nov 4, 2018
Messages
1,912
Plex jail is running fine while still on 11.3-RELEASE inside the TrueNAS beta. Granted it’s a manually created jail, not a plugin jail. That shouldn’t make a difference, but it might.
 

Patrick M. Hausen

Hall of Famer
Joined
Nov 25, 2013
Messages
7,740
That doesn't surprise me that you have had trouble with Ubiquiti. The Unifi Controller has some old dependancies. I run my UniFi Controller on a Raspberry Pi for that reason.
I run it in a VM with Ubuntu:
 

Patrick M. Hausen

Hall of Famer
Joined
Nov 25, 2013
Messages
7,740
I updated rather early because I wanted this flag for my work on a nice Grafana dashboard:
Bildschirmfoto 2020-07-07 um 13.25.37.png

Network, all VMs and jails running - no problem whatsoever. Subsequently I recreated all my jails and switched them from cloned to base jails for easier updates in the future. Jails are not yet entirely but should eventually be managed by Ansible alone.

SMB needed some fixes that @anodos was so kind to prioritise and roll out.

Since the BETA1: everything in perfect condition.

P.S. The only thing I do not like is the new allocation mechanism for swap. Essentially cuts my available swap space in half. If you agree, please vote for: https://jira.ixsystems.com/browse/NAS-106375
Who came up with the 2G default size, anyway? This is ridiculously small.
 
Last edited:

johny3

Dabbler
Joined
Jun 10, 2020
Messages
26
I upgraded as well.
things now working:
cannot access smb share anymore
I was going to try to set up syncfree but get an error creating a user.
is it possible to revert to freenas?
Will my smb share be viewable then?
thanks :)
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
I upgraded as well.
things now working:
cannot access smb share anymore
I was going to try to set up syncfree but get an error creating a user.
is it possible to revert to freenas?
Will my smb share be viewable then?
thanks :)
Before reverting, can you PM me a debug from TrueNAS core? I can't really fix any SMB problems without data.
 

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
I had SMB issues with my custom comfig, because TrueNAS 12 creates smb4.conf differently than 11.3, as well as because of some changes in Samba itself. It's a problem of my own making, and I don't mind it, but its worth noting.

For example 12 builds the .conf file like this:

automated global stuff
users custom global stuff (if any)
a bit more global stuff [this bit is new in 12, wasn't the same in 11.3]
each [share] as a section, in turn

Now, if you took a shortcut and added a [share] manually in the * global * custom config for any reason (I did it to control IPC$ which doesnt refer to a specific file system location so tricky to do in a share). Then the "bit more global stuff" will break smb4.conf in v12 where it worked fine in 11.3. Because 12 will build a .conf file, which puts a bit of global config in a share not in the global section - and that breaks smbd startup.

There's a few other things but I'm still figuring them. For example I wanted an unusual combination of vfs objects which wasn't easy by UI, so I manually added it to custom code. But adding vfs netatalk manually to custom config worked in 11.3 and breaks 12.

I want to be clear that I still very much prefer having scope to add custom config!
But If you use custom config, be prepared to check if it broke anything in the new version of samba, is all.
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
I had SMB issues with my custom comfig, because TrueNAS 12 creates smb4.conf differently than 11.3, as well as because of some changes in Samba itself. It's a problem of my own making, and I don't mind it, but its worth noting.

For example 12 builds the .conf file like this:

automated global stuff
users custom global stuff (if any)
a bit more global stuff [this bit is new in 12, wasn't the same in 11.3]
each [share] as a section, in turn

Now, if you took a shortcut and added a [share] manually in the * global * custom config for any reason (I did it to control IPC$ which doesnt refer to a specific file system location so tricky to do in a share). Then the "bit more global stuff" will break smb4.conf in v12 where it worked fine in 11.3. Because 12 will build a .conf file, which puts a bit of global config in a share not in the global section - and that breaks smbd startup.

There's a few other things but I'm still figuring them. For example I wanted an unusual combination of vfs objects which wasn't easy by UI, so I manually added it to custom code. But adding vfs netatalk manually to custom config worked in 11.3 and breaks 12.

I want to be clear that I still very much prefer having scope to add custom config!
But If you use custom config, be prepared to check if it broke anything in the new version of samba, is all.
Can you please give me concrete examples of what you're trying to do (perhaps samples smb4.conf)? In 12, shares are loaded into the registry, and because of support for fsrvp, we need to use libsmbconf to allow SMB clients to dynamically create SMB shares to export shadow copies.
 
Last edited:

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
Can you please give me concrete examples of what you're trying to do (perhaps samples smb4.conf)? In 12, shares are loaded into the registry, and because of support for fsrvp, we need to use libsmbconf to allow SMB clients to dynamically create SMB shares to export shadow copies.
Here is a quick summary of what I was doing, and an example smb4.conf. Advance warning, it's messy and you'll *roll eyes* at me for it. I know it's pushing what *NAS users should be doing. But I'm not a Samba expert at all, and I found it tricky working in the 11.x GUI, compared to working straight off the smb4.conf man page - I needed the certainty in trying to work round 11.3 limitations. So I was experimenting and these were some of my aims:
  • Suppose you want to create a share for something unusual. In my case I wanted to actually create host allow/deny, and user access, for the IPC$ share.
  • Some vfs objects didn't seem to be in the 11.x list, and some had multiple versions in Samba (shadow_copy and shadow_copy2 I think) but couldn't select a specific one in the GUI. I wanted certainty which of them was being used.
  • The middleware automatically decided if I needed some vfs'es (eg if I needed sjhadow copy based on if I configured auto snaps), and what it thought I wanted wasnt what I wanted. The autosnaps wasn't helpful to me because the daily, weekly and monthly snaps had different auto names and couldn't all be shown in file history. So I ran snaps via a script to give standard names for hourly/daily/weekly/monthly. Which meant samba config would have set up shadow copies wrongly if I let it.
  • The middleware didn't handle recycler as I needed, either. I use nested datasets, which messed around with recycler presentation a bit. So again, it was easier to handle the recycler vfs usaing direct smb4.conf options too.
  • Some vfs objects had options I wanted to modify, such as crossrename size.
So for those reasons (which I admit were good or bad, and not exactly what TrueNAS is targeting!) it was easier to put some share sections into the global custom config, at the bottom. For example IPC$. And it was easier to manually set vfs objects explicitly in each share's custom config, so I knew exactly what was loaded.

An example of where migrating this from 11.3 to 12 didn't work:

Suppose you create global custom config in 11.3:

# LOG SIZE LARGE ENOUGH FOR FULL DEBUG OF SUBSTANTIAL SESSION
max log size = 200000
# PROTOCOL AND SECURITY
client NTLMv2 auth = yes
ntlm auth = ntlmv2-only
reject md5 clients = yes
reject md5 servers = yes
csc policy = disable
# custom options for IPC$ shares
[IPC$]
hosts allow = 192.168.1.3
hosts deny = 10.0.0.0/8
valid users = ipc_user

This will work as intended in 11.3, and break Samba in 12. The reason being, 12 BETA adds extra global options (registry shares = yes; include = registry) after the user's custom global text, when building smb4.conf. FreeNAS 11.3 didn't do that. If v12 put these 2 lines before the user's custom global text, it would work fine.

Like I said, people who use nontrivial custom config need to expect to have some work to do in migrating 11.3->12. I'm okay with that, and value the flexibility that allows me to tweak to my own needs. And that's my concrete example and what I was trying to do.
 

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
  • The middleware automatically decided if I needed some vfs'es (eg if I needed sjhadow copy based on if I configured auto snaps), and what it thought I wanted wasnt what I wanted. The autosnaps wasn't helpful to me because the daily, weekly and monthly snaps had different auto names and couldn't all be shown in file history. So I ran snaps via a script to give standard names for hourly/daily/weekly/monthly. Which meant samba config would have set up shadow copies wrongly if I let it
11.3 / 12.0 defaults to using shadow_copy_zfs, which does not rely on snapshot naming schemes.

  • The middleware didn't handle recycler as I needed, either. I use nested datasets, which messed around with recycler presentation a bit. So again, it was easier to handle the recycler vfs usaing direct smb4.conf options too.
  • Some vfs objects had options I wanted to modify, such as crossrename size.
What was wrong with the recycler in the case of nested datasets?

This will work as intended in 11.3, and break Samba in 12. The reason being, 12 BETA adds extra global options (registry shares = yes; include = registry) after the user's custom global text, when building smb4.conf. FreeNAS 11.3 didn't do that. If v12 put these 2 lines before the user's custom global text, it would work fine.
Okay. I will look into changing where we load registry. Adding a share config in the global configuration auxiliary parameters is stretching the intent of those fields a bit.
 

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
What was wrong with the recycler in the case of nested datasets?
Because the recycler needs to be searchable. Which means monolithic in current dataset and in snapshots. And it isn't.

Example: Suppose I have 50 staff (each with their own dataset and home dataset for whatever reason), and a lost/deleted file I think may have been last seen at the end of month reporting for 2020-05-31. I can expose my historic 2020-05-31 snapshot on ZFS easily. Can I go into .recycler and find . -iregex ".*/myfilenameguess\.docx$"? No. Because while the ZFS *file system* presented as a single file system, the recycler doesn't.

I won't see a single presented file system of .recycler/Jean, .recycler/Mike ..... , or .recycler/home/Jean and .recycler/home/Mike, .....

I have to check every dataset's snapshot for 2020-05-31 individually, with nested datasets - search in the .recycler on *every* dataset's 202-05-31 dataset, individually. Not just a single recycler, or a single snapshot's recycler.

I'd love to be wrong, on this - if I am please let me know!

The root problem is than snaps aren't:
dataset -> /subdataset1, /subdataset 2, ...
dataset@31-05-31 -> /subdataset1@31-05-31, /subdataset 2@31-05-31, ...

The snaps are:
dataset -> dataset non nested content only @ date1, dataset non nested content only @ date2
subdataset1-> subdataset1 non nested content only @ date1, subdataset1 non nested content only @ date2
subdataset2-> subdataset2 non nested content only @ date1, subdataset2 non nested content only @ date2

You can treat the current data as a virtual single filing system. It presents transparently as one. You can't do the same with snapshots. Therefore you can't do the same with the recycler. That's inherent in ZFS design, can't be helped. When you mount a root dataset's snapshot, you don't get to descend into subdataset's snapshots automatically.

Right now I'm tinkering with the idea of an automated symlink creator so that when the pool is recursively snapshotted, there's a dir left in the root dataset's filesystem, that in search terms, acts like a collated root for the entire file system at that time, even in snaps, including the recycler. But that's what I was trying to workaround.

Okay. I will look into changing where we load registry. Adding a share config in the global configuration auxiliary parameters is stretching the intent of those fields a bit.
Thanks! And yes ;-)
 
Last edited:

anodos

Sambassador
iXsystems
Joined
Mar 6, 2014
Messages
9,545
Because the recycler needs to be searchable. Which means monolithic in current dataset and in snapshots. And it isn't.

Example: Suppose I have 50 staff (each with their own dataset and home dataset for whatever reason), and a lost/deleted file I think may have been last seen at the end of month reporting for 2020-05-31. I can expose my historic 2020-05-31 snapshot on ZFS easily. Can I go into .recycler and find . -iregex ".*/myfilenameguess\.docx$"? No. Because while the ZFS *file system* presented as a single file system, the recycler doesn't.

I won't see a single presented file system of .recycler/Jean, .recycler/Mike ..... , or .recycler/home/Jean and .recycler/home/Mike, .....

I have to check every dataset's snapshot for 2020-05-31 individually, with nested datasets - search in the .recycler on *every* dataset's 202-05-31 dataset, individually. Not just a single recycler, or a single snapshot's recycler.

I'd love to be wrong, on this - if I am please let me know!

The root problem is than snaps aren't:
dataset -> /subdataset1, /subdataset 2, ...
dataset@31-05-31 -> /subdataset1@31-05-31, /subdataset 2@31-05-31, ...

The snaps are:
dataset -> dataset non nested content only @ date1, dataset non nested content only @ date2
subdataset1-> subdataset1 non nested content only @ date1, subdataset1 non nested content only @ date2
subdataset2-> subdataset2 non nested content only @ date1, subdataset2 non nested content only @ date2

You can treat the current data as a virtual single filing system. It presents transparently as one. You can't do the same with snapshots. Therefore you can't do the same with the recycler. That's inherent in ZFS design, can't be helped. When you mount a root dataset's snapshot, you don't get to descend into subdataset's snapshots automatically.

Right now I'm tinkering with the idea of an automated symlink creator so that when the pool is recursively snapshotted, there's a dir left in the root dataset's filesystem, that in search terms, acts like a collated root for the entire file system at that time, even in snaps, including the recycler. But that's what I was trying to workaround.
vfs_recycle was not designed with ZFS in mind. This isn't a TrueNAS 12 limitation. I have some plans to re-implement with awareness of ZFS dataset boundaries and remove the cross-rename dependency for these nested dataset setups, but this will happen no earlier than TrueNAS 12.1 because my hands are currently full with porting Samba 4.13 to FreeBSD / our code base, and porting our code base to work on Linux for scale.
 
Top