Raspberry Raid Disk PDF
Raspberry Raid Disk PDF
com/build-raspberry-pi3-raid-nas-server/
You are here: Home / Raspberry Pi / Build a Raspberry Pi RAID NAS Server – Complete DIY Guide
Contents [hide]
1 Introduction
2 Hardware Requirements
1 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
2.1 Raspberry Pi
2.2 USB Flash Drives
2.3 RAID Levels
3 Installing Raspbian
4 Raspbian Initial Setup
4.1 raspi-config Options
4.2 Update & Install MDADM
5 Setup Drives and RAID Volume
5.1 Setup RAID-0 Volume
5.2 Setup a RAID-1 Volume
5.3 Setup RAID-4/5/6 Volume
5.4 Setup RAID-10 Volume
6 Confirm your RAID Array
7 Save your RAID array
8 Create File System
9 Install and Setup SAMBA
9.1 Connect to your NAS
10 Summary
Introduction
Today I’ll show you how to build a Raspberry Pi 3 RAID NAS server using USB flash drives and the
Linux native RAID application mdadm, along with SAMBA so the drive will show up as a normal
network folder on Windows PC’s. It’s an intermediate tutorial and shows you how to create a Linux
RAID array which is a good skill to have.
Hardware Requirements
Raspberry Pi
You can use Raspberry Pi’s from version 2 onward, so 2B, 2B+ and RPi 3’s are fine, but I recommend
the latest Raspberry Pi 4 with 4GB RAM. You’ll also need a good quality micro-USB power pack
suitable for the Raspberry Pi you’re using, if in doubt, just buy a combo pack that comes with case,
power pack and other goodies.
2 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
In terms of drive size, your budget will be the determining factor, so just get what you can afford.
Remember that with RAID-0 you get the total amount of all drives put together, so 2x 64GB drives
will give you 128GB. RAID-1 will halve your total capacity, so 2x 64GB drives will give you 64GB,
and RAID-5/6 will give you roughly 2/3 of total capacity, so 3x 64GB drives will give you 128GB of
storage. RAID-10 will halve your total capacity, so 4x 64GB drives will give you 128GB storage
(more about RAID levels further below).
RAID Levels
The number of drives you have with determine what RAID level you’ll be able to create. I suggest 3
(or more) drives which is the minimum required for a RAID-4/5 array that offers a good balance
between redundancy and speed. If you only have 2 drives, I suggest using RAID-0, and even though
there is no redundancy, RAID-0 rarely fails on solid state media. I have had my workstation running
on SATA-3 SSD RAID-0 for years and it never skips a beat, but If you’re storing important files, go
with RAID-1.
If you’re confident in your Linux skills you can create a RAID-10 array with 4 drives, which is 2 sets
of RAID-1, then each set is used to form a RAID-0 array giving you the benefit of speed and
redundancy (I will show you how to create all types of Linux RAID arrays).
3 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
DRIVES
RAID-6 Block-level striping with two parity blocks distributed across all
member disks (Excellent speed & redundancy)
4
RAID 10 (nested RAID 1+0) (Excellent speed and redundancy)
Once you’ve chosen a desired RAID level, let’s move onto Install/Update Raspbian and mdadm.
Installing Raspbian
Now we need to prepare our MicroSD card, install Raspbian, update the system and install mdadm
Linux RAID. You will need a MicroSD card of 8GB or more and the application Etcher to transfer the
.img file to it (Etcher supports Windows, Linux and MAC).
4 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
1. Choose your 2. Navigate to your 3. Click on the 4. Etcher will flash 5. Flash complete
microSD drive, then Raspbian .img file Flash! button in the .img file to your
click choose image and select it Etcher microSD card
raspi-config Options
Now we’ll do some basic setup options for our RasPi NAS server, so enter the following and use
raspberry for the password prompt:
bash
sudo raspi-config
Note* Use the Arrow keys to move up and down, use Enter key to select/confirm, use
Tab key to select Cancel or Finish
Select “Change User Password” and change user:pi’s password
Select Hostname, then type RASPINAS for host-name (or anything you want) hit Ok
5 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
7. Select 8. Select 9. Click on OK 10. Enter 11. Select 12. Select SSH
Network Options Hostname RASPINAS or Interfacing
whatever you Options
like, then click
OK
13. Select Yes to 14. Click on OK 15. Select Finish 16. Click on Yes
enable the SSH using the Tab to reboot
service key
6 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
bash
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install mdadm -y
1. Windows
2. Insert one of your USB drives (close any automatic windows)
3. (Win7,XP,Vista) Go to Start > Computer (Win8,10) search “File Explorer” and open top result
4. Right-click on the USB drive icon, then select Format
5. In the Format window, change the following options: File system: NTFS, Volume label:
USB01
6. Now click the Start button, then Yes to alert box
7. Repeat this process for each USB drive you want to use, increment Volume label: to USB02,
USB03 etc
1. MAC OS X
2. Insert one of your USB drives (close any automatic windows)
3. Go to Finder > Applications > Utilities > Disk Utility
4. Locate the USB drive from the left hand-side and select it
5. Click on the Erase tab and choose the following options: Format: ExFAT, Name: USB01
6. Now click on Erase button, then confirm the Erase on the alert box
7. Repeat this process for each USB drive you want to use, increment Name: to USB02, USB03
etc
1. Linux (Ubuntu/Debian)
2. Insert one of your USB drives (close any automatic windows)
3. Open “All applications” icon bottom-left of your screen, then choose Utilities > Disks
4. Select the USB drive from left side panel, then click the Gears icon, select Format partition
5. Choose the following options: Erase: Don’t overwrite existing data (quick), Type: NTFS,
Name: USB01
6. Now click Format… button, then confirm by clicking Format button on alert window
7. Repeat this process for each USB drive you want to use, increment Name: to USB02, USB03
7 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
etc
Now it’s time to insert your USB drives into your Raspberry Pi, it doesn’t matter which drive goes
where. We need to find out the mount points for each drive using the following command:
bash
sudo blkid
bash
pi@RASPINAS:~ $ sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="CDD4-B453" TYPE="vfat" PARTUUID="498dcd43-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="72bfc10d-73ec-4d9e-a54a-1cc507ee7ed2" TYPE="ext4"
/dev/sda1: LABEL="8GB01" UUID="8A44B0F244B0E1DD" TYPE="ntfs" PARTUUID="01411281-01"
/dev/sdb1: LABEL="8GB02" UUID="2CF48901F488CE90" TYPE="ntfs" PARTUUID="bd5d9029-01"
/dev/sdc1: LABEL="8GB03" UUID="A8CE3E46CE3E0D56" TYPE="ntfs" PARTUUID="0fb30d0e-01"
/dev/sdd1: LABEL="8GB04" UUID="3AC2CC7DC2CC3F3F" TYPE="ntfs" PARTUUID="0fb30d2b-01"
/dev/mmcblk0: PTUUID="498dcd43" PTTYPE="dos"
pi@RASPINAS:~ $
We need to confirm the mount points of our USB drives, most of the time it will be /dev/sda1,
/dev/sdb1, /dev/sdc1 and /dev/sdd1
bash
/dev/sda1: LABEL="8GB01"
/dev/sdb1: LABEL="8GB02"
/dev/sdc1: LABEL="8GB03"
/dev/sdd1: LABEL="8GB04"
If you have different mount points than shown here, it doesn’t really matter, you’ll just need to
replace the code snippets with the mount points you have. It also doesn’t matter if the drive labels
are out of order, just so long as they match up to your mount points.
Depending on how many drives you have, choose your RAID level and follow the instructions for
your chosen level below.
8 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
Enter the following code to setup two or more USB drives into a high-performance RAID-0 array in
parallel, replacing --raid-devices=X with the number of drives you’re using, and /dev/sda1
/dev/sdb1 with your mount points:
bash
sudo mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sda1 /dev/s
bash
sudo mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=4 /dev/sda1 /dev/s
bash
sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/s
bash
sudo mdadm --create --verbose /dev/md0 --level=4 --raid-devices=3 /dev/sda1 /dev/sdb1 /
If I wanted a RAID-5 array using three drives and a hot spare, I would use the following code:
bash
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /
bash
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1
9 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
Now let’s confirm all went well creating your RAID array with the following command:
bash
cat /proc/mdstat
Which should produce something like this (replace raid10 with whatever RAID level you chose):
markup
pi@RASPINAS:~ $ cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdd1[3] sdc1[2] sdb1[1] sda1[0]
15319040 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[>....................] resync = 0.4% (61504/15319040) finish=28.9min speed=8786K/sec
unused devices: <none>
bash
sudo -i
Now we can save our RAID array by entering the following code:
bash
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
It’s also good to confirm it was saved by viewing the mdadm.conf file and look for something like
this at the bottom of the file:
bash
# This configuration was auto-generated on Fri, 19 Jan 2018 08:14:18 +0000 by mkconf
ARRAY /dev/md0 metadata=1.2 name=RASPINAS:0 UUID=0d7c55bd:ae5f8fbc:0e048a15:79de5064
bash
exit
10 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
bash
mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0
bash
pi@RASPINAS:~ $ sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0
mke2fs 1.43.4 (31-Jan-2017)
fs_types for mke2fs.conf resolution: 'ext4'
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=32 blocks, Stripe width=64 blocks 958464 inodes, 3829760 blocks 3829 blocks
First data block=0 Maximum filesystem blocks=2151677952 117 block groups 32768 blocks p
32768 fragments per group 8192 inodes per group Filesystem UUID: 394fd8f2-7b2a-474f-8e5
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 8847
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
pi@RASPINAS:~ $
We also need to mount the file system so we can access it using the following command:
bash
sudo mount /dev/md0 /mnt
We need to automatically mount the file system at boot, so let’s find out the UUID of our mounted
file system by entering the following command:
11 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
bash
sudo blkid
bash
pi@RASPINAS:~ $ sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="CDD4-B453" TYPE="vfat" PARTUUID="498dcd43-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="72bfc10d-73ec-4d9e-a54a-1cc507ee7ed2" TYPE="ext4"
/dev/mmcblk0: PTUUID="498dcd43" PTTYPE="dos"
/dev/sda1: UUID="0d7c55bd-ae5f-8fbc-0e04-8a1579de5064" UUID_SUB="f954ff33-87db-4e26-8be
/dev/sdb1: UUID="0d7c55bd-ae5f-8fbc-0e04-8a1579de5064" UUID_SUB="eea15556-4e0a-1985-163
/dev/md0: UUID="394fd8f2-7b2a-474f-8e58-48b81a6ca8fb" TYPE="ext4"
/dev/sdc1: UUID="0d7c55bd-ae5f-8fbc-0e04-8a1579de5064" UUID_SUB="2a8456d7-6fea-eba2-772
/dev/sdd1: UUID="0d7c55bd-ae5f-8fbc-0e04-8a1579de5064" UUID_SUB="51019b58-995f-cf35-f6c
The item we’re after is the UUID of /dev/md0: which in my case is 394fd8f2-7b2a-
474f-8e58-48b81a6ca8fb but yours will be different. Highlight and copy the UUID, then add it
to fstab and backup the original fstab just in case:
bash
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
Just before the bottom comments, make a space and enter the following on a single line (replace
[your_uuid] with the UUID of your file system):
bash
UUID=[your_uuid] /mnt ext4 defaults 0 0
bash
UUID=394fd8f2-7b2a-474f-8e58-48b81a6ca8fb /mnt ext4 defaults 0 0
12 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
too. Let’s install SAMBA and then configure it with the following command:
bash
sudo apt-get install samba samba-common-bin -y
After SAMBA finishes installing, let’s add user:pi and share password by entering the following
command (enter a password at the prompts):
bash
sudo smbpasswd -a pi
bash
pi@RASPINAS:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.
pi@RASPINAS:~ $
Before we start altering the SAMBA config file, let’s make a backup:
bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
bash
sudo nano /etc/samba/smb.conf
Scroll down to the bottom of the file using your arrow key, then add the following code to create
your NAS file share:
bash
# NAS Share
[NAS]
path = /mnt
comment = RasPi NAS Share
valid users = pi
writable = yes
13 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
browsable = yes
The save Ctrl + O and exit Ctrl + X . Now let’s make sure our changes work, enter the
following:
bash
testparm
Which should product the following (if you want a full output, press Enter at the prompt):
bash
pi@RASPINAS:~ $ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[NAS]"
Loaded services file OK.
Server role: ROLE_STANDALONE
If the line reads “Loaded services file OK.” then you’re good to go.
Finally, we need to restart the SAMBA service by with the following command:
bash
sudo /etc/init.d/samba restart
14 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
Summary
Well I hope this guide has shown you some cool RasPi and Linux stuff and that you had fun
Something to think about is adding a USB hub to expand the drive number capacity instead of
forking out big $$ for large capacity USB drives. You can also add normal 2.5″ or 3.5″ SATA drives via
1. Enter your 2. Inside your 3. Click on your 4. Inside your 5. Click on Map 6. Your new NAS
a USB adapter, see this article. If you have any questions or comments, leave them below.
Raspberry Pi’s NAS NAS folder, then NAS folder network drive, folder as a
hostname enter your enter your permanent drive
Raspberry Pi (Official) credentials Raspberry Pi
Linux RAID Wiki hostname and
nas folder name
9 commands to check hard disk partitions and disk space on Linux
RAID Pi – Raspberry Pi as a RAID file server
How to Build a Raspberry Pi File Server
Comments
15 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
Is there a good tutorial on how to use madm to troubleshoot RAID, rebuild, etc?
Reply
Richie says
August 14, 2019 at 2:35 pm
Howdy, yes there are a few good tutorials on troubleshooting RAID arrays with
mdadm:
Reply
Leave a Reply
Your email address will not be published. Required fields are marked *
16 of 17 8/30/2019, 10:52 AM
Build a Raspberry Pi RAID NAS Server - Complete DIY Guide » Ricmedia https://www.ricmedia.com/build-raspberry-pi3-raid-nas-server/
Comment
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
POST C OMMENT
This site uses Akismet to reduce spam. Learn how your comment data is processed.
17 of 17 8/30/2019, 10:52 AM