Дано: ВМ с CentOS 5.8 со стандартной разбивкой диска (Не LVM)
Цель: Увеличить один из разделов с архиважной информацией.
ВАЖНО! Часть проблем можно было б избежать, если добавлять дисковое пространство ВМ не просто увеличив размер виртуального диска, а добавлением нового HDD. Так как я сразу до этого не додумался, а обратно место уже не забрать, описываю вариант с обычным изменением размера диска.
ВАЖНО! Перед началом работ не забыть сделать backup на другом/внешнем носителе: информация и /etc/fstab
Итак начнем (все команды выполняются с правами root):
Проведем инвентаризацию имеющейся ВМ:
Из этого видно, что важный раздел находится на /dev/sda6, HDD имеет размер 6442 МБ и /dev/sda6 вовсе не LVM
(именно это досадное недоразумение и послужило причиной написания статьи)
Увеличим размер HDD через менеджера ВМ и сравним результаты:
Получили, что размер /dev/sda вырос до 8589 МБ, но больше нигде никаких изменений нет, следовательно необходимо создать раздел в этой свободной области. Сразу же возникает вопрос: А, собственно, как это делать? Поразмышляв и пошустрив интернет пришел к использованию GParted Live CD (есть USB, PXE и HDD). Качаем образ, подсовываем его ВМ (у меня в vmware при перезагрузке машины надо было успеть зайти в виртуальный биос по F2 и поставить boot from cd на первое место). При загрузке Gparted в графическом режиме сразу же открывается окошко с вашим HDD и разделами на нём, выделяем раздел sda4 (он является вспомогательным для доступа к остальным разделам), жмякаем изменить размер и растягиваем до упора Есть отдельная кнопочка “применить изменения”, нажимаем её, ждем успешного завершения и выходим с перезагрузкой.
Итак, теперь у нас доступно место для создания раздела, приступим:
Далее перезагружаемся.
Итак, мы готовы начинать создавать LVM раздел, проверим еще раз:
Убедились, что /dev/sda7 является Linux LVM разделом, преобразуем раздел /dev/sda7 в физический том, чтобы LVM мог использовать его:
Создаем логическую группу томов с именем important_vg (имя можно любое) и добавляем в неё один физический том:
Теперь создаем логический раздел с именем important из всего свободного места в группе:
можем посмотреть все, что у нас получилось командами: pvdisplay, vgdisplay и lvdisplay.
Теперь мы имеем логический раздел с удобным именем (не безликое sda7), следовательно надо узнать как нам к нему теперь обращаться:
Этот вывод команды ls говорит о следующем: в папке /dev создался каталог с названием нашей группы important_vg, внутри которого создался файл important, который в свою очередь является ссылкой на /dev/mapper/important_vg-important, таким образом обращаться к разделу можно как /dev/important_vg/important, так и /dev/mapper/important_vg-important (далее используется 2 вариант)
Далее создаем файловую систему в нашем свеженьком разделе с именем very_important:
Теперь надо подменить физический раздел /very_important на раздел /dev/mapper/important_vg-important в /etc/fstab (не забудем про backup #cat /etc/fstab > /etc/fstab.copy):
Размонтируем /very_important:
и по новой примонтируем все, что прописано в fstab:
На самом деле, на реальной машине возникли ошибки, что раздел занят и не может быть отмонтирован, мне было лень искать блокирующие дескрипторы, поэтому перекрестившись:
У кого же не возникло проблем/перезагрузка прошла удачно продолжаем:
Теперь раздел готов, и мы можем передвинуть туда все данные. Для этого создадим новую папку, куда примонтируем старый раздел с Важной Информацией:
Перенесем информацию:
Попрощаемся с разделом /dev/sda6, больше мы его таким не увидим и отмонтируем его:
Теперь стоит задача создать физический том LVM, добавить его в группу и расширить логический раздел.
Преобразуем том в LVM тип так же как и /dev/sda7:
Создаем физический том:
Добавляем в группу:
Теперь самое время поговорить о команде vgdisplay:
Cur PV сообщает, что эта группа состоит из 2 физических томов, VG Size сообщает о размере группы и Free PE / Size говорит о том, что в группе есть свободное место, не занятое никаким разделом. Как раз таки его и надо присоединить к разделу /dev/mapper/important_vg-important:
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/important_vg-important
Extending logical volume important to 2,23 GB
Logical volume important successfully resized
Ну и на последок исправим файловую систему ext3 после увеличения размера раздела:
Вуаля, система готова:
Цель: Увеличить один из разделов с архиважной информацией.
ВАЖНО! Часть проблем можно было б избежать, если добавлять дисковое пространство ВМ не просто увеличив размер виртуального диска, а добавлением нового HDD. Так как я сразу до этого не додумался, а обратно место уже не забрать, описываю вариант с обычным изменением размера диска.
ВАЖНО! Перед началом работ не забыть сделать backup на другом/внешнем носителе: информация и /etc/fstab
Итак начнем (все команды выполняются с правами root):
Проведем инвентаризацию имеющейся ВМ:
[root@localhost ~]# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda2 3,4G 1,3G 1,9G 40% / /dev/sda6 236M 6,1M 218M 3% /very_important /dev/sda5 244M 6,1M 225M 3% /home /dev/sda1 99M 12M 83M 13% /boot tmpfs 06M 0 506M 0% /dev/shm
[root@localhost ~]# fdisk -l Диск /dev/sda: 6442 МБ, 6442450944 байт 255 heads, 63 sectors/track, 783 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 459 3582495 83 Linux /dev/sda3 460 720 2096482+ 82 Linux своп / Solaris /dev/sda4 721 783 506047+ 5 Расширенный /dev/sda5 721 752 257008+ 83 Linux /dev/sda6 753 783 248976 83 Linux
Из этого видно, что важный раздел находится на /dev/sda6, HDD имеет размер 6442 МБ и /dev/sda6 вовсе не LVM
(именно это досадное недоразумение и послужило причиной написания статьи)
Увеличим размер HDD через менеджера ВМ и сравним результаты:
[root@localhost ~]# fdisk -l Диск /dev/sda: 8589 МБ, 8589934592 байт 255 heads, 63 sectors/track, 1044 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 459 3582495 83 Linux /dev/sda3 460 720 2096482+ 82 Linux своп / Solaris /dev/sda4 721 783 506047+ 5 Расширенный /dev/sda5 721 752 257008+ 83 Linux /dev/sda6 753 783 248976 83 Linux
Получили, что размер /dev/sda вырос до 8589 МБ, но больше нигде никаких изменений нет, следовательно необходимо создать раздел в этой свободной области. Сразу же возникает вопрос: А, собственно, как это делать? Поразмышляв и пошустрив интернет пришел к использованию GParted Live CD (есть USB, PXE и HDD). Качаем образ, подсовываем его ВМ (у меня в vmware при перезагрузке машины надо было успеть зайти в виртуальный биос по F2 и поставить boot from cd на первое место). При загрузке Gparted в графическом режиме сразу же открывается окошко с вашим HDD и разделами на нём, выделяем раздел sda4 (он является вспомогательным для доступа к остальным разделам), жмякаем изменить размер и растягиваем до упора Есть отдельная кнопочка “применить изменения”, нажимаем её, ждем успешного завершения и выходим с перезагрузкой.
Итак, теперь у нас доступно место для создания раздела, приступим:
[root@localhost ~]# fdisk /dev/sda Количество цилиндров для этого диска установлено в 1044. С этим все в порядке, но значение больше, чем 1024, и в отдельных установках могут возникнуть проблемы с: 1) программами, запускаемым при загрузке (напр., старые версии LILO) 2) загрузкой и программами разметки из других ОС (напр., DOS FDISK, OS/2 FDISK) Команда (m для справки): n #команда “создать раздел” Первый цилиндр (784-1045, по умолчанию 784): #определяется начало раздела, ничего не вводим Используется значение по умолчанию 784 Последний цилиндр или +size или +sizeM или +sizeK (784-1045, по умолчанию 1045): #определяется конец раздела, я хочу чтоб использовалось все место, поэтому ничего не ввожу, жму enter Используется значение по умолчанию 1045 Команда (m для справки):t #Далее даем команду изменить тип раздела Номер раздела (1-7): 7 #будем переделывать /dev/sda7 (только что созданный) Шестнадцатеричный код (введите L для получения списка кодов):8e #Код LVM раздела Системный тип раздела 7 изменен на 8e (Linux LVM) Команда (m для справки): w #записываем изменения на диск Таблица разделов была изменена! Вызывается ioctl() для перечитывания таблицы разделов. ПРЕДУПРЕЖДЕНИЕ: Перечитывание таблицы разделов завершилось неудачей с ошибкой 16: Устройство или ресурс занято. Ядро все еще использует старую таблицу. Новая таблица будет использована при следующей перезагрузке.
Далее перезагружаемся.
Итак, мы готовы начинать создавать LVM раздел, проверим еще раз:
[root@localhost ~]# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda2 3,4G 1,3G 1,9G 41% / /dev/sda6 236M 6,1M 218M 3% /very_important /dev/sda5 244M 6,1M 225M 3% /home /dev/sda1 99M 12M 83M 13% /boot tmpfs 506M 0 506M 0% /dev/shm
[root@localhost ~]# fdisk -l Диск /dev/sda: 8589 МБ, 8589934592 байт 255 heads, 63 sectors/track, 1044 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 459 3582495 83 Linux /dev/sda3 460 720 2096482+ 82 Linux своп / Solaris /dev/sda4 721 1045 2605208 5 Расширенный /dev/sda5 721 752 257008+ 83 Linux /dev/sda6 753 783 248976 83 Linux /dev/sda7 784 1045 2099129 8e Linux LVM
Убедились, что /dev/sda7 является Linux LVM разделом, преобразуем раздел /dev/sda7 в физический том, чтобы LVM мог использовать его:
[root@localhost ~]# pvcreate /dev/sda7 Writing physical volume data to disk “/dev/sda7″ Physical volume “/dev/sda7″ successfully created
Создаем логическую группу томов с именем important_vg (имя можно любое) и добавляем в неё один физический том:
[root@localhost ~]# vgcreate important_vg /dev/sda7 Volume group “important_vg” successfully created
Теперь создаем логический раздел с именем important из всего свободного места в группе:
[root@localhost ~]# lvcreate -n important -l +100%FREE important_vg Logical volume “important” created
можем посмотреть все, что у нас получилось командами: pvdisplay, vgdisplay и lvdisplay.
Теперь мы имеем логический раздел с удобным именем (не безликое sda7), следовательно надо узнать как нам к нему теперь обращаться:
[root@localhost ~]# ls -l /dev/important_vg/ итого 0 lrwxrwxrwx 1 root root 34 Июн 11 15:03 important -> /dev/mapper/important_vg-important
Этот вывод команды ls говорит о следующем: в папке /dev создался каталог с названием нашей группы important_vg, внутри которого создался файл important, который в свою очередь является ссылкой на /dev/mapper/important_vg-important, таким образом обращаться к разделу можно как /dev/important_vg/important, так и /dev/mapper/important_vg-important (далее используется 2 вариант)
Далее создаем файловую систему в нашем свеженьком разделе с именем very_important:
[root@localhost ~]# mkfs.ext3 -L very_important /dev/mapper/important_vg-important mke2fs 1.39 (29-May-2006) Filesystem label=very_important OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 262144 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 28 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Теперь надо подменить физический раздел /very_important на раздел /dev/mapper/important_vg-important в /etc/fstab (не забудем про backup #cat /etc/fstab > /etc/fstab.copy):
[root@localhost ~]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1 #LABEL=/very_important /very_important ext3 defaults 1 2 /dev/mapper/important_vg-important /very_important ext3 defaults 1 2 LABEL=/home /home ext3 defaults 1 2 LABEL=/boot /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sda3 swap swap defaults 0 0
Размонтируем /very_important:
[root@localhost ~]#umount /very_important
и по новой примонтируем все, что прописано в fstab:
[root@localhost ~]#mount -a
На самом деле, на реальной машине возникли ошибки, что раздел занят и не может быть отмонтирован, мне было лень искать блокирующие дескрипторы, поэтому перекрестившись:
[root@localhost ~]#reboot
У кого же не возникло проблем/перезагрузка прошла удачно продолжаем:
[root@localhost ~]# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda2 3,4G 1,3G 1,9G 41% / /dev/sda5 244M 6,1M 225M 3% /home /dev/sda1 99M 12M 83M 13% /boot tmpfs 506M 0 506M 0% /dev/shm /dev/mapper/important_vg-important 2,0G 68M 1,9G 4% /very_important
Теперь раздел готов, и мы можем передвинуть туда все данные. Для этого создадим новую папку, куда примонтируем старый раздел с Важной Информацией:
[root@localhost ~]# mkdir /mnt/mpoint [root@localhost ~]# mount /dev/sda6 /mnt/mpoint/
Перенесем информацию:
[root@localhost ~]# cp -a /mnt/mpoint/ /very_important/
Попрощаемся с разделом /dev/sda6, больше мы его таким не увидим и отмонтируем его:
[root@localhost ~]# umount /mnt/mpoint/
Теперь стоит задача создать физический том LVM, добавить его в группу и расширить логический раздел.
Преобразуем том в LVM тип так же как и /dev/sda7:
[root@localhost ~]# fdisk /dev/sda Количество цилиндров для этого диска установлено в 1044. С этим все в порядке, но значение больше, чем 1024, и в отдельных установках могут возникнуть проблемы с: 1) программами, запускаемым при загрузке (напр., старые версии LILO) 2) загрузкой и программами разметки из других ОС (напр., DOS FDISK, OS/2 FDISK) Команда (m для справки):t Номер раздела (1-7):6 Шестнадцатеричный код (введите L для получения списка кодов):8e Системный тип раздела 6 изменен на 8e (Linux LVM) Команда (m для справки):w Таблица разделов была изменена! Вызывается ioctl() для перечитывания таблицы разделов. ПРЕДУПРЕЖДЕНИЕ: Перечитывание таблицы разделов завершилось неудачей с ошибкой 16: Устройство или ресурс занято. Ядро все еще использует старую таблицу. Новая таблица будет использована при следующей перезагрузке. [root@localhost ~]# reboot
Создаем физический том:
[root@localhost ~]# pvcreate /dev/sda6 Writing physical volume data to disk “/dev/sda6″ Physical volume “/dev/sda6″ successfully created
Добавляем в группу:
[root@localhost ~]# vgextend important_vg /dev/sda6 Volume group “important_vg” successfully extended
Теперь самое время поговорить о команде vgdisplay:
[root@localhost ~]# vgdisplay — Volume group — VG Name important_vg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 2,23 GB PE Size 4,00 MB Total PE 572 Alloc PE / Size 512 / 2,00 GB Free PE / Size 60 / 240,00 MB VG UUID 4rRD2Y-383d-0igK-BLqR-5Bd9-9ure-U9uk8G
Cur PV сообщает, что эта группа состоит из 2 физических томов, VG Size сообщает о размере группы и Free PE / Size говорит о том, что в группе есть свободное место, не занятое никаким разделом. Как раз таки его и надо присоединить к разделу /dev/mapper/important_vg-important:
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/important_vg-important
Extending logical volume important to 2,23 GB
Logical volume important successfully resized
Ну и на последок исправим файловую систему ext3 после увеличения размера раздела:
[root@localhost ~]# resize2fs /dev/mapper/important_vg-important resize2fs 1.39 (29-May-2006) Filesystem at /dev/mapper/important_vg-important is mounted on /very_important; on-line resizing required Performing an on-line resize of /dev/mapper/important_vg-important to 585728 (4k) blocks. The filesystem on /dev/mapper/important_vg-important is now 585728 blocks long.
Вуаля, система готова:
[root@localhost ~]# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda2 3,4G 1,3G 1,9G 41% / /dev/mapper/important_vg-important 2,2G 68M 2,1G 4% /very_important /dev/sda5 244M 6,1M 225M 3% /home /dev/sda1 99M 12M 83M 13% /boot tmpfs 506M 0 506M 0% /dev/shm [root@localhost ~]# fdisk -l Диск /dev/sda: 8589 МБ, 8589934592 байт 255 heads, 63 sectors/track, 1044 cylinders Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 459 3582495 83 Linux /dev/sda3 460 720 2096482+ 82 Linux своп / Solaris /dev/sda4 721 1045 2605208 5 Расширенный /dev/sda5 721 752 257008+ 83 Linux /dev/sda6 753 783 248976 8e Linux LVM /dev/sda7 784 1045 2099129 8e Linux LVM
