новости книги игры
библиотека программы форум

11.05 11.10 1C 2010 2011 3d Acer action Additional Adobe alt linux ALT линукс в школу altlinux amarok AMD Android Apache apple apt-get ArchLinux asplinux ASUS Asus Eee PC ATI audio avi backup bash beta big buck bunny bind bittorrent blender bluetooth bsd c C++ Calibre Canonical cd Cedega CentOS chrome chromium cisco clamav CLI Damn Small Linux debian Dell desktop dns DOOM DOS download driver dvd e-book Eclipse emacs embedded linux enterprise EPUB Etersoft exim ext2 ext3 ext4 faq FB2 fedora fedora10 fedora8 fedora9 fedoracore firefox firefox3 firewall Flash Fluxbox flv free FreeBSD freeware ftp games gcc gentoo GIMP gnome GNU gnu linux google GPL GRUB gtk GTK+ hackday hdd HDR


   

«    Июль 2008    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Готовы ли вы помочь преподавателям освоить Линукс?

Да, готов помочь с установкой и переобучением
Да, готов помочь с переобучением
Да, готов помочь с установкой
Да, готов стать преподавателем
Я уже помог
Нет, у меня нет на это времени/желания
Нет, у меня не хватит умения



LinuxTwitter:




Архив:

Октябрь 2011 (91)
Октябрь 2010 (42)
Апрель 2010 (10)
Январь 2010 (29)
Декабрь 2009 (6)
Ноябрь 2009 (31)
Октябрь 2009 (20)
Апрель 2009 (19)
Март 2009 (1)
Февраль 2009 (20)
Январь 2009 (31)
Декабрь 2008 (71)
Ноябрь 2008 (89)
Октябрь 2008 (91)
Сентябрь 2008 (113)
Август 2008 (168)
Июль 2008 (156)
Июнь 2008 (147)
Май 2008 (191)
Апрель 2008 (213)
Март 2008 (197)
Февраль 2008 (195)
Январь 2008 (112)
Декабрь 2007 (146)
Ноябрь 2007 (94)




Партнёры:


 

Добавить в Google Reader
Читать в Yandex.Ленте
Mobile LinuxOpen (test version)

mhddfs: объедините несколько реальных файловых систем в одну большую 

 Мне нравится:


 

Пусть имеются три диска: на 80, 40 и 60 Гб; и 150 Гб аудиофайлов, которые нужно разместить на дисках. Как вы это сделаете?

Раньше я знал о двух решениях: создать

либо три различных каталога с музыкой на каждом диске;
либо нечто вроде RAID и объединить диски в один массив.

Однако первый подход довольно утомительный: нужно определить, как распределять данные по дискам и помнить, что где хранится. Допустим, нужно будет хранить классическую музыку на первом диске, а рок-музыку — на втором. Потом первый диск внезапно заполняется, а втором остается много свободного места. Теперь нужно обменять файлы на дисках, либо переходить между ними при помощи символьных ссылок.

RAID хотя и решает проблему, но всегда приводит к значительным потерям либо в надежности хранения, либо в доступном дисковом пространстве.

Но недавно я нашел более удачное решение для таких задач: mhddfs. Это модуль FUSE, позволяющий комбинировать файловые системы в одну большую виртуальную, содержащую все файлы компонентов, а также всё их свободное пространство. Более того, в отличие от прочих сходных модулей (unionfs?), mhddfs не ограничивает возможность добавления новых файлов в комбинированную файловую систему и разумно определяет, где эти файлы хранить.

Пусть три жестких диска монтированы в /mnt/hdd1, /mnt/hdd2 и /mnt/hdd3. Тогда у вас должно быть что-то такое:

$ 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 можно будет создать новую точку монтирования /mnt/virtual, объединяющую все диски. Благодаря FUSE для этого не нужно иметь привилегии суперпользователя (нужно только входить в группу fuse), но здесь для простоты положим, что вы вошли как root.

# 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'

Опция «-o allow_other» здесь означает, что результирующая файловая система должна быть видна всем пользователям, а не только своему создателю.

В итоге получим:

$ 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

Как видите, была создана новая файловая система, объединяющая емкости дисков. Если вы посмотрите /mnt/virtual, то увидите там файлы со всех трех дисков и наложенные друг на друга структуры директорий.

Но что если попытаться записать файлы в /mnt/virtual? Ну, это довольно хитрый вопрос, и, должен признать, автор mhddfs решил его очень хорошо. Когда вы создаете новый файл в виртуальной файловой системе, mhddfs проверяет свободное пространство на всех дисках. Если на первом диске достаточно места, то файл размещается там. Иначе, если на диске места мало (меньше значения параметра mlimit — по умолчанию 4 Гб), будет использован второй диск. Если и он занят, то будет использован третий. Если же на всех дисках свободное пространство не превышает mlimit, то используется диск, где свободного пространства больше.

Кроме того, если если на середине записи какой-то диск заполняется (допустим, вы попытались создать очень большой файл), то запись не отменяется, и mhddfs просто перемещает данные на другой диск (где больше свободного места). Всё это полностью прозрачно для приложения, записывающего файл.

Теперь можно просто работать с файлами в /mnt/virtual, не заботясь о том, что берется с какого диска, и о прочих вещах; также можно просто переместить туда новые файлы и не думать, где они на деле будут храниться.

Если нужно создавать точку монтирования автоматически при каждой загрузке, то можно добавить такую строчку в /etc/fstab:

mhddfs#/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 /mnt/virtual fuse defaults,allow_other 0 0

Подробности смотрите в man mhddfs.

В дальнейшем, если потребуется, то закончить работу с mhddfs и не потерять данные или структуру директорий будет просто. Допустим, вы купили новый жесткий диск на 500 Гб и хотите продать старые маленькие диски. Просто подключите новый диск и скопируйте на него содержимое /mnt/virtual, после чего удалите точку монтирования mhddfs и отсоедините старые диски. Вся виртуальная структура файлов будет зафиксирована на настоящем диске. И, благодаря тому, что сами файлы не разделяются на части для разных дисков, даже если mhddfs вдруг перестанет работать (что маловероятно), то всё равно можно будет копировать данные со всех трех дисков в один каталог и получить ту же структуру, что и была на /mnt/virtual.

Пакет mhddfs есть в тестовой и нестабильной ветке Debian; в Ubuntu его пока нет.


источник статьи   


29 июля 2008  /   /   ]

Похожие статьи

  • Gmailfs. Монтируем Gmail как сетевой диск.
  • Virtual MIDI Keyboard(пакет vkeybd)
  • VirtualBox: ваш виртуальный ПК
  • Монтирование разделов и дисков в Linux
  • Пример использования squashfs




  • Комментировать:




    #1 / написал: mPolr / 10 октября 2008 11:27
    Как-раз то что мне нужно на игровой FTP-сервер. Буду пробовать
      
    [root@linuxopen.ru ~]$ find
     ©2007 - 2011 @antropoff.ru