Friday, 12 May 2017

CIFS Terminate and NFS Off Before 7MTT CBT Cutover?

I was pretty sure you could do CIFS Terminate and NFS Off before performing a 7MTT CBT cutover. Alas, my memory isn’t great so when someone told me you needed CIFS and NFS running, I had to double-check (in fairness, they were right - since they were talking about CFT). I should point out that really I wanted to test this out for CFT, but currently no lab for this, hence using CBT. Also, we could terminate CIFS at a volume level in 7-Mode, but here we're doing the whole shebang approach (all data volumes from the filer.)


- We have a filer = fas01
- With 3 NAS volumes (CIFS really, but the volume is exported out by default)
- A dedicated NFS volume with 3 qtree exports

And we want to transition from 7-Mode (version here is 8.2.3) to C-Mode (version here is 8.3.1), but the customer wants to makes sure there’s no client access before we cutover to cDOT, which means doing CIFS terminate and NFS off before cutover (they don’t want to unmount all their Linux clients. and we’re going to bring the IPs across in the cutover). The question I want to answer (I could have asked someone, but I like/need to prove things to myself, and it gives me something to blog about too) is:

Q: If we terminate CIFS and NFS before our 7MTT cutover, is the NAS configuration (of shares, exports, and other NAS stuff) transitioned?
A: Yes

Really, it doesn’t matter, since the configuration is applied when you click ‘Apply Configuration’, the ‘Complete Transition’ button just cuts the volumes over.

Image: Configuration is applied here
The Proof

7-Mode volumes (showing just the volumes we’re transitioning):

fas01> vol status
  Volume State    Status       
vol1_NAS online   raid_dp, flex, 64-bit
vol2_NAS online   raid_dp, flex, 64-bit       
vol3_NAS online   raid_dp, flex, 64-bit        
  NFSVOL online   raid_dp, flex, 64-bit 

7-Mode CIFS shares:

fas01> cifs shares
Name       Mount Point             Permission
----       -----------             ----------
cifstest   /vol/vol1_NAS           everyone / Full Control
NAS_VOL1   /vol/vol1_NAS           everyone / Full Control
NAS_VOL2   /vol/vol2_NAS           everyone / Full Control
NAS_VOL3   /vol/vol3_NAS           everyone / Full Control
FOLDER3    /vol/vol3_NAS/FOLDER3   everyone / Full Control
FOLDER2    /vol/vol2_NAS/FOLDER2   everyone / Full Control
FOLDER1    /vol/vol1_NAS/FOLDER1   everyone / Full Control

7-Mode Exports:

fas01> exportfs
/vol/vol1_NAS -sec=sys,rw,nosuid
/vol/vol2_NAS -sec=sys,rw,nosuid
/vol/vol3_NAS -sec=sys,rw,nosuid
/vol/NFSVOL/qtree1 -sec=sys,rw=,root=
/vol/NFSVOL/qtree2 -sec=sys,rw=,root=
/vol/NFSVOL/qtree3 -sec=sys,rw=,root=

Note: Because NFSVOL is exported at the qtree level but there’s no volume level export, we’ll need to export the volume readonly post transition as per 7MTT Precheck Error 10111, for the clients that need access to the qtrees. Override error 10111 by doing>
transition cbt ignorableerrors add -p NAS_Test -c nfs-qtrees-exported

And after clicking ‘Apply Configuration’ and ‘Finish Testing’, we have on cDOT:

cluster1::> share show -volume *NAS -fields share-name,path
vserver  share-name path
-------- ---------- -------------
vserver1 cifstest   /vol/vol1_NAS
vserver1 FOLDER1    /vol/vol1_NAS/FOLDER1
vserver1 FOLDER2    /vol/vol2_NAS/FOLDER2
vserver1 FOLDER3    /vol/vol3_NAS/FOLDER3
vserver1 NAS_VOL1   /vol/vol1_NAS
vserver1 NAS_VOL2   /vol/vol2_NAS
vserver1 NAS_VOL3   /vol/vol3_NAS

cluster1::> export-policy rule show -fields policyname,clientmatch -protocol nfs
vserver  policyname ruleindex clientmatch
-------- ---------- --------- -----------
vserver1 roroot     1
vserver1 transition_export_policy_1 1
vserver1 transition_export_policy_2 1
vserver1 transition_export_policy_3 1
vserver1 transition_export_policy_4 1
vserver1 transition_readonly 1

cluster1::> volume show -volume *NAS|NFS* -fields policy
vserver  volume policy
-------- ------ -------------------
vserver1 NFSVOL transition_readonly
vserver1 vol1_NAS transition_export_policy_3
vserver1 vol2_NAS transition_export_policy_3
vserver1 vol3_NAS transition_export_policy_3

cluster1::> qtree show -fields export-policy
vserver  volume qtree export-policy
-------- ------ ----- -------------------
vserver1 NFSVOL ""    transition_readonly
vserver1 NFSVOL qtree1 transition_export_policy_1
vserver1 NFSVOL qtree2 transition_export_policy_4
vserver1 NFSVOL qtree3 transition_export_policy_2
vserver1 vol1_NAS ""  transition_export_policy_3
vserver1 vol2_NAS ""  transition_export_policy_3
vserver1 vol3_NAS ""  transition_export_policy_3


Now we’re ready to cutover and so we first terminate CIFS and NFS:

fas01> cifs terminate
fas01> nfs off

Image: CIFS and NFS are not running prior to cutover.
And click the ‘Complete Transition’ button to perform the ‘Storage Cutover’. And we’re going to take source volumes offline.

And the cutover is all successful.

Image: Successful 7MTT CBT NAS cutover with NFS and CIFS disabled.
And we still have all the shares and exports as above (as was applied by clicking ‘Apply Configuration’.)

Thinking about CFT

The CFT workflow has an ‘Apply SVM Config’ button, it doesn't have CBT’s ‘Apply Configuration’ button, The button names are subtly different. This makes me think that the volume configurations (shares, exports, etcetera) are exported in 7MTT CFT's 'Export & Halt' phase, so CIFS and NFS do indeed need to be running on the 7-Mode system prior to cutover.

To be continued...

No comments:

Post a Comment