Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Выход новой версии opensuse

У меня две хороших новости.

Одна — скоро выходит новая версия любимой операционной системы, Opensuse 11.4.  Я так нечасто бываю на официальном сайте, что (о стыд!) подумал, что можно уже загружать. Ну, а осталось ждать всего две недели. Я доволен и текущей версией, но всегда ожидаешь нового, неизведанного. Так что уже скоро!

Второе — обновился WordPress до версии 3.1. Это не всем будет интересно, но вордпресс стал так часто обновляться! Раньше месяца четыре было без обновлений (когда я только его установил), а теперь каждый месяц почти обновления выходят. Ну и ладно, главное — чтобы хорошо работало

Удачи всем линуксоидам, линуксоюзерам и блоггерам!

a silhouette of a person's head and shoulders, used as a default avatar

Очередной открытый Bugs-Day


Не за горами выход openSUSE 11.4, уже вышел первый релиз-кандидат. Поэтому у сообщества осталась последняя возможность исправить оставшиеся ошибки. Нам нужна Ваша помощь!
В связи с этим в Воскресенье, 20 февраля, объявляется открытый Bugs-Day, где каждый желающий получит возможность принять участие в тестировании openSUSE 11.4 на наличие ошибок.

Что нужно для того, чтобы принять участие:
  • Регистрация в bugzilla.novell.com
  • Установленный дистрибутив openSUSE 11.4 RC1 или openSUSE Factory
  • IRC клиент для взаимодействия с другими участниками на канале #opensuse-testing
  • Хорошее настроение :)
Если вы испытываете трудности с сортировкой и выборкой ошибок из Bugzilla - обратитесь к организаторам, они предоставят Вам список ошибок, которые Вы сможете проверить.

Порядок работы:
  • Поиск в Bugzilla ошибок, открытых в устаревших версиях (11.4 MS 1-5 или 11.4 Factory) 
  • Попробуйте воспроизвести проблему на 11.4 RC1 
  • Если неполадка все еще остается, обновите статус ошибки для текущей версии
  • Если вы уверены, что проблема была устранена, установите статус ошибки в RESOLVED+FIXED
  • Если вы чувствуете, что проблема была устранена, установите статус в RESOLVED+NORESPONSE
Такой порядок действий для каждой найденной ошибки, для координации пользуйтесь IRC-каналом #opensuse-testing сети FreeNode.

Мотивация:
Куда же без неё :) Десять самых активных участников получат благодарность от сообщества в виде фирменных футболок и других хороших вещей. Ну и не забываем главного - Have a lot of Fun!

a silhouette of a person's head and shoulders, used as a default avatar

Реализация простейшего socks-proxy на openSUSE 11.3

Как-то раз, ещё до покупки роутера, мне понадобилось расшарить свое интернет подключение соседу по общежитию. В наличии имелся компьютер с 1 сетевым интерфейсом, подключенный к локальной сети с доступом в Интернет через шлюз, и компьютер в той же локальной сети, но без доступа к Интернету.
Самым простым решением на мой взгляд было настроить squid через Yast2, что и было сделано буквально в пять клтков. Всё бы ничего, веб-страницы заработали, но вот p2p программы, типо ICQ, Skype, Torrent-клиентов работать не пожелали. Было решено также поднять socks proxy.
В репозиториях я быстро нашел прокси сервер Dante и начал разбираться с настройками.
Все настройки хранятся в файле /etc/sockd.conf, который по доброй Unix традиции содержит подробные инструкции в виде комментариев. Ниже приведу откомментированный рабочий файл настройки, реализующий простейший прокси сервер, раздающий интернет одному клиенту без каких-либо ограничений и не требующий авторизации:

logoutput: /var/log/socks/socks.log # указываем файл для хранения логов
internal: eth0 port = 1080 # внутренний интерфейс и порт, на котором будем слушать клиентов, допустимо также указывать IP адрес.
external: eth0  # внешний интерфейс, с которого выходим в Интернет, допустимо что-то вроде external: 192.168.1.1 
method: username none # метод авторизации (rfc931) в данном случае - без авторизации  

# далее идет набор правил, правила со словом pass разрешают действия, со словом block - запрещают

client pass { 
from: 192.168.1.2/32 to: 0.0.0.0/0 
log: connect disconnect iooperation 
} # разрешаем пользователю 192.168.1.2 подключаться к серверу и логируем события подключения/отключения и ввод/вывод. 

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect iooperation
} # разрешаем серверу соединяться с любыми серверами, выполняя команды connect, udpassociate и также пишем логи

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

a silhouette of a person's head and shoulders, used as a default avatar

С наступающим!

Поздравляю всех читателей этого дневника с наступающим Новым Годом! Желаю в наступающем году безглючного железа, безпроблемных пользователей! Также хочется пожелать успехов и в остальных сторонах жизни - материальной, личной, карьерной.

Надеюсь, что будущий год будет не хуже прошедшего по насыщенности событиями Linux-тематики. У нашего учебного центра тоже есть много интересных задумок, которые планируется реализовать. Но об этом я пока писать не могу :).

Еще раз успехов! И помните, пингвин птица полярная :)

a silhouette of a person's head and shoulders, used as a default avatar

С наступающим!

Поздравляю всех читателей этого дневника с наступающим Новым Годом! Желаю в наступающем году безглючного железа, безпроблемных пользователей! Также хочется пожелать успехов и в остальных сторонах жизни - материальной, личной, карьерной.

Надеюсь, что будущий год будет не хуже прошедшего по насыщенности событиями Linux-тематики. У нашего учебного центра тоже есть много интересных задумок, которые планируется реализовать. Но об этом я пока писать не могу :).

Еще раз успехов! И помните, пингвин птица полярная :)

a silhouette of a person's head and shoulders, used as a default avatar

С наступающим!

Поздравляю всех читателей этого дневника с наступающим Новым Годом! Желаю в наступающем году безглючного железа, безпроблемных пользователей! Также хочется пожелать успехов и в остальных сторонах жизни - материальной, личной, карьерной.

Надеюсь, что будущий год будет не хуже прошедшего по насыщенности событиями Linux-тематики. У нашего учебного центра тоже есть много интересных задумок, которые планируется реализовать. Но об этом я пока писать не могу :).

Еще раз успехов! И помните, пингвин птица полярная :)

a silhouette of a person's head and shoulders, used as a default avatar

Окна в... Интернет

Сегодня все одержимы новыми технологиями, облачными вычислениями и прочими Hi-Tech забавами. И вот я решил проверить, насколько установленные в моей системе браузеры поддерживают новейшие стандарты. Итак, представляю героев этого мини-обзора:

  • Chromium 10.0.610.0
  • Firefox 3.6.12
  • Konqueror 4.5.86 (из KDE:Unstable)
  • Rekonq 0.6.55
Сразу оговорюсь, почему в этом списке нет Opera. Я очень положительно отношусь к этому норвежскому браузеру и во времена активного использования Windows он был моим основным "окном в интернет", правда потом я перешёл на Firefox, когда последний дорос до 3-й версии, затем вообще на Linux, в котором у тогдашней Opera не все было гладко, а позднее на Chromium.
Также в последнее время стараюсь по возможности избегать использования закрытых программ (RMS торжествует :)) именно в силу этих обстоятельств Opera в моей системе не установлена.
Итак, преступим к тестам! Поддержка HTML5 (максимально возможная оценка - 300):

С левого верхнего угла по часовой стрелке: Firefox, Rekonq, Konqueror (KHTML), Chromium.

И ещё одна картинка, на этот раз с Konqueror-ом в режиме использования WebKit:


Как видно, результаты Rekonq и Konqueror идентичны, что лишний раз показыает, что ни тот ни другой проект не вносят никаких изменений в qt-webkit, результаты работы которого мы и наблюдаем.
Кроме того я протестировал каждый браузер бенчмарком от Futuremark, результаты ниже:





Единственное, что бросается в глаза - то что бенчмарк определил Rekonq как неизвестную версию Safari.

Каие из этого можно сделать выводы? Пусть каждый решит для себя сам, я же останусь на Chromium-е и буду пристально следить и ждать, когда допилят Rekonq, на мой взгляд очень перспективный проект, достойный стать "окном в интернет" по умолчанию, как в KDE, так и на моём десктопе.
В конце приведу ссылки на браузеры и тесты:
P.S. Ну и небольшая новость, не относящаяся к теме: После долгих раздумий я таки решил посмотреть, что это за птица и завел себе аккаунт в Twitter. Как буду его использовать пока ещё не решил, может быть это будет просто хранилище ссылок на интересные статьи, может быть буду постить туда мысли, которые слишком малы для статьи в этом блоге, а может быть оба варианта сразу или что-то другое. Вообщем всем интересующимся - мой ник в Twitter @Cerkasov.
a silhouette of a person's head and shoulders, used as a default avatar

Окна в... Интернет

Сегодня все одержимы новыми технологиями, облачными вычислениями и прочими Hi-Tech забавами. И вот я решил проверить, насколько установленные в моей системе браузеры поддерживают новейшие стандарты. Итак, представляю героев этого мини-обзора:

  • Chromium 10.0.610.0
  • Firefox 3.6.12
  • Konqueror 4.5.86 (из KDE:Unstable)
  • Rekonq 0.6.55
Сразу оговорюсь, почему в этом списке нет Opera. Я очень положительно отношусь к этому норвежскому браузеру и во времена активного использования Windows он был моим основным "окном в интернет", правда потом я перешёл на Firefox, когда последний дорос до 3-й версии, затем вообще на Linux, в котором у тогдашней Opera не все было гладко, а позднее на Chromium.
Также в последнее время стараюсь по возможности избегать использования закрытых программ (RMS торжествует :)) именно в силу этих обстоятельств Opera в моей системе не установлена.
Итак, преступим к тестам! Поддержка HTML5 (максимально возможная оценка - 300):

С левого верхнего угла по часовой стрелке: Firefox, Rekonq, Konqueror (KHTML), Chromium.

И ещё одна картинка, на этот раз с Konqueror-ом в режиме использования WebKit:


Как видно, результаты Rekonq и Konqueror идентичны, что лишний раз показыает, что ни тот ни другой проект не вносят никаких изменений в qt-webkit, результаты работы которого мы и наблюдаем.
Кроме того я протестировал каждый браузер бенчмарком от Futuremark, результаты ниже:





Единственное, что бросается в глаза - то что бенчмарк определил Rekonq как неизвестную версию Safari.

Каие из этого можно сделать выводы? Пусть каждый решит для себя сам, я же останусь на Chromium-е и буду пристально следить и ждать, когда допилят Rekonq, на мой взгляд очень перспективный проект, достойный стать "окном в интернет" по умолчанию, как в KDE, так и на моём десктопе.
В конце приведу ссылки на браузеры и тесты:
P.S. Ну и небольшая новость, не относящаяся к теме: После долгих раздумий я таки решил посмотреть, что это за птица и завел себе аккаунт в Twitter. Как буду его использовать пока ещё не решил, может быть это будет просто хранилище ссылок на интересные статьи, может быть буду постить туда мысли, которые слишком малы для статьи в этом блоге, а может быть оба варианта сразу или что-то другое. Вообщем всем интересующимся - мой ник в Twitter @Cerkasov.
a silhouette of a person's head and shoulders, used as a default avatar

Окна в... Интернет

Сегодня все одержимы новыми технологиями, облачными вычислениями и прочими Hi-Tech забавами. И вот я решил проверить, насколько установленные в моей системе браузеры поддерживают новейшие стандарты. Итак, представляю героев этого мини-обзора:

  • Chromium 10.0.610.0
  • Firefox 3.6.12
  • Konqueror 4.5.86 (из KDE:Unstable)
  • Rekonq 0.6.55
Сразу оговорюсь, почему в этом списке нет Opera. Я очень положительно отношусь к этому норвежскому браузеру и во времена активного использования Windows он был моим основным "окном в интернет", правда потом я перешёл на Firefox, когда последний дорос до 3-й версии, затем вообще на Linux, в котором у тогдашней Opera не все было гладко, а позднее на Chromium.
Также в последнее время стараюсь по возможности избегать использования закрытых программ (RMS торжествует :)) именно в силу этих обстоятельств Opera в моей системе не установлена.
Итак, преступим к тестам! Поддержка HTML5 (максимально возможная оценка - 300):

С левого верхнего угла по часовой стрелке: Firefox, Rekonq, Konqueror (KHTML), Chromium.

И ещё одна картинка, на этот раз с Konqueror-ом в режиме использования WebKit:


Как видно, результаты Rekonq и Konqueror идентичны, что лишний раз показыает, что ни тот ни другой проект не вносят никаких изменений в qt-webkit, результаты работы которого мы и наблюдаем.
Кроме того я протестировал каждый браузер бенчмарком от Futuremark, результаты ниже:





Единственное, что бросается в глаза - то что бенчмарк определил Rekonq как неизвестную версию Safari.

Каие из этого можно сделать выводы? Пусть каждый решит для себя сам, я же останусь на Chromium-е и буду пристально следить и ждать, когда допилят Rekonq, на мой взгляд очень перспективный проект, достойный стать "окном в интернет" по умолчанию, как в KDE, так и на моём десктопе.
В конце приведу ссылки на браузеры и тесты:
P.S. Ну и небольшая новость, не относящаяся к теме: После долгих раздумий я таки решил посмотреть, что это за птица и завел себе аккаунт в Twitter. Как буду его использовать пока ещё не решил, может быть это будет просто хранилище ссылок на интересные статьи, может быть буду постить туда мысли, которые слишком малы для статьи в этом блоге, а может быть оба варианта сразу или что-то другое. Вообщем всем интересующимся - мой ник в Twitter @Cerkasov.

a silhouette of a person's head and shoulders, used as a default avatar

Введение в использование LVM

LVM - (Logical Volume Manager - менеджер логических дисков) средство гибкого управления дисковым пространством. Позволяет динамически менять размер логических разделов на лету, создавать снимки (снапшоты) и т.д.


Дисклеймер/отмазка
LVM это очень(!!!) мощный инструмент, который требует аккуратного с собой обращения. Любая самодеятельность с ним может обернуться потерей всей(!!!) информации на диске. Поэтому прежде, чем использовать LVM на рабочих машинах (и уж тем более на «боевых» серверах), следует потренироваться на кошках. Лучше всего это делать на виртуальных машинах. Начинать использовать LVM следует только (и только!!!) тогда, как почувствуете уверенность и понимание принципов его работы.

Зачем нужен LVM
Установка системы прямо на разделы диска зачастую приводит к следующей проблеме.
Нужно каким-то образом «правильно» разбить жесткий диск. Слово «правильно» стоит в кавычках, потому что «правильного» разбиения диска для всех возможных ситуаций и применений не существует. В сети есть много советов по данному поводу, но они не учитывают потребностей конкретного пользователя (в случае настольной системы) или конкретного администратора (в случае сервера). Обычно рекомендуют разделы /home, /var, /usr, какие-то еще выносить на отдельные разделы диска. Но если разбивающий ошибется в размерах этих разделов, возникает очень не хорошая ситуация - на одних разделах место подходит к концу, в то время как на остальных места еще много. Приехали! Дисковое пространство нужно переразмечать. Для этого есть много способов:
1. Тотальный backup, затем переустановка системы с переразбиением диска.
2. Переразметка с помощью parted с риском потерять данные.
3. Изначальная установка системы на LVM, который позволяет изменять размеры своих разделов прямо на работающей системе.

Терминология
LVM предусматривает три логических уровня работы с дисковым пространством:
1. Самый нижний - физические тома (physical volumes). Это собственно физические диски. Это могут быть диски целиком (/dev/sda, /dev/sdb и т.д.) или отдельные разделы (/dev/sda1, /dev/sdb5 и т.п.).
2. Группы томов - volume groups. В группы томов объединяются физические тома. Таким образом группы томов представляют собой пул дискового пространства, необходимый для следующего уровня. Группы томов могут иметь человеческие названия, говорящие администратору системы об их предназначении: system, sales, database и т.д.
3. Логические тома (logical volumes) - это аналог разделов физического диска и то, ради чего вообще существуют диски - именно на них хранятся данные. Пользователи (и процессы) системы работают только с логическими томами. Таким образом LVM создает для них всех слой абстракции, скрывая, с какими именно физическими дисками они в данный момент работают. Администратор системы может добавлять физические тома в LVM и удалять их из него (см. ниже), но процессы (и пользователи) об этом знать не будут.

Примечание по названиям утилит LVM
Следует запомнить сразу - названия утилит для работы с разными уровнями LVM совпадают. Различие только в первых двух буквах этого названия. Это:
  • pv* - для работы с физическими томами;
  • vg* - для работы с группами томов;
  • lv* - для работы с логическими томами.

Не стоит также пытаться зазубрить названия этих утилит и их ключи. Действовать стоит так:
1. Думаете, с каким уровнем LVM надо работать - физические тома, группы томов или логические тома.
2. Выбираете в зависимости от этого первые буквы названия: pv, vg или lv, соответственно.
3. Набираете их в консоли и нажимаете два раза TAB. Срабатывает автодополнение, которое показывает команды, начинающиеся с указанных букв.
4. Выбираете команду по ее названию, например, pvcreate для создания физических томов. Если вы ее запустите с ключом --help , она вам покажет все возможные ключи. За более подробной информацией стоит залезть в man конкретной команды.

По мере набора опыта работы с LVM нужда в такой последовательности отпадет. Необходимые команды и их опции запомнятся сами собой.

Создание
Я буду рассматривать создание LVM на уже установленной системе. Знание терминологии и принципов работы с ним в дальнейшем позволит найти в инсталляторе нужные пункты для создания логических томов на этапе установки системы.
Первый этап - это создание правильных разделов. Это такие разделы, которые LVM признает за свои и сможет при загрузке их корректно инициализировать. «Родной» тип разделов для LVM - 8E Linux LVM. Все, что будет дальше, не будет работать, если при создании разделов не указать приведенный корректный тип. Итак, создаем несколько разделов типа 8E с помощью любимого средства разбиения диска:

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 1 61 489951 8e Linux LVM
/dev/sdb2 62 261 1606500 5 Extended
/dev/sdb5 62 122 489951 8e Linux LVM
/dev/sdb6 123 261 1116486 8e Linux LVM

Еще раз. Пример я привожу с виртуальной машины, чего и вам советую на этапе обучения.
Я создал три раздела для работы с LVM. Сколько их создавать и какого размера решает сам администратор. Например, никто не мешает отдать целиком весь диск (/dev/sdb в данном случае) под власть LVM. В том, как это сейчас сделал я, смысла искать не стоит :). Мой пример преследует только цели демонстрации работы с LVM.

ВНИМАНИЕ! Форматировать созданные разделы НЕ надо!

Следующее, что мы должны сделать - это инициализировать созданные разделы как физические тома:

[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created
[root@localhost ~]# pvcreate /dev/sdb6
Physical volume "/dev/sdb6" successfully created

Если нет сообщений об ошибках, можно смело шагать вперед.

Следующий шаг - это создание группы томов. Делается это командой vgcreate (еще раз подчеркиваю похожесть названия утилит для работы с LVM). Самое трудное тут - это придумать имя группы томов, которое будет отражать ее назначение:

[root@localhost ~]# vgcreate fileserver /dev/sdb1 /dev/sdb5
Volume group "fileserver" successfully created

Аргументы vgcreate это название группы томов (fileserver) и те физические тома, которые мы включаем в эту группу. В данном случае я включил в нее только /dev/sdb1 /dev/sdb5, что нам и покажет утилита pvscan:

[root@localhost ~]# pvscan
PV /dev/sdb1 VG fileserver lvm2 [476.00 MiB / 476.00 MiB free]
PV /dev/sdb5 VG fileserver lvm2 [476.00 MiB / 476.00 MiB free]
...
PV /dev/sdb6 lvm2 [1.06 GiB]
...

Здесь мы видим созданные нами физические тома, их размер и к какой группе томов они относятся. Последний физический том (/dev/sdb6) у нас пока сам по себе. Для обнаружения наличия групп томов LVM (это нужно, например, если вы загрузились с Live CD, который не активирует LVM по умолчанию) есть аналогичная команда - vgscan:

[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "fileserver" using metadata type lvm2

Активировать неработающий LVM можно командой vgchange -ay:

[root@localhost ~]# vgchange -ay
0 logical volume(s) in volume group "fileserver" now active

Это все для того же примера с LiveCD. Сейчас это делать было не обязательно. Вывод приведенной команды показывает наличие отсутствия логических томов, значит сейчас самое время создать их :). Для создания логических томов испольузется команда lvcreate:

[root@localhost ~]# lvcreate -L 300M -n samba fileserver
Logical volume "samba" created

Вуаля! Вы только что создали свой первый логический том. Синтаксис команды прост до безобразия:
  • ключ -L указывает размер создаваемого тома. Поддерживаются суффиксы K (килобайты), M (мегабайты), G (гигабайты).
  • ключ -n указывает название для тома (samba в данном случае)
  • последний аргумент fileserver указывает группу томов, в которой мы создаем логический том (теоретически, групп может быть несколько).

Что важно - логические тома именуются системой следующим образом:
/dev/имя_группы_томов/имя_тома

В нашем примере это:

[root@localhost ~]# lvscan
ACTIVE '/dev/fileserver/samba' [300.00 MiB] inherit

Одно только это - хороший аргумент для использования LVM. Ведь не надо помнить что находится на /dev/sda3, /dev/sdb5 и т. п. Имена логических томов имеют вполне человеческое название (если их правильно назвать).

Еще несколько замечаний.
В группе томов можно создать столько томов, сколько будет нужно. Но не больше, чем есть дискового пространства в этой группе томов. Посмотреть, сколько его у нас есть (и самое главное сколько его еще осталось) можно командой vgdisplay:

[root@localhost ~]# vgdisplay fileserver
--- Volume group ---
VG Name fileserver
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 952.00 MB
PE Size 4.00 MB
Total PE 238
Alloc PE / Size 75 / 300.00 MB
Free PE / Size 163 / 652.00 MB
VG UUID SZLgLK-b9V8-RiZV-gH5i-N0pA-2ppf-axLqfO

Сейчас для нас тут самое ценное - это VG Size 952.00 MB (общий размер дискового пространства группы томов), Alloc PE / Size 75 / 300.00 MB (уже выделенное для создания логических томов дисковое пространство), Free PE / Size 163 / 652.00 MB (свободное и еще не распределенное дисковое пространство - наш резерв).

PE тут - это физические экстенты. Они представляют собой нечто вроде кусков дискового пространства, на которые LVM «нарезает» физические тома. Все размеры логических томов всегда содержат целое число этих физических экстентов и всегда кратны их размеру (как видно из приведенных цифр размер экстента - 4Мб).

Теперь созданный том можно отформатировать и примонтировать:

[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# mkfs.ext4 /dev/fileserver/samba
...
[root@localhost ~]# mount /dev/fileserver/samba /mnt/data/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fileserver-samba
291M 11M 266M 4% /mnt/data

Как мы видим, наш логический том готов к использованию!

Увеличение логических томов

Самая мощная возможность LVM - это то, что размеры логических томов можно менять на лету. Правда, чтобы их уменьшить, «полет» придется прервать (об этом ниже), а вот увеличение размеров томов - это практически безопасная операция.

Предположим, что нам перестало хватать места на нашем логическом томе /dev/fileserver/samba.
Последовательность действий такая:
1. Сначала нужно убедиться в наличии необходимого нам дискового пространства в группе томов. Делается это командой vgdisplay. Допустим, мы хотим добавить к нашему логическому тому еще 300 Мб. Как мы видим (см. вывод команды vgdisplay выше), у нас еще достаточно свободного места в группе.
2. Увеличиваем логический том командой lvextend:

[root@localhost ~]# lvextend -L +200M /dev/fileserver/samba
Extending logical volume samba to 500.00 MB
Logical volume samba successfully resized

Новый размер тома (ключ -L) можно указывать и в относительных единицах (как в примере), и в абсолютных.
3. Если мы теперь посмотрим на вывод команды df -h мы увидим, что пока ничего не изменилось:

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fileserver-samba
291M 11M 266M 4% /mnt/data

несмотря на то, что lvscan показывает верный размер:

[root@localhost ~]# lvscan
ACTIVE '/dev/fileserver/samba' [500.00 MB] inherit

Это произошло потому, что мы увеличили размер логического тома, но пока «забыли» сказать об этом файловой системе, расположенной «этажом выше». Давайте же изменим размер файловой системы. Делается это командной resize2fs (для ext2/ext3/ext4) или resize_reiserfs для одноименной системы:

[root@localhost ~]# resize2fs /dev/fileserver/samba
resize2fs 1.41.5 (23-Apr-2009)
Filesystem at /dev/fileserver/samba is mounted on /mnt/data; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/fileserver/samba to 512000 (1k) blocks.
The filesystem on /dev/fileserver/samba is now 512000 blocks long.

Теперь все правильно:

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fileserver-samba
485M 11M 450M 3% /mnt/data

Обратите внимание, что все показанное производилось на смонтированной файловой системе. То есть, все операции не требуют остановки серверов, приостановки работы пользователей и т. п.

Уменьшение логических томов

Уменьшение размера логического тома уже не такая тривиальная операция. Она требует специального подхода, четкой последовательности действий и размонтирования файловой системы (по крайней мере на момент написания).

ВНИМАНИЕ!
Шаги 2 и 3 очень часто путают местами, что приводит к потере данных, хранящихся на логическом томе.

Делается это все так:
1. Размонтируем файловую систему: umount /dev/fileserver/samba
2. Уменьшаем размер файловой системы. Для этого сначала сделаем проверку самой файловой системы. Утилита resize2fs не даст изменить размер до выполнения проверки. Конечно, у нее есть ключ -f, который заставит ее это сделать, но лучше перестраховаться и все-таки выполнить проверку:

[root@localhost ~]# fsck.ext4 -f /dev/fileserver/samba
e2fsck 1.41.5 (23-Apr-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/fileserver/samba: 11/127512 files (0.0% non-contiguous), 26603/512000 blocks

[root@localhost ~]# resize2fs /dev/fileserver/samba 300M
resize2fs 1.41.5 (23-Apr-2009)
Resizing the filesystem on /dev/fileserver/samba to 307200 (1k) blocks.
The filesystem on /dev/fileserver/samba is now 307200 blocks long

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

[root@localhost ~]# lvreduce -L 300M /dev/fileserver/samba
WARNING: Reducing active logical volume to 300.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce samba? [y/n]: y
Reducing logical volume samba to 300.00 MB
Logical volume samba successfully resized

В качестве размера тома (ключ -L), как и в случае с lvextend можно указывать и абсолютные и относительные единицы. Здесь мы также видим страшное предупреждение о потере данных. Несмотря на это (если вы не используете тестовые версии программ), ваши данные будут в целости и сохранности (скорее всего :) , 100% гарантии вам все равно никто не даст).
После этого монтируем файловую систему и смотрим что поменялось:

[root@localhost ~]# mount /dev/fileserver/samba /mnt/data/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fileserver-samba
291M 11M 266M 4% /mnt/data

Итак, если вы все делаете в указанной последовательности, вашим данным скорее всего ничего не грозит. Но лучше перед уменьшением тома все-таки сделать его резервную копию. Я сам многократно уменьшал физические тома без каких-либо потерь данных, но наличие резервной копии - это наличие резервной копии :).

Увеличение и уменьшение группы томов

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

Давайте вернемся к нашему примеру. Допустим нам перестало хватать места в нашей группе томов и мы ее хотим дополнить новыми физическими томами. Делается это командой vgextend:

[root@localhost ~]# vgextend fileserver /dev/sdb6
Volume group "fileserver" successfully extended
[root@localhost ~]# vgdisplay fileserver
--- Volume group ---
VG Name fileserver
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 1.99 GB
PE Size 4.00 MB
Total PE 510
Alloc PE / Size 75 / 300.00 MB
Free PE / Size 435 / 1.70 GB
VG UUID SZLgLK-b9V8-RiZV-gH5i-N0pA-2ppf-axLqfO

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

Следующая операция, которую тоже можно делать с LVM - это уменьшение группы томов. Прежде чем вывести физический том из группы - его необходимо освободить от данных. Первое, что тут следует сделать в данном случае - это убедиться, что дискового пространства, которое останется в группе, хватит для размещения этих данных. Разработчики LVM пока не владеют методами размещения данных в астральном пространстве, но работа над этим ведется :). Итак, посмотреть это можно командой pvscan:

[root@localhost ~]# pvscan
PV /dev/sdb1 VG fileserver lvm2 [476.00 MB / 176.00 MB free]
PV /dev/sdb5 VG fileserver lvm2 [476.00 MB / 476.00 MB free]
PV /dev/sdb6 VG fileserver lvm2 [1.06 GB / 1.06 GB free]

Здесь мы видим, что реально сейчас используется только первый физический том - /dev/sdb1. И еще мы тут видим один интересный аспект работы LVM: если какой-то логический том можно разместить на отдельном физическом целиком - LVM выберет именно этот путь.
Кстати, под словом free команда pvscan подразумевает не свободное от данных пространство, а пространство не выделенное в логические тома.
Итак, для освобождения физических томов от данных и размещения их на других физических томах той же группы есть команда pvmove:

[root@localhost ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 100.0%

По умолчанию данная программа требует только одного аргумента - имени освобождаемого тома. Также ей можно указать (вторым аргументом) и имя тома, на который нужно поместить данные.

Вывод команды pvscan теперь выглядит вот так:

[root@localhost ~]# pvscan
PV /dev/sdb1 VG fileserver lvm2 [476.00 MB / 476.00 MB free]
PV /dev/sdb5 VG fileserver lvm2 [476.00 MB / 476.00 MB free]
PV /dev/sdb6 VG fileserver lvm2 [1.06 GB / 788.00 MB free]

Как мы видим, теперь наш логический том «уехал» на другой раздел диска. Причем этот том смонтирован и с ним в этот момент могут работать пользователи.

Убрать освобожденный том из группы можно командой vgreduce:

[root@localhost ~]# vgreduce fileserver /dev/sdb1
Removed "/dev/sdb1" from volume group "fileserver"
[root@localhost ~]# pvscan
PV /dev/sdb5 VG fileserver lvm2 [476.00 MB / 476.00 MB free]
PV /dev/sdb6 VG fileserver lvm2 [1.06 GB / 788.00 MB free]
PV /dev/sdb1 lvm2 [478.47 MB]

Теперь мы видим, что наш физический том /dev/sdb1 «осиротел» и больше не принадлежит ни одной группе.

Снапшоты/Снимки
Следующая полезная возможность LVM - это снапшоты или снимки. Снимок - это как бы фотография дискового пространства оригинального тома. После выполнения снимка все изменения, происходящие на томе-оригинале, никак не видны на снимке. Все программы будут продолжать работать с оригинальным томом как ни в чем не бывало.
Сферы применения снапшотов могут быть самыми разнообразными. Например, резервное копирование базы данных. Если не использовать LVM - базу данных необходимо останавливать, копировать ее файлы куда-нибудь для последующего резервного копирования, а затем запускать ее заново. То есть делать это придется в нерабочее время. С LVM все проще - следует сделать снимок раздела с файлами базы данных и уже можно начинать делать резервную копию. Остановка базы данных не нужна.
Самая интересная особенность LVM при работе со снимками - это то, что снимок может занимать меньше дискового пространства, чем оригинал. Для этого используется режим Copy-on-Write, при котором реальное использование дискового пространства начинается только при изменении данных на томе-оригинале. То есть при попытке модификации файла на томе-оригинале неизмененный файл сначала сохраняется на томе-снимке, а уж затем модифицируется.

ВНИМАНИЕ! При заполнении тома-снимка до конца, происходит его уничтожение. То есть том продолжает существовать, но ни смонтировать его, ни просмотреть его содержимое (если он был смонтирован до этого) уже не получится. Эту особенность следует обязательно учитывать при задании размера тома-снимка в момент его создания.

Создание снимка делается хорошо известной командой lvcreate:

[root@localhost ~]# lvcreate -s -L 100M -n backup /dev/fileserver/samba
Logical volume "backup" created

Ключ -s указывает, что создаем мы именно снапшот, -n указывает имя создаваемого тома, а /dev/fileserver/samba показывает с какого именно тома мы делаем снимок.
Команда lvscan покажет нам, что мы создали снапшот:

[root@localhost ~]# lvscan
ACTIVE Original '/dev/fileserver/samba' [300.00 MB] inherit
ACTIVE Snapshot '/dev/fileserver/backup' [100.00 MB] inherit

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

Полезные советы для работы с LVM
1. В руководстве по администрированию RHEL встретился один замечательный совет. При использовании LVM не следует стараться распределить все имеющееся дисковое пространство в логические тома. Гораздо лучше другой путь. При распределении дискового пространства следует сделать это по своему опыту, ориентируясь на минимально необходимые потребности пользователей системы или работающих сервисов. Оставшееся в группе пространство будет «горячим» резервом, который администратор сможет добавить при нехватке места. Как было видно выше - добавление дискового простраства (увеличение логических томов) операция легкая и быстрая, в отличие от уменьшения.

Полезные источники (которые было бы неплохо посмотреть):