Вы здесь

Увеличиваем размер тома в LVM

Увеличиваем размер тома LVM

Недавно понадобилось увеличить размер тома LVM на виртуальном сервере с Debian 7 (VMWare), поэтому решил написать небольшую инструкцию.

  1. Подключаем новый жесткий диск

    Он должен определиться в системе как /dev/sdX ( X - буква диска, может быть разной), например sdb. Посмотреть можно командой

    fdisk -l

    Так как я добавил новый HDD через клиент VMWare vSphere-client, и сервер не перезагружал, то диск у меня в системе никак не определился.

    Даем контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдутся новые устройства, ядро их увидит:

    echo "- - -" >/sys/class/scsi_host/hostX/scan

    X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди (host0, host1, host2) ничего страшного, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, не произойдет.

    Обратите внимание, host'ы нумеруются с 0, а не с 1. (в dmesg ata устройства нумеруются с 1).

    после этого еще раз выполняем

    fdisk -l

    и видим новый HDD.

    Выполняем команду fdisk /dev/sdX, затем жмем n (создать новый раздел), по умолчанию будет предложено создать раздел на все доступное пространство винта, что нам и нужно. Жмем w - записать изменения и выйти. Таким образом у нас будет создан раздел /dev/sdX1.

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

  2. Инициализация HDD

    Перед использованием диска или раздела (в нашем случае только что созданный /dev/sdX2) в качестве физического тома для LVM его нужно инициализировать:

    pvcreate /dev/sdX2 

    Либо можно сразу инициализировать целый диск команда:

    pvcreate /dev/sdb

    Эта команда создает в начале указанного диска или раздела описание физического тома, включающее дескриптор группы томов.

    На сервере уже создана группа томов LVM, смотрим её название командой:

    vgextend

    Примерный вывод будет такой:

    --- Volume group ---
    VG Name <strong>vg0</strong>                                  
    System ID
    Format lvm2
    Metadata Areas 1
    Metadata Sequence No 20
    VG Access read/write
    VG Status resizable</em>

    Нам нужно имя - vg0

  3. Добавляем наш инициализированный раздел (или жесткий диск целиком) в группу томов vg0

    vgextend vg0 /dev/sdX2

    Смотрим какие логические тома (LVM) у нас есть:

    lvdisplay

    Сокращенный вывод:

     --- Logical volume ---
    LV Path                /dev/debian7/root
    LV Name                root
    VG Name                debian7
    LV UUID                jhHPG1-36ZH-azBd-a3Nr-WTDu-W1Cu-MuSF04
    LV Write Access        read/write
    LV Creation host, time debian7, 2013-07-11 20:31:51 +0600
    LV Status              available
    # open                 1
    LV Size                10.04 GiB
     
    --- Logical volume ---
    LV Path                /dev/debian7/home
    LV Name                home
    VG Name                debian7
    LV UUID                Ud0k3v-EEaB-i2W5-dJWx-Nzr6-16py-vACXO5
    LV Write Access        read/write
    LV Creation host, time debian7, 2013-07-11 20:31:52 +0600
    LV Status              available
    # open                 1
    LV Size                350.00 GiB</em>
  4. Расширяем логический том home на все доступное пространство нового диска:

    Проверяем раздел home на ошибки (не обязательный шаг, проверить получится только отмонтированный раздел):

    e2fsck -f /dev/debian7/home

    Увеличиваем размер логического тома

    lvextend -l +100%FREE /dev/debian7/home 

    Увеличиваем размер файловой системы

    resize2fs /dev/debian7/home 

Вот и все, на ext4 можно сделать все это без перезагрузки.

Также рекомендуем