From 15b7dc70d61db2ec4a7bfe8bac14afb22fafb0af Mon Sep 17 00:00:00 2001 From: Bugclerk Date: Fri, 3 Oct 2025 16:01:12 +0000 Subject: [PATCH 1/3] Empty commit to create PR on github. You should reset it From bb98e11911f599a74dc5c00801b6ebed0cd01f61 Mon Sep 17 00:00:00 2001 From: MicJ <92740932+micjohnson777@users.noreply.github.com> Date: Fri, 3 Oct 2025 12:00:57 -0400 Subject: [PATCH 2/3] PD-2218 / 26.04 / Pd 2218 update replication task content (#4191) * PD-2218 Update Replication UI Ref Added changes based on the way the Advanced Replication Creation button operates, and fixed a few descriptions for screens and settings that needed clarifications. * PD-2218 Update Language about switching between screens This commit updates the language about switching between the wizard and add task screen to remove duplication. * PD-2218 Replication Updates initial changes * PD-2218 Update UI ref and main replication tutorial index This commit updates the ReplicationScreensSCALE.md article with new or changed definitions, and updates the BasicReplicationProcess.md snippet by breaking the local and remote overviews into individual sections, and updates each step to reflect the current processes * PD-2218 Create New Snippets Rewrite Remote Replication This commit rewrites the RemoteReplicationSCALE.md tutorial, using new snippets to streamline the process to set up replication tasks. * PD-2218 Grammer, Spelling, and Content check This commit includes a grammar/spelling check and makes a few minor changes where needed. * PD-2218 Update Local Replication Tutorial This commit updates the LocalReplicationSCALE.md tutorial to use the new snippets Renames the ReplicationWizardSteps4Thru6.md to ReplicationWizardSteps5And6.md, which moves the Replicate Custom Snapshot content up to step 4 and makes it part of the base content in the RemoteReplicationSCALE.md tutorial. It does not apply to local replication. * PD-2218 Save changes not in previous commit * PD-2218 Saves changes in Remote Replication not in the two previous commits * PD-2218 Update Advanced Replication Update the AdvancedReplication/_index.md file content to work with the changed BasicReplicationProcess.md snippet. * PD-2218 Update the ReplicationWithEncryptionSCALE.md Tutorial This commit makes changes to the tutorial for replication using encryption. It removes the old procedure and updates with a referal to the RemoteReplicationSCALE.md tutorial, and updates that tutorial with the optional encryption setting. It removes duplicated content and focuses the article on replication and encryption options. * PD-2218 Update the AddSSHConnection.md snippet Added information about the connection after it is added in TrueNAS. * typo corrections --------- Co-authored-by: linzibelle Co-authored-by: linzi-ix (cherry picked from commit 4c4a449532ce334a725fcd5c9f04bba4e535025f) --- .../ReplicationWithEncryptionSCALE.md | 98 +++--------------- .../Replication/AdvancedReplication/_index.md | 45 ++++---- .../Replication/LocalReplicationSCALE.md | 55 ++++++---- .../Replication/RemoteReplicationSCALE.md | 85 ++++++++------- .../DataProtection/Replication/_index.md | 7 -- .../DataProtection/ReplicationScreensSCALE.md | 72 +++++++------ .../Credentials/AddingAHomeDirectory.png | Bin 0 -> 27824 bytes .../DataProtection/AddNewSSHConnection.png | Bin 0 -> 48202 bytes .../DataProtection/NewSSHConnectionScreen.png | Bin 0 -> 48202 bytes .../SetSourceAndDestiationforRemote.png | Bin 0 -> 33827 bytes static/includes/AddSSHConnection.md | 10 +- static/includes/BasicReplicationProcess.md | 28 +---- .../ReplicationConfigNewSSHConnection.md | 26 +++-- .../includes/ReplicationIndexContentSCALE.md | 6 +- .../ReplicationLocalBeforeYouBegin.md | 21 ++++ .../ReplicationRemoteBeforeYouBegin.md | 58 +++++++++++ .../ReplicationSSHTransferSecurity.md | 5 +- .../ReplicationScheduleAndRetentionSteps.md | 38 +++---- .../includes/ReplicationWizardSteps1and2.md | 28 +++++ .../includes/ReplicationWizardSteps5And6.md | 9 ++ 20 files changed, 314 insertions(+), 277 deletions(-) create mode 100644 static/images/SCALE/Credentials/AddingAHomeDirectory.png create mode 100644 static/images/SCALE/DataProtection/AddNewSSHConnection.png create mode 100644 static/images/SCALE/DataProtection/NewSSHConnectionScreen.png create mode 100644 static/images/SCALE/DataProtection/SetSourceAndDestiationforRemote.png create mode 100644 static/includes/ReplicationLocalBeforeYouBegin.md create mode 100644 static/includes/ReplicationRemoteBeforeYouBegin.md create mode 100644 static/includes/ReplicationWizardSteps1and2.md create mode 100644 static/includes/ReplicationWizardSteps5And6.md diff --git a/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/ReplicationWithEncryptionSCALE.md b/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/ReplicationWithEncryptionSCALE.md index d5d92db28d..92c6640d15 100644 --- a/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/ReplicationWithEncryptionSCALE.md +++ b/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/ReplicationWithEncryptionSCALE.md @@ -17,112 +17,38 @@ You can use encrypted datasets in a local replication. You can set up a replication task for a dataset encrypted with a passphrase or a hex encryption key, but you must unlock the dataset before the task runs or the task fails. {{< /hint>}} -With the implementation of the **Local Administrator** user and role-based permissions, when setting up remote replication tasks when logged in as an admin user requires selecting **Use Sudo For ZFS Commands**. +With the implementation of the **Local Administrator** user and role-based permissions, when setting up remote replication tasks when logged in as an admin user, requires selecting **Use Sudo For ZFS Commands**. {{< include file="/static/includes/ReplicationIntroSCALE.md" >}} Remote replication with datasets also require an SSH connection in TrueNAS. You can use an existing SSH connection if it has the same user credentials you want to use for the new replication task. -## Setting Up a Simple Replication Task Overview - -This section provides a simple overview of setting up a remote replication task for an encrypted dataset. -It also covers the related steps you should take prior to configuring the replication task. - -{{< expand "Replication Task General Overview" "v" >}} - -1. Set up the data storage for where you want to save replicated snapshots. - -2. Make sure the admin user has a home directory assigned. - -3. Create an SSH connection between the local TrueNAS system and the remote system. - You can do this by either going to **Credentials > Backup Credentials > SSH Connection** and clicking **Add** or from the **Replication Task Wizard** using the **Generate New** option for the remote system. - -4. Unlock the encrypted dataset(s) and export the encryption key to a text editor like Notepad. - -5. Go to **Data Protection > Replication Tasks** and click **Add** to open the **Replication Task Wizard**. - Specify the from and to sources, task name, and set the schedule. - - Setting options change based on the source selections. Replicating to or from a local source does not requires an SSH connection. - -This completes the general process for all replication tasks. -{{< /expand >}} +{{< include file="/static/contents/BasicReplicationProcess.md" >}} ## Creating a Remote Replication Task for an Encrypted Dataset -To streamline creating simple replication tasks use the **Replication Task Wizard** to create and copy ZFS snapshots to another system. +To streamline creating simple replication tasks, use the **Replication Task Wizard** to create and copy ZFS snapshots to another system. The wizard assists with creating a new SSH connection and automatically creates a periodic snapshot task for sources that have no existing snapshots. -If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list to load the configuration settings for that task into the wizard, and then make change such as assigning it a different destination, select encryption options, schedule, or retention lifetime, etc. +If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list to load the configuration settings for that task into the wizard, and then make changes such as assigning it a different destination, selecting other options like encryption, schedule, or retention lifetime, etc. Saving changes to the configuration creates a new replication task without altering the task you loaded into the wizard. This saves some time when creating multiple replication tasks between the same two systems. -{{< include file="/static/includes/ReplicationCreateDatasetAndAdminHomeDirSteps.md" >}} - -3. Unlock the source dataset and export the encryption key to a text editor such as Notepad. - Go to **Datasets** select the source dataset, locate the **ZFS Encryption** widget and unlock the dataset if locked. - Export the key and paste it in any text editor such as Notepad. If you set up encryption to use a passphrase, you do not need to export a key. - -4. Go to **Data Protection** and click **Add** on the **Replication Tasks** widget to open the **Replication Task Wizard**. Configure the following settings: - - {{< trueimage src="/images/SCALE/DataProtection/CreateRemoteReplicationTask.png" alt="New Remote Replication Task" id="New Remote Replication Task" >}} - - a. Select **On this System** on the **Source Location** dropdown list. - If your source is the local TrueNAS system, you must select **On a Different System** from the **Destination Location** dropdown list to do remote replication. - - If your source is a remote system, create the replication task as the root user and select **On a Different System**. The **Destination Location** automatically changes to **On this System**. - - TrueNAS shows the number of snapshots available for replication. +Unlock the source dataset and export the encryption key to a text editor such as Notepad. +Go to **Datasets** select the source dataset, locate the **ZFS Encryption** widget and unlock the dataset if locked. +Export the key and paste it in any text editor such as Notepad. If you set up encryption to use a passphrase, you do not need to export a key. - b. Select an existing SSH connection to the remote system or create a new connection. - Select **Create New** to open the **[New SSH Connection](#configure-a-new-ssh-connection)** configuration screen. - - c. Browse to the source pool/dataset(s), then click on the dataset(s) to populate the **Source** with the path. - You can select multiple sources or manually type the names into the **Source** field. Separate multiple entries with commas. - Selecting **Recursive** replicates all snapshots contained within the selected source dataset snapshots. - - d. Repeat to populate the **Destination** field. - You cannot use zvols as a remote replication destination. - Add a **/*datasetname*** to the end of the destination path to create a new dataset in that location. - - e. (Optional) Select **Encryption** to add a [second layer of encryption](#adding-additional-encryption) over the already encrypted dataset. - - f. Select **Use Sudo for ZFS Commands**. Only displays when logged in as the admin user (or the name of the admin user). - This removes the need to issue the cli `zfs allow` command in Shell on the remote system. - When the dialog displays, click **Use Sudo for ZFS Comands**. If you close this dialog, select the option on the **Add Replication Task** wizard screen. - - {{< trueimage src="/images/SCALE/DataProtection/UseSudoForZFSCommandsDialog.png" alt="Select Use Sudo for ZFS Commands" id="Select Use Sudo for ZFS Commands" >}} - - This option only displays when logged in as the admin user. - If not selected you need to issue the cli `zfs allow` command in Shell on the remote system. - - g. Select **Replicate Custom Snapshots**, then accept the default value in **Naming Schema**. - Remote sources require entering a snapshot naming schema to identify the snapshots to replicate. - A naming schema is a pattern of naming custom snapshots you want to replicate. - If you want to change the default schema, enter the name and [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) %Y, %m, %d, %H, and %M strings that match the snapshots to include in the replication. - Separate entries by pressing Enter. The number of snapshots matching the patterns display. - - h. (Optional) Enter a name for the snapshot in **Task Name**. - TrueNAS populates this field with the default name using the source and destination paths separated by a hyphen, but this default can make locating the snapshot in destination dataset a challenge. - To make it easier to find the snapshot, give it a name that is easy for you to identify. For example, a replicated task named *dailyfull* for a full file system snapshot taken daily. - -{{< include file="/static/includes/ReplicationScheduleAndRetentionSteps.md" >}} +Configure the remote replication as described in the [Creating a Remote Replication Task]({{< ref "RemoteReplicationSCALE.md" >}}). {{}} -### Configure a New SSH Connection - -{{< include file="/static/includes/ReplicationConfigNewSSHConnection.md" >}} - -### Using SSH Transfer Security - -{{< include file="/static/includes/ReplicationSSHTransferSecurity.md" >}} - ### Unlocking the Destination Dataset -After the replication task runs and creates the snapshot on the destination, you must unlock it to access the data. +After the replication task runs and creates the snapshot on the destination, you must unlock the dataset to access the data. Click the from the replication task options to download a key file that unlocks the destination dataset. ### Replicating to an Unencrypted Destination Dataset + {{< hint type=important >}} TrueNAS does not support preserving encrypted dataset properties when trying to re-encrypt an already encrypted source dataset. {{< /hint >}} @@ -141,10 +67,10 @@ This replicates the unlocked encrypted source dataset to an unencrypted destinat ### Using Additional Encryption Options -When you replicate an encrypted pool or dataset you have one level of encryption applied at the data storage level. +When you replicate an encrypted pool or dataset, you have one level of encryption applied at the data storage level. Use the passphrase or key created or exported from the dataset or pool to unlock the dataset on the destination server. -To add a second layer of encryption at the replication task level, select **Encryption** on the **Replication Task Wizard**, then select the type of encryption you want to apply. +To add a second layer of encryption at the replication task level, select **Encryption** on the **Replication Task Wizard** or on the **Add Replication Task** screen, then select the type of encryption you want to apply. {{< trueimage src="/images/SCALE/DataProtection/ReplicationTaskEncryptionOptions.png" alt="Replication Task Encryption Options" id="Replication Task Encryption Options" >}} diff --git a/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/_index.md b/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/_index.md index acfbbdbd6d..c5da74cbd9 100644 --- a/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/_index.md +++ b/content/SCALETutorials/DataProtection/Replication/AdvancedReplication/_index.md @@ -14,13 +14,13 @@ keywords: - data backup and recovery --- -TrueNAS advanced replication allows users to create one-time or regularly scheduled snapshots of data stored in pools, datasets or zvols on their TrueNAS system as a way to back up stored data. +TrueNAS advanced replication allows users to create one-time or regularly scheduled snapshots of data stored in pools, datasets, or zvols on their TrueNAS system as a way to back up stored data. When properly configured and scheduled, local or remote replication using the **Advanced Replication Creation** option takes regular snapshots of storage pools or datasets and saves them in the destination location on the same or another system. {{< include file="/static/includes/ReplicationIndexContentSCALE.md" >}} The **Advanced Replication Creation** option opens the **Add Replication Task** screen. -This screen provides access to the same settings found in the replication wizard but has more options to specify: +This screen provides access to the same settings found in the replication wizard, but has more options to specify: * Full file system replication * Stream compression @@ -56,30 +56,29 @@ Turn on SSH service. Go to **System > Services** screen, verify the **SSH** serv ## Creating a Simplified Advanced Replication Task -To access advanced replication settings, click **Advanced Replication Creation** at the bottom of the first screen of the **Replication Task Wizard**. +To access advanced replication settings, click **Advanced Replication Creation** at the bottom of the first replication wizard screen. The **Add Replication Task** configuration screen opens. -{{< include file="/static/includes/ReplicationCreateDatasetAndAdminHomeDirSteps.md" >}} - -3. Give the task a name and set the direction of the task. +1. Give the task a name. Unlike the wizard, the **Name** does not automatically populate with the *source*/*destination* task name after you set the source and destination for the task. - Each task name must be unique, and we recommend you name it in a way that makes it easy to remember what the task is doing. + Each task name must be unique, and we recommend naming it in a way that makes it easy to remember what the task is doing. -4. Select the direction of the task. **Pull** replicates data from a remote system to the local system. **Push** sends data from the local system to the remote. +2. Select the direction of the task. **Pull** pulls data from a remote system to the local system. **Push** sends data from the local system to the remote. -5. Select the method of tranfer for this replication from the **Transport** dropdown list. - Select **LOCAL** to replicate data to another location on the same system. - Select **SSH** is the standard option for sending or receiving data from a remote system. Select the existing **SSH Connection** from the dropdown list. - Select **SSH+Netcat** is available as a faster option for replications that take place within completely secure networks. - **SSH+Netcat** requires defining netcat ports and addresses to use for the Netcat connection. +3. Select the transfer method for this replication from the **Transport** dropdown list. + * Select **LOCAL** to replicate data to another location on the same system. + * Select **SSH** is the standard option for sending or receiving data from a remote system. + When selected, also select an SSH connection from the **SSH Connection** dropdown list. + * Select **SSH+Netcat** is a faster option for replication when it occurs within a completely secure network. + **SSH+Netcat** requires defining NETCAT ports and addresses to use for the NETCAT connection. - With SSH-based replications, select the **SSH Connection** to the remote system that sends or receives snapshots. + With SSH-based replications, select the SSH Connection with the remote system from which you want to receive snapshots or send snapshots to. To create a new connection to use for replication from a destination to this local system, select **newpullssh**. - Select **Use Sudo for Zfs Commands** to controls whether the user used for SSH/SSH+NETCAT replication has passwordless sudo enabled to execute zfs commands on the remote host. + Select **Use Sudo for Zfs Commands** to control whether the user for SSH/SSH+NETCAT replication has passwordless sudo enabled to execute zfs commands on the remote host. If not selected, you must enter `zfs allow` on the remote system to to grant non-user permissions to perform ZFS tasks. -6. Specify the source and destination paths. Adding /*name* to the end of the path creates a new dataset in that location. +4. Specify the source and destination paths. Destination paths allow adding /*name* to the end of the path to create a new dataset in that location. Click the arrow to the left of each folder or dataset name to expand the options and browse to the dataset, then click on the dataset to populate the **Source**. Choose a preconfigured periodic snapshot task as the source of snapshots to replicate. Pulling snapshots from a remote source requires a valid **SSH Connection** before the file browser can show any directories. @@ -95,11 +94,11 @@ The **Add Replication Task** configuration screen opens. *DO NOT* use zvols as remote destinations. {{< /hint >}} -7. Select a previously configured periodic snapshot task for this replication task in **Periodic Snapshot Tasks**. +5. Select a previously configured periodic snapshot task for this replication task in **Periodic Snapshot Tasks**. The replication task selected must have the same values in **Recursive** and **Exclude Child Datasets** as the chosen periodic snapshot task. Selecting a periodic snapshot schedule removes the **Schedule** field. - If a periodic snapshot task does not exist, exist the advanced replication task configuration, go configure a periodic snapshot task, then return to the **Advanced Replication** screen to configure the replication Task. + If a periodic snapshot task does not exist, before creating the advanced replication task, configure a periodic snapshot task, then return to the **Add Replication Task** screen to configure the replication Task. Select **Replicate Specific Snapshots** to define specific snapshots from the periodic task to use for the replication. This displays the schedule options for the snapshot task. Enter the schedule. The only periodically generated snapshots included in the replication task are those that match your defined schedule. @@ -109,9 +108,9 @@ The **Add Replication Task** configuration screen opens. For example, entering the naming schema `custom-%Y-%m-%d_%H-%M` finds and replicates snapshots like `custom-2020-03-25_09-15`. Enter multiple schemas by pressing Enter to separate each schema. -8. Set the replication schedule to use and define when the replication task runs. +6. Set the replication schedule to use and define when the replication task runs. Leave **Run Automatically** selected to use the snapshot task specified and start the replication immediately after the related periodic snapshot task completes. - Select **Schedule** to display scheduling options for this replication task and To automate the task according to its own schedule. + Select **Schedule** to display scheduling options for this replication task, and to run the task according to its own schedule. Selecting **Schedule** allows scheduling the replication to run at a separate time. Choose a time frame that gives the replication task enough time to finish and is during a time of day when network traffic for both source and destination systems is minimal. @@ -121,7 +120,7 @@ The **Add Replication Task** configuration screen opens. {{< include file="/static/includes/SCALEAdvancedScheduler.md" >}} {{< /expand >}} -9. Click **Save**. +7. Click **Save**. ### Setting a Replication Compression Level @@ -140,7 +139,7 @@ Replication tasks using large block replication only continue to work as long as By default, the replication task uses snapshots to quickly transfer data to the receiving system. Selecting **Full Filesystem Replication** means the task completely replicates the chosen **Source**, including all dataset properties, snapshots, child datasets, and clones. -When using this option, we recommended allocating additional time for the replication task to run. +When using this option, we recommend allocating additional time for the replication task to run. ### Replicating Dataset Properties @@ -177,7 +176,7 @@ You can store the encryption key either in the TrueNAS system database or in a c {{< hint type=important >}} **Synchronizing Destination Snapshots With Source** destroys any snapshots in the destination that do not match the source snapshots. -TrueNAS also does a full replication of the source snapshots as if the replication task never run, which can lead to excessive bandwidth consumption. +TrueNAS also does a full replication of the source snapshots as if the replication task had not run, which can lead to excessive bandwidth consumption. This can be a very destructive option. Make sure that any snapshots deleted from the destination are obsolete or otherwise backed up in a different location. diff --git a/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md b/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md index a65e0da840..8e0de33efe 100644 --- a/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md +++ b/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md @@ -13,53 +13,64 @@ keywords: - data backup and recovery --- -## Using Local Replication -A local replication creates a zfs snapshot and saves it to another location on the same TrueNAS system either using a different pool, or dataset or zvol. +A local replication creates a ZFS snapshot and saves it to another location on the same TrueNAS system using different pools, datasets, or zvols. This allows users with only one system to take quick data backups or snapshots of their data when they have only one system. -In this scenario, create a dataset on the same pool to store the replication snapshots. You can create and use a zvol for this purpose. -If configuring local replication on a system with more than one pool, create a dataset to use for the replicated snapshots on one of those pools. -While we recommend regularly scheduled replications to a remote location as the optimal backup scenario, this is useful when no remote backup locations are available, or when a disk is in immediate danger of failure. +If you have only one pool, create a dataset in that pool to store the replication snapshots. You can use a zvol for this purpose. +If configuring local replication on a system with more than one pool, create a dataset for the replicated snapshots on one of those pools. + +While we recommend regularly scheduled replications to a remote location as the optimal backup scenario, local replication is useful when a remote backup location is available or when a disk is in immediate danger of failure. {{< include file="/static/includes/ZvolSpaceWarning.md" >}} -With the implementation of the **Local Administrator** user and role-based permissions, setting up replication tasks as an admin user has a few differences over setting up replication tasks when logged in as root. +Setting up replication tasks as an admin user has a few differences from setting up replication tasks when logged in as root. + +{{< include file="/static/includes/ReplicationIntroSCALE.md" >}} {{< include file="/static/includes/ReplicationIntroSCALE.md" >}} -## Setting Up a Simple Replication Task Overview -This section provides a simple overview of setting up a replication task regardless of the type of replication, local or remote. -It also covers the related steps you should take prior to configuring a replication task. +{{< include file="/static/includes/ReplicationLocalBeforeYouBegin.md" >}} -{{< include file="/static/includes/BasicReplicationProcess.md" >}} +To configure the local replication task, follow the instructions in the section below. ## Configuring a Local Replication Task -The replication wizard allows users to create and copy ZFS snapshots to another location on the same system. +Use the **Replication Task Wizard** to create and copy ZFS snapshots to another system, which streamlines creating simple replication tasks. +After creating the replication task, TrueNAS automatically creates a periodic snapshot task for sources that have no existing snapshots. -If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list to load the configuration settings for that task into the wizard, and then make change such as assigning it a different destination, schedule, or retention lifetime, etc. -Saving changes to the configuration creates a new replication task without altering the task you loaded into the wizard. +If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list. +This loads the configuration settings for that task into the wizard, where you can make changes such as assigning it a different destination, setting a new schedule, or retention lifetime, etc. +Saving changes to the configuration creates a new replication task without altering the task originally loaded into the wizard. +This saves some time when creating multiple replication tasks between the same two systems. -{{< include file="/static/includes/ReplicationCreateDatasetAndAdminHomeDirSteps.md" >}} +{{< include file="/static/includes/ReplicationWizardSteps1and2.md" >}} -3. Go to **Data Protection** and click **Add** on the **Replication Tasks** widget to open the **Replication Task Wizard**. Configure the following settings: +3. Configure the settings for local replication after selecting **On This System** in either **Source Location** or **Destination Location**. {{< trueimage src="/images/SCALE/DataProtection/CreateLocalReplicationTask.png" alt="New Local Replication Task" id="New Local Replication Task" >}} {{< include file="/static/includes/FileExplorerFolderIcons.md" >}} - a. Select **On this System** on the **Source Location** dropdown list. - Browse to the location of the pool or dataset you want to replicate and select it so it populates **Source** with the path. - Selecting **Recursive** replicates all snapshots contained within the selected source dataset snapshots. + a. Use the file browser for **Source Location** to browse to the location of the dataset with the data to replicate. + Clicking on the dataset(s) populates the **Source** path. + + When setting up the **Source**, you can select multiple sources or manually type the names into the **Source** field. - b. Select **On this System** on the **Destination Location** dropdown list. - Browse to the location of the pool or dataset you want to use to store replicated snapshots and select to populate **Destination** with the path. + b. Use the file browser for **Destination Location** to browse to the location of the pool or dataset to receive the replicated snapshots. + Clicking on the dataset populates **Destination** path. + + When setting up the **Destination**, the **Destination** path allows adding a directory/dataset by entering /name, where */name* is the name of a directory or dataset. The source path does not allow adding a new dataset/directory. + You can use zvols as a local replication destination. Add a name to the end of the path to create a new dataset in that location. c. (Optional) Enter a name for the snapshot in **Task Name**. - TrueNAS populates this field with the default name using the source and destination paths separated by a hyphen, but this default can make locating the snapshot in destination dataset a challenge. - To make it easier to find the snapshot, give it name easy for you to identify. For example, a replicated task named *dailyfull* for a full file system snapshot taken daily. + TrueNAS populates this field with the default name using the source and destination paths separated by a hyphen, but this default can make locating the snapshot in the destination dataset a challenge. + To make it easier to find the snapshot, give it a name that is easy for you to identify. For example, a replicated task named *dailyfull* for a full file system snapshot taken daily. + +{{< include file="/static/includes/ReplicationWizardSteps5And6.md" >}} {{< include file="/static/includes/ReplicationScheduleAndRetentionSteps.md" >}} +For information on replicating encrypted pools or datasets, see [Setting Up an Encrypted Replication Task]({{< ref "ReplicationWithEncryptionSCALE" >}}). + {{}} diff --git a/content/SCALETutorials/DataProtection/Replication/RemoteReplicationSCALE.md b/content/SCALETutorials/DataProtection/Replication/RemoteReplicationSCALE.md index 1592157c06..6724571f70 100644 --- a/content/SCALETutorials/DataProtection/Replication/RemoteReplicationSCALE.md +++ b/content/SCALETutorials/DataProtection/Replication/RemoteReplicationSCALE.md @@ -13,76 +13,75 @@ keywords: --- -## Using Remote Replication -TrueNAS replication allows users to create one-time or regularly scheduled ZFS snapshots of data stored in pools, datasets, or zvols on their system as a way to back up stored data. -When properly configured and scheduled, remote replication takes regular snapshots of storage pools or datasets and saves them in the destination location on another system. - -Remote replication occurs between an originating TrueNAS system and a destination TrueNAS system with replicated snapshots. +Remote replication backs up data stored on an originating TrueNAS system to a second remote destination TrueNAS system. +TrueNAS allows scheduling a one-time or regularly scheduled ZFS snapshot of data stored in pools, datasets, or zvols, and saves them in another system. With the implementation of the administration user and role-based permissions, setting up replication tasks as an admin user has a few differences from those set up when logged in as the root user. Setting up remote replication when logged in as the admin user requires selecting **Use Sudo For ZFS Commands**. {{< include file="/static/includes/ReplicationIntroSCALE.md" >}} -Remote replication requires setting up an SSH connection in TrueNAS before creating a remote replication task. - -## Setting Up a Simple Replication Task Overview -This section provides a simple overview of setting up a replication task regardless of the type of replication, local or remote. -It also covers the related steps you should take before configuring a replication task. +{{< include file="/static/includes/ReplicationRemoteBeforeYouBegin.md" >}} -{{< include file="/static/includes/BasicReplicationProcess.md" >}} +To configure the remote replication task, follow the instructions in the section below. ## Creating a Remote Replication Task -To streamline creating simple replication tasks use the **Replication Task Wizard** to create and copy ZFS snapshots to another system. -The wizard assists with creating a new SSH connection and automatically creates a periodic snapshot task for sources that have no existing snapshots. -If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list to load the configuration settings for that task into the wizard, and then make changes such as assigning it a different destination, schedule, or retention lifetime, etc. -Saving changes to the configuration creates a new replication task without altering the task you loaded into the wizard. +Use the **Replication Task Wizard** to create and copy ZFS snapshots to another system, which streamlines creating simple replication tasks. +After creating the replication task, TrueNAS automatically creates a periodic snapshot task for sources that have no existing snapshots. + +If you have an existing replication task, you can select it on the **Load Previous Replication Task** dropdown list. +This loads the configuration settings for that task into the wizard, where you can make changes such as assigning it a different destination, setting a new schedule, or retention lifetime, etc. +Saving changes to the configuration creates a new replication task without altering the task originally loaded into the wizard. This saves some time when creating multiple replication tasks between the same two systems. -{{< include file="/static/includes/ReplicationCreateDatasetAndAdminHomeDirSteps.md" >}} +{{< include file="/static/includes/ReplicationWizardSteps1and2.md" >}} -3. Go to **Data Protection** and click **Add** on the **Replication Tasks** widget to open the **Replication Task Wizard**. Configure the following settings: +3. Configure the settings for remote replication after selecting **On a Different System** in either **Source Location** or **Destination Location**. - {{< trueimage src="/images/SCALE/DataProtection/CreateRemoteReplicationTask.png" alt="New Remote Replication Task" id="New Remote Replication Task" >}} + {{< trueimage src="/images/SCALE/DataProtection/SetSourceAndDestiationforRemote.png" alt="Set Source and Destination for Remote" id="Set Source and Destination for Remote" >}} {{< include file="/static/includes/FileExplorerFolderIcons.md" >}} - a. Select either **On this System** or **On a Different System** on the **Source Location** dropdown list. - If your source is a remote system, select **On a Different System**. The **Destination Location** automatically changes to **On this System**. - If your source is the local TrueNAS system, you must select **On a Different System** from the **Destination Location** dropdown list to do remote replication. + a. Select an existing SSH connection from the dropdown list or select **Add New** to open the **[New SSH Connection](#configuring-a-new-ssh-connection)** screen. + If you created the SSH connection in the section above, select it. - TrueNAS shows the number of snapshots available for replication. + When adding a new connection in the wizard, if TrueNAS detects other configuration issues, such as the user not correctly set up, an error indicating what the issue is shows in the wizard. + Exit the replication wizard to correct issues, then return to the wizard to begin the task configuration again. - b. Select an existing SSH connection to the remote system, or select **Create New** to open the **[New SSH Connection](#configuring-a-new-ssh-connection)** configuration screen. + After completing the replication wizard task creation, where you added a new SSH connection in the wizard, return to the remote system user configuration to add the new public key for the SSH connection to the admin user configuration. - c. Browse to the source pool/dataset(s), then click on the dataset(s) to populate the **Source** with the path. - You can select multiple sources or manually type the names into the **Source** field. - Selecting **Recursive** replicates all snapshots contained within the selected source dataset snapshots. + b. Use the file browser to browse and select the parent dataset with the data to replicate. Clicking on the dataset(s) populates the path. + + When setting up the **Source**, you can select multiple sources or manually type the names into the **Source** field. - d. Repeat to populate the **Destination** field. + When setting up the **Destination**, the **Destination** path allows adding a directory/dataset by entering /name, where *rname* is the name of a directory or dataset. The source path does not allow adding a new dataset/directory. You cannot use zvols as a remote replication destination. Add a name to the end of the path to create a new dataset in that location. - - e. Select **Use Sudo for ZFS Commands**. Only displays when logged in as the admin user (or the name of the admin user). - This removes the need to issue the cli `zfs allow` command in Shell on the remote system. - When the dialog displays, click **Use Sudo for ZFS Commands**. If you close this dialog, select the option on the **Add Replication Task** wizard screen. + + c. Select **Use Sudo for ZFS Commands**. + A dialog opens prompting you to add this capability. Selecting this removes the need to issue the cli `zfs allow` command in Shell on the remote system. + Click **Use Sudo for ZFS Commands**. If the dialog closes before clicking this option, you can select this option on the wizard screen. {{< trueimage src="/images/SCALE/DataProtection/UseSudoForZFSCommandsDialog.png" alt="Select Use Sudo for ZFS Commands" id="Select Use Sudo for ZFS Commands" >}} - f. Select **Replicate Custom Snapshots**, then leave the default value in **Naming Schema**. - If you know how to enter the schema you want, enter it in **Naming Schema**. - Remote sources require entering a snapshot naming schema to identify the snapshots to replicate. - A naming schema is a pattern of naming custom snapshots you want to replicate. - Enter the name and [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) %Y, %m, %d, %H, and %M strings that match the snapshots to include in the replication. Separate entries by pressing Enter. The number of snapshots matching the patterns display. + d. Enter the settings for the other location (source or destination), which is automatically set to **On This System**. + Browse to select the dataset. + + e. (Optional) Select **Encryption** to add a [second layer of encryption](#adding-additional-encryption) over the already encrypted dataset. + +4. (Optional) Select **Replicate Custom Snapshots**, then leave the default value in **Naming Schema**. + If you know how and want to enter the schema, enter it in **Naming Schema**. + + A snapshot naming schema identifies the snapshots to replicate, and might be required by the remote system. + A naming schema is a string of [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) %Y, %m, %d, %H, and %M variables that name custom snapshots you want to replicate. + Separate entries by pressing Enter. The number of snapshots matching the pattern entered shows on a dropdown list. - Selecting **Matching regular expression** does not automatically destroy snapshots where selecting **Matching naming schema** does. - If using regular expression, the snapshots on the destination host are not automatically destroyed if they are also destroyed on the source host due to snapshot lifetime. - Snapshots on the destination host display as "Will not be destroyed automatically" and do not display with a retention period. - Use naming schema for these. + Selecting **Matching regular expression** does not automatically destroy snapshots, whereas selecting **Matching naming schema** does. + When using a regular expression, the snapshots on the destination host are not automatically destroyed when they are destroyed on the source host due to the snapshot lifetime. + Snapshots on the destination host display as "Will not be destroyed automatically" and do not display with a retention period. + Use naming schema for these. - g. (Optional) Enter a name for the snapshot in **Task Name**. - TrueNAS populates this field with a default name using the source and destination paths separated by a hyphen, but this default can make locating the snapshot in the destination dataset a challenge. - To make it easier to find the snapshot, give it a name that is easy for you to identify. For example, a replicated task named *dailyfull* for a full file system snapshot taken daily. +{{< include file="/static/includes/ReplicationWizardSteps5And6.md" >}} {{< include file="/static/includes/ReplicationScheduleAndRetentionSteps.md" >}} diff --git a/content/SCALETutorials/DataProtection/Replication/_index.md b/content/SCALETutorials/DataProtection/Replication/_index.md index 794d7c13a1..244a24360a 100644 --- a/content/SCALETutorials/DataProtection/Replication/_index.md +++ b/content/SCALETutorials/DataProtection/Replication/_index.md @@ -13,13 +13,6 @@ keywords: TrueNAS replication allows users to create one-time or regularly scheduled snapshots of data stored in pools, datasets or zvols on their TrueNAS system as a way to back up stored data. When properly configured and scheduled, replication takes regular snapshots of storage pools or datasets and saves them in the destination location either on the same system or a different system. -{{< include file="/static/includes/ReplicationIndexContentSCALE.md" >}} - -## Setting Up a Simple Replication Task Overview - -This section provides a simple overview of setting up a replication task regardless of the type of replication, local or remote. -It also covers the related steps to take prior to configuring a replication task. - {{< include file="/static/includes/BasicReplicationProcess.md" >}}
diff --git a/content/SCALEUIReference/DataProtection/ReplicationScreensSCALE.md b/content/SCALEUIReference/DataProtection/ReplicationScreensSCALE.md index eca757fb5e..b8d0e6ed70 100644 --- a/content/SCALEUIReference/DataProtection/ReplicationScreensSCALE.md +++ b/content/SCALEUIReference/DataProtection/ReplicationScreensSCALE.md @@ -109,6 +109,8 @@ The wizard has two screens: * **When** settings specify when to run the task and how long to retain the replicated snapshots. **Advanced Replication Creation** opens the **Add Replication Task** screen with the same settings found in the wizard and more advanced settings. +If you populate wizard settings and then click **Advanced Replication Creation**, TrueNAS shows you the dialog asking you to confirm you want to leave the screen. +After clicking **Yes** the **Add Replication Task** screen opens but values entered in the wizard are not transfered to the **Add Replication Task** screen. ### What and Where Wizard Screen The **What and Where** screen shows settings for both the source and destination information (path to the dataset), the source and destination transfer direction, encryption settings for the data transfer, remote replication SSH connections, naming schema to apply to the snapshot taken through the replication task, and the name for the task. @@ -146,10 +148,10 @@ Setting **Source Location** to **On This System** and **Destination Location** t | **Replicate Custom Snapshots** | Shows after setting **Source Location** to **On this System**. Select to replicate snapshots that are not created by an automated snapshot task. After selecting, shows the **Also include snapshots with the name** setting options. This setting requires setting a naming schema for the custom snapshots through one of the two methods: **Naming Schema** or **Snapshot Name Regular Expression**. | | **Also include snapshots with the name** | Select the option to set the snapshot naming pattern as either a naming schema or regular expression. Options:
  • **Naming Schema** and **Snapshot Name Regular Expression**. | | **Naming Schema** | Shows after selecting **Naming Schema** under **Also include snapshots with the name**. Enter the pattern of naming custom snapshots to replicate. Enter the name and [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) %Y, %m, %d, %H, and %M strings that match the snapshots to include in the replication. Naming schema must include **%Y**, **%m**, **%d**, **%H** and **%M**. Separate entries by pressing Enter. The number of snapshots matching the patterns displayed on the screen. | -| **Snapshot Name Regular Expression** | Shows after selecting **Snapshot Name Regular Expression** under **Also include snapshots with the name**. Enter the regular expression the replicated snapshot(s) should match. This option replicates all snapshots with names matching the specified regular expression. Performance on systems with large numbers of snapshots is lower as this process reads snapshot metadata to determine snapshot creation order. Naming of regular expressions include name followed this pattern, *"auto-[0-9-]+|manual-[0-9]+"* | -| **SSH Transfer Security** | Shows after selecting **Replicate Custom Snapshots**. Applies data transfer security. Shows two options: **Encryption (more secure, but slower)** and **No Encryption (less secure, but faster)**. The connection is authenticated with SSH. Encryption is recommended but can be disabled for increased speed on secure networks. | -| **Encryption** | Select to apply an extra layer of encryption on the data transfer when replicating data. For more information on all options see [Encryption](#encryption-setting-options) below. | -| **Task Name** | Shows the name the system adds from the source and destination options or enter a different name for this replication configuration to overwrite the automatically populated task name. By default, the system populates **Task Name** with the source-destination names selected or loaded by selecting a task in **Load Previous Replication Tasks**. The system prompts you to change the name if a task uses the name. Changing the name can be as simple as adding an iteration number such as *2* or *3* to the default name. | +| **Snapshot Name Regular Expression** | Shows after selecting **Snapshot Name Regular Expression** under **Also include snapshots with the name**. Enter the regular expression that the replicated snapshot(s) should match. This option replicates all snapshots with names matching the specified regular expression. Performance on systems with large numbers of snapshots is lower as this process reads snapshot metadata to determine snapshot creation order. Naming of regular expressions include name followed this pattern, auto-[0-9-]+\|manual-[0-9]+. | +| **SSH Transfer Security** | Shows after selecting **Replicate Custom Snapshots**. Applies data transfer security. Shows two options: **Encryption (more secure, but slower)** and **No Encryption (less secure, but faster)**. The connection is authenticated with SSH. Encryption is recommended, but can be disabled for increased speed on secure networks. | +| **Encryption** | Select to apply an extra layer of encryption on the data transfer when replicating data. For more information on all options, see [Encryption](#encryption-setting-options) below. | +| **Task Name** | Shows the name the system adds from the source and destination options or enter a different name for this replication configuration to overwrite the automatically populated task name. By default, the system populates **Task Name** with the source-destination names selected or loaded by selecting a task in **Load Previous Replication Tasks**. The system prompts you to change the name if a task uses the name. Changing the name can be as simple as adding an iteration number, such as *2* or *3*, to the default name. | {{< /truetable >}} {{< /expand >}} @@ -238,8 +240,15 @@ If you delete a dataset or zvol on the source, you must manually delete the repl {{< /expand >}} ## Add and Edit Replication Task Screens -**Advanced Replication Creation** opens the **Add Replication Task** screen. Click before or after adding values to any setting on the wizard screens. -The **Edit** icon button opens the **Edit Replication Task** screen. Both screens show the same setting options. + +**Advanced Replication Creation** opens the **Add Replication Task** screen. + +The **Edit** icon button opens the **Edit Replication Task** screen. The **Add Replication Task** and **Edit Replication Task** screens show the same setting options. + +The **Add Replication Task** screen shows the **Switch to Wizard** button at the bottom of the screen. + +**Switch to Wizard**, like **Advanced Replication Creation** shows the dialog asking you to confirm you want to leave the screen. After clicking **Yes** the wizard or **Add Replication Task** screen opens. +Settings entered on either screen do not carry over when switching from one screen to the other. ### General and Transport Options Settings The settings in **General** and **Transport Options** specify the name of the task, the direction of the data transfer, the transport connection type, and method settings for each type. @@ -254,8 +263,8 @@ All three **Transport** field options share the two settings displayed for **Loc |---------|-------------| | **Name** | (Required) Enter a descriptive name for the replication. | | **Direction** | Select the direction for the replication from the dropdown list. **Push** sends snapshots to a destination system. **Pull** connects to a remote system and retrieves snapshots matching the value specified in **Naming Schema**. | -| **Transport** | Select the method of connecting to a remote system for exchanging data from the dropdown list. Options:
  • **SSH** - Default option that is supported by most systems. It requires a previously created SSH connection on the system.
  • **SSH+NETCAT** - Uses SSH to establish a connection to the destination system, then uses [py-libzfs](https://github.com/truenas/py-libzfs) to send an unencrypted data stream for higher transfer speeds. This only works when replicating to a FreeNSAS, TrueNAS, or other systems with py-libzfs installed.
  • **LOCAL** - Efficiently replicates snapshots to another dataset on the same system without using the network. Removes **Transport Options** SSH setting options from the screen.
  • | -| **Use Sudo For Zfs Commands** | Select if setting up remote replication tasks when logged in as an admin user. | +| **Transport** | Select the method of connecting to a remote system for exchanging data from the dropdown list. Options:
  • **SSH** - Default option that is supported by most systems, but does not achieve great performance. Transfers the snapshot via an SSH connection. It requires a previously created SSH connection on the system.
  • **SSH+NETCAT** - Uses SSH to establish a connection to the destination system, then uses [py-libzfs](https://github.com/truenas/py-libzfs) to send an unencrypted data stream for higher data transfer speeds. This can only be used in trusted networks and requires a port to be open on the NETCAT active side. This only works when replicating to a FreeNSAS, TrueNAS, or other systems with py-libzfs installed.
  • **LOCAL** - Efficiently replicates snapshots to another dataset on the same system without using the network. Removes **Transport Options** SSH setting options from the screen.
  • | +| **Use Sudo For Zfs Commands** | Select if setting up remote replication tasks when logged in as an admin user. Controls whether the user used for SSH/SSH+NETCAT replication have passwordless sudo enabled to execute zfs commands on the remote host. If not selected, `zfs allow` must be used to grant non-user permissions to perform ZFS tasks. Mounting ZFS file systems by non-root is notpossible due to Linux restrictions. | | **Number of retries for failed replications** | Enter the number of times the replication is attempted before stopping and marking the task as failed. | | **Logging Level** | Select the level of message verbosity in the replication task log from the dropdown list. Options are **Default**, **Debug**, **Info**, **Warning**, and **Error**. | | **Enabled** | Select to enable the replication schedule. | @@ -271,13 +280,14 @@ These settings display for all three **Transport** options. {{< truetable >}} | Setting | Description | |---------|-------------| -| **Allow Blocks Larger than 128KB** | Inactive by default and if the system does not support large block transfers. Allows replication to send large data blocks. The destination system must also support large blocks. This setting cannot be changed after it is enabled and the replication task is created. See [sfs(8)](https://linux.die.net/man/8/zfs) for more information. | +| **Allow Blocks Larger than 128KB** | Selected by default. If the system does not support large block transfers this is not selected by default. Allows replication to send large data blocks. The destination system must also support large blocks. This setting cannot be changed after it is enabled and the replication task is created. See [sfs(8)](https://linux.die.net/man/8/zfs) for more information. | | **Allow Compressed WRITE Records** | Selected by default. If enabled, allows using compressed write records to make the stream more efficient. The destination system must also support compressed write records. See [zfs(8)](https://linux.die.net/man/8/zfs). | {{< /truetable >}} {{< /expand >}} #### Transport Options Settings - SSH Transport Option -These setting options display in addition to the two options displayed when **Transport** is set to **SSH**. + +When **Transport** is set to **SSH**, the settings listed below show in addition to the setting options the **Allow Blocks Larger than 128KB** and **Allow Compressed WRITE Records** options shown when **Transport** is set to **Local**. {{< trueimage src="/images/SCALE/DataProtection/AdvancedAddReplicationTaskGeneralTransportSSH.png" alt="Advanced Add Replication Task SSH Transport" id="Advanced Add Replication Task SSH Transport" >}} @@ -292,7 +302,8 @@ These setting options display in addition to the two options displayed when **Tr {{< /expand >}} #### Transport Options Settings - SSH+NETCAT Transport Option -These setting options display in addition to the two options displayed when **Transport** is set to **SSH+NETCAT**. + +When **Transport** is set to **SSH+NETCAT**, the settings listed below show in addition to the setting options the **Allow Blocks Larger than 128KB** and **Allow Compressed WRITE Records** options shown when **Transport** is set to **Local**. {{< trueimage src="/images/SCALE/DataProtection/AdvancedAddReplicationTaskGeneralTransportSSH+NETCAT.png" alt="Advanced Add Replication Task SSH+NETCAT Transport" id="Advanced Add Replication Task SSH+NETCAT Transport" >}} @@ -310,8 +321,9 @@ These setting options display in addition to the two options displayed when **Tr {{< /expand >}} ### Advanced Source Options -The settings in **Source** specify the location of files you push or pull in the replication task, and the properties applied to the replicated data. -The Source setting options change based on selections made in **Recursive** and **Replicate Specific Snapshots** and each displays additional setting options. + +**Source** settings specify the location of files you push or pull in the replication task, and the properties applied to the replicated data. +Selections made in **Recursive** and **Replicate Specific Snapshots** change the **Source** setting options, and each option shows additional setting options. {{< trueimage src="/images/SCALE/DataProtection/AdvancedAddRepTaskSourceAndDestination.png" alt="Advanced Add Replication Task Source and Destination" id="Advanced Add Replication Task Source and Destination" >}} @@ -321,9 +333,9 @@ The Source setting options change based on selections made in **Recursive** and |---------|-------------| | **Source** | (Required) Enter or use arrow_right to the left of the **/mnt** folder and at each dataset to expand the dataset tree to browse to the dataset location that has snapshots to replicate. Click on the dataset or directory name, folder icon, or checkbox to select the dataset or directory. To enter multiple datasets, enter a comma (,) after each path in the **Source** field and then select another dataset. Click the arrow_drop_down at the **/mnt** to collapse the dataset tree. | | **Recursive** | Select to replicate all child dataset snapshots. When selected, **Exclude Child Datasets** displays. | -| **Exclude Child Datasets** | Displays after selecting **Recursive**. Enter the specific child dataset snapshots from the replication. Separate each entry by pressing Enter. | -| **Include Dataset Properties** | Select to include ZFS dataset properties with the replicated snapshots. For more information on ZFS dataset properties see [ZFS manpages](https://linux.die.net/man/8/zfs). | -| **Full Filesystem Replication** | Select to completely replicate the selected dataset. The target dataset gets all the properties of the source dataset, child datasets, clones, and snapshots that match the specified naming schema. Hides the **Recursive** and **Include Dataset Properties** options. | +| **Exclude Child Datasets** | Displays after selecting **Recursive**. Enter the specific child dataset snapshots to exclude from the replication. Separate each entry by pressing Enter. | +| **Include Dataset Properties** | Select to include ZFS dataset properties with the replicated snapshots. Shows additional settings: **Properties Overide** and **Properties Exclude**. For more information on ZFS dataset properties see [ZFS manpages](https://linux.die.net/man/8/zfs). | +| **Full Filesystem Replication** | Select to completely replicate the selected dataset. The target dataset gets all the properties of the source dataset, child datasets, clones, and snapshots that match the specified naming schema. Hides the **Recursive** and **Include Dataset Properties** options, and shows **Properties Override** and **Properties Exclude**. Set **Snapshot Name Regular Expression** to **\.*** to replicate all snapshots. | | **Properties Override** | Enter properties to replace existing dataset properties within the replicated files. | | **Properties Exclude** | Enter any existing dataset properties to remove from the replicated files. | {{< /truetable >}} @@ -331,7 +343,7 @@ The Source setting options change based on selections made in **Recursive** and ### Advanced Destination Options The settings in **Destination** specify the location of files you push or pull in the replication task, and the properties applied to the replicated data. -The destination setting options change based on selections made in **Encryption** and **Snapshot Retention Policy** which display additional setting options. +Selections made in **Encryption** and **Snapshot Retention Policy** change the destination setting options, and each show additional setting options. {{< trueimage src="/images/SCALE/DataProtection/AdvancedAddReplicationTaskDestinationOptions.png" alt="Advanced Add Replication Task Destination Options" id="Advanced Add Replication Task Destination Options" >}} @@ -341,9 +353,9 @@ The destination setting options change based on selections made in **Encryption* |---------|-------------| | **Destination** | (Required) Enter or use arrow_right to the left of the **/mnt** folder and at each dataset to expand the dataset tree to browse to the dataset location that has snapshots to replicate. Click on the dataset or directory name, folder icon, or checkbox to select the dataset or directory. Selecting a location defines the full path to that location as the destination. Appending a name to the path creates a new zvol at that location. For example, selecting *pol1/dataset1* stores snapshots in *dataset 1*, but adding */zvol1* after *dataset*1 creates *zvol1* for snapshot storage. Click the arrow_drop_down at the **/mnt** folder to collapse the dataset tree. | | **Destination Dataset Read-Only Policy** | Select the policy from the dropdown list. Options:
  • **Set** - Select to change all destination datasets to read only after a successful replication.
  • **Require** - Select to stop replication unless all existing destination datasets are read only.
  • **Ignore** - Select to disable checking read only during replication.
  • | -| **Encryption** | Select to use encryption when replicating data. For more information on all options see [Encryption](#encryption-setting-options). | -| **Replication from scratch** | Select if the destination system has snapshots but they do not have any data in common with the source snapshot, destroy all data destination snapshots and do a full replication. WARNING! Enabling this option can cause data loss or excessive data transfer if the replication is misconfigured. | -| **Snapshot Retention Policy** | Select the policy from the dropdown list to apply when replicated snapshots are deleted from the destination system. Options are **Same as Source**, **Custom**, and **None**. When selecting **Same as Source** use the **Snapshot Lifetime** from the source periodic snapshot task. When selecting **Custom** define a **Snapshot Lifetime** for the destination system. Also displays the **Snapshot Lifetime** and **Unit** options. When selecting **None** never delete snapshots from the destination system. | +| **Encryption** | Select to use encryption when replicating data. For more information on all options, see [Encryption](#encryption-setting-options). | +| **Replication from scratch** | Select if the destination system has snapshots, but does not have any data in common with the source snapshot, destroy all data in destination snapshots, and do a full replication. WARNING! Enabling this option can cause data loss or excessive data transfer if the replication is misconfigured. | +| **Snapshot Retention Policy** | Select the policy from the dropdown list to apply when replicated snapshots are deleted from the destination system. Options are:
  • **Same as Source** - When selecting **Same as Source** use the **Snapshot Lifetime** from the source periodic snapshot task.
  • **Custom** - When selecting **Custom** define a **Snapshot Lifetime** for the destination system. Also displays the **Snapshot Lifetime** and **Unit** options.
  • **None** - When selecting **None** never delete snapshots from the destination system.
  • | | **Snapshot Lifetime** | Use to enter a numeric value to work with the measure of time field below to specify how long a snapshot remains on the destination system. | | **Unit** | Select the measure of time from the dropdown list to work with the numeric value in **Snapshot Lifetime**. Options are **Hour(s)**, **Day(s)**, **Week(s)**, **Month(s)**, and **Year(s)**. | {{< /truetable >}} @@ -359,15 +371,15 @@ The snapshot settings below change options displayed based on selections made. | Setting | Description | |---------|-------------| | **Periodic Snapshot Tasks** | Select the snapshot schedule for this replication task from the dropdown list. Select from previously configured periodic snapshot tasks. This replication task must have the same **Recursive** and **Exclude Child Dataset** values as the selected periodic snapshot task. Selecting a periodic snapshot schedule removes the **Schedule** field. | -| **Replicate Specific Snapshots** | Select to only replicate snapshots that match a defined creation time. Selecting this option displays the **By snapshot creation time** field. Select the preset schedule or **Custom** to use the advanced scheduler. | -| **Begin** | Displays after selecting *Hourly* in **By snapshot creation time**. Select a time range for the specific periodic snapshots to replicate, in 15-minute increments. Periodic Snapshots created before this selected time are not included in the replication. | -| **End** | Displays after selecting *Hourly* in **By snapshot creation time**. Select a time range for the specific periodic snapshots to replicate, in 15-minute increments. Periodic Snapshots created after this selected time are not included in the replication. | +| **Replicate Specific Snapshots** | Select to only replicate snapshots that match a defined creation time. Selecting this option shows the **By snapshot creation time** field. Select the preset schedule or **Custom** to use the advanced scheduler. | +| **Begin** | Displays after selecting **Hourly** in **By snapshot creation time**. Select a time range for the specific periodic snapshots to replicate, in 15-minute increments. Periodic Snapshots created before this selected time are not included in the replication. | +| **End** | Displays after selecting **Hourly** in **By snapshot creation time**. Select a time range for the specific periodic snapshots to replicate, in 15-minute increments. Periodic Snapshots created after this selected time are not included in the replication. | | **Also include snapshots with the name** | These radio buttons change the naming schema setting option below it. See [Snapshot Naming](#snapshot-naming-options) in the wizard section for details on this option and the radio buttons. | | **Matching naming schema** | Displays the **Also Include Naming Schema** setting. | | **Matching regular expression** | Displays the **Matching regular expression** setting. | -| **Also Include Naming Schema** | Displays after selecting the **Matching naming schema** radio button. Enter the pattern of naming custom snapshots to include in the replication with the periodic snapshot schedule. Enter the [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) strings that match the snapshots to include in the replication. When a periodic snapshot is not linked to the replication, enter the naming schema for manually created snapshots. Has the same %Y, %m, %d, %H, and %M string requirements as the **Naming Schema** in a **Add Periodic Snapshot Task**. Separate entries by pressing Enter. | -| **Matching regular expression** | Displays after selecting the **Matching regular expression** radio button. Enter the regular expressions snapshot should match. Using this option replicates all snapshots with names matching the specified regular expression. This process reads snapshot metadata to determine the snapshot creation order. This slows regular performance on the systems with a large number of snapshots. | -| **Save Pending Snapshots** | Select to prevent source system snapshots that have failed replication from being automatically removed by the **Snapshot Retention Policy**. | +| **Also Include Naming Schema** | Displays after selecting **Matching naming schema**. Enter the pattern of naming custom snapshots to include in the replication with the periodic snapshot schedule. Enter the [strftime(3)](https://man7.org/linux/man-pages/man3/strftime.3.html) strings that match the snapshots to include in the replication. When a periodic snapshot is not linked to the replication, enter the naming schema for manually created snapshots. Has the same %Y, %m, %d, %H, and %M string requirements as the **Naming Schema** in a **Add Periodic Snapshot Task**. Separate entries by pressing Enter. | +| **Matching regular expression** | Displays after selecting **Matching regular expression**. Replicates all snapshots that match the specified regular expression. This process reads snapshot metadata to determine the snapshot creation order. This slows regular performance on the systems with a large number of snapshots. | +| **Save Pending Snapshots** | Prevents source system snapshots that have failed replication from being automatically removed by the **Snapshot Retention Policy**. | {{< /truetable >}} {{< /expand >}} @@ -381,10 +393,10 @@ These schedule setting options are common to both the **Replication Task Wizard* | Setting | Description | |---------|-------------| | **Run Automatically** | Select to start this replication task immediately after the linked periodic snapshot task completes. | -| **Schedule** | Select to create a replication schedule if not selecting **Run Automatically**. Displays the **Frequency** and **Only Replicate Snapshots Matching Schedule** options. | -| **Frequency** | Displays after selecting **Schedule**. Select a preset schedule or choose **Custom** to use the advanced scheduler. | -| **Begin** | Displays after selecting *Hourly* in **Frequency**. Select the start time for the replication task. | -| **End** | Displays after selecting *Hourly* in **Frequency**. Select the end time for the replication task. A replication that is already in progress can continue to run past this time. | +| **Schedule** | Select to create a replication schedule if not selecting **Run Automatically**. Displays the **Frequency** and **Only Replicate Snapshots Matching Schedule** options. Shows a list of schedule preset options. See **Schedule Presets** below for more info. | +| **Frequency** | Displays after selecting **Schedule**. Select a preset schedule or choose **Custom** to use the advanced scheduler and show the **Begin** and **End** options. | +| **Begin** | Displays after selecting **Hourly** in **Frequency**. Select the start time for the replication task. | +| **End** | Displays after selecting **Hourly** in **Frequency**. Select the end time for the replication task. A replication that is already in progress can continue to run past this time. | | **Only Replicate Snapshots Matching Schedule** | Displays after selecting **Schedule**. Select to use the **Schedule** in place of the **Replicate Specific Snapshots** time frame. The **Schedule** values are read over the **Replicate Specific Snapshots** time frame. | {{< /truetable >}} {{< /expand >}} diff --git a/static/images/SCALE/Credentials/AddingAHomeDirectory.png b/static/images/SCALE/Credentials/AddingAHomeDirectory.png new file mode 100644 index 0000000000000000000000000000000000000000..d875aa774ef1d52d71de5289f371a1eeb7aa14cb GIT binary patch literal 27824 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�?!-1STk*r->+b12N@BXyI)Me07?)18#0c& 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 Yb2{F<>^Mt2o1)DAbpFgZ+Z8+i2_|eCw*UYD literal 0 HcmV?d00001 diff --git a/static/images/SCALE/DataProtection/AddNewSSHConnection.png b/static/images/SCALE/DataProtection/AddNewSSHConnection.png new file mode 100644 index 0000000000000000000000000000000000000000..f7486db253ddd48392680199f65e6403d4cf9f4b GIT binary patch literal 48202 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 I=+jsK3tmo$bN~PV literal 0 HcmV?d00001 diff --git a/static/includes/AddSSHConnection.md b/static/includes/AddSSHConnection.md index b895c93cba..97623d17e7 100644 --- a/static/includes/AddSSHConnection.md +++ b/static/includes/AddSSHConnection.md @@ -33,6 +33,10 @@ Click **Add** on the **SSH Connections** widget to open the configuration screen 4. Click **Save**. - Saving a new connection automatically opens a connection to the remote TrueNAS and exchanges SSH keys. - The new SSH connection displays on the **SSH Connection** widget. - To edit it, click on the name to open the **SSH Connections** configuration screen populated with the saved settings. \ No newline at end of file +Saving a new connection automatically opens a connection to the remote TrueNAS and exchanges SSH keys. +The new SSH connection displays on the **SSH Connection** and the **SSH Keypairs** widgets. + +To edit the SSH connection, select it, then click on edit open the **SSH Connections** configuration screen populated with the saved settings. + +To download the private and public keypair, click the for the new keypair on the **SSH Keypairs** widget. +To view and copy the public or private key, click the **Edit** option for the keypair to open the **Edit Keypair** screen. \ No newline at end of file diff --git a/static/includes/BasicReplicationProcess.md b/static/includes/BasicReplicationProcess.md index ca1c44c9fa..d798209c88 100644 --- a/static/includes/BasicReplicationProcess.md +++ b/static/includes/BasicReplicationProcess.md @@ -1,29 +1,11 @@ -### Prerequisites -Before setting up a replication task, you must configure an [admin user]({{< ref "ManageLocalUsersSCALE" >}}) with the **Home Directory** set to something other than **/var/empty**. -Ensure the account configuration has **SSH password login enabled** set. -**Allow all sudo commands with no password** must also be enabled to enable SSH+NETCAT remote replication. +## Setting Up a Simple Replication Task Overview -Remote replication requires setting up an [SSH connection]({{< ref "AddSSHConnectionKeyPair" >}}) in TrueNAS before creating a remote replication task. +{{< include file="/static/includes/ReplicationIndexContentSCALE.md" >}} -Verify the SSH service settings to ensure **Allow Password Authentication** selected to enable these capabilities. -Incorrect SSH service settings can impact the admin user ability to establish an SSH session during replication and require you to obtain and paste a public SSH key into the admin user settings. +The sections below provide overviews on what to do before you begin configuring a replication task. -Replication tasks typically require a configured and active [periodic snapshot task]({{< ref "PeriodicSnapshotTasksSCALE" >}}). +{{< include file="/static/includes/ReplicationLocalBeforeYouBegin.md" >}} -### Typical Replication Configuration Process - -1. Set up the data storage for where you want to save replicated snapshots. - -2. Make sure the admin user is correctly configured. - -3. Create a periodic snapshot task of the storage locations to back up. - -4. Create an SSH connection between the local TrueNAS system and the remote system for remote replication tasks. - Local replication does not require an SSH connection. - You can do this from either **Credentials > Backup Credentials > SSH Connection** and clicking **Add** or from the **Replication Task Wizard** using the **Generate New** option in the settings for the remote system. - -5. Go to **Data Protection > Replication Tasks** and click **Add** to open the **Replication Task Wizard** where you specify the settings for the replication task. - - Setting options change based on the source selections. Replicating to or from a local source does not require an SSH connection. \ No newline at end of file +{{< include file="/static/includes/ReplicationRemoteBeforeYouBegin.md" >}} \ No newline at end of file diff --git a/static/includes/ReplicationConfigNewSSHConnection.md b/static/includes/ReplicationConfigNewSSHConnection.md index 3fea8ab4c9..4fafa405f7 100644 --- a/static/includes/ReplicationConfigNewSSHConnection.md +++ b/static/includes/ReplicationConfigNewSSHConnection.md @@ -1,29 +1,33 @@ When using a TrueNAS system on a different release, the remote or destination system user is always root. -To configure a new SSH connection from the **Replication Task Wizard**: +To configure a new SSH connection while in the **Replication Task Wizard**: -1. Select **Create New** on the **SSH Connection** dropdown list to open the **New SSH Connection** configuration screen. +1. Select **Add New** on the **SSH Connection** dropdown list to open the **New SSH Connection** screen. + + {{< trueimage src="/images/SCALE/DataProtection/AddNewSSHConnection.png" alt="New SSH Connection Screen" id="New SSH Connection Screen" >}} 2. Enter a name for the connection. - {{< trueimage src="/images/SCALE/Credentials/NewSSHConnectionNameAndMethod.png" alt="New SSH Connection Name and Method" id="New SSH Connection Name and Method" >}} - -3. Select the **Setup Method** from the dropdown list. If a TrueNAS system, select **Semi-Automatic**. - -4. Enter the URL to the remote TrueNAS in **TrueNAS URL**. +3. Select the **Setup Method** from the dropdown list. Leave this set to **Semi-Automatic** for a connection to another TrueNAS system. - {{< trueimage src="/images/SCALE/Credentials/NewSSHConnectionAuthetication.png" alt="New SSH Connection Authentication" id="New SSH Connection Authentication" >}} +4. Enter the remote TrueNAS host name or IP address as a URL in **TrueNAS URL**. 5. Enter the administration user (i.e., root or admin) that logs into the remote system with the web UI in **Admin Username**. Enter the password in **Admin Password**. + + If using a TrueNAS 13.0-U6.x system as the remote server, the remote user is always root. + + When using an earlier TrueNAS 22.12.1 system or if you installed TrueNAS as the root user and then created an admin user after initial installation, you must verify that the admin user is correctly configured. -6. Enter the administration user (i.e., root or admin) for remote system SSH session. +6. Enter the administration user (i.e., root or *admin*) for the remote system SSH session. If you clear root as the the user and type any other name the **Enable passwordless sudo for ZFS commands** option displays. - This option does nothing so leave it cleared. + This option does nothing, so leave it cleared. 7. Select **Generate New** from the **Private Key** dropdown list. -8. (Optional) Select a cipher from the dropdown list, or enter a new value in seconds for the **Connection Timeout** if you want to change the defaults. +8. (Optional) Enter a new value in seconds for the **Connection Timeout** if you want to change the defaults. 9. Click **Save** to create a new SSH connection and populate the **SSH Connection** field in the **Replication Task Wizard**. + +After creating a new SSH connection, go to **Credentials > Backup Credentials > SSH Connections**, click **Edit** to copy the public key, then edit the remote user configuration by pasting this in the **Public SSH Key** field. \ No newline at end of file diff --git a/static/includes/ReplicationIndexContentSCALE.md b/static/includes/ReplicationIndexContentSCALE.md index 513b72ceee..72031ea102 100644 --- a/static/includes/ReplicationIndexContentSCALE.md +++ b/static/includes/ReplicationIndexContentSCALE.md @@ -1,5 +1,5 @@ -Local replication occurs on the same TrueNAS system using different pools or datasets. -Remote replication can occur between your TrueNAS system and another TrueNAS system, or with some other remote server you want to use to store your replicated data. -Local and remote replication can involve encrypted pools or datasets. +Replication from one pool or dataset to another pool or dataset on the TrueNAS system is called local replication. +Replication from the TrueNAS system to another TrueNAS or other backup server is called remote replication. +Both local and remote replication can involve encrypted pools or datasets. diff --git a/static/includes/ReplicationLocalBeforeYouBegin.md b/static/includes/ReplicationLocalBeforeYouBegin.md new file mode 100644 index 0000000000..63a187d4d6 --- /dev/null +++ b/static/includes/ReplicationLocalBeforeYouBegin.md @@ -0,0 +1,21 @@ + + +### Before You Begin Local Replication + +Local replication does not require the admin user to have SSH access, a home directory, or sudo command permissions. +Setting options change based on the source and destination selections. Replicating to or from a local source does not require an SSH connection. + +1. Set up the data storage for replicated snapshots. Go to **Datasets** to add a dataset to store the replicated data (snapshots). + TrueNAS does not allow you to create a new dataset using the **Source** file browser in the replication wizard or the **Add Replication Task** configuration screen. Use the file browser to select the existing dataset on the system where you want to store replicated data. + + The **Destination** file browser allows you to specify (create) a directory in an existing dataset on a local or remote system, but you cannot create a directory for a dataset selected in the **Source** file browser. + +2. Create a [periodic snapshot task]({{< ref "PeriodicSnapshotTasksSCALE" >}}) of the storage locations to back up. + TrueNAS typically creates a periodic snapshot task right before it performs the replication task if one is not already created for the task. + You might need to refresh the screen cache to see the task listed in the **Periodic Snapshot Task** widget. + +3. Go to **Data Protection > Replication Tasks** and click **Add** to open the **Replication Task Wizard**. + + If you want to configure a replication task using advanced setting options on the **Add Replication Task** screen, click **Advanced Replication Creation** before entering settings in the replication wizard. + Settings do not carry over from the wizard to the advanced task creation screen, and TrueNAS shows the dialog where you must confirm you want to leave the wizard screen before it opens. + Immediately switching to the advanced screen does not show the confirmation dialog, and you do not have to enter your settings again. \ No newline at end of file diff --git a/static/includes/ReplicationRemoteBeforeYouBegin.md b/static/includes/ReplicationRemoteBeforeYouBegin.md new file mode 100644 index 0000000000..264fca1092 --- /dev/null +++ b/static/includes/ReplicationRemoteBeforeYouBegin.md @@ -0,0 +1,58 @@ + + +### Before You Begin Remote Replication + +Remote replication requires that the admin user on the remote system has SSH access, the SSH connection public key added, a home directory, and sudo command permission. The SSH service must be on when running the periodic snapshot and replication tasks. +Setting options change based on the source and destination selections. + +When setting up remote replication: + +1. Set up the data storage for replicated snapshots. On the remote system, go to **Datasets** to add a dataset for the replicated data (snapshots). + + TrueNAS does not allow you to create a new dataset using the **Source** or **Destination** file browsers in the replication wizard or the **Add Replication Task** configuration screen. + After selecting the existing dataset where you want to store replicated data, the **Destination** file browser allows you to specify (create) a directory in an existing dataset on a local or remote system. You cannot create a directory for a dataset selected in the **Source** file browser. + +2. Add a home directory for the admin user on the local and the remote systems. + The **Home Directory** path on the **Add User** or **Edit User** screen must be set to something other than **/var/empty**. + + Click on the **Home Directory** setting to show the options. + + {{< trueimage src="/images/SCALE/Credentials/AddingAHomeDirectory.png" alt="Adding A Home Directory" id="Adding A Home Directory" >}} + + Select **Create Home Directory**, then use the file browser to select an existing dataset or use **Create Dataset** after selecting the parent dataset to create a new dataset for home directories. + + See [Managing Users]({{< ref "ManageLocalUsersSCALE" >}}) for more information on home directories, SSH access, and sudo commands. + +3. Set up an [SSH connection]({{< ref "AddSSHConnectionKeyPair" >}}) in TrueNAS before creating a remote replication task. + + You can go to **Credentials > Backup Credentials > SSH Connection** and click **Add** to create an SSH connection, or select **Generate New** on the **SSH Connection** dropdown in the **Replication Task Wizard** to create an SSH connection to the remote system. + + To configure an SSH connection, you need the IP address or host name for the remote system, and the administrator username and credentials. + The administrator user on the remote system must have SSH access and the SSH service enabled so the local TrueNAS system can authenticate and communicate with the remote system. + + You can configure the SSH connection while configuring the replication task, but using the **Credentials > Backup Credentials > SSH Connection** option to add a new connection between the local and remote system allows you to properly configure the administration user associated with the task before you add the replication task. + If not properly configured, TrueNAS shows error messages stating the issue preventing you from continuing. + + Using the **Add SSH Connection** screen creates the connection and keypair. + You can obtain the public key from the keypair screen to copy/paste into the admin user on both the local and remote systems before you open the replication wizard. + +4. Update the admin user settings to to allow SSH access, add the public key for the SSH credential for the remote system, and allow sudo commands. + + Go to **Credentials > Backup Credentials > SSH Credential**. + Add a new credential to the remote system if one does not exist, and then edit it to see the public key. + Copy the public key to add to the admin user on the remote system. You can add the credential on the local or remote system. + + On the remote system, go to **Credentials > Users**, select the admin user, and click **Edit**. + Verify the account configuration has **SSH Access** selected. + If not, select it, and then paste the public key for the SSH connection in the **Public SSH Key** field. + + Click on **Sudo Commands** and select **Allow all sudo commands with no password** to enable it. + + Save changes. + +5. Check the **SSH Service** settings. Go to **System > Services > SSH** and click the edit icon. + Select **Allow Password Authentication** to enable this function. Save the change. + + Incorrect SSH service settings can impact the ability of the admin user to establish an SSH session during replication and require you to obtain and paste a public SSH key into the admin user settings. + + Enable **Start Automatically** if you want the SSH service to start after a system restart, and then start or restart the service. diff --git a/static/includes/ReplicationSSHTransferSecurity.md b/static/includes/ReplicationSSHTransferSecurity.md index c16b436c85..b41cbda33c 100644 --- a/static/includes/ReplicationSSHTransferSecurity.md +++ b/static/includes/ReplicationSSHTransferSecurity.md @@ -1,12 +1,13 @@ {{< hint type=note >}} -Using encryption for SSH transfer security is always recommended. +We always recommend using encryption for SSH transfer security. {{< /hint >}} In situations where you use two systems within an absolutely secure network for replication, disabling encryption speeds up the transfer. However, the data is completely unprotected from eavesdropping. -Choosing **No Encryption** for the task is less secure but faster. This method uses common port settings but you can override these by switching to the **Advanced Replication Creation** options or by editing the task after creation. +Choosing **No Encryption** for the task is less secure but faster. +This method uses common port settings but you can override these when using the **Advanced Replication Creation** options or by editing the task after creating it in the wizard. {{< trueimage src="/images/SCALE/DataProtection/RepSecurityTaskSCALE.png" alt="Replication Security and Task Name" id="Replication Security and Task Name" >}} diff --git a/static/includes/ReplicationScheduleAndRetentionSteps.md b/static/includes/ReplicationScheduleAndRetentionSteps.md index 7f2632d128..fabd3e9eb2 100644 --- a/static/includes/ReplicationScheduleAndRetentionSteps.md +++ b/static/includes/ReplicationScheduleAndRetentionSteps.md @@ -1,38 +1,28 @@ -4. Click **Next** to display the scheduling options. - -5. Select the schedule and snapshot retention life time. - - a. Select **Replication Schedule** to use. Select **Run Once** to set up a replication task you run one time. - Select **Run On a Schedule** then select when from the **Schedule** dropdown list. +7. Select the schedule and snapshot retention lifetime. + Leave**Replication Schedule** set to **Run On a Schedule** and select the option in the **Schedule** dropdown. + Select **Run Once** to set up a replication task you run one time. + {{< trueimage src="/images/SCALE/DataProtection/CreateReplicationTaskSetSchedule.png" alt="Set Replication Task Schedule" id="Set Replication Task Schedule" >}} - b. Select the **Destination Snapshot Lifetime** radio button option you want to use. - This specifies how long TrueNAS should store copied snapshots in the destination dataset before TrueNAS deletes it. - **Same as Source** is selected by default. - Select **Never Delete** to keep all snapshots until you delete them manually. - Select **Custom** to show two additional settings, then enter the number of the duration you select from the dropdown list. For example, *2 Weeks*. +8. Select the **Destination Snapshot Lifetime** option to specify how long TrueNAS should store copied snapshots in the destination dataset before TrueNAS deletes it. + **Same as Source** is selected by default. + Select **Never Delete** to keep all snapshots until you delete them manually. + Select **Custom** to show two additional settings, then enter the number of the duration you select from the dropdown list. For example, *2 Weeks*. -6. Click **START REPLICATION**. - A dialog displays if this is the first snapshot taken using the destination dataset. - If TrueNAS does not find a replicated snapshot in the destination dataset to use to create an incremental snapshot, it deletes any existing snapshots found and creates a full copy of the day snapshot to use as a basis for the future scheduled incremental snapshots for this schedule task. - - This operation can delete important data, so ensure you can delete any existing snapshots or back them up in another location. - - {{< trueimage src="/images/SCALE/DataProtection/ReplicationSnapshotConfirmationDialog.png" alt="Local Replication Task Confirmation" id="Local Replication Task Confirmation" >}} +9. Click **Save**. - Click **Confirm**, then **Continue** to add the task to the **Replication Task** widget. - The newly added task shows the status as **PENDING** until it runs on the schedule you set. +The task shows on the **Replication Task** widget with the status as **PENDING**. - {{< trueimage src="/images/SCALE/DataProtection/ReplicationTaskWidgetWithPendingTask.png" alt="Replication Task in Pending State" id="Replication Task in Pending State" >}} +{{< trueimage src="/images/SCALE/DataProtection/ReplicationTaskWidgetWithPendingTask.png" alt="Replication Task in Pending State" id="Replication Task in Pending State" >}} - Select **Run Now** if you want to run the task immediately. +Select **Run Now** if you want to run the task immediately. -To see a log for a task, click the task **State** to open a dialog with the log for that replication task. +Click the task **State** to open a dialog with the log for that replication task. To see the replication snapshots, go to **Datasets**, select the destination dataset on the tree table, then select **Manage Snapshots** on the **Data Protection** widget to see the list of snapshots in that dataset. -Click **Show extra columns** to add more information columns to the table such as the date created which can help you locate a specific snapshot or enter part of or the full the name in the search field to narrow the list of snapshots. +Click **Show extra columns** to add more information columns to the table, such as the date created, which can help you locate a specific snapshot or enter part of or the full name in the search field to narrow the list of snapshots. {{< trueimage src="/images/SCALE/DataProtection/ReplicationSnapthotListInDestinationDataset.png" alt="Snapshot List in Destination Dataset" id="Snapshot List in Destination Dataset" >}} diff --git a/static/includes/ReplicationWizardSteps1and2.md b/static/includes/ReplicationWizardSteps1and2.md new file mode 100644 index 0000000000..0bfe58c115 --- /dev/null +++ b/static/includes/ReplicationWizardSteps1and2.md @@ -0,0 +1,28 @@ + + +{{< hint type=important title="Ensure Clean Destination" >}} +Before you begin configuring the replication task, first verify that the destination dataset where you plan to store the replication snapshots is free of existing snapshots, or that snapshots with critical data are backed up before you create the task. +{{< /hint >}} + +After completing the basic preparation steps in the section above, go to **Data Protection > Replication** and click **Add** to open the replication wizard. +To configure advanced settings, click **Advanced Replication Creation** to open the **Add Replication Task** screen before you enter any settings in the wizard. +Refer to the [Advanced Replication Tasks]({{< ref "/Scale/ScaleTutorials/DataProtection/Replication/AdvancedReplication/_index.md" >}}) for configuration instructions using the **Add Replication Task** screen. + +On the **What and Where** replication wizard screen: + +1. Select an existing replication task from the **Load Previous Replication Task** dropdown. + If one does not exist, leave this set to the default, which is the double dashes. + +2. Select the source and destination locations. You can select these in any order. + Local replication sends or receives data from one storage location to another on the same (local) system. + Remote replication sends data to or receives data from a storage location on a different (remote) TruNAS system. + + To set up a local replication in the replication wizard, set both **Source Location** and **Destination Location** to **On this System**. + + To set up a push remote replication in the replication wizard, set the **Source Location** to **On this System** and set **Destination Location** to **On a Different System**. + To set up a pull remote replication in the replication wizard, set the **Source location** to **On a Different System** and the **Destination Location** to **On this System**. + + Setting either source or destination to **On a Different System** automatically sets the other to **On This System**. You cannot set both to **On a Different System**. + + Click on **Source Location** or **Destination Location** to show additional setting options and the file browser. Additional settings shown are based on the selection. + \ No newline at end of file diff --git a/static/includes/ReplicationWizardSteps5And6.md b/static/includes/ReplicationWizardSteps5And6.md new file mode 100644 index 0000000000..72c8ef2ad9 --- /dev/null +++ b/static/includes/ReplicationWizardSteps5And6.md @@ -0,0 +1,9 @@ + + +5. (Optional) Select **Recursive** to replicate all snapshots contained within the parent dataset and any child datasets. + +6. (Optional) Accept the default name in **Task Name**, or enter a name of your choosing. + TrueNAS populates this field with a default name using the source and destination paths separated by a hyphen, but this default can make locating the snapshot in the destination dataset a challenge. + To make it easier to find the snapshot, give it a name that is easy to identify. For example, a replicated task named *dailyfull* for a full file system snapshot taken daily. + + Click **Next** to show the scheduling options. From 69ab70c11cafbfca846b3c2266bd8870049dc774 Mon Sep 17 00:00:00 2001 From: Mic Johnson Date: Tue, 7 Oct 2025 08:34:42 -0400 Subject: [PATCH 3/3] PD-2218 Fix broken links --- .../DataProtection/Replication/LocalReplicationSCALE.md | 2 -- static/includes/ReplicationWizardSteps1and2.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md b/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md index 8e0de33efe..12907a47be 100644 --- a/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md +++ b/content/SCALETutorials/DataProtection/Replication/LocalReplicationSCALE.md @@ -28,8 +28,6 @@ Setting up replication tasks as an admin user has a few differences from setting {{< include file="/static/includes/ReplicationIntroSCALE.md" >}} -{{< include file="/static/includes/ReplicationIntroSCALE.md" >}} - {{< include file="/static/includes/ReplicationLocalBeforeYouBegin.md" >}} To configure the local replication task, follow the instructions in the section below. diff --git a/static/includes/ReplicationWizardSteps1and2.md b/static/includes/ReplicationWizardSteps1and2.md index 0bfe58c115..d2e83cd150 100644 --- a/static/includes/ReplicationWizardSteps1and2.md +++ b/static/includes/ReplicationWizardSteps1and2.md @@ -6,7 +6,7 @@ Before you begin configuring the replication task, first verify that the destina After completing the basic preparation steps in the section above, go to **Data Protection > Replication** and click **Add** to open the replication wizard. To configure advanced settings, click **Advanced Replication Creation** to open the **Add Replication Task** screen before you enter any settings in the wizard. -Refer to the [Advanced Replication Tasks]({{< ref "/Scale/ScaleTutorials/DataProtection/Replication/AdvancedReplication/_index.md" >}}) for configuration instructions using the **Add Replication Task** screen. +Refer to the [Advanced Replication Tasks]({{< ref "/ScaleTutorials/DataProtection/Replication/AdvancedReplication/_index.md" >}}) for configuration instructions using the **Add Replication Task** screen. On the **What and Where** replication wizard screen: