|
Lегче Vорочать Mозгами
Расскажу-ка я о технологии
LVM
и о том, как с ее помощью можно обустроить новый сервер под Линуксом. Правда, в силу некоторых особенностей эта штука вряд ли пригодится тем, кто использует Линукс совместно с «виндой» в режиме двойной загрузки. А вот сисадминам, да еще тем, кому в ближайшее время предстоит покупать и устанавливать новый сервер, прочитать данный материал очень даже не помешает.
Возьмите любой прайс-лист с винчестерами IDE, выберите несколько сопоставимых винчестеров (один производитель, одинаковые rpm, одинаковый размер кэша и т.п.) разной емкости. Если посчитать цену за гигабайт, сразу станет ясно, что на сегодняшний день наиболее выгодны винчестеры объемом 160200 Гб, но никак не большие. Т.е. цена за гигабайт стабильно снижается по мере роста объема, но потом вдруг идет вверх. Цена за гибабайт в моделях объемом 120 Гб на 510% выше, чем в их аналогах на 160200 Гб, однако в настоящий момент именно эти модели являются наиболее ходовыми и широко представленными на рынке, ввиду сравнительно приемлемых цен на них порядка $100. LVM, собственно, и поможет нам «сшить» два винчестера по 120 Гб в один, причем конструкция эта будет выигрывать по стоимости и производительности в сравнении с отдельным винчестером на 250 Гб. Почему такая связка будет работать быстрее? Потому что данные в ней находятся не на одном винчестере, а на двух. В LVM разнесение данных закладывается в сам метод разбивки дисков. Надо, конечно, понимать, что двукратное ускорение недостижимо, однако эффект будет существенный.
Для простоты допустим, что оба винчестера по 120 Гб стоят как Master один Primary, второй Secondary. В Линуксе им соответствуют обозначения hda и hdc, соответственно. Привод CD-ROM пристраиваем как Primary Slave (hdb).
Возьмем дистрибутив ASP 9.2 (Сибирь) (о нем можно прочитать в статье Владислава СВЕТЛИЧНОГО «Пингвин-сибиряк», опубликованной в прошлом номере МК). Правда, разработчики уверяют, что поддержки LVM в этом дистрибутиве нет, в отличие от RedHat, которая очень ей гордится. Внесем ясность поддержка на самом деле есть, но прикручивать все придется руками. И в RedHat, что самое смешное, тоже руками, только в ASP придется выполнить на одну команду больше, только и всего. Насчет других дистрибутивов ситуация, надеюсь, понятна: LVM дело новое, есть поддержка или нет неведомо.
Самое время объяснить, что же такое LVM. Расшифровывается это как Logical Volume Manager, т.е. менеджер логических дисков. Эта технология приходит на смену старой и негибкой схеме выделения пространства на диске с помощью разделов (партиций). Чем плох раздел? Тем, что он занимает на диске строго определенное место (с которого его уже просто так не сдвинешь), а также кучей уже совершенно отживших свое ограничений (например, выравнивание на границу дорожки, невозможность объединить в раздел несколько дисков и т.п.)
Что же предлагает LVM? Он невозможен на общекомпьютерном уровне, т.е. работать с ним можно только под Линуксом, а для других ОС, если они установлены на компе, это будет потерянное место, и только. Но если у нас только Линукс, то мы ничего не теряем, и игра стоит свеч. Итак, существует относительно небольшой традиционный раздел с Линуксом. Оттуда система загружается, активизируется LVM, считывает из обычных файлов (которые находятся на традиционном разделе Линукса) нужную ему информацию, и затем в системе появляются новые виртуальные разделы, которыми можно очень гибко управлять. Нас вообще не интересует, где физически расположены эти разделы (они хитро размазаны по нашим дискам, в общем, LVM его знает), главное, что у них есть емкость, и в них действительно можно записать информацию сообразно этой емкости (ну, и прочитать потом, естественно :-)).
LVM довольно специфичная штука уже потому, что имеет дело с разбиением диска. «Распиливание» диска это та вещь, о которой следует позаботиться в процессе инсталляции, переделать что-то потом будет сложнее. Вот почему я и говорю о новом сервере. А то захочется кому-нибудь поэкспериментировать с LVM на существующем компе а диск там, скажем, полностью разбит на два раздела: один огромный root и один маленький swap. Надо грузиться с компакта, запускать parted или, чего доброго, Partition Magic и освобождать место. А вдруг глюкнет страшновато, ведь никто гарантий-то не даст, что программы вышеупомянутые без ошибок отработают. В общем, если не светит инсталлировать на чистый диск (или переинсталляция с полной переразбивкой), рекомендую выбросить это все из головы.
Итак, ставим Линукс. Когда дело доходит до дискового вопроса, выбираем ручную разбивку на разделы. После этого нам дадут переразбить первый диск (считаем, что он чистый). Создадим небольшой раздел под минимальную серверную инсталляцию 1 Гб (конфигурация Сервер занимает порядка 450 Мб). Это будет hda1. Точкой монтирования для него будет /, файловую систему можно выбрать по вкусу (я лично люблю xfs). Оставшуюся часть первого винчестера заполняем другим разделом hda2. В качестве файловой системы для него выберем RAID это позволит избежать форматирования. Для RedHat есть возможность напрямую выбрать LVM, чем преимущества Шляпы в этом отношении и исчерпываются. Второй диск не трогаем вообще, продолжаем инсталляцию Линукса. Вы спросите: а как же своп? Не создавайте никакого свопа успеется потом! Правда, нынешние графические инсталляторы требуют огромного количества памяти, и без свопа Линукс может и не стать, но мы ведь делаем взрослый сервер, а не просто балуемся, правда? На новом компьютере памяти хватит, однозначно, а если экспериментируете на старом компе, то там LVM и не нужен. Разве что в учебных целях...
Когда, наконец, нам дадут добраться до командной строки пользователя root, сперва превратим раздел hda2, который мы вынуждены были фиктивно пометить как RAID, в реальный LVM. Даем команду:
а затем уже внутри самого fdisk введем однобуквенную команду t. На запрос Partition number (1-4): ответим: 2 (т.к. будем менять hda2), а на запрос Hex code (type L to list codes): напишем: 8e (это и есть код LVM, в чем можно убедиться, введя L и просмотрев список типов разделов). Наконец, дадим команду w, чтобы сохранить изменения. Теперь нужно перезагрузиться. Вот, собственно, и все, что нужно дополнительно сделать в ASP по сравнению с RedHat. Дальнейшие шаги в обеих системах будут совпадать так что думайте сами, чем отличается «поддержка» LVM в RedHat от ее «отсутствия».
Сначала запускаем команду vgscan без параметров, чтобы создать ряд важных конфигурационных файлов. Теперь приступаем к самому главному созданию группы томов. Группа томов это очень удобное виртуальное понятие, «стирающее грани» физических винчестеров (в переносном смысле, разумеется). С одной стороны, группа включает целые винчестеры или традиционные разделы на них (с типом LVM), с другой виртуальные разделы, которые создаются на этом объединенном пространстве. Выделением дисковой памяти можно управлять очень гибко с помощью командной строки (а вы как думали? Технология молодая, графических менюшек с кнопочками к ней еще не написали). При этом винчестеры и физические разделы LVM называются physical volumes (физические тома), а потому управляются набором команд, начинающихся с префикса pv, виртуальные же разделы называются logical volumes (логические тома) и управляются аналогичными командами с префиксом lv. Есть еще группа команд с префиксом vg, что расшифровывается как volume group, т.е. группа томов. Например, только что отработавшая команда vgscan.
Прежде всего подготовим физические тома. Дадим команды:
Первая команда должна пройти без проблем ведь мы предварительно создали раздел типа LVM. Вторая может сбойнуть, если на винчестере что-то было. В целях безопасности команда не срабатывает, если на винчестере есть MBR. Мол, мало ли чего, одно неловкое движение и все сначала. В этом случае надо очистить MBR. Например, вот так:
Потом команду pvcreate /dev/hdc нужно повторить.
Теперь создадим группу томов:
Итак, мы создали группу томов под названием haha. Команда
выдаст разнообразную статистику об этой группе томов, самая интересная часть которой будет внизу:
Дисковое пространство в группе томов выделяется большими блоками, которые называются PE (Physical Extents). В первой строчке показан общий размер дискового пространства в группе, во второй размер физического экстента (4 Мб), в третьей размер группы, выраженный в физических экстентах. В пятой строчке самое главное размер свободного места в экстентах и гигабайтах одновременно. Считаем, что у нас есть виртуальный винчестер размером 222 Гб, и мы можем разбивать его на разделы утилитами LVM.
(Продолжение следует)
|