Menu="Main:5" Title="Array Operation" Tag="snowflake-o" --- "._('Encryption status').":$statuspermit reformat"; echo ""._('Encryption input').":"; echo ""; echo ""._('Passphrase').":"._('show passphrase').""; echo ""._('Retype passphrase').":"; echo ""._('Keyfile').":"; } function maintenance_mode() { echo ""; echo ""; echo "_(Maintenance mode)_"; echo ""._('Maintenance mode')." - "._('if checked, Start array but do not mount disks').""; echo ""; } function status_indicator() { global $var; switch ($var['mdColor']) { case 'green-on': $orb = 'circle'; $color = 'green'; $help =_('Started, array protected'); break; case 'green-blink': $orb = 'circle'; $color = 'grey'; $help = _('Stopped'); break; case 'yellow-on': $orb = 'warning'; $color = 'yellow'; $help = _('Started, array unprotected'); break; case 'yellow-blink': $orb = 'warning'; $color = 'grey'; $help = _('Stopped'); break; } echo "$help"; } function missing_cache() { global $disks; $missing = false; foreach (cache_filter($disks) as $disk) $missing |= (strpos($disk['status'],'_MISSING')!==false); return $missing; } ?>
0):?>
**_(Started)_** disabled> **_(Stop)_** _(will take the array off-line)_.
**:**
".my_disk($disk['name'])." • ".my_id($disk['id'])." (".$disk['device'].")
"; if (in_array($disk['name'],$pools)) $cache[] = $disk['name']; } ?>
**_(Format)_** _(will create a file system in all **Unmountable** disks)_.
_(Yes, I want to do this)_
**_(Sync)_** _(will start **Parity-Sync** and/or **Data-Rebuild**)_.
**_(Clear)_** _(will start **Clearing** new data disk(s))_.
**_(Check)_** _(will start **Read-Check** of all array disks)_.
_(Parity is valid)_.**_(Check)_** _(will start **Parity-Check**)_.   onclick="$.cookie('one','tab1',{path:'/'})">(_(Schedule)_)
_(Write corrections to parity)_

_(Error code)_:

_(Duration)_:

_(Error code)_:

_(Duration)_:

_(Error code)_:

_(Duration)_:
_(Read-Check in progress)_. value="_(Pause)_" onclick="pauseParity(this.form)" value="_(Resume)_" onclick="resumeParity(this.form)"> **_(Pause)_** _(will pause the Read-Check)_.**_(Resume)_** _(will resume the paused Read-Check)_.
**_(Cancel)_** _(will stop the Read-Check)_.
_(Parity-Check in progress)_. value="_(Pause)_" onclick="pauseParity(this.form)" value="_(Resume)_" onclick="resumeParity(this.form)"> **_(Pause)_** _(will pause the Parity-Check)_.**_(Resume)_** _(will resume the paused Parity-Check)_.
**_(Cancel)_** _(will stop the Parity-Check)_.
_(Parity-Sync/Data-Rebuild in progress)_. value="_(Pause)_" onclick="pauseParity(this.form)" value="_(Resume)_" onclick="resumeParity(this.form)"> **_(Pause)_** _(will pause the Parity-Sync/Data-Rebuild)_.**_(Resume)_** _(will resume the paused Parity-Sync/Data-Rebuild)_.
**_(Cancel)_** _(will stop Parity-Sync/Data-Rebuild)_.
_(WARNING: canceling may leave the array unprotected)_!
_(Clearing in progress)_. value="_(Pause)_" onclick="pauseParity(this.form)" value="_(Resume)_" onclick="resumeParity(this.form)"> **_(Pause)_** _(will pause the Clearing)_.**_(Resume)_** _(will resume the paused Clearing)_.
**_(Cancel)_** _(will stop Clearing)_.
_(Total size)_:
_(Elapsed time)_:
_(Current position)_:
_(Estimated speed)_:
_(Estimated finish)_:
_(Sync errors)_ _(detected)_:_(corrected)_:
**_(Starting)_...**
**_(Started, formatting)_...**
**_(Copying)_, % _(complete)_...**
**_(Clearing)_, % _(complete)_...**
**_(Stopping)_...**
**_(Stopped)_.** _(Invalid, missing or expired)_ _(registration key)_.
**_(Stopped)_.** _(Too many attached devices. Please consider upgrading your)_ _(registration key)_.
**_(Stopped)_.** _(Cannot contact key-server. Please check your)_ _(network settings)_.
**_(Stopped)_.** _(This Unraid OS release has been withdrawn and may no longer be used. Please)_ _(update)_ _(your server)_.
**_(Stopped)_**. _(Configuration valid)_. **_(Start)_** _(will bring the array on-line and start **Parity-Sync** and/or **Data-Rebuild**)_.
**_(Stopped)_**. _(New data disk(s) detected)_. **_(Start)_** _(will bring the array on-line and start **Clearing** new data disk(s))_.
**_(Stopped)_**. _(Unclean shutdown detected)_. **_(Start)_** _(will bring the array on-line)_.
**_(Stopped)_**. _(Unclean shutdown detected)_. **_(Start)_** _(will bring the array on-line and start **Parity-Check**)_.
_(Write corrections to parity)_
**_(Stopped)_**. _(Missing Cache disk)_. **_(Start)_** _(will remove the missing cache disk and then bring the array on-line)_.
_(Yes, I want to do this)_
**_(Stopped)_**. _(Configuration valid)_. **_(Start)_** _(will bring the array on-line)_.
**_(Stopped)_**. _(Configuration valid)_. **_(Start)_** _(will record all disk information and bring the array on-line)_.
_(The array will be immediately available, but **unprotected** since *parity* has not been assigned)_.
**_(Stopped)_**. _(Configuration valid)_. **_(Start)_** _(will record all disk information, bring the array on-line, and start Parity-Sync)_.
_(The array will be immediately available, but **unprotected** until Parity-Sync completes)_.
_(Parity is already valid)_.
**_(Stopped)_**. _(Missing disk)_. **_(Start)_** _(will disable the missing disk and then bring the array on-line. Install a replacement disk as soon as possible)_.
_(Yes, I want to do this)_
**_(Stopped)_**. _(Replacement disk installed)_. **_(Start)_** _(will start **Parity-Sync** and/or **Data-Rebuild**)_.
**_(Stopped)_**. _(Upgrading disk/swapping parity)_. **_(Start)_** _(will expand the file system of the data disk (if possible); then bring the array on-line and start Data-Rebuild)_.
**_(Stopped)_**. _(Upgrading disk/swapping parity)_. **_(Copy)_** _(will copy the parity information to the new *parity* disk)_.
_(Once copy completes, the array may be Started, to initiate Data-Rebuild of the disabled disk)_.
_(Yes, I want to do this)_
**_(Stopped)_**. _(Invalid expansion)_. _(You may not add new disk(s) and also remove existing disk(s))_.
**_(Stopped)_**. _(Replacement disk is too small)_. _(The replacement disk must be as big or bigger than the original)_.
**_(Stopped)_**. _(Disk in parity slot is not biggest)_. _(If this is a new array, move the largest disk into the *parity* slot)_.
_(If you are adding a new disk or replacing a disabled disk, try Parity-Swap)_.
**_(Stopped)_**. _(Invalid configuration)_. _(Too many wrong and/or missing disks)_!
**_(Stopped)_**. _(No data disks)_. _(No array data disks have been assigned)_!
**_(Delete)_** _(will delete the encryption keyfile)_.
_(Yes, I want to do this)_
>> **_(Spin Up)_** _(will immediately spin up all disks)_.
**_(Spin Down)_** _(will immediately spin down all disks)_.
**_(Clear Stats)_** _(will immediately clear all disk statistics)_.
_(Disabled)_ - _(Mover is running)_. **_(Move)_** _(will immediately invoke the Mover)_.   onclick="$.cookie('one','tab2',{path:'/'})">(_(Schedule)_)
**_(Delete)_** _(will delete the encryption keyfile)_.
**_(Reboot)_** _(will activate a *clean* system reset)_.
**_(Shutdown)_** _(will activate a *clean* system power down)_.

'.parse_file($display['sleep']))?> :help6 > **Colored Status Indicator** the significance of the color indicator of the *Array* is as follows: > > Array is Started and Parity is valid. > > Array is Stopped, Parity is valid. > > Array is Started, but Parity is invalid. > > Array is Stopped, Parity is invalid. > :end :help7 > #### Assigning Devices > > An Unraid disk array consists of a single parity disk and a number of data disks. The data > disks are exclusively used to store user data, and the parity disk provides the redundancy necessary > to recover from any singe disk failure. > > Note that we are careful to use the term *disk* when referring to an array storage device. We > use the term *hard drive* (or sometimes just *drive*) when referring to an actual hard disk drive (HDD) > device. This is because in a RAID system it is possible to read/write an array disk whose corresponding > hard drive is disabled or even missing! In addition, it is useful to be able to ask, "which device is > assigned to be the parity disk?"; or, "which device corresponds to disk2?". > > We therefore need a way to assign hard drives to array disks. This is accomplished here on the > Main page when the array is stopped. There is a drop-down box for each array disk which lists all the > unassigned devices. To assign a device simply select it from the list. Each time a device > assignment is made, the system updates a configuration file to record the assignment. > > #### Requirements > > Unlike traditional RAID systems which stripe data across all the array devices, an Unraid server > stores files on individual hard drives. Consequently, all file write operations will involve both the > data disk the file is being written to, and the parity disk. For these reasons, > > * the parity disk size must be as large or larger than any of the data disks, > > and > > * given a choice, the parity disk should be the fastest disk in your collection. > > #### Guidelines > > Here are the steps you should follow when designing your Unraid disk array: > > 1. Decide which hard drive you will use for parity, and which hard drives you will use for > data disk1, disk2, etc., and label them in some fashion. Also, find the serial number of each hard > drive and jot it down somewhere; you will need this information later. > > 2. Install your hard drive devices, boot Unraid OS and bring up the webGui. If this is a fresh system > build, then the Main page will show no disks installed. This doesn't mean the system can't detect your > hard drives; it just means that none have been assigned yet. > > 3. Remember the serial numbers you recored back in step 1? For parity and each data disk, select the > proper hard drive based on its serial number from the drop down list. > > #### Hot Plug > > You may also *hot plug* hard drives into your server if your hardware supports it. For example, > if you are using hard drive cages, you may simply plug them into your server while powered on and > with array Stopped. Refresh the Main page to have new unassigned devices appear in the assignment > dropdown lists. > > #### Next Steps > > Once you have assigned all of your hard drives, refer to the Array Status section below > and Start the array. :end
:help8 > #### Encryption input > > With array Stopped, the user can specify a new encryption key. Note that once a device > is formatted with a particular key it may only be opened using that same key. Changing the encryption key requires > encrypted devices to be reformatted **resulting in permanent loss of all existing data on those devices.** > > #### Passphrase > > Enter a passphrase of up to 512 characters. It is highly advisable to only use the 95 printable characters from the > first 128 characters of the [ASCII table](https://en.wikipedia.org/wiki/ASCII), as they will always have the same binary > representation. Other characters may have different encoding depending on system configuration and your passphrase will > not work with a different encoding. If you want a longer passphrase or to include binary data, upload a keyfile instead. > > Please refer to the [cryptsetup FAQ](https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#5-security-aspects) > for what constitutes a *secure* passphrase. > > **Memorize** this passphrase. **IF LOST, ENCRYPTED CONTENT CANNOT BE RECOVERED!** > > #### Keyfile > > Select a local keyfile with a stored encryption key or a binary file. The maximum size of the keyfile is 8M (8388608 byte). > > **Backup** your local keyfile. **IF LOST, ENCRYPTED CONTENT CANNOT BE RECOVERED!** :end