The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Управление дисковым пространством в Linux с помощью LVM (linux disk lvm partition raid)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: linux, disk, lvm, partition, raid,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-12 16:51:55 Subject: Управление дисковым пространством в Linux с помощью LVM
Original

Перевод: Сгибнев Михаил

Linux Logical Volume Manager (LVM) является механизмом виртуализации дисков. Он позволяет создавать "виртуальные" дисковые разделы на одном или нескольких жестких дисках, которые в дальнейшем можно увеличивать, уменьшать или перемещать с диска на диск сообразно вашим потребностям. Также появляется возможность преодолеть ограничение на размер раздела, накладываемое размером жесткого диска.

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

В этой статье сперва рассматриается файловый сервер начального уровня, затем внесем некоторые изменения, добавив избыточность с помощью RAID 1. Также рассмотрим аспекты применения LVM для домашних пользователей.

Установка LVM

Система LVM включает в себя компонет ядра, овечающий за файловую систему и пользовательские утилиты. Для включения компонента ядра, установите следущие опции: Пользовательские утилиты устанавливаются с помощью системы пакетов вашего дистрибутива Linux. В Gentoo, утилиты LVM входят в сотав пакета lvm2. Обратите внимание, что вы можете увидеть пакет LVM-1 (второе его название lvm-user). Можете установить оба пакета, но для работы потребуется LVM-2.

Основы LVM

Чтобы использовать LVM, вам необходимо понять несколько моментов. Вот есть у вас жесткие диски. Дисковое пространство на этих устройствах нарублено на разделы. Наконец, файловая система записывается поверх этих разделов. Для сравнения, в LVM, Volume Groups (VGs) разделены на логические тома (LVs), где файловые системы, в конечном счете, и находятся (Рис. 1).

Каждый VG составлен из пула Физических Томов (PVs). Вы можете расширить (или уменьшить), размер Volume Groups добавляя или удаляя так много PVs, как вам будет угодно, если есть достаточное количество PVs для хранения содержимого всех выделенных LVs. Пока есть доступное пространство в VG, вы можете увеличивать или сокращать размер ваших логических томов (хотя большинство файловых систем не любит сжиматься).

Пример: простой файловой сервер

Простой пример использования LVM - традиционный файловый сервер, на котором храняться резервные копии, медиа-файлы и общие файлы для компьютеров нескольких членов семьи. Гибкость - ключевое требование; кто знает, какие требования к объемам дисков принесет селдующий год?

Для примера, предъявим следущие требования к разделам: В конечном счете, эти требования могут увеличиться многократно за следующий год или два, но сказать точно, какой раздел и на сколько - нельзя.

Диски

Традиционно, файловый сервер использует диски SCSI, но сегодня диски SATA предлагают привлекательное соотношение скорости и низкой цены. На момент написания этой статьи, диски SATA на 250 Гбайт по стоимости примерно равны 100 $, таким образом, стоимость одного терабайта составит около 400 $.

Диски SATA именуются не ATA классификацией (hda, hdb), а SCSI (sda, sdb). Как только наша система загрузилась с поддержкой SATA, у нас появится четыре готовых к работе физических устройства: Теперь подготовим их для работы с LVM. Вы можете сделать это с помощью fdisk, определяя "Linux LVM" как тип раздела 8e.

Создание виртуального тома

Иниицилизируйте каждый диск с помощью команды "pvcreate" : Эта команда настроит все разделы для использование под LVM и позволит создать группы томов. Для проверки доступности PVs используйте команду "pvdisplay". Здесь мы будем использовать единственный том под названием "datavg": Используйте vgdisplay, чтобы видеть недавно созданный VG "datavg" с четырьмя дисками, объединенными вместе. Теперь создайте логические тома: Без LVM вы могли бы распределить все доступное дисковое пространство по разделам, которые вы создаете, но с LVM, можно быть более консервативным, распределяя только половину доступного пространства согласно текущим требованиям. Как правило, проще расширить файловую систему, чем уменьшить, таким образом, мы выбрали хорошую стратегию распределения пространства. Этот метод также дает вам возможность создания новых томов, когда возникнет такая потребность (например, для хранения зашифрованных данных). Чтобы просмотреть созданные тома, используйте команду "lvdisplay":

Теперь у вас есть несколько понятно названных логических томов:

Выбор файловой системы

Теперь, когда устройства созданы, необходимо создать файловые системы, коих существует великое множество. На чем остановить свой пылающий взор?

Типичными файловыми системами настольных компьютеров является ext2 и ext3. Ext2 была стандартной, надежной рабочей лошадью для Linux в минувшие годы. Ext3 - модернизация ext2, поддерживающая журналирование и улучшенные механизмы проверки после сбоя. Сбалансированность ext3 в плане производительности, надежности и скорости восстановления делает ее прекрасным выбором для систем общего назначения. Поскольку ext2 и ext3 были файловыми системами, используемыми по умолчанию, в течение долгого времени, то ext3 будет хорошим выбором, если вы хотите получить большую надежность. Для того, чтобы хранить резервные копии, надежность намного более важна чем скорость. Главным недостатком ext2/ext3 является то, что для того, чтобы увеличить(уменьшить) ФС, необходимо ее отмонтировать.

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

Для большого количества маленьких файлов превосходным выбором будет ReiserFS. Для потокового, некэшируемого ввода/вывода, эта ФС занимает верхние строки тестов и может быть на несколько порядков быстрее, чем ext3. Однако, исторически, она оказалась не столь стабильной, как ext3. Этот вывод сделан на основании достаточно устаревших данных, возможно, сейчас ситуация изменилась, но неприятный осадок остался.

Если вы планируете создать файловый сервер, который будет содержать большие файлы, типа видео файлов, скачанных с MythTV, приоритетной может стать скорость удаления файлов. С ext3 или ReiserFS, удаление большого файла может занять несколько секунд, чтобы отметить все освобожденные блоки данных. Если ваша система в этот момент делает запись на диск или обрабатывает видео, эта задержка могла бы вызвать сбои. JFS и XFS лучший выбор в этой ситуации, хотя XFS имеет преимущество из-за большей надежности и общей лучшей работы.

Итак, приняв все сказанное во внимание:

Монтирование

Наконец, чтобы примонтировать файловые системы, добавьте следующие строки к /etc/fstab: создаем и активируем точки монтирования: Теперь ваш сервер готов к предоставлению сервисов.

Добавляем избыточность с помощью RAID

Пока в использовании LVM все достаточно просто. Однако естьодин главный недостаток: при сбое любого из дисков, ваши данные окажутся в опасности. Очень сложно создать резервную копию половины терабайта данных.

Для компенсации такого риска необходимо добавить избыточность, используя RAID 1. RAID (Redundant Array of Independent Disks) является низкоуровневой технологией комбинирования дисков различными способами (уровнями). RAID 1 зеркалирует данные на двух (или более) дисках. Помимо повышения надежности, с использованием RAID 1 возрастает производительность, поскольку на дисках содержатся идентичные данные и операции чтения/записи могут быть разделены между ними.

К сожалению, этот метод имеет высокую стоимость, так как уменьшает дисковый объем вдвое. Хорошая новость заключается в том, что нам хватит и половины терабайта, а LVM достаточно гибок для того, что бы добавить диски при необходимости в будущем.

RAID 5, с четырмя дисками, совсем другой коленкор. Он позволяет восстанавливать часть дискового пространства, но добавляет сложности в использовании. Кроме того, показывая неплохую производительность на операциях чтения, этот тип сильно проигрывает на операциях записи. Поскольку диски сейчас довольно дешевы, не стоит мучится ради выгод, даваемых RAID 5.

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

Сейчас мы объединим четыре диска в две пары RAID 1: /dev/sda + /dev/sdd and /dev/sdb + /dev/sdc. Причина для такого специфического объединения заключается в том, что sda и sdd являются первым и вторым дисками на разных контроллерах; поэтому, в случае отказа контроллера, вы сможете обращаться к двум дискам на оставшемся контроллере. При использовании таких пар относительные скорости доступа балансированы так, что ни один тип RAID не медленнее, чем другой. Возможно так же повышение производительности от распределения операций чтения/записи между двумя контроллерами.

Сначала, выведите два диска SATA (sdb и sdd) из datavg VG: Теперь изменим тип разделов на этих двух дисках, выбрав тип fd (Linux raid autodetect): Теперь создадим зеркало RAID 1, указывая md, что другая "половина" зеркала отсутствует (потому что два других диска еще не готовы для добавления в RAID). Добавляем это битое зеркало в LVM: Затем, переносим оставшиеся диски в зеркало: В заключение, меняем типы дисков на fd и получаем битое зеркало, но с полностью зеркальной информацией: Хотя и приложив много усилий для создания RAID 1, мы защитили LVM без повторной переустановки, копирования, отмонтирования ФС или перезагрузки системы.

Доступ к файлам по сети

Польза файлового сервера сомнительна, если вы не можете легко получить доступ к файлам. Есть много способов сделать это, но наиболее распространенным является Сетевая Файловая система (NFS). NFS позволяет другим *nix машинам монтировать общие ресурсы для прямого использования, к тому же, она очень легко конфигурируется в Linux.

Сперва убедитесь, что на вашем файловом сервере в ядре разрешен NFS (в данном примере 2.6.15): Соберите и переустановите ядро, после чего перезапустите сервер. Если перезагрузка нежелательна, то соберите NFS как модуль и затем загрузите его с помощью modprobe nfsd.

Запускаем сервер NFS. Для этого, в вашем дистрибутиве Linux имеется система init. Например, в Gentoo, вы увидите: Вы можете повторно проверить, запущен ли NFS, запрашивая portmapper командой rpcinfo-p | grep nfs: Затем вы должны определить, какие каталоги NFS должна экспортировать. Добавьте их в /etc/exports: Это список каталогов, предназначенных для общего доступа с указанием сети, из которой разрешен доступ и несколько дополнительных опций. Опции rw и sync подразумевают под собой разрешение на чтение/запись и осуществление синхронизации каталогов, что предотвращает нарушение целостности данных, если сервер был перезагружен в середине записи файла, хотя и мы и лишимся преимуществ async режима.

Эхпортируем эти NFS ресурсы: Теперь подмонтируйте эти русурсы на каждой машине, которая будет использовать их. Добавим соотвествующие строки с параметром fileserv в /etc/fstab клиентской машины: В заключение, создаем точки монтирования и монтируем ресурсы: Теперь все машины вашей сети имеют доступ к большому, надежному и расширяемому дисковому пространству!

Стратегия создания резервных файлов

При использовании LVM могут возникнуть проблемы резервного копирования данных. Использование RAID защищает от дисковых отказов, но эта технология беззащитна от пожара, воровства или случайного удаления файлов.

Традиционно, для накопителей подобного класса используется магнитная лента. Эта технология все еще жизнеспособна и имеет некоторые преимущества, но может быть дорога и медленна для системы такого размера. К счастью, есть более современные технологии.

rsync - мощная утилита для того, чтобы копировать файлы с одной системы на другую и она достаточно хорошо работает через Интернет. Вы можете установить дублирующую систему в фирме друга в другом городе и периодически послать резервные копии туда. Это можно сделать с помощью cronjob: Другой подход состоит в том, чтобы прикрепить к вашему серверу пару внешних RAID 1 жестких дисков через Firewire, USB или eSATA. Добавьте один диск к /dev/md0 и второй к /dev/md1. Как только зеркалирование пройдет, отключите их и сохраните в безопасном месте. Подключайте диски еженедельно или ежемесячно, в зависимости от ваших потребностей.

Расширение и перераспределение

Предположим, что на следующий год вам понадобятся дополнительные объемы дисковой памяти. Первоначально можно использовать зарезервированное пространство, например для того, чтобы расширить пространство для общих файлов с 10GB до 15GB, выполните следущую команду: Но когда свободного места не останется, нам придется заменить 250G диски на диски емкостью 800G.

В случае использования RAID 1, миграция является довольно простым процессом. Для того, что бы пометить диск каждого зеркала как "битый", а затем удалить его, используйте команду mdadm: Извлеките диски sda и sdc, а затем замените их новыми. Далее разбейте 800G диски на два раздела по 250G и 550G, используя fdisk и добавьте разделы обратно, к md0 и md1: Повторите вышеупомянутый процесс с дисками sdd и sdb, чтобы заменить их на новые, затем создайте третье и четвертое устройство RAID, md2 и md3, используя новое пространство: В заключение, добавим их в LVM: Файловый сервер теперь имеет 1.6TB дисковой памяти.

LVM и рабочая станция

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

Во первых, некоторые дистрибутивы Linux на этапе установки или обновления не поддерживают RAID или LVM, что может доставить неудобства. Стоит обратить на это внимание.

Во вторых, наличие корневой файловой системы на LVM может усложнить восстановление поврежденных файловых систем. Поскольку загрузчики не поддерживают LVM, раздел /boot должен быть не LVM (хотя может быть на устройстве RAID 1).

В третьих, вам необходимо свободное дисковое пространство для нового раздела LVM. Если такового у вас нет, то попробуйте обрезать корневой раздел, как описано в LVM HOWTO.

В этом примере мы рассмотрим ситуацию, когда у вас есть swap и /boot на собственных разделах, вне LVM. Мы заострим внимание на том, как перенести корневой раздел внутрь LVM раздела /dev/hda4. Проверьте, что тип файловой системы на hda4 - LVM (тип 8e).

Инициализируйте LVM и создайте новый физический том: Теперь создайте логический том размером в 5G, отформатированный в xfs: Скопируйте файлы с существующей корневой файловой системы на новый LVM: Затем, модифицируем /etc/fstab для монтирования / в /dev/rootvg/root вместо /dev/hda3.

Самая хитрая часть заключается в пересборке initrd для включения поддержки LVM. Этот процесс очень сильно зависит от дистрибутива, например mkinitrd или yaird. Ваш образ initrd должен загрузить модуль LVM, в противном случае корневая файловая система будет недоступна. На всякий случай, сохраните образ initrd и новый сделайте с другим именем, например /boot/initrd-lvm.img.

В заключение, обновите bootloader. Добавьте новый раздел для новой корневой файловой системы, продублировав старую строку загрузки. В новой строке измените root с /dev/hda3 на /dev/rootvg/rootlv и замените initrd на новый. Если вы используете lilo, убедитесь, что запустили lilo, как только сделали изменения. Например, с grub мы будем иметь: Добавим новую секцию:

Заключение

LVM является одной из многих технологий Linux, доступной пользователям. LVM позволяет достич большей гибкости в управлении дисковым пространством и объединенная с RAID 1, NFS и хорошей стратегией бэкапа пожет дать пуленепробиваемый, легко управляемый способ хранить и совместно использовать любое количество файлов.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, Zaharov Dmitry (?), 07:27, 01/01/2007 [ответить]  
  • +/
    У меня возник вопрос, а зачем использовать RAID1.
    В LVM2 вроде включили встроенную подержку зеркалирования?
     
     
  • 2.2, Frank (??), 13:20, 13/06/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, "вроде". Не могу найти достаточно подробного описания зеркалирования силами LVM, чаще всего подразумевают зеркало силами сторонних средств, поскольку описывается использование LVM1 а не LVM2.
    Единственное что пока нашёл - http://riseuplabs.org/grimoire//storage/lvm2/#how_do_i_build_a_mirrored_lvm_s
     
  • 2.5, AIX Linux HPUX LVM user (?), 18:43, 15/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    LVM умеет зеркалить более гибко. Это связанно с тем, что зеркалируются Logical Volume'ы, а не диски целиком. Результат:
    Можно зеркалить только те ФС которые нужно, остальное место, к примеру, использовать как единое целое.
    Можно повысить избыточность, сделать 3 копии Logical Volume'а, остальное, опять же использовать как хочется.
    К слову на LVM'e можно строить RAID 0,1 и 10. Для Mirror+Stripe (RAID 10) нужно минимум 4 диска (разумеется). Создаём 2ве PhisicalVolumeGroup'ы (это 2 зеркала, правда мирорятся уже не Logical Volume'ами а целыми дисками). После этого просто страйпируем Logical Volume'ы на этих PVG и вуаля - RIAD 10.
    А вот RAID-5, по крайней мере пока, LVM не умеет.
    Вывод: если не "кровь из носу" нужен софтовый RAID-5 - LVM рокс!
     

  • 1.3, lexa (??), 11:18, 16/07/2007 [ответить]  
  • +/
    А можно как-нибудь сделать LVM диск обычным диском (без потерь даных)?
     
     
  • 2.4, AIX Linux HPUX LVM user (?), 18:13, 15/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    нет, не можно ^^ только так:
    сохранить данные -> вынуть диск из LVM'a -> создать 'обычный' диск -> вернуть данные
     

  • 1.6, AIX Linux HPUX LVM user (?), 18:45, 15/04/2008 [ответить]  
  • +/
    http://en.wikipedia.org/wiki/Logical_volume_management
     
  • 1.7, nikolay (??), 07:57, 09/04/2012 [ответить]  
  • +/
    Помогите пожалуйста решить задачку.
    Debian6squeeze+RAID1+LVM.
    Надо добавить sda (320Gb) в vg_main и расширить home. Сделал pvcraete, vgextend, lvmresize.
    В итоге результат:
    # pvs
      PV         VG      Fmt  Attr PSize   PFree
      /dev/md1   vg_main lvm2 a-    73,82g    0
      /dev/sda   vg_main lvm2 a-   298,09g    0
      /dev/sdb6  vg_tmp  lvm2 a-   140,00m    0
      /dev/sdc6  vg_tmp  lvm2 a-   140,00m    0

    # vgs
      VG      #PV #LV #SN Attr   VSize   VFree
      vg_main   2   4   0 wz--n- 371,91g    0
      vg_tmp    2   1   0 wz--n- 280,00m    0

    # lvs
      LV   VG      Attr   LSize   Origin Snap%  Move Log Copy%  Convert
      home vg_main -wi-ao 303,69g
      root vg_main -wi-ao 236,00m
      usr  vg_main -wi-ao   2,79g
      var  vg_main -wi-ao  65,19g
      tmp  vg_tmp  -wi-ao 280,00m

    А это реальная картина.
    # df -h
    Файловая система      Разм  Исп  Дост  Исп% смонтирована на
    /dev/mapper/vg_main-root
                          229M  127M   91M  59% /
    tmpfs                 505M     0  505M   0% /lib/init/rw
    udev                  500M  232K  500M   1% /dev
    tmpfs                 505M     0  505M   0% /dev/shm
    /dev/mapper/vg_main-home
                          5,6G  599M  5,0G  11% /home
    /dev/mapper/vg_tmp-tmp
                          272M   11M  262M   4% /tmp
    /dev/mapper/vg_main-usr
                          2,8G  865M  2,0G  31% /usr
    /dev/mapper/vg_main-var
                           65G  828M   61G   2% /var

    Так вот вопрос, в чём мой затуп? Пока склоняюсь к тому, что vg_main изначально собран на md1.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру