Table of Contents

SnapRAID - Configure SnapRAID

Planning the SnapRAID Setup

Before configuring SnapRAID, consider:


Creating the SnapRAID Configuration File

The main configuration file for SnapRAID is /etc/snapraid.conf.

A basic configuration for three data disks and one parity disk looks like this:

/etc/snapraid.conf
# Parity file - stored on the largest disk or a dedicated parity drive.
parity /mnt/disk3/snapraid.parity  
 
# Content files - store metadata; should be on multiple drives for redundancy.
content /mnt/disk1/snapraid.content  
content /mnt/disk2/snapraid.content  
 
# Data drives - these contain actual files.
data d1 /mnt/disk1  
data d2 /mnt/disk2  
data d3 /mnt/disk3

NOTE: Notice that both disk1 and disk2 are used for content and data.

Key Points to Consider:

  • Parity Drive: Should be the largest or have enough space for parity data.
  • Content Files: Should be placed on multiple drives for redundancy.
  • Data Drives: List each drive that stores actual files.

Additional SnapRAID Options

For better protection and logging, add:

/etc/snapraid.conf
# Define the block size used for parity calculations (default is 256K).
block_size 256  
 
# Auto-save changes to the content file before syncing.
autosave 300  
 
# Enable scrub (data integrity check) with a limit on recovered errors.
scrub_percent 10
scrub_recover 5

Comprehensive Config File

/etc/snapraid.conf
# Example configuration for snapraid.
 
 
# Defines the file to use as parity storage.
# It must NOT be in a data disk.
# Format: "parity FILE [,FILE] ...".
parity /mnt/diskp/snapraid.parity
 
 
# Defines the files to use as additional parity storage.
# If specified, they enable multiple failures protection
# from two to six level of parity.
# To enable, uncomment one parity file for each level of extra
# protection required. Start from 2-parity, and follow in order.
# It must NOT be in a data disk.
# Format: "X-parity FILE [,FILE] ..."
#2-parity /mnt/diskq/snapraid.2-parity
#3-parity /mnt/diskr/snapraid.3-parity
#4-parity /mnt/disks/snapraid.4-parity
#5-parity /mnt/diskt/snapraid.5-parity
#6-parity /mnt/disku/snapraid.6-parity
 
 
# Defines the files to use as content list.
# You can use multiple specification to store more copies.
# You must have least one copy for each parity file plus one. Some more do not hurt.
# They can be in the disks used for data, parity or boot,
# but each file must be in a different disk.
# Format: "content FILE"
content /var/snapraid.content
content /mnt/disk1/snapraid.content
content /mnt/disk2/snapraid.content
 
 
# Defines the data disks to use.
# The name and mount point association is relevant for parity, do not change it.
# WARNING: Adding here your /home, /var or /tmp disks is NOT a good idea!
# SnapRAID is better suited for files that rarely changes!
# Format: "data DISK_NAME DISK_MOUNT_POINT".
data d1 /mnt/disk1/
data d2 /mnt/disk2/
data d3 /mnt/disk3/
 
 
# Excludes hidden files and directories (uncomment to enable).
#nohidden
 
 
# Defines files and directories to exclude.
# Remember that all the paths are relative at the mount points.
# Format: "exclude FILE"
# Format: "exclude DIR/"
# Format: "exclude /PATH/FILE"
# Format: "exclude /PATH/DIR/"
exclude *.unrecoverable
exclude /tmp/
exclude /lost+found/
 
 
# Defines the block size in kibi bytes (1024 bytes) (uncomment to enable).
# WARNING: Changing this value is for experts only!
# Default value is 256 -> 256 kibi bytes -> 262144 bytes.
# Format: "blocksize SIZE_IN_KiB".
#blocksize 256
 
 
# Defines the hash size in bytes (uncomment to enable).
# WARNING: Changing this value is for experts only!
# Default value is 16 -> 128 bits.
# Format: "hashsize SIZE_IN_BYTES".
#hashsize 16
 
 
# Automatically save the state when syncing after the specified amount
# of GB processed (uncomment to enable).
# This option is useful to avoid to restart from scratch long 'sync'
# commands interrupted by a machine crash.
# It also improves the recovering if a disk break during a 'sync'.
# Default value is 0, meaning disabled.
# Format: "autosave SIZE_IN_GB"
#autosave 500
 
 
# Defines the pooling directory where the virtual view of the disk
# array is created using the "pool" command (uncomment to enable).
# The files are not really copied here, but just linked using
# symbolic links.
# This directory must be outside the array.
# Format: "pool DIR"
#pool /pool
 
 
# Defines a custom smartctl command to obtain the SMART attributes
# for each disk. This may be required for RAID controllers and for
# some USB disk that cannot be autodetected.
# In the specified options, the "%s" string is replaced by the device name.
# Refers at the smartmontools documentation about the possible options:
# RAID -> https://www.smartmontools.org/wiki/Supported_RAID-Controllers
# USB -> https://www.smartmontools.org/wiki/Supported_USB-Devices
#smartctl d1 -d sat %s
#smartctl d2 -d usbjmicron %s
#smartctl parity -d areca,1/1 /dev/sg0
#smartctl 2-parity -d areca,2/1 /dev/sg0