I'm trying to setup my own (home) NAS. I don't want RAID, I want to use a more flexible form:
- Mix and match harddrives (now I have 4x 2gb, but for sure when I upgrade I don't want to buy 4 new ones at the same time)
- Some form of duplication (not backup, but something safer than JBOD)
- Duplication of selected folders
I've tried Windows Server 2012 R2 with Stablebit Drivepool (looks very good and works simple). Now I also want to try it with Ubuntu but I have a hard time finding out what kind of software is available for this?
I saw Greyhole (but has a bad review: )
Any other ways to do this? Or applications?
21 Answer
You should use LVM and a cloning cron script.
I am going to assume this setup for you:
- 4 drives for LVM and file storage.
- External USB drive for backups. (at
/dev/sdf1) - No duplication -- use
ddto completely clone as necessary.
LVM
You need to first set up LVM. This diagram is a good example:
Use a hard drive, and assign each to a LVM folder such as /lvm or whatever. This article is very good for describing LVM. I recommend reading it for a better and more detailed LVM introduction.
First off, partition all storage drives, but do not add a partition scheme! Use unallocated as the partition type. I will assume that your storage partitions are /dev/sdb1, /dev/sdc1, /dev/sdd1, and /dev/sde1. Your installation will be at /dev/sda1.
Next, you need to make the drivers LVM-ready:
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1Once that is done, you want to group those drives:
vgcreate homeNAS /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1This creates a group called "homeNAS" that conains all of the above drives.
Next, create the Logical Volume:
lvcreate --name share homeNASCreate the filesystem:
mkfs.ext3 /dev/homeNAS/shareOnce this is done, run the following to create the lvm folder:
mkdir /lvm/Mount it using:
mount /dev/homeNAS/share /lvmTo mount it on every boot, add the following to the end of your /etc/fstab. Make a backup!!
/dev/homeNAS /lvm ext3 rw,noatime 0 0Note that the above guide for LVM is very basic, and is not meant for fancy things. Read the linked article for a much more detailed explanation.
Cron Script
First off, get an external disc drive. It should be plenty big for storing all of your files. It should be able to hold 1.5x the size of your entire LVM partition (ie, 500GB HDD = 750GB backup).
I will assume your drive has one partition (ext4 at /dev/sdf1, which is mounted at /media/backup)
Create a shell script named lvm-backup.sh in /etc/lvm-scripts/ like this:
cp /lvm/folder1/ /media/backup/lvm/folder1
cp /lvm/folder2/ /media/backup/lvm/folder2
cp /lvm/folder3/ /media/backup/lvm/folder3
cp /lvm/folder4/ /media/backup/lvm/folder4What this'll do is copy the specified folders to the backup drive. You should not clone directly, as that takes forever and can be detrimental to your system.
Quickly run:
chown root:root /etc/lvm-scripts/lvm-backup.sh
chmod +x /etc/lvm-scripts/lvm-backup.shTo run the backup nightly at midnight, add this to your /etc/crontab:
00 00 * * * sh /etc/lvm-scripts/lvm-backup.shIf you want more specific control of when to run the script, see this Howto on Cron.
2