У меня 2 диска по 1 ТБ ни в одной конфигурации RAID. Я бы хотел, чтобы файлы, которые мне нужно хранить, были размещены на одном из дисков в зависимости от емкости дисков, и при доступе к файлу, я полагаю, мне нужно будет найти файл через базу данных, содержащую карту файлов, или используя хеш. Существуют ли какие-либо утилиты Linux, которые предоставляют это, или я должен просто создать сценарий PHP?
Спасибо
Учитывая, насколько дешевый диск емкостью 1 ТБ, возьмите другой и создайте RAID5 .. Резервирование и хранилище.
С опозданием на три года, но все еще актуально. У меня была такая же проблема, и о FakeRaid просто не могло быть и речи. Используйте AUFS. Он объединит диски в один диск. Параметр mfs помещает новые файлы на диск с наибольшим объемом свободного места. Существует также rr, представляющий собой циклический перебор, и pmfs, который помещает файлы на диск, на котором уже есть папка и на котором больше всего свободного места. Я лично использую pmfs. Моя установка работает так.
Фстаб:
# The Archive
LABEL=Archive_000 /mnt/Archive_000 ext4 defaults 0 0
LABEL=Archive_001 /mnt/Archive_001 ext4 defaults 0 0
LABEL=Archive_002 /mnt/Archive_002 ext4 defaults 0 0
LABEL=Archive_003 /mnt/Archive_003 ext4 defaults 0 0
LABEL=Archive_004 /mnt/Archive_004 ext4 defaults 0 0
LABEL=Archive_005 /mnt/Archive_005 ext4 defaults 0 0
LABEL=Archive_006 /mnt/Archive_006 ext4 defaults 0 0
LABEL=Archive_007 /mnt/Archive_007 ext4 defaults 0 0
LABEL=Parity /mnt/Parity ext4 defaults 0 0
LABEL=Q-Parity /mnt/Q-Parity ext4 defaults 0 0
Я добавил сценарий init.d (из-за того, что время монтирования диска слишком велико, чтобы не отставать от монтирования aufs):
d0="Archive_000"
d1="Archive_001"
d2="Archive_002"
d3="Archive_003"
d4="Archive_004"
d5="Archive_005"
d6="Archive_006"
d7="Archive_007"
mount -t aufs -o noxino -o br=$d0=rw:$d1=rw:$d2=rw:$d3=rw:$d4=rw:$d5=rw:$d6=rw:$d7=rw -o create=mfs -o sum none Archive
Это дает мне 10 монтировок под / mnt. Мне это нравится, потому что я использую SnapRAID, который вам придется скачать и скомпилировать (для этого есть инструкции). Я использую это на сервере Samba, поэтому все остальные видят только папку Archive. Не забудьте сделать каталог, иначе вы получите ошибку монтирования.
Серая дыра распределит ваши файлы по нескольким дискам. Это также позволит вам указать избыточность, чтобы определенные файлы имели избыточные копии, хранящиеся на нескольких дисках. Он предназначен для домашнего сервера или рабочей станции, а не как производственное корпоративное решение.
Похоже, все, что вас волнует, - это возможность использовать все 2 ТБ хранилища без необходимости вручную размещать файлы на том или ином диске. Либо LVM или RAID0 может решить эту проблему за счет увеличения риска сбоя. Для LVM вы должны сделать каждый диск объемом 1 ТБ физическим томом LVM и поместить их в одну группу томов. После этого вы можете создавать логические тома размером до 2 ТБ. Для RAID0 вы просто создаете устройство RAID.
# pretending your unused 1TB disks are sdy and sdz
# for LVM
pvcreate /dev/sdy /dev/sdz
vgcreate myvg /dev/sdy /dev/sdz
lvcreate --name mylv --size 100%
# for RAID0
mdadm --create /dev/md0 --raid-devices 2 --level 0 /dev/sdy /dev/sdz
Я не знаю способа прозрачно объединить отдельные файловые системы в единый пул хранения. Такой вид сегментирования не редкость, просто он обычно реализуется в приложении, а не на уровне хранения. У Engineyard есть бумага, описывающая тактика и процессы сегментирования файловой системы.
Правильный способ - использовать LVM.
Лично я просто помещаю большую часть своих коллекций мультимедиа на один диск, а все остальное - на другой.
Если вы планируете масштабировать в будущем, скажем, до 10 жестких дисков на нескольких серверах, рассмотрите возможность использования кластерной файловой системы, такой как http://en.wikipedia.org/wiki/GlusterFS