Sunday, August 10, 2014

Raspberry Pi RAID array

I largely followed these very helpful instructions:
http://www.davidhunt.ie/raid-pi-raspberry-pi-as-a-raid-file-server/

also useful:
http://ubuntuforums.org/showthread.php?t=408461
http://en.wikipedia.org/wiki/RAID
http://en.wikipedia.org/wiki/Mdadm

ingredients
  • 2 1-TB western digital drives
    • USB hub with power supply for these
      • Edit: make sure it has enough power to power the drives! My initial one (pictured below) did not and I suspect it was drawing power from the pi causing it to crash
  • raspberry pi
    • USB power supply for this (separate from above)
  • 8 GB sandisk microSD card
    • for use in raspberry pi
    • microSD card reader
  • cables to connect all

Steps:
  1. download and install raspbian wheezy on in the microSD card, using the microSD card reader attached to your PC
    • recommend using the torrent to download, it was very fast once it got going
  2. put the microSD card in the pi, attach a keyboard, monitor and ethernet cable attached to your router.  plug in the power to the pi
    • should see the linux boot sequence on your monitor
  3. configure the raspberry pi - here are the options I used:
    1. boot to command line
    2. change password of default user (username = pi)
    3. advanced option:  make sure SSH is enabled
  4. reboot the pi, log in to confirm everything seems to be in order
  5. (at this point I switched to using my laptop / ssh instead of the keyboard attached to the pi.  I disconnected the monitor)
  6. connect drives to USB hub, connect hub to pi
  7. I mounted each of the drives to make sure they were working, and copied the readme pdf off of one out of curiosity / to actual test a disk op
  8. (I partitioned and formatted each of the disks at this step, but realized later this was not necessary)
  9. became super user:  sudo
  10. install the tool to create / manage the RAID array:
    • apt-get instal mdadm
  11. create the array:
    • mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
    • (note the double dashes for the options - the linked blog above only used single dashes.  Some man pages only use 1 dash, that's what I tried initially and it did not recognize the options)
  12. check the array:
    • cat /proc/mdstat
  13. partition the array
    • fdisk /dev/md0
  14. format the array
    • mkfs.ext4 /dev/md0p1
  15. mount & test the array
    1. mkdir temp
    2. mount /dev/md0p1 temp
    3. echo hello RAID > temp/test
    4. cat temp/test
  16. unmount the array
    1. umount temp
  17. declare victory, go home
I should point out the contents of /proc/mdstat initially indicated that the initial sync would take ~16 hours, but that with the array mounted, that slowed down to almost 4 days!  Based on reading this:

I unmounted the array, and then watched the sync speed climb up back to where it was before.

After the sync finishes I'll start copying files onto it...


1 comment:

  1. Also useful for when you have to start over:
    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s2-raid-manage-removing.html

    ReplyDelete