From bf264873422ad1bfb815e859d45058f9b3e190fe Mon Sep 17 00:00:00 2001 From: linzibelle Date: Fri, 22 Nov 2024 08:57:03 -0500 Subject: [PATCH 01/16] Update ZFSPrimer.md (#3275) --- content/References/ZFSPrimer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/References/ZFSPrimer.md b/content/References/ZFSPrimer.md index 942c50b3fd..bbd262b3ba 100644 --- a/content/References/ZFSPrimer.md +++ b/content/References/ZFSPrimer.md @@ -26,7 +26,7 @@ Most writes are sequential, and old versions of files are not unlinked until it ZFS has direct access to disks and bundles multiple read and write requests into transactions. Most file systems cannot do this, as they only have access to disk blocks. -A transaction either completes or fails, meaning there are never [write-holes](https://blogs.oracle.com/bonwick/raid-z). A *write-hole* is a traditional parity RAID failure that applies to any stripe plus parity RAID layout like RAID4, RAID5, etc. +A transaction either completes or fails, meaning there are never write holes. A *write-hole* is a traditional parity RAID failure that applies to any stripe plus parity RAID layout like RAID4, RAID5, etc. With ZFS, you do not need file system checker utilities. Because of the transactional design, any storage capacity you add immediately becomes available for writes. From 73f515ca98dfe6aa4ad97471bb69df45109b34e5 Mon Sep 17 00:00:00 2001 From: bugclerk <40872210+bugclerk@users.noreply.github.com> Date: Fri, 22 Nov 2024 05:59:30 -0800 Subject: [PATCH 02/16] updated screenshot and blurb (#3274) (cherry picked from commit 6477c5122d2a265bc5f9404947da0ae9a0388709) Co-authored-by: linzibelle Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- .../images/SCALE/Dashboard/FeedbackWindow.png | Bin 11303 -> 31671 bytes static/includes/FeedbackWindow.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/static/images/SCALE/Dashboard/FeedbackWindow.png b/static/images/SCALE/Dashboard/FeedbackWindow.png index 5e95431082fd7c76baec86954b2d0ea73ba6f24a..a1f6004255db61c27d395e62b8f569c969cc58b7 100644 GIT binary patch literal 31671 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 diff --git a/static/includes/FeedbackWindow.md b/static/includes/FeedbackWindow.md index 038e2865a1..2e2dd5110d 100644 --- a/static/includes/FeedbackWindow.md +++ b/static/includes/FeedbackWindow.md @@ -3,7 +3,7 @@ The **Send Feedback** ![FeedbackIcon](/images/SCALE/Dashboard/FeedbackIcon.png "Feedback Icon") icon opens a feedback window. Alternately, go to **System** > **General**, find the **Support** widget, and click **File Ticket** to see the feedback window. -The feedback window allows users to send page ratings, comments, and report issues or suggest improvements directly to the TrueNAS development team. +The feedback window allows users to send page ratings, comments, vote for new features on the community forum, report issues, or suggest improvements directly to the TrueNAS development team. Submitting a bug report requires a free [Atlassian account](https://id.atlassian.com/signup). {{< trueimage src="/images/SCALE/Dashboard/FeedbackWindow.png" alt="Send Feedback Window" id="Send Feedback Window" >}} From 72cedcdad474d5c2dcf7ab25b7cc338faa305eb2 Mon Sep 17 00:00:00 2001 From: DjP-iX <133042991+DjP-iX@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:07:22 -0500 Subject: [PATCH 03/16] PD-1583 / 25.04 / Pd 1583 address ix apps and ix applications datasets (#3271) * Update _index.md * Update _index.md * Create AppsDatasets.md * Delete AppsFileSharing.md * Update AppsInstallWizardSettings.md * Update AppsPoolOrDataset.md * Update AppsDatasets.md * Update _index.md * Update _index.md * Update AppsDatasets.md * Update AppsInstallWizardSettings.md * Update AppsPoolOrDataset.md * Update AppsDatasets.md * Update AppsDatasets.md * Update _index.md * Update _index.md * Create AppsBestPractices.md * Update AppsDatasets.md * Update AppsInstallWizardSettings.md * Update AppsPoolOrDataset.md * remove legacy ix-applications mentions * Rename pool snippet * Update static/includes/apps/AppsDatasets.md Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --------- Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- .../SCALE/SCALEUIReference/Datasets/_index.md | 4 +- content/TruenasApps/EnterpriseApps/_index.md | 36 +---------- content/TruenasApps/_index.md | 34 +--------- static/includes/CreateDatasetSCALE.md | 2 +- static/includes/apps/AppsBestPractices.md | 37 +++++++++++ static/includes/apps/AppsDatasets.md | 63 +++++++++++++++++++ static/includes/apps/AppsFileSharing.md | 11 ---- .../apps/AppsInstallWizardSettings.md | 43 ++++++------- static/includes/apps/AppsPool.md | 6 ++ static/includes/apps/AppsPoolOrDataset.md | 9 --- static/includes/apps/AppsSMBErrorWarning.md | 4 +- 11 files changed, 136 insertions(+), 113 deletions(-) create mode 100644 static/includes/apps/AppsBestPractices.md create mode 100644 static/includes/apps/AppsDatasets.md delete mode 100644 static/includes/apps/AppsFileSharing.md create mode 100644 static/includes/apps/AppsPool.md delete mode 100644 static/includes/apps/AppsPoolOrDataset.md diff --git a/content/SCALE/SCALEUIReference/Datasets/_index.md b/content/SCALE/SCALEUIReference/Datasets/_index.md index 5e84341b5a..9bcbbf2224 100644 --- a/content/SCALE/SCALEUIReference/Datasets/_index.md +++ b/content/SCALE/SCALEUIReference/Datasets/_index.md @@ -192,7 +192,7 @@ Click to show a selectable checklist of **Permissions Advanced** and **Flags Adv {{< trueimage src="/images/SCALE/Datasets/PermissionsWidgetOwnerNSFv4Options.png" alt="Permissions Widget Owner NFSv4 Options" id="Permissions Widget Owner NFSv4 Options" >}} -A dataset with a POSIX ACL type, such as the ix-applications dataset, is only editable using the **Edit** button. +A dataset with a POSIX ACL type is only editable using the **Edit** button. **Edit** opens the [**Edit ACL**]({{< relref "EditACLScreens.md" >}}) for ACL type. {{< /expand >}} @@ -275,7 +275,7 @@ The common settings are **Parent Path**, **Name**, and the **Dataset Preset** (p |---------|-------------| | **Parent path** | Read-only field that displays the dataset path. Populated with the parent dataset path, adds the name given to the dataset after entering it in **Name**. For example, *tank/shares/smbshare1*. | | **Name** | Enter a unique identifier for the dataset. Names allow upper and lower case letters, numbers, and the dash (-) or underscore (_) special characters, but TrueNAS does not allow trailing spaces after the dataset name. You cannot change the dataset name after clicking **Save**. The **Name** field on the **Edit Dataset** screen shows the path. | -| **Dataset Preset** | Select the option from the dropdown list to define the type of data sharing the dataset uses. The options optimize the dataset for a sharing protocol or app and set the ACL type best suited to the dataset purpose. Options are:
  • **Generic** - Select for general storage datasets that are not associated with SMB shares, or apps. Sets the ACL to POSIX.
  • **SMB** - Select to optimize the dataset for SMB shares. Displays the **Create SMB Share** option pre-selected and **SMB Name** field populated with the value entered in **Name**. Sets the ACL to NFSv4.
  • **Apps** - Select to optimize the dataset for use by any application. Sets the ACL to NFSv4. If you plan to deploy container applications, the system automatically creates the **ix-applications** dataset but this is not used for application data storage.
  • **Multiprotocol** - Select if configuring a multi-protocol or mixed-mode NFS and SMB sharing protocols. Allows clients to use either protocol to access the same data. Displays the **Create NFS Share** and **Create SMB Share** options pre-selected and the **SMB Name** field populated with the value entered in **Name**. See [Multiprotcol Shares]({{< relref "MixedModeShares.md" >}}) for more information. Sets the ACL to NFSv4.
  • Setting cannot be edited after saving the dataset. | +| **Dataset Preset** | Select the option from the dropdown list to define the type of data sharing the dataset uses. The options optimize the dataset for a sharing protocol or app and set the ACL type best suited to the dataset purpose. Options are:
  • **Generic** - Select for general storage datasets that are not associated with SMB shares, or apps. Sets the ACL to POSIX.
  • **SMB** - Select to optimize the dataset for SMB shares. Displays the **Create SMB Share** option pre-selected and **SMB Name** field populated with the value entered in **Name**. Sets the ACL to NFSv4.
  • **Apps** - Select to optimize the dataset for use by any application. Sets the ACL to NFSv4. If you plan to deploy container applications, the system automatically creates the **ix-apps** dataset for Docker storage for but separate datasets used for application data storage.
  • **Multiprotocol** - Select if configuring a multi-protocol or mixed-mode NFS and SMB sharing protocols. Allows clients to use either protocol to access the same data. Displays the **Create NFS Share** and **Create SMB Share** options pre-selected and the **SMB Name** field populated with the value entered in **Name**. See [Multiprotcol Shares]({{< relref "MixedModeShares.md" >}}) for more information. Sets the ACL to NFSv4.
  • Setting cannot be edited after saving the dataset. | {{< /truetable >}} {{< /expand >}} diff --git a/content/TruenasApps/EnterpriseApps/_index.md b/content/TruenasApps/EnterpriseApps/_index.md index d2a5cf371f..fff05fb2d4 100644 --- a/content/TruenasApps/EnterpriseApps/_index.md +++ b/content/TruenasApps/EnterpriseApps/_index.md @@ -25,41 +25,7 @@ TrueNAS is certified with leading hypervisors and backup solutions to streamline TrueNAS Enterprise storage appliances deliver a wide range of features and scalability for virtualization and private cloud environments, with the ability to create off-site backups with scheduled sync and replication features. TrueNAS applications expand the capabilities of your system by adding third-party software but can add significant risk to system stability and security. -Keep these general best practices in mind when using applications with TrueNAS: - -{{< expand "App Pool Selection" "v" >}} - -{{< include file="/static/includes/apps/AppsPoolOrDataset.md" >}} - -{{< /expand >}} - -{{< expand "App Dataset and File Sharing" "v" >}} - -{{< include file="/static/includes/apps/AppsFileSharing.md" >}} - -{{< /expand >}} - -{{< expand "Docker Compose Settings" "v" >}} - -{{< include file="/static/includes/apps/AppsDockerCompose.md" >}} - -{{< /expand >}} - -{{< expand "Custom Apps" "v" >}} - -{{< include file="/static/includes/apps/CustomAppIntro.md" >}} - -{{< include file="/static/includes/apps/AppsCustomApp.md" >}} - -{{< /expand >}} - -{{< expand "App Directory Services" "v" >}} - -{{< include file="/static/includes/apps/AppsDirectoryService.md" >}} - -iXsystems Support can assist Enterprise customers with configuring directory service settings in TrueNAS with the [information customers provide]({{< relref "/SCALE/GettingStarted/Install/_index.md" >}}), but they do not configure customer Active Directory system settings. - -{{< /expand >}} +{{< include file="/static/includes/apps/AppsBestPractices.md" >}} For more information on configuring general application functions and installation wizard screens, see [TrueNAS Apps]({{< relref "/content/TruenasApps/_index.md" >}}). diff --git a/content/TruenasApps/_index.md b/content/TruenasApps/_index.md index 166096be48..dfd5ceb5af 100644 --- a/content/TruenasApps/_index.md +++ b/content/TruenasApps/_index.md @@ -44,37 +44,7 @@ Make sure the application is required for your specific use requirements and doe You must choose a pool before you can install an application. -{{< expand "App Pool Selection" "v" >}} - -{{< include file="/static/includes/apps/AppsPoolOrDataset.md" >}} - -{{< /expand >}} - -{{< expand "App Dataset and File Sharing" "v" >}} - -{{< include file="/static/includes/apps/AppsFileSharing.md" >}} - -{{< /expand >}} - -{{< expand "Apps General Settings" "v" >}} - -{{< include file="/static/includes/apps/AppsDockerCompose.md" >}} - -{{< /expand >}} - -{{< expand "Custom Apps" "v" >}} - -{{< include file="/static/includes/apps/CustomAppIntro.md" >}} - -{{< include file="/static/includes/apps/AppsCustomApp.md" >}} - -{{< /expand >}} - -{{< expand "App Directory Services" "v" >}} - -{{< include file="/static/includes/apps/AppsDirectoryService.md" >}} - -{{< /expand >}} +{{< include file="/static/includes/apps/AppsBestPractices.md" >}} For more information on screens and screen functions, refer to the UI Reference article on [Apps Screens]({{< relref "SCALE/SCALEUIReference/Apps/_index.md" >}}). @@ -88,7 +58,7 @@ You must set the pool before you can add any application. We recommend keeping the application use case in mind when choosing a pool. Select a pool with enough space for all the applications you intend to use. -For stability, we also recommend using SSD storage for the applications pool. +For stability, we recommend using SSD storage for the applications pool. Select the pool and click **Save**. If you close the dialog to set the pool later, click **Configuration > Choose Pool** to set the pool. diff --git a/static/includes/CreateDatasetSCALE.md b/static/includes/CreateDatasetSCALE.md index aea57d02df..a1f4ce9656 100644 --- a/static/includes/CreateDatasetSCALE.md +++ b/static/includes/CreateDatasetSCALE.md @@ -14,7 +14,7 @@ Select the **Dataset Preset** option you want to use. Options are: If creating an SMB or multi-protocol (SMB and NFS) share the dataset name value auto-populates the share name field with the dataset name. -If you plan to deploy container applications, the system automatically creates the **ix-applications** dataset, but this dataset is not used for application data storage. +If you plan to deploy container applications, the system automatically creates the **ix-apps** dataset for Docker storage for but separate datasets used for application data storage. If you want to store data by application, create the dataset(s) first, then deploy your application. When creating a dataset for an application, select **Apps** as the **Dataset Preset**. This optimizes the dataset for use by an application. diff --git a/static/includes/apps/AppsBestPractices.md b/static/includes/apps/AppsBestPractices.md new file mode 100644 index 0000000000..a90e91324b --- /dev/null +++ b/static/includes/apps/AppsBestPractices.md @@ -0,0 +1,37 @@ + + +Keep these general best practices in mind when using applications with TrueNAS: + +{{< expand "App Pool Selection" "v" >}} + +{{< include file="/static/includes/apps/AppsPoolOrDataset.md" >}} + +{{< /expand >}} + +{{< expand "App Dataset Types" "v" >}} + +{{< include file="/static/includes/apps/AppsDatasets.md" >}} + +{{< /expand >}} + +{{< expand "Apps General Settings" "v" >}} + +{{< include file="/static/includes/apps/AppsDockerCompose.md" >}} + +{{< /expand >}} + +{{< expand "Custom Apps" "v" >}} + +{{< include file="/static/includes/apps/CustomAppIntro.md" >}} + +{{< include file="/static/includes/apps/AppsCustomApp.md" >}} + +{{< /expand >}} + +{{< expand "App Directory Services" "v" >}} + +{{< include file="/static/includes/apps/AppsDirectoryService.md" >}} + +iXsystems Support can assist Enterprise customers with configuring directory service settings in TrueNAS with the [information customers provide]({{< relref "/SCALE/GettingStarted/Install/_index.md" >}}), but they do not configure customer Active Directory system settings. + +{{< /expand >}} diff --git a/static/includes/apps/AppsDatasets.md b/static/includes/apps/AppsDatasets.md new file mode 100644 index 0000000000..7fca76ed22 --- /dev/null +++ b/static/includes/apps/AppsDatasets.md @@ -0,0 +1,63 @@ + + +**ix-apps Dataset** + +TrueNAS 24.10 and newer creates a hidden **ix-apps** dataset, mounted at /mnt/.ix-apps, to store Docker configuration, catalog data, and app metadata. +The ix-apps dataset is internally managed by TrueNAS and hidden to prevent user misconfiguration. +Any modification of it can result in instability and loss of app functionality. + +Do not include the ix-apps dataset inside of an SMB or NFS share. + +Back up and restore functionality as well as migration of the ix-apps dataset from one apps pool to another are not currently supported by the TrueNAS interface. +Support for these features is planned for a future TrueNAS release version. + +{{< hint type="note" title="ix-Applications Dataset" >}} +TrueNAS 24.04 and earlier versions stored applications data in an **ix-applications** dataset on the configured apps pool. +Systems with applications deployed that upgrade from earlier releases to 24.10 retain the ix-applications dataset. +During the migration process, 24.10 reads the stored Kubernetes app data in the ix-applications dataset, ports them to Docker, and saves them in the new ix-apps dataset. +App storage ixVolumes present in ix-applications are cloned under the ix-apps dataset and promoted. + +The app data retained in ix-applications enables TrueNAS to revert to 24.04 with functional applications. +TrueNAS 24.10 or newer does not use app data in the ix-applications dataset. +It can be safely removed after fully migrating to 24.10, but apps do not function if reverted to 24.04 without the ix-applications dataset. +{{< /hint >}} + +**ixVolume Datasets** + +**ixVolume** datasets allow TrueNAS to automatically create an app storage path inside the hidden ix-apps dataset. + +ixVolumes are typically created with appropriate permissions to deploy the application. +If needed, use **Enable ACL** in **Storage Configuration** to configure ACL entries for an ixVolume. + +ixVolumes are not recommended for permanent storage volumes, they are intended for use as rapid storage for a test deployment of the container. +Though they can simplify test deployment, ixVolumes complicate tasks like app data backup. +We recommend manually adding datasets and configuring container storage volumes with the host path option. + +**Host Path Datasets** + +**Host Paths** allow users to mount existing TrueNAS datasets to paths within the app container. +Create the TrueNAS dataset(s) before assigning them as host paths within the app installation screen. + +Mounting a host path does not automatically configure appropriate permissions to deploy the application. +Use **Enable ACL** in **Storage Configuration** to configure ACL entries for each host path. + +{{< expand "Configuring Host Path ACL Entries" "v" >}} +After entering the path inside the container in **Mount Path**, select **Enable ACL**. +Browse to or enter the path to the dataset in **Host Path**. +Click **Add** next to **ACL Entries** to display a set of ACE fields. +Use **ID Type** to select whether the ACE is for a user or a group. +Enter the UID or GID in **ID** and adjust the permissions level in **Access**. + +Refer to the app **Run As Context** on the app details screen for default ID requirements. +A user or group ID does not need to exist locally on TrueNAS or match the name configured in the container to grant an ACE. +Failing to configure host path ACLs prevents the app from deploying! + +Select **Force Flag** in **ACL Options**. +This allows TrueNAS to write ACL entries to the storage volume if it has existing data in it. +**Force Flag** is required to edit or update an existing application. +{{< /expand >}} + +**SMB Share Volumes** + +Some app storage configurations include the **SMB/CIFS Share** option. +Use this option to mount an existing SMB share using a Docker [volume](https://docs.docker.com/engine/storage/#volumes). diff --git a/static/includes/apps/AppsFileSharing.md b/static/includes/apps/AppsFileSharing.md deleted file mode 100644 index 55b2493337..0000000000 --- a/static/includes/apps/AppsFileSharing.md +++ /dev/null @@ -1,11 +0,0 @@ - - -TrueNAS provides two default storage options, ixVolumes and host path to a pre-existing dataset. - -Selecting the ixVolume allows TrueNAS to create the storage volume for the application. -If the application requires datasets with specific names, you must create them before launching the application installation wizard. - -{{< hint type=info >}} -Earlier versions of TrueNAS had issues with apps failing to deploy if the application and an SMB or NFS share had the same host path to a dataset. -This issue no longer exists, but we still recommended creating datasets for applications that do not share the same host path as an SMB or NFS share. -{{< /hint >}} \ No newline at end of file diff --git a/static/includes/apps/AppsInstallWizardSettings.md b/static/includes/apps/AppsInstallWizardSettings.md index f1b0703d91..9de6be3f5e 100644 --- a/static/includes/apps/AppsInstallWizardSettings.md +++ b/static/includes/apps/AppsInstallWizardSettings.md @@ -31,40 +31,41 @@ All apps in the **stable** train, some **community** train apps, and all apps in * **Storage Configuration** shows options to configure storage for the application. Storage configuration can include the primary data mount volume, a configuration volume, postgres volumes, and an option to add additional storage volumes. The primary mount volumes have two options: -* **ixVolume** that creates a storage volume inside the hidden **ix-apps** dataset. This is the default setting. -* **Host Path** that allows you to select an existing dataset created for the application. Shows additional fields to select the path to the dataset and add the mount point. + * **ixVolume** creates a storage volume inside the hidden **ix-apps** dataset. This is the default setting. + * **Host Path** allows you to select an existing dataset created for the application. Shows additional fields to select the path to the dataset and add the mount point. ixVolumes are not recommended for permanent storage volumes, they are intended for use as rapid storage for a test deployment of the container. We recommend adding datasets and configuring the container storage volumes with the host path option. - Host path add existing dataset(s) as the storage volumes. You must configure the datasets before beginning the app installation using the wizard. + Host paths add existing dataset(s) as the storage volumes. + You must configure the datasets before beginning the app installation using the wizard. - {{< hint type="note" title="ix-apps Dataset" >}} - The **ix-apps** dataset is for internal use only. - - TrueNAS systems with applications deployed that upgrade from earlier releases to 24.10 continue to see the **ix-Applications** dataset on the pool chosen for applications to use. - New installs or systems upgrading where applications are not deployed and a pool is not chosen for apps use the hidden **ix-apps** dataset. - Choosing the pool for apps to use, creates this dataset to store all container-related data. - To expose storage volumes found in the **ix-applications** dataset, take a recursive snapshot. - {{< /hint >}} - - Some applications require specific storage volumes for configuration and other data. Apps with these requirements might indicate this in the wizard UI but refer to tutorials for specifics. - After configuring required storage volumes you can add storage volumes. + Some applications require specific storage volumes for configuration and other data. + Apps with these requirements might indicate this in the wizard UI but refer to tutorials for specifics. + After configuring required storage volumes you can add additional storage volumes if needed. Click **Add** to select the type of storage and configure additional storage volumes for the application. The three storage options are: * **ixVolume** * **Host path** - * **SMB share** that allows you to create a storage volume used by an SMB share. + * **SMB share** that allows you to mount an SMB share as a Docker storage volume. - An SMB share option allows you to configure a share for the application to use. + An SMB share option allows you to mount an SMB share as a Docker volume for the application to use. If the application requires specific datasets or you want to allow SMB share access, configure the dataset(s) and SMB share before using the installation wizard. - ixVolumes do not require setting up an ACL and ACE entry but host paths do. - After entering the dataset name as the mount point, select **Enable ACL** to browse to or enter the path to the dataset. - Enter the UID for either the default user assigned to the app or the UID for the TrueNAS user created to serve as the app administrator as the user in the ACE entry and set permissions to full control. - Failing to enable host path ACLs prevents the app from deploying! + ixVolumes do not require setting up an Access Control List (ACL) and Access Control Entry (ACE) in the app configuration settings, but host paths do. + After entering the path inside the container in **Mount Path**, select **Enable ACL**. + Browse to or enter the path to the dataset in **Host Path**. + Click **Add** next to **ACL Entries** to display a set of ACE fields. + Use **ID Type** to select whether the ACE is for a user or a group. + Enter the UID or GID in **ID** and adjust the permissions level in **Access**. + + Refer to the app **Run As Context** on the app details screen for default ID requirements. + A user or group ID does not need to exist locally on TrueNAS or match the name configured in the container to grant an ACE. + Failing to configure host path ACLs prevents the app from deploying! - Select **Force** to allow TrueNAS to update the application to the next version. This allows updates and writing to the storage volume if it has data in it. + Select **Force Flag** in **ACL Options**. + This allows TrueNAS to write ACL entries to the storage volume if it has existing data in it. + **Force Flag** is required to edit or update an existing application. * **Resources Configuration** shows CPU and memory settings for the container pod. In most cases, you can accept the default settings, or you can change these settings to limit the system resources available to the application. diff --git a/static/includes/apps/AppsPool.md b/static/includes/apps/AppsPool.md new file mode 100644 index 0000000000..b3dd9ff6b6 --- /dev/null +++ b/static/includes/apps/AppsPool.md @@ -0,0 +1,6 @@ + + +We recommend users keep the container use case in mind when choosing an applications pool. +Select a pool with enough space for all the application containers you intend to use. + +For stability, we recommend using SSD storage for the apps pool. diff --git a/static/includes/apps/AppsPoolOrDataset.md b/static/includes/apps/AppsPoolOrDataset.md deleted file mode 100644 index df85be1bfb..0000000000 --- a/static/includes/apps/AppsPoolOrDataset.md +++ /dev/null @@ -1,9 +0,0 @@ - - -We recommend users keep the container use case in mind when choosing a pool. -Select a pool with enough space for all the application containers you intend to use. - -TrueNAS creates the **ix-apps** dataset on the chosen pool and uses it to store all container-related data. This is for internal use only. - -TrueNAS provides two default storage options, the default ixVolume or setting a host path to a preexisting dataset. -If you intend to store your application data in a location separate from other storage on your system, create a new dataset before launching the app installation wizard. diff --git a/static/includes/apps/AppsSMBErrorWarning.md b/static/includes/apps/AppsSMBErrorWarning.md index 1567df09d1..5a0ad39911 100644 --- a/static/includes/apps/AppsSMBErrorWarning.md +++ b/static/includes/apps/AppsSMBErrorWarning.md @@ -1,4 +1,4 @@ -Note that having the pool configured as an SMB share results in an error when the ix-applications directory is contained within that pool. -To avoid this error, place the SMB shares within the pool as individual datasets alongside the ix-applications folder. \ No newline at end of file +Note that having the pool configured as an SMB share results in an error when the ix-apps directory is contained within that pool. +To avoid this error, place the SMB shares within the pool as individual datasets alongside the ix-apps dataset. From f5b7db8bb347e726ecacd4da444b753d5001fee5 Mon Sep 17 00:00:00 2001 From: DjP-iX <133042991+DjP-iX@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:10:41 -0500 Subject: [PATCH 04/16] Update PlexApp.md (#3281) * Update PlexApp.md Clarifies to remove reader confusion. See: https://forums.truenas.com/t/testing-plex-on-truenas-scale-24-10-0-2/25086/8?u=djp-ix * Update PlexApp.md --------- Co-authored-by: tonyriv3 <75626853+tonyriv3@users.noreply.github.com> --- content/TruenasApps/StableApps/PlexApp.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/TruenasApps/StableApps/PlexApp.md b/content/TruenasApps/StableApps/PlexApp.md index b09fc618ce..ba42923860 100644 --- a/content/TruenasApps/StableApps/PlexApp.md +++ b/content/TruenasApps/StableApps/PlexApp.md @@ -31,10 +31,10 @@ Before you install the Plex app: You can use either an existing pool or [create a new one]({{< relref "CreatePoolWizard.md" >}}) Create the two datasets Plex uses for storage volumes: - * **data** for user media data storage + * **data** to use as the Plex data directory for database and metadata storage * **config** for Plex application configuration storage. - You can create a dataset for log data or use a temporary directory option for log data. + You can create a dataset or use a temporary directory option for log data. Transcode data is not useful or meant for persistent storage, so using a temporary directory is a better option. When creating the above datasets, select the **apps** dataset preset. @@ -92,9 +92,9 @@ If not, set the storage volume type to either **temporary** or **tmpfs** for bot {{< /expand >}} Add any labels you want to use to organize your media files. -For example, labeling video files as *movies* or *sports*, etc. Labels allow creating custom groupings or classifications beyond the default metadata provided by Plex. +For example, labeling video files as *movies* or *sports*, etc. Labels allow you to create custom groupings or classifications beyond the default metadata provided by Plex. -Accept the defaults in **Resources Configuration** and select the GPU option if you have a compatible GPU installed in the system and you want to use it for hardware-accelerated transcoding. +Accept the defaults in **Resources Configuration** and select the GPU option if you have a compatible GPU installed in the system and want to use it for hardware-accelerated transcoding. Click **Install**. A progress dialog opens before switching to the **Installed** applications screen. The **Installed** screen shows the **plex** app in the **Deploying** state until fully installed and then the status changes to **Running** when ready to use. @@ -119,7 +119,7 @@ Plex configuration settings include setting up the server timezone, authenticati {{< include file="/static/includes/apps/AppsInstallWizardTimezoneSetting.md" >}} -Authentication to the Plex account is accomplished through a [claim token provided by Plex](https://www.plex.tv/claim/). +TrueNAS authenticates to the Plex account using a [Plex claim token](https://www.plex.tv/claim/). While signed into your Plex account, copy the token provided by Plex into the **Claim Token** field. The Plex app does not deploy if you do not include this token. @@ -182,7 +182,7 @@ This makes the **tmpfs** directory option a better choice as it creates a Linux Neither directory storage option provides easy access to stored data, so if you want to store and access log data, create a dataset called **logs**. If opting to use datasets for all Plex storage volumes, create datasets to use with the host path option: -* **data** to use as the media data storage volume. +* **data** to use as the Plex data directory for database and metadata storage. * **config** to use as the Plex app configuration storage volume. * **logs** if you want to save and have easy access to log data. From c4d6b130f14d5eb5043a9f1eb1017cc3db477540 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Tue, 26 Nov 2024 10:53:24 -0500 Subject: [PATCH 05/16] Update MiniFamily.md (#3288) Remove obsolete blurb about virtualization features as related to CORE. --- content/Hardware/MiniFamily.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/Hardware/MiniFamily.md b/content/Hardware/MiniFamily.md index 6b14652dea..75245b546c 100644 --- a/content/Hardware/MiniFamily.md +++ b/content/Hardware/MiniFamily.md @@ -16,7 +16,7 @@ keyword: icon1="IconTrueNAS.png" cell1title="Professional-Grade Office or Edge Storage" cell1text="Best for: Small / Home Office, File Sharing." icon2="IconProfessional.png" cell2title="Professional-Grade Platform" cell2text="ECC RAM, IPMI Remote Management, and OpenZFS." icon3="IconSpeed.png" cell3title="Hybrid, Fusion, or All-Flash Performance" cell3text="Up to 2 x 1/10GbE, USB 3.1, 8 Core, 64GB RAM. Over 250TB hybrid or 90TB flash capacity." -icon4="IconGraph.png" cell4title="TrueNAS CORE Software" cell4text="Unified Storage with SMB, NFS, iSCSI, Apple, and S3. OpenZFS with Data Management tools. VMs and apps like Plex, Nextcloud, and more." >}} +icon4="IconGraph.png" cell4title="TrueNAS CORE Software" cell4text="Unified Storage with SMB, NFS, iSCSI, Apple, and S3. OpenZFS with Data Management tools." >}} Visit the [Mini Family product page](https://www.truenas.com/trunas-mini/) for more details. From 90ff43337925f3f73bc71c70476b777dd0e9e61e Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Tue, 26 Nov 2024 10:55:58 -0500 Subject: [PATCH 06/16] Update MiniFamily.md (#3289) Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- content/Hardware/MiniFamily.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/Hardware/MiniFamily.md b/content/Hardware/MiniFamily.md index 75245b546c..8a0222c742 100644 --- a/content/Hardware/MiniFamily.md +++ b/content/Hardware/MiniFamily.md @@ -18,7 +18,7 @@ icon2="IconProfessional.png" cell2title="Professional-Grade Platform" cell2text= icon3="IconSpeed.png" cell3title="Hybrid, Fusion, or All-Flash Performance" cell3text="Up to 2 x 1/10GbE, USB 3.1, 8 Core, 64GB RAM. Over 250TB hybrid or 90TB flash capacity." icon4="IconGraph.png" cell4title="TrueNAS CORE Software" cell4text="Unified Storage with SMB, NFS, iSCSI, Apple, and S3. OpenZFS with Data Management tools." >}} -Visit the [Mini Family product page](https://www.truenas.com/trunas-mini/) for more details. +Visit the [Mini Family product page](https://www.truenas.com/truenas-mini/) for more details. ## Resources From 3304318f04e64ecdd769af300c9814eeb7c0d484 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Tue, 26 Nov 2024 10:59:30 -0500 Subject: [PATCH 07/16] Remove obsolete URI check (#3290) verified showsearch is still functional Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- layouts/partials/menu-filetree.html | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/layouts/partials/menu-filetree.html b/layouts/partials/menu-filetree.html index 3c1bc82ff9..38e660e20f 100644 --- a/layouts/partials/menu-filetree.html +++ b/layouts/partials/menu-filetree.html @@ -140,26 +140,6 @@ }); - - - - {{ template "tree-nav" dict "sect" .Site.Home.Sections "current" $current "main_index_class" .Page.Params.main_index_class "path" .RelPermalink }} From c2e5f4cd105f9f39bf30e696c4c44000d8ea1e9b Mon Sep 17 00:00:00 2001 From: DjP-iX <133042991+DjP-iX@users.noreply.github.com> Date: Tue, 26 Nov 2024 11:03:00 -0500 Subject: [PATCH 08/16] PD-1572 / 25.04 / Pd 1572 review ipmi configuration tutorial (#3253) * Update SettingUpIPMI.md * Update IPMIScreens.md * Create IPMICompatibility.md * Update content/SCALE/SCALETutorials/Network/SettingUpIPMI.md I like it! Co-authored-by: DjP-iX <133042991+DjP-iX@users.noreply.github.com> --------- Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- .../SCALETutorials/Network/SettingUpIPMI.md | 49 +++++++++++++------ .../SCALEUIReference/Network/IPMIScreens.md | 10 ++-- static/includes/IPMICompatibility.md | 6 +++ 3 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 static/includes/IPMICompatibility.md diff --git a/content/SCALE/SCALETutorials/Network/SettingUpIPMI.md b/content/SCALE/SCALETutorials/Network/SettingUpIPMI.md index 6de38f2218..12e2fff0e1 100644 --- a/content/SCALE/SCALETutorials/Network/SettingUpIPMI.md +++ b/content/SCALE/SCALETutorials/Network/SettingUpIPMI.md @@ -7,32 +7,53 @@ tags: - ipmi --- -{{< hint type=note >}} -IPMI requires compatible hardware! Refer to your hardware documentation to determine if the TrueNAS web interface has IPMI options. -{{< /hint >}} +{{< include file="/static/includes/IPMICompatibility.md" >}} -Many [TrueNAS Storage Arrays](https://www.truenas.com/docs/hardware/) have a built-in out-of-band management port that provides side-band management should the system become unavailable through the web interface. +Many [TrueNAS systems](https://www.truenas.com/docs/hardware/) include a built-in out-of-band management port, enabling system access even when the web interface is unavailable. -Intelligent Platform Management Interface (IPMI) allows users to check the log, access the BIOS setup, and boot the system without physical access. IPMI also enables users to remotely access the system to assist with configuration or troubleshooting issues. +Intelligent Platform Management Interface (IPMI) allows users to check the log, access the BIOS setup, and boot the system without physical access. +IPMI also enables users to remotely access the system to assist with configuration or troubleshooting issues. -{{< hint type=note >}} -Some IPMI implementations require updates to work with newer versions of Java. See [here](https://forums.freenas.org/index.php?threads/psa-java-8-update-131-breaks-asrocks-ipmi-virtual-console.53911/) for more information. -{{< /hint >}} +The **IPMI** widget on the **Network** screen shows the available IPMI channels and gives access to IPMI configuration and event logs. -IPMI is configured in **Network > IPMI**. The IPMI configuration screen provides a shortcut to the most basic IPMI configuration. +{{< trueimage src="/images/SCALE/Network/NetworkIPMIWidget.png" alt="IPMI Widget" id="IPMI Widget" >}} -![NetworkIPMIWidget](/images/SCALE/Network/NetworkIPMIWidget.png "IPMI widget") +## Configuring IPMI -## IPMI Options +Click on the channel you wish to edit to open the **IPMI** configuration screen. -After saving the configuration, users can access the IPMI interface using a web browser and the IP address specified in **Network > IPMI**. The management interface prompts for login credentials. Refer to your IPMI device documentation to learn the default administrator account credentials. +{{< trueimage src="/images/SCALE/Network/IPMIConfigurationScreen.png" alt="IPMI Configuration Screen" id="IPMI Configuration Screen." >}} -After logging in to the management interface, users can change the default administrative user name and create additional IPMI users. IPMI utility appearance and available functions vary by hardware. +To configure a static IPv4 connection for IPMI, do not select **DHCP**. -We recommend setting a strong IPMI password. IPMI passwords must include at least one upper case letter, one lower case letter, one digit, and one special character (punctuation, e.g. ! # $ %, etc.). The IPMI password must also be 8-16 characters long. Document your password in a secure location. +Enter the IPv4 address for the IPMI web interface. +Enter the IPv4 address subnet mask in **IPv4 Netmask**, such as *255.255.240.0*. +Enter the IPv4 connection default gateway. + +If needed, enter the VLAN identifier of the IPMI interface in **VLAN ID**. +We recommend configuring IPMI on a separate VLAN that is isolated from the main TrueNAS network. +This allows for IPMI access even if the main network is down. + +Click **Save** to update IPMI configuration. + +After saving the configuration, access the IPMI interface using a web browser and the IP address specified in **Network > IPMI** or click to open the IPMI manager in a new browser tab. +The management interface prompts for login credentials. +IPMI utility appearance and available functions vary by hardware. +Refer to your IPMI device documentation to learn the default administrator account credentials. + +After logging in to the management interface, change the default administrative user name. +We recommend setting a strong IPMI password. +Refer to your IPMI device documentation for password requirements. +Document your password in a secure location. + +Alternately, enter a new password in **IPMI Password Reset** on the **IPMI** configuration screen. ## IPMI Alerts +Click **Show Events** on the **IPMI** widget to show the **IPMI Events** log. + +{{< trueimage src="/images/SCALE/Network/IPMIEvents.png" alt="IPMI Events" id="IPMI Events" >}} + Use the [Alert Settings Screen]({{< relref "AlertsSettingsServiceScreen.md" >}}) under the **Hardware** category to adjust IPMI alerts. Configure the minimum warning level and frequency to display IPMI alerts in the TrueNAS UI. diff --git a/content/SCALE/SCALEUIReference/Network/IPMIScreens.md b/content/SCALE/SCALEUIReference/Network/IPMIScreens.md index 00c92c7ffd..50a3496e99 100644 --- a/content/SCALE/SCALEUIReference/Network/IPMIScreens.md +++ b/content/SCALE/SCALEUIReference/Network/IPMIScreens.md @@ -9,7 +9,9 @@ tags: - ipmi --- -The **IPMI** widget on the **Network** screen shows the available IPMI channels. +The **IPMI** widget on the **Network** screen shows the available IPMI channels. + +{{< include file="/static/includes/IPMICompatibility.md" >}} {{< trueimage src="/images/SCALE/Network/Network.png" alt="Network with IPMI" id="Network screen with IPMI channels." >}} @@ -21,10 +23,6 @@ Click **Show Events** to show the **IPMI Events** log. {{< trueimage src="/images/SCALE/Network/IPMIEvents.png" alt="IPMI Events" id="IPMI Events" >}} -{{< hint type=note >}} -IPMI requires compatible hardware! Refer to your hardware documentation to determine if the TrueNAS web interface has IPMI options. -{{< /hint >}} - ## IPMI Configuration Screen Click on the channel you wish to edit to open the configuration screen. @@ -38,7 +36,7 @@ Click on the | **IPv4 Address** | Enter the IPMI web interface static IPv4 address. | | **IPv4 Netmask** | Enter the IPv4 address subnet mask. | | **IPv4 Default Gateway** | Enter the IPv4 connection default gateway. | -| **VLAN ID** | Enter the VLAN identifier if the IPMI out-of-band management interface is not on the same VLAN as management networking. | +| **VLAN ID** | Enter the VLAN identifier of the IPMI out-of-band management interface is not on the same VLAN as management networking. | | **Password** | Enter an 8-16 character password for connecting to the IPMI interface from a web browser. The password must include at least one upper case letter, one lower case letter, one digit, and one special character (punctuation, e.g. ! # $ %, etc.). | | **Save** | Save the configuration. | | **Manage** | Opens the IPMI manager in a new browser tab where users can communicate with the server without having direct access to the hardware. | diff --git a/static/includes/IPMICompatibility.md b/static/includes/IPMICompatibility.md new file mode 100644 index 0000000000..fee7dada33 --- /dev/null +++ b/static/includes/IPMICompatibility.md @@ -0,0 +1,6 @@ + + +{{< hint type=note title="Hardware Compatibility" >}} +IPMI requires a compatible motherboard with IPMI support. +Refer to your hardware documentation to determine compatibility. +{{< /hint >}} From af464a1bdcfec48a953ed038877b416b679c1d77 Mon Sep 17 00:00:00 2001 From: DjP-iX <133042991+DjP-iX@users.noreply.github.com> Date: Tue, 26 Nov 2024 11:03:55 -0500 Subject: [PATCH 09/16] Update AppsDatasets.md (#3283) * Update AppsDatasets.md clarify encryption of ix-apps dataset * Update static/includes/apps/AppsDatasets.md much better! Co-authored-by: DjP-iX <133042991+DjP-iX@users.noreply.github.com> --------- Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- static/includes/apps/AppsDatasets.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/includes/apps/AppsDatasets.md b/static/includes/apps/AppsDatasets.md index 7fca76ed22..1f42826199 100644 --- a/static/includes/apps/AppsDatasets.md +++ b/static/includes/apps/AppsDatasets.md @@ -8,6 +8,8 @@ Any modification of it can result in instability and loss of app functionality. Do not include the ix-apps dataset inside of an SMB or NFS share. +The ix-apps dataset does not inherit encryption if an encrypted pool is selected as the pool for applications. + Back up and restore functionality as well as migration of the ix-apps dataset from one apps pool to another are not currently supported by the TrueNAS interface. Support for these features is planned for a future TrueNAS release version. From 961c973ece84423d4e47e5075a7289a22f47ad70 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Tue, 26 Nov 2024 11:10:11 -0500 Subject: [PATCH 10/16] Update SMB mount on Apple expand with link to Apple tuning doc (#3287) Co-authored-by: MicJ <92740932+micjohnson777@users.noreply.github.com> --- content/SCALE/SCALETutorials/Shares/SMB/_index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/SCALE/SCALETutorials/Shares/SMB/_index.md b/content/SCALE/SCALETutorials/Shares/SMB/_index.md index 16583ec455..137509cd6e 100644 --- a/content/SCALE/SCALETutorials/Shares/SMB/_index.md +++ b/content/SCALE/SCALETutorials/Shares/SMB/_index.md @@ -307,6 +307,9 @@ Open **Finder > Go > Connect To Server** Enter the SMB address: `smb://192.168.1.111`. Input the username and password for the user assigned to that pool or guest if the share has guest access. + +For further tuning in macOS, Apple provides some enterprise-specific pointers in their [Adjust SMB browsing behavior in macOS](https://support.apple.com/en-us/102064) article. + {{< /expand >}} {{< expand "Mounting on a FreeBSD System" "v" >}} From 38a0104ae6b1581791fb29fdeee505e1842de3dd Mon Sep 17 00:00:00 2001 From: DjP-iX <133042991+DjP-iX@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:25:42 -0500 Subject: [PATCH 11/16] PD-1569 / 25.04 / Pd 1569 re investigate and refresh disk replace procedures scale (#3294) * Update ReplacingDisks.md * Create DevicesDiskDegraded.png * Create DevicesDiskDegradedHotSpare.png * Update ReplacingDiskDialog.png * Delete RestoreHotSpare.md * Update ReplacingDisks.md * Update ReplacingDisks.md * Update ReplacingDisks.md --------- Co-authored-by: tonyriv3 <75626853+tonyriv3@users.noreply.github.com> --- .../Storage/Disks/ReplacingDisks.md | 140 ++++++++++++------ .../SCALE/Storage/DevicesDiskDegraded.png | Bin 0 -> 49131 bytes .../Storage/DevicesDiskDegradedHotSpare.png | Bin 0 -> 42276 bytes .../SCALE/Storage/ReplacingDiskDialog.png | Bin 11975 -> 7549 bytes static/includes/RestoreHotSpare.md | 3 - 5 files changed, 97 insertions(+), 46 deletions(-) create mode 100644 static/images/SCALE/Storage/DevicesDiskDegraded.png create mode 100644 static/images/SCALE/Storage/DevicesDiskDegradedHotSpare.png delete mode 100644 static/includes/RestoreHotSpare.md diff --git a/content/SCALE/SCALETutorials/Storage/Disks/ReplacingDisks.md b/content/SCALE/SCALETutorials/Storage/Disks/ReplacingDisks.md index d686ec7e0b..3dec397d24 100644 --- a/content/SCALE/SCALETutorials/Storage/Disks/ReplacingDisks.md +++ b/content/SCALE/SCALETutorials/Storage/Disks/ReplacingDisks.md @@ -38,82 +38,136 @@ The **Storage Dashboard** pool widgets also show the status of each of your pool {{< trueimage src="/images/SCALE/Storage/StoragePoolWidgetsDegradedState.png" alt="Storage Pool Widgets in Degraded State" id="Storage Pool Widgets in Degraded State" >}} -From the main Dashboard, you can click the on either the **Pool** or **Storage** widget to go to the **Storage Dashboard** screen, or you can click **Storage** on the main navigation menu to open the **Storage Dashboard** and locate the pool in the degraded state. +From the main Dashboard, you can click the on either the **Pool** or **Storage** widget or you can click **Storage** on the main navigation menu to open the **Storage Dashboard** screen and locate the pool in the degraded state. {{< expand "My disk is faulted. Should I replace it?" "v" >}} If a disk shows a faulted state, TrueNAS has detected an issue with that disk and you should replace it. {{< /expand >}} -To replace a failed disk: +{{< expand "Can I use a disk that is failing but still active?" "v" >}} +There are situations where you can leave a disk that has not completely failed online to provide additional redundancy during the replacement procedure. +{{< hint type=important >}} +We do not recommend leaving failed disks online unless you know the exact condition of the failing disk. +{{< /hint >}} +Attempting to replace a heavily degraded disk without off-lining it significantly slows down the replacement process. +{{< /expand >}} -1. Locate the failed drive. +To replace a disk in a pool without a hot spare available: - a. Go to the **Storage Dashboard** and click **Manage Devices** on the **Topology** widget for the degraded pool to open the **Devices** screen for that pool. +1. [Take the disk offline](#taking-a-failed-disk-offline). +2. [Replace the disk](#replacing-a-failed-disk). +3. Refresh the screen. - b. Click anywhere on the VDEV to expand it and look for the drive with the Offline status. +To replace a disk in a pool with a hot spare: -2. Take the disk offline. +1. [Take the disk offline](#taking-a-failed-disk-offline). +2. [Detach the failed disk](#detaching-a-failed-disk) to promote the hot spare. +3. Refresh the screen. +4. [Recreate the hot spare VDEV](#recreating-the-hot-spare). - {{< trueimage src="/images/SCALE/Storage/DevicesDiskWidgets.png" alt="Devices Disk Widgets" id="Devices Disk Widgets" >}} +## Taking a Failed Disk Offline - Click **Offline** on the **ZFS Info** widget to take the disk offline. The button toggles to **Online**. +We recommend users off-line a disk before starting the physical disk replacement. +Off-lining a disk removes the device from the pool and can prevent swap issues. +To offline a disk: -3. Pull the disk from your system and replace it with a disk of at least the same or greater capacity as the failed disk. +Go to the **Storage Dashboard** and click **Manage Devices** on the **Topology** widget for the degraded pool to open the **Devices** screen for that pool. +Click next to the VDEV to expand it, then look for the disk with the **REMOVED** status. - {{< trueimage src="/images/SCALE/Storage/ReplaceDiskAndOnline.png" alt="Replace and Online a Disk" id="Replace and Online a Disk" >}} +{{< trueimage src="/images/SCALE/Storage/DevicesDiskDegraded.png" alt="Devices Disk Failed" id="Devices Disk Failed" >}} - a. Click **Replace** on the **Disk Info** widget on the **Devices** screen for the disk you off-lined. +Click on the failed disk, then click **Offline** in the **ZFS Info** widget to take the disk offline. +The disk status changes to **OFFLINE**. - b. Select the new drive from the **Member Disk** dropdown list on the **Replacing disk *diskname*** dialog. +{{< expand "The offline failed?" "v" >}} +If the off-line operation fails with a **Disk offline failed - no valid replicas** message, go to **Storage Dashboard** and click **Scrub** on the **ZFS Health** widget for the pool with the degraded disk. The **Scrub Pool** confirmation dialog opens. Select **Confirm** and then click **Start Scrub**. + +{{< trueimage src="/images/SCALE/Storage/StorageZFSHealthScrub.png" alt="Storage ZFS Health Scrub Pool" id="Storage ZFS Health Scrub Pool" >}} + +When the scrub operation finishes, return to the **Devices** screen, expand the VDEV, then click the disk, and try to off-line it again. +{{< /expand >}} + +## Replacing a Failed Disk + +If you are replacing the failed disk you took offline and removed, insert the replacement disk now. +The new disk must have the same or greater capacity as the failed disk. +If replacing a failed disk with an available disk in the system, proceed to the next step. + +Click **Replace** on the **Disk Info** widget on the **Devices** screen for the disk you off-lined. + +Select the new drive from the **Member Disk** dropdown list on the **Replacing disk** dialog. {{< trueimage src="/images/SCALE/Storage/ReplacingDiskDialog.png" alt="Replacing Disk Dialog" id="Replacing Disk Dialog" >}} -4. Add the new disk to the existing VDEV. Click **Replace Disk** to add the new disk to the VDEV and bring it online. +Click **Replace Disk** to add the new disk to the VDEV and bring it online. - Disk replacement fails when the selected disk has partitions or data present. - To destroy any data on the replacement disk and allow the replacement to continue, select the **Force** option. +Disk replacement fails when the selected disk has partitions or data present. +To destroy any data on the replacement disk and allow the replacement to continue, select the **Force** option. {{< trueimage src="/images/SCALE/Storage/ReplacingDiskStatusDialog.png" alt="Replacing Disk Status" id="Replacing Disk Status" >}} - When the disk wipe completes, TrueNAS starts replacing the failed disk. - TrueNAS resilvers the pool during the replacement process. - For pools with large amounts of data, this can take a long time. - When the resilver process completes, the pool status returns to **Online** status on the **Devices** screen. +When the disk wipe completes, TrueNAS starts replacing the failed disk. +TrueNAS resilvers the pool during the replacement process. +For pools with large amounts of data, this can take a long time. +When the resilver process completes, the pool status returns to **Online** on the **Devices** screen. -### Taking a Disk Offline +## Replacing a Failed Disk with a Hot Spare -We recommend users off-line a disk before starting the physical disk replacement. -Off-lining a disk removes the device from the pool and can prevent swap issues. +A **Hot Spare** vdev sets up drives as reserved to prevent larger pool and data loss scenarios. +TrueNAS automatically inserts an available hot spare into a **Data** vdev when an active drive fails. +TrueNAS resilvers the pool after the hot spare is activated. -{{< expand "Can I use a disk that is failing but still active?" "v" >}} -There are situations where you can leave a disk that has not completely failed online to provide additional redundancy during the replacement procedure. -{{< hint type=important >}} -We do not recommend leaving failed disks online unless you know the exact condition of the failing disk. -{{< /hint >}} -Attempting to replace a heavily degraded disk without off-lining it significantly slows down the replacement process. -{{< /expand >}} +To replace a disk in a pool with a hot spare: -{{< expand "The offline failed?" "v" >}} -If the off-line operation fails with a **Disk offline failed - no valid replicas** message, go to **Storage Dashboard** and click **Scrub** on the **ZFS Health** widget for the pool with the degraded disk. The **Scrub Pool** confirmation dialog opens. Select **Confirm** and then click **Start Scrub**. +1. [Take the disk offline](#taking-a-failed-disk-offline). +2. [Detach the failed disk](#detaching-a-failed-disk) to promote the hot spare. +3. Refresh the screen. +4. [Recreate the hot spare VDEV](#recreating-the-hot-spare). -{{< trueimage src="/images/SCALE/Storage/StorageZFSHealthScrub.png" alt="Storage ZFS Health Scrub Pool" id="Storage ZFS Health Scrub Pool" >}} +### Detaching a Failed Disk -When the scrub operation finishes, return to the **Devices** screen, click on the VDEV and then the disk, and try to off-line it again. +Go to the **Storage Dashboard** and click **Manage Devices** on the **Topology** widget for the degraded pool to open the **Devices** screen for that pool. +Click next to the VDEV to expand it, then look for the disk with the **REMOVED** status. + +{{< trueimage src="/images/SCALE/Storage/DevicesDiskDegradedHotSpare.png" alt="Devices Disk Failed - Hot Spare Active" id="Devices Disk Failed - Hot Spare Active" >}} + +Click **Detach** on the **ZFS Info** widget on the **Devices** screen for the disk you off-lined. + +Select **Confirm**, then click **Detach**. +TrueNAS detaches the disk from the pool and promotes the hot spare disk to a full member of the pool. + +### Recreating the Hot Spare + +After promoting the hot spare, recreate the **Spare** vdev and assign a disk to it. + +{{< expand "Do I really need to promote the hot spare and then recreate the spare vdev?" "v" >}} +If you have a hot spare inserted into the pool and then follow the instructions in [Replacing a Failed Disk](#replacing-a-failed-disk), TrueNAS automatically returns the hot spare disk to the existing **Spare** vdev and **ONLINE** status. + +However, we do not recommend this method, because it causes two resilver events: one when activating the hot spare and again when replacing the failed disk. +Resilvering degrades system performance until completed and causes unnecessary strain on the disk. + +To avoid unnecessary resilvers, [promote the hot spare](#detaching-a-failed-disk) then recreate the hot spare vdev. {{< /expand >}} -1. Click on **Manage Devices** to open the **Devices** screen, click anywhere on the VDEV to expand VDEV and show the drives in the VDEV. +If recreating the spare with a replacement in place of the failed disk, insert the replacement disk now. +The new disk must have the same or greater capacity as the failed disk. +If recreating the spare with an available disk in the system, proceed to the next step. + +Go to the **Storage Dashboard** and click **Manage Devices** on the **Topology** widget for the degraded pool to open the **Devices** screen for that pool. + +Click **Add VDEV** to open the **Add Vdevs to Pool** screen. -2. Click **Offline** on the **ZFS Info** widget. A confirmation dialog displays. Click **Confirm** and then **Offline**. - The system begins the process to take the disk offline. When complete, the disk displays the status of the failed disk as **Offline**. - The button toggles to **Online**. +Click the **Spare (Optional)** row to expand it. -{{< trueimage src="/images/SCALE/Storage/ReplaceDiskAndOnline.png" alt="Off-Lining A Disk" id="Off-Lining A Disk" >}} +{{< trueimage src="/images/SCALE/Storage/AddVdevToPoolSpareScreen.png" alt="Add Vdev Spare" id="Add Vdev Spare" >}} -3. You can physically remove the disk from the system when the disk status is **Offline**. - If the replacement disk is not already physically installed in the system, do it now. +Select a disk size equal to or greater than the failed disk or click **Manual Disk Selection** to choose the replacement disk. +Click **Save And Go To Review**. -Use **[Replace](#replacing-a-failed-disk)** to bring the new disk online in the same VDEV. +{{< trueimage src="/images/SCALE/Storage/AddVdevToPoolReviewScreen.png" alt="Review Screen" id="Review Screen" >}} -### Restoring the Hot Spare +Review changes then click **Update Pool**. +Select **Confirm**, then click **Continue**. -{{< include file="/static/includes/RestoreHotSpare.md" >}} +After completing the job, TrueNAS returns to the **Storage Dashboard** screen. +Review **Spare VDEVs** on the **Topology** widget to confirm the hot spare is added. diff --git a/static/images/SCALE/Storage/DevicesDiskDegraded.png b/static/images/SCALE/Storage/DevicesDiskDegraded.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad44db79fe0df11bd80d41f61e116899c138b0e GIT binary patch literal 49131 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 SbN4WE7+OvHOrFYxp#K4DZxyrv literal 0 HcmV?d00001 diff --git a/static/images/SCALE/Storage/DevicesDiskDegradedHotSpare.png b/static/images/SCALE/Storage/DevicesDiskDegradedHotSpare.png new file mode 100644 index 0000000000000000000000000000000000000000..58f483a80b98c801768f2b79d5766fe29acc0e8b GIT binary patch literal 42276 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 GivBkjYk2Jd literal 0 HcmV?d00001 diff --git a/static/images/SCALE/Storage/ReplacingDiskDialog.png b/static/images/SCALE/Storage/ReplacingDiskDialog.png index e29a77b85d9cf4abc7423165ee7324420b079288..1a12aa6a0b8a91479509355656ac27874c6b886f 100644 GIT binary patch literal 7549 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 Date: Tue, 26 Nov 2024 12:39:01 -0500 Subject: [PATCH 12/16] Update docs-nav.html (#3295) Co-authored-by: tonyriv3 <75626853+tonyriv3@users.noreply.github.com> --- layouts/partials/docs-nav.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/layouts/partials/docs-nav.html b/layouts/partials/docs-nav.html index 16b31003d5..c73ab88e82 100644 --- a/layouts/partials/docs-nav.html +++ b/layouts/partials/docs-nav.html @@ -138,8 +138,8 @@ } else if (path.includes('/13.0/')) { versionButton.textContent = '13.0'; } - else if (path.includes('/25.05/')) { - versionButton.textContent = '25.05'; + else if (path.includes('/25.04/')) { + versionButton.textContent = '25.04'; } else if (path.includes('/24.10/')) { versionButton.textContent = '24.10'; } else if (path.includes('/24.04/')) { @@ -150,7 +150,7 @@ versionButton.textContent = 'Archive'; } else { // Default version if no specific path is matched - versionButton.textContent = '25.05'; + versionButton.textContent = '25.04'; } versionUpdated = true; } else if (path.includes('/truecommand/')) { @@ -464,8 +464,8 @@ versionButton.innerHTML = '13.0 '; } else if (currentPath.includes('/core/13.3/')) { versionButton.innerHTML = '13.3 '; - } else if (currentPath.includes('/scale/25.05/')) { - versionButton.innerHTML = '25.05 '; + } else if (currentPath.includes('/scale/25.04/')) { + versionButton.innerHTML = '25.04 '; } else if (currentPath.includes('/scale/24.10/')) { versionButton.innerHTML = '24.10 '; } else if (currentPath.includes('/scale/24.04/')) { @@ -476,7 +476,7 @@ versionButton.innerHTML = '22.12 '; } else { // Default to latest version if no specific path is matched - versionButton.innerHTML = '25.05 '; + versionButton.innerHTML = '25.04 '; } versionDropdown.style.display = 'none'; From 626473477447e7802bbe88e8709f961b980060af Mon Sep 17 00:00:00 2001 From: linzibelle Date: Tue, 26 Nov 2024 15:47:08 -0500 Subject: [PATCH 13/16] fixed/removed broken links (#3302) --- content/Solutions/Integrations/Veeam.md | 2 +- content/TruenasApps/CommunityApps/dockge.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/Solutions/Integrations/Veeam.md b/content/Solutions/Integrations/Veeam.md index 6ec375a737..6ec0b5438d 100644 --- a/content/Solutions/Integrations/Veeam.md +++ b/content/Solutions/Integrations/Veeam.md @@ -156,7 +156,7 @@ Here are additional key features that are offered out-of-the-box at no extra cos ## Setting Up TrueNAS as a Veeam Repository Veeam Backup & Replication runs on a Windows operating system, typically Windows Server 2012 or newer, and can connect to a variety of storage systems. -iXsystems recommends using [iSCSI on TrueNAS 13.0]([{{< relref "CORE/CORETutorials/Sharing/iSCSI/_index.md" >}}](https://www.truenas.com/docs/core/13.0/coretutorials/sharing/iscsi/)) with a [Veeam scale-out repository](https://bp.veeam.com/vbr/VBP/3_Build_structures/B_Veeam_Components/B_backup_repositories/scaleout.html) architecture. +iXsystems recommends using iSCSI on TrueNAS 13.0 with a [Veeam scale-out repository](https://bp.veeam.com/vbr/VBP/3_Build_structures/B_Veeam_Components/B_backup_repositories/scaleout.html) architecture. Users can also use [SMB]({{< relref "CORE/CORETutorials/Sharing/SMB/_index.md" >}}) to mount the volume to the backup server directly. With support for SMB/CIFS, NFS, AFP, iSCSI, and FC, TrueNAS offers many ways to connect to Veeam backup servers. diff --git a/content/TruenasApps/CommunityApps/dockge.md b/content/TruenasApps/CommunityApps/dockge.md index 46c7501eba..fbc27181c8 100644 --- a/content/TruenasApps/CommunityApps/dockge.md +++ b/content/TruenasApps/CommunityApps/dockge.md @@ -19,6 +19,6 @@ keywords: -[Dockge](dockge.kuma.pet) +[Dockge](https://dockge.kuma.pet) {{< include file="/static/includes/ProposeArticleChange.md" >}} From 103e6e45677752332796dcb5dc039738d7ce4a0e Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Wed, 27 Nov 2024 10:00:40 -0500 Subject: [PATCH 14/16] Add missing titles to api html files (#3314) --- static/api/core_rest_api.html | 1 + static/api/scale_rest_api.html | 1 + static/api/tc_rest_api.html | 1 + 3 files changed, 3 insertions(+) diff --git a/static/api/core_rest_api.html b/static/api/core_rest_api.html index f568c3c347..fe3271b119 100644 --- a/static/api/core_rest_api.html +++ b/static/api/core_rest_api.html @@ -1,6 +1,7 @@ + TrueNAS REST API Documentation