Предположим, у вас есть три жёстких диска - на 80, 40 и 60 гигабайт. И 150 гигабайт музыки, которую надо на этих дисках хранить. Как лучше всего поступить в таком случае? Два пути, которые были мне до недавнего времени известны, это:
Однако, первый метод довольно утомителен, так как каждый раз при добавлении новых файлов нужно решать, куда именно их положить, а потом помнить, где что хранится. Для упрощения последней задачи, можно делить музыку по дискам согласно какому-либо признаку, например по её жанру - а потом, столкнувшись с нехваткой места на диске с классической музыкой, перемещать часть её на диск с рок-музыкой, и расставлять вокруг подпорки из симлинков. RAID же, хотя и решает эту проблему, всегда связан со значительной потерей либо надёжности хранения, либо полезного дискового пространства. Но недавно, я случайно нашёл гораздо более удобное и гибкое решение описанной проблемы: mhddfs. Это модуль файловой системы для FUSE, позволяющий объединить несколько обычных файловых систем в одну большую «виртуальную», которая будет содержать в себе не только все файлы объединённых ФС, но и всё их свободное место. Кроме того, в отличие от других подобных модулей, этот не ограничивает возможность записи на виртуальную объединённую ФС, а автоматически распределяет новые файлы по тем физическим дискам, где ещё есть свободное место.
Пакет под названием
Итак, предположим, три ваших жёстких диска примонтированы в каталоги $ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sda1 80G 50G 30G 63% /mnt/hdd1 /dev/sdb1 40G 35G 5G 88% /mnt/hdd2 /dev/sdc1 60G 10G 50G 17% /mnt/hdd3
После установки # mkdir /mnt/virtual # mhddfs /mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual -o allow_other option: allow_other (1) mhddfs: directory '/mnt/hdd1' added to list mhddfs: directory '/mnt/hdd2' added to list mhddfs: directory '/mnt/hdd3' added to list mhddfs: move size limit 4294967296 bytes mhddfs: mount point '/mnt/virtual'
Ключ « Результат будет выглядеть вот так: $ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sda1 80G 50G 30G 63% /mnt/hdd1 /dev/sdb1 40G 35G 5G 88% /mnt/hdd2 /dev/sdc1 60G 10G 50G 17% /mnt/hdd3 mhddfs 180G 95G 85G 53% /mnt/virtual
Как видим, виртуальная файловая система успешно создана. Она суммировала общий объём всех трёх дисков (180G), объединила их использованное (95G) и свободное (85G) пространство. Если посмотреть список файлов и каталогов, находящихся в
Что же произойдёт при попытке создать новые файлы или каталоги внутри
Но это ещё не всё. Если какой-то из дисков исчерпает своё свободное пространство в процессе записи файла, запись не «обвалится»;
Таким образом, с файлами в
Если вы решите сделать, чтобы виртуальная объединённая ФС подключалась при каждой загрузке компьютера, можно добавить следующее в mhddfs#/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual fuse defaults,allow_other 0 0
Подробности см. в И последнее, но весьма важное, о чём стоит упомянуть. При внедрении любого настолько же «глобального» решения следует обязательно подумать о том, насколько проблематично будет, при необходимости, отказаться от его использования.
К счастью, в случае
А благодаря тому, что сами файлы не разделяются на кусочки, хранимые на разных дисках (как в случае с RAID), даже в случае, если Ссылки
|
|||