Монитор системы в Ubuntu 9.10 показал наличие проблемы с одним диском (/dev/sdb), который включён в LVM.Пришлось исключить этот диск из LVM вот таким образом, все операции опасны и выполняются под root.
1. Сначала нужно определить на сколько следует уменьшить LVM
2. Затем преобразовать файловую систему EXT3 в EXT2, и умёньшить
3. Удалить физический том и извлечь его из VG
4. Расширить LVM и EXT2 до предела
5. Восстановить EXT3Обязательно необходимо соблюдать последовательность выполнения операций
pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 mediavg lvm2 a- 6,24G 0
/dev/sda6 mediavg lvm2 a- 48,30G 0
/dev/sdb2 linux lvm2 a- 32,49G 5,86G
/dev/sdb5 media lvm2 a- 200,20G 0
/dev/sdc1 media lvm2 a- 596,17G 0Видно, что LVM на media нужно уменьшить на более чем 200Gb, иначе не удасться извлечь /dev/sdb5
vgs
VG #PV #LV #SN Attr VSize VFree
linux 1 2 0 wz--n- 32,49G 5,86G
media 2 1 0 wz--n- 796,36G 0
mediavg 2 1 0 wz--n- 54,54G 0lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
ubuntu linux -wi-a- 6,63G
var linux -wi-ao 20,00G
media4 media -wi-a- 796,36G
home mediavg -wi-ao 54,54GПервым делам нужно преобразовать EXT3 в EXT2 иначе resize2fs не сможет её правильно уменьшить - удаляем журнал транзакций
tune2fs -O ^has_journal /dev/media/media4
fsck -n /dev/media/media4Уменьшаем EXT2, эта операция длительная, требует отмонтирования и для неё необходимо достаточно свободного места
resize2fs /dev/media/media4 590G
Если не удаётся отмонтировать то можно найти программу которая использует этот раздел вот так
lsof -n|grep media
После уменьшения EXT2 необходима длительная проверка с помощью
e2fsck -f /dev/media/media4
Затем уменьшаем LVM
lvreduce -L-205G /dev/media/media4
На предупреждение приходится отвечать Y
lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
ubuntu linux -wi-a- 6,63G
var linux -wi-ao 20,00G
media4 media -wi-a- 591,36G
home mediavg -wi-ao 54,54Gvgs
VG #PV #LV #SN Attr VSize VFree
linux 1 2 0 wz--n- 32,49G 5,86G
media 2 1 0 wz--n- 796,36G 205,00G
mediavg 2 1 0 wz--n- 54,54G 0Выводим его из vg
vgreduce media /dev/sdb5
и если необходимо выводим физический раздел
pvmove /dev/sdb5
В случае, если EXT2 не уместилась на одном PV эти команды не сработают и придётся ещё раз уменьшать EXT2
Теперь осталось расширить LVM и EXT2 и конвертировать в EXT3
lvextend -l +100%FREE /dev/media/media4
resize2fs /dev/media/media4
tune2fs -j /dev/media/media4URL: http://breys.ru/blog/464.html
Обсуждается: http://www.opennet.me/tips/info/2228.shtml
По-моему, resize2fs умеет правильно уменьшать ext3, без переконвертирования в ext2. Сам уменьшал недавно раздел на CentOS 5.3
я пробовал, но затем ПОЧТИ всегда после уменьшения fsck выявлял миллион ошибок и складывал их в lost-found, но если вернуть LVM в до прежнего размера fsck всё восстанавливал
А не целесообразней все же сначала прогнать fsck прежде чем журнал выносить?
Не, resize2fs все равно потребует сначала выполнить fsck перед запуском, так что получим 2 запуска fsck.
Сначала выполняется pvmove, только потом vgreduce. А иначе с большой вероятностью умирает весь /dev/media/media4.
>Сначала выполняется pvmove, только потом vgreduce. А иначе с большой вероятностью умирает
>весь /dev/media/media4.а можно подробнее?
не понимаю каким образом vg и собсвенно lvm будет работать без pv
>lsof -n|grep mediaman fuser
По моему, слишком много лишних телодвижений, LVM тем и хороша, что позволяет переносить экстенты между физическими дисками без каких либо издевательств над файловой системой. Почему нельзя было просто добавить в систему другой диск, добавить его через pvcreate, затем перенести на него экстенты через pvmove и потом сделать pvreduce на сбойный диск после чего спокойно удалять последний из системы? А у вас как-то все наоборот да еще и манипуляции с ФС требуются.
прошу прощения, удалять диск надо командой vgreduce (не pvreduce)
>По моему, слишком много лишних телодвижений, LVM тем и хороша, что позволяет
>переносить экстенты между физическими дисками без каких либо издевательств над файловой
>системой. Почему нельзя было просто добавить в систему другой диск, добавить
>его через pvcreate, затем перенести на него экстенты через pvmove и
>потом сделать pvreduce на сбойный диск после чего спокойно удалять последний
>из системы? А у вас как-то все наоборот да еще и
>манипуляции с ФС требуются.буду рад почитать подробности
самому пришлось по быстрому выводить сбойный диск, эстетничать было не когда
У меня была похожая ситуация, диск в lvm посыпался и надо было его срочно заменять. Правда диск у меня был всего один, и vg была одна, но это не принципиально. Система Centos 5.3, но это тоже не принципиально. В вашем случае я бы сделал так. 1. Добавил новый диск, объемом не меньше sdb. Пусть, например, он в системе определится как sdd. 2. Далее fdisk создал бы там 2 раздела типа 8e (lvm) размером соответсвенно не меньше sdb2 и sdb5. (Пусть будет sdd1 и sdd2) 3. Инициализируем физические тома: pvcreate /dev/sdd1 /dev/sdd2. 4. Добавляем физические тома в группы: vgextend linux /dev/sdd1, vgextend media /dev/sdd2. 5.Переносим экстенты со старых физических томов на новые: pvmove /dev/sdb2 /dev/sdd1, pvmove /dev/sdb5 /sdd2. С помощью pvscan убеждаемся что sdb2, sdb5 пусты. 6. Удаляем ненужные физические тома из групп linux и media: vgreduce linux /dev/sdb2, vgreduce media /dev/sdb5. Собственно это все. Выключаем комп и вынимаем сбойный диск, потом включаем и радуемся. Вот и все. Красиво и изящно.
вот это
> 4. Добавляем физические тома в группы: vgextend linux /dev/sdd1, vgextend media /dev/sdd2.
> 5.Переносим экстенты со старых физических томов на новые: pvmove /dev/sdb2 /dev/sdd1, pvmove /dev/sdb5 /sdd2. С помощью pvscan убеждаемся что sdb2, sdb5 пусты.интересно, но добавит не откуда было, там и так очень много данных пришлось расскидать в сети, места не было у ни кого
ну если купить диск на 250 гигабайт совсем было невозможно, то тогда согласен.
system-config-lvm не проще?
Полтора года прошло с тех пор, а дистрибутивный system-config-lvm в убунте до сих пор ничего подобного не может.