3.7 KiB
Notes
We have 3 drives:
sda- SIZE:931.5G, MODEL:ST1000DM003-1ER1, SERIAL:Z4Y2HMTE (1 part: /mnt/storage1)sdb- SIZE:931.5G, MODEL:ST1000DM010-2EP1, SERIAL:Z9AD9PSB (1 part: /mnt/storage2)nvme0n1- SIZE:931.5G, MODEL:CT1000P3SSD8, SERIAL:2336431AEC05 (2 part: /boot/efi, /)
Health checks
Install tools
sudo apt update && sudo apt install -y smartmontools nvme-cli
NVMe SSD Health
Run:
sudo nvme smart-log /dev/nvme0n1
critical_warning: 0 percentage_used: 1% media_errors: 0
This is good.
HDDs Health
Run:
sudo smartctl -H /dev/sda
sudo smartctl -i /dev/sda
sudo smartctl -H /dev/sdb
sudo smartctl -i /dev/sdb
All passed.
Setup
Considering the different drives I have, just as I thought, the NVMe SSD will be used for application and databases which require higher I/O throughputs and the HDDs will be used for media storage. In the following setup, the SSD will remain untouched and I'll focus on the HDDs. Because I have fairly limited storage for my media, I will not be using any kind of RAID (like SnapRAID). To make the setup just a bit simpler and not manage 2 file systems in both HDDs I'll use MergerFS to pool both drives into a single mount point.
Partitioning
Now because I just installed the OS and haven't touched the HDDs yet they don't need to be repartitioned and formatted but I'll still include the process to do so.
First, make sure to identify the drives properly with:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINTS
We initiliase a new GPT (GUID partition table) on our /dev/sda drive and make it span the entire disk with:
sudo parted /dev/sda --script mklabel gpt mkpart primary ext4 0% 100%
and create the ext4 partition called "storage1" that is /dev/sda1:
sudo mkfs.ext4 -L "storage1" /dev/sda1
Similarly, for our 2nd drive /dev/sdb:
sudo parted /dev/sdb --script mklabel gpt mkpart primary ext4 0% 100%
sudo mkfs.ext4 -L "storage2" /dev/sdb1
Next we create the mount folders for the drives and the merged pool:
sudo mkdir -p /mnt/storage1 /mnt/storage2 /mnt/storage
and get the UUIDs of the partitions for later:
sudo blkid
in our case:
/dev/sda1: UUID="711aed59-492f-4978-b8e5-899eb1e7479c"
/dev/sdb1: UUID="1addcd31-341d-447a-8026-8d1c2e64d086"
MergerFS
Now to pool the drives together, we need MergerFS and FUSE (to create the pooled drive filesystem):
sudo apt update && sudo apt install -y mergerfs fuse3
and we allow non-root users (and Docker) to read our FUSE mounts:
sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf
Last, we want the merged pool to be persistent so we edit /etc/fstab:
sudo nano /etc/fstab
and add the drives and MergerFS pool by adding the following to /etc/fstab:
# --- Physical HDDs ---
UUID=711aed59-492f-4978-b8e5-899eb1e7479c /mnt/storage1 ext4 defaults,noatime,nofail 0 2
UUID=1addcd31-341d-447a-8026-8d1c2e64d086 /mnt/storage2 ext4 defaults,noatime,nofail 0 2
# --- MergerFS Unified Storage Pool ---
/mnt/storage1:/mnt/storage2 /mnt/storage fuse.mergerfs defaults,allow_other,use_ino,category.create=mfs,minfreespace=10G,fsname=mergerfs 0 0
After saving the file, mount all filesystems:
sudo mount -a
and verify that the pool is of the pool capacity:
df -h /mnt/storage
Now one of the major choices here was the lack of RAID or backup system (for now). The reason is that it would substantially reduce our available storage space. That being said if one of the HDDs were to fail then the other would still be safe and operational. However, if files are deleted from any drives there is no coming back.