Support a configurable hash size

This commit is contained in:
Andrea Mazzoleni 2016-04-07 22:37:11 +02:00
parent 5b06549ee3
commit ab7d4e896c
6 changed files with 200 additions and 17 deletions

View file

@ -1123,7 +1123,11 @@ block size in bytes.
For example with 8 disks of 4 TB and a block size of 256 KiB
(1 KiB = 1024 bytes) you have:
RAM = (8 * 4 * 10^12) * 17 / (256 * 2^10) = 1.9 GiB
RAM = (8 * 4 * 10^12) * 17 / (256 * 2^10) = 1.93 GiB
Switching to a block size of 512 KiB, you have:
RAM = (8 * 4 * 10^12) * 17 / (512 * 2^10) = 0.97 GiB
Another reason to use a different blocksize is if you have a lot of
small files. In the order of many millions.
@ -1161,8 +1165,32 @@ This results in about 1.5% of extra space. Meaning about 60 GB for
a 4 TB disk, that allows about 460000 files in each data disk without
any wasted space.
7.9 autosave SIZE_IN_GIGABYTES
------------------------------
7.9 hashsize SIZE_IN_BYTES
--------------------------
Defines the basic hash size in bytes of the saved blocks.
The default hashsize is 16 bytes -> 128 bits, and it should work
for most cases.
A reason to use a different hashsize is if your system has less
than 1 GiB of memory. As a rule of thumb, with 1 GiB or more memory
use the default 16, with 512 MiB use 8, and with 256 GiB use 4.
In more details SnapRAID requires about TS*(1+HS)/BS bytes of RAM memory.
Where TS is the total size in bytes of your disk array, BS is the
block size in bytes, and HS is the hash size in bytes.
For example with 8 disks of 4 TB and a block size of 256 KiB
(1 KiB = 1024 bytes), and an hash size of 16, you have:
RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB
Switching to a hash size of 8, you have:
RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB
7.10 autosave SIZE_IN_GIGABYTES
-------------------------------
Automatically save the state when syncing or scrubbing after the specified amount
of GB processed.
@ -1170,7 +1198,7 @@ This option is useful to avoid to restart from scratch long "sync"
commands interrupted by a machine crash, or any other event that
may interrupt SnapRAID.
7.10 pool DIR
7.11 pool DIR
-------------
Defines the pooling directory where the virtual view of the disk
@ -1178,7 +1206,7 @@ array is created using the "pool" command.
The directory must already exist.
7.11 share UNC_DIR
7.12 share UNC_DIR
------------------
Defines the Windows UNC path required to access the disks remotely.
@ -1194,7 +1222,7 @@ file dir and name.
This option is only required for Windows.
7.12 smartctl DISK/PARITY OPTIONS...
7.13 smartctl DISK/PARITY OPTIONS...
------------------------------------
Defines a custom smartctl command to obtain the SMART attributes
@ -1213,7 +1241,7 @@ Refers at the smartmontools documentation about the possible options:
https://www.smartmontools.org/wiki/Supported_RAID-Controllers
https://www.smartmontools.org/wiki/Supported_USB-Devices
7.13 Examples
7.14 Examples
-------------
An example of a typical configuration for Unix is: