Centos добавление диска без перезагрузки

Обновлено: 07.07.2024

Современные дистрибутивы Linux, работающие на VMware vSphere, могут динамически управлять хранением данных. Можно создавать новые файловые системы или расширять существующие без необходимости остановки и перезагрузки сервера. Приведем несколько примеров, для ОС Red Hat и CentOS 5.x версий.

Рассмотрим Linux тома, если вы решили использовать весь диск под простую файловую систему, то лучше не использовать разбиение диска, а использовать LVM, что в дальнейшем упростит возможность управления пространством. Вы конечно можете не использовать LVM для нового диска, а просто отформатировать его в ext3 например, но я не рекомендую вам делать это, LVM имеет много преимуществ, которые мы рассмотрим дальше.

Если вы собираетесь использовать утилиты разметки диска, вы должны знать следующее:

  • Чтобы избежать снижения производительности файловой системы, вам необходимо указать начала раздела в соответствии с началом устройства хранения используя команду fdisk.
  • Использование разделов усложняет процесс расширения файловой системы по сравнению с использованием обычных дисков.

Если у вас не получится сравнять начало файловой системы с началом устройства хранения, то вы потеряете до 15% производительности.

Добавление нового диска без перезагрузки

После того как новый виртуальный диск будет добавлен к виртуальной машине Linux, необходимо пересканировать новые диски. Это можно выполнить командой ниже, где host0 нужно заменить на SCSI ID добавленных дисков.

sd 0:0:1:0: Attached scsi disk sdb

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

Если вы уверены, что вам не нужен LVM, то можете просто отформатировать диск

Теперь новый том готов для монтирования.

Изменение размеров существующих дисков Linux

После того как виртуальному диску был изменен размер, нужно пересканировать изменения в Linux. Вы должны знать SCSI ID диска изменившего размер, и заменить 0:0:1:0 на свой SCSI ID в исходном примере:

sdb: detected capacity change from 8589934592 to 17179869184

Если не используется LVM, то расширение диска можно произвести

Другие способы расширения LVM тома.

Расширение тома LVM и файловой системы, без разделов (партиций)

Пересканируем физический том LVM, sdb заменяем на свой

Расширяем логический LVM том до нового полного размера группы томов(Volume Group):

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

Расширение тома LVM и файловой системы с использованием разделов (партиций)

Вы не можете изменить расширить размер физического тома LVM с разделами (партициями) без перезагрузки сервера. Но вы можете создать диск и расширить группу томов (Volume Group)

Создание нового раздела (партиции) для диска:

Command (m for help): n

Command action

p primary partition (1-4)

Partition number (1-4): 2

First cylinder (3134-3916, default 3134):

Using default value 3134

Last cylinder or +size or +sizeM or +sizeK (3134-3916, default 3916):

Using default value 3916

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

Перечитаем таблицу разделов (партиций)

Создадим новый физический том LVM для нового раздела

Добавим новый физический том LVM к существующей группе томов (Volume Group)

Расширяем логический том LVM до максимального размера группы томов (Volume Group)

У меня есть CentOS 5 VM, и я только что увеличил диск виртуальной машины с 10G до 20G, но я не могу получить fdisk, чтобы увидеть новый размер диска без перезагрузки.

Я пытался echo 1 > /sys/block/sda/device/rescan , кажется, это указывает на то, что он может видеть новый размер, но когда я захожу в fdisk, чтобы создать новый раздел, он все равно видит диск как 10G.

В зависимости от вашей платформы виртуализации и способа хранения это может быть или не быть возможным. Детали имеют значение. Какой тип виртуального диска вы добавили: IDE или SCSI?

Вам необходимо выполнить команду rescan для вашей шины SCSI.

В VMware контроллер SCSI может быть найден в каком-то необычном месте. Сначала найдите это:

Для меня это вернулось

Затем просто выполните команду повторного сканирования

Это должно помочь. :)

Мне пришлось столкнуться с аналогичной проблемой на сервере SLES 11. LVM был собран с необработанными дисками, работающими на VMWare ESXi

Через некоторое время мне нужно было увеличить размер LVM, но я не добавил дополнительный диск, а затем pvcreate + vgextend, как я делал ранее, но я решил увеличить размер существующего диска (в данном случае / dev / sdd) ). После увеличения VMWare я выполнил

Но pvdisplay все еще показывал «старый» размер диска. Надо было сделать

чтобы ядро ​​узнало новый размер диска / dev / sdd

echo 1 > /sys/block/sda/device/rescan работал для меня на CentOS -bash: / sys / module / scsi_mod / parameters / scan: В доступе отказано, имя пользователя - root

после первого выполнения echo 1 > /sys/block/sda/device/rescan

pvresize /dev/sda сделал трюк для меня

Если таблица разделов используется напрямую (например, вы смонтировали файловую систему, используя базовый раздел), ядро ​​будет продолжать использовать старую таблицу разделов, пока это не перестанет действовать. Кто-то однажды сказал мне, что если вы используете LVM, вы можете обойти это .

Обновление: Centos 6 - невозможно обновить таблицу разделов активного диска в режиме онлайн, Centos 7 - возможно расширить последний раздел с помощью growpart или создать новый раздел с помощью fdisk и сделать его видимым без перезагрузки с помощью partprobe . Вероятно, то же самое на Ubuntu / Debian. - В какой-то момент после 2.6 ядро ​​начало поддерживать онлайн-перечитывание таблицы разделов активного диска. Так как вопрос к Centos 5, я бы сказал, нет.

Если вы используете разделы, то вы должны перезагрузиться, чтобы использовать новое пространство. Я не нашел способ избежать этого. Если кто-то дал мне знать.

Однако перезагрузку следует выполнять после расширения последнего раздела на диске или добавления нового раздела. Нет смысла перезагружаться раньше.

Первое, что вы должны заметить после повторного сканирования, - это увеличение размера диска в fdisk и в lsblk. Если вы этого не видите, вы должны поиграть с этими командами echo 1 и echo - - -.

После того, как вы увидите больше места, вы можете расширить / добавить раздел, затем перезагрузиться, расширить vg, расширить lv и fs.

Если вы хотите избежать перезагрузки, вы должны назначить сырой диск sda / b / c группе томов, не разбивая его на sda1 / 2/3. Тогда нет необходимости в перезагрузке.

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

Если вы выполните команду lsblk, вы увидите разделы или lvms, в зависимости от того, используете ли вы разделы или lvm, у вас могут быть все части, если вы не используете lvm, или все lvms, если вы не используете разделы. Вот один пример:

За 2020 год из пары десятков тысяч посетителей, набралось всего пару десятков перечислений от 50 до 300 рублей.

Пустяк в денежном выражении, но большая ценность для автора. Посмотрим что год грядущий нам готовит ))

Сумма абсолютно не важна - главное участие.

Текст:

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

Цель статьи дать общую картину по существующим путям решения.

Начнем с классики, монтирование устройства как каталога. Добавляем в системный блок или виртуальную машину жесткий диск. Если CentOS его распознал в /dev появится соответствующее устройство, например, /dev/sdb.

Вводим команду fdisk -c -u /dev/sdb, ключ -c отключает режим совместимости с MSDOS, -u указывает использовать в качестве единицы измерения сектор. Для создания раздела вводим команду n и отвечаем на вопросы. Командой w записываем изменения на диск и выходим из fdisk'а через q.

На разделе /dev/sdb1 создаем файловую систему mkfs.ext4 -L DATA1 /dev/sdb1. Для удобства присваиваем метку DATA1. Создаем каталог mkdir /data_folder.

Теперь осталось примонтировать раздел к каталогу mount /dev/sdb1 /data_folder. Монтирование сохраниться до перезагрузки системы.

Чтобы раздел монтировался автоматически при загрузке необходимо добавить строку в файл /etc/fstab. Строка представляет набор параметров разделеных пробелами или табуляцией:

LABEL=метка_диска точка_монтирования файловая_система опции дампирование проверка

В нашем случае добаляем строку:

LABEL=DATA1 /data_folder ext4 defaults 0 0

Плюс данного способа - однозначность расположения данных. Все что записано в каталог /data_folder попадет на известный нам жесткий диск. Кроме того этот метод работает на любых сборках Linux.

Путь второй, изменение размера раздела. Этот метод применим более к виртуальным машинам, для которых изменение размера жеского диска дело вполне естественное. Но может использоваться и в случае объединения разделов на физическом устройстве.

Допустим CentOS установлен на виртуальной машине с диском 10 Гб. Останавливаем ВМ и увеличиваем жесткий диск до 15 Гб. Физический размер диска увеличился, однако, для операционной системы ничего не изменилось, она продолжает использовать старые данные из таблицы разделов и файловой системы.

Перед нами две основные задачи: изменение размеров раздела и изменение данных файловой системы. Обе эти задачи решаются утилитой parted. Но не в нашем случае. CentOS при установке по умолчанию использует систему виртуализации дисков Logical Volume Manager (LVM), с которой parted работать не умеет.

Будем делать вручную, используя fdisk удалим существующий раздел и создадим на его месте новый, требуемого размера. Оговорюсь, для этой операции не надо размонтировать раздел, не надо загружаться с rescue образа, данные файловой системы также не будут утеряны. Мы просто перепишем одну строку в таблице разделов, после перезагрузки CentOS примет ее к сведению.

Запускаем fdisk -c -u /dev/sda, вводим команду p. По умолчанию CentOS при установке создал два раздела /dev/sda1 и /dev/sda2 первый раздел загрузочный, второй используется LVM, на нем находятся все файла операционной системы. С ним мы и будем работать. Обратим внимание, что раздел (в моем случае) заканчивается сектором 20969471, а значение total sectors = 31456656. Эта разница, следствие изменения размера жесткого диска.

Запишем стартовый сектор раздела, например, 1026048 . Командой d удаляем раздел sda2 (порядковый номер 2). Создаем новый раздел, командой n, пусть будет primary с порядковым номером 2. Задаем сектора начальный = 1026048 , конечный = 31456655. Командой t меняем тип раздела на 8E (Linux LVM). Записываем сделанные изменения на диск командой w. Перегружаем ВМ.

Раздел расширен и использует добавленное нами место на жестком диске. Следующий шаг уведомить об этих изменениях LVM. Выполним команду lvm pvresize /dev/sda2. Результаты можно увидеть через lvm pvdisplay. Обратим внимание, что появились свободные блоки PE (physical exent), отметим для себя их количество 1280.

По умолчанию (для CentOS 6.2) создается два логических LVM тома (logical volume) для файла подкачки /dev/VolGroup/lv_swap и для файлов операционной системы /dev/VolGroup/lv_root. Просмотреть их можно командой lvm lvdisplay. Укажем LVM увеличить том lv_root за счет появившихся свободных PE блоков: lvm lvextend -l +1280 /dev/VolGroup/lv_root.

Посмотрите произошедшие изменения через команды pvdisplay и lvdisplay.

Последний штрих - изменение параметров файловой системы. Команда resize2fs /dev/VolGroup/lv_root.

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

Более правильным будет третий путь - использование возможностей LVM. А именно, создание нового раздела и добавление в LVM группу. Для создания раздела можно добавить в систему новый жесткий диск. А можно увеличить диск в ВМ и создать раздел на появившемся свободном месте.

Допустим, мы добавили в систему новый жесткий диск, устройство /dev/sdc. Размечаем устройство для использования LVM pvcreate /dev/sdc. Добавляем раздел в существующую LVM группу vgextend VolGroup /dev/sdc.

Смотрим данные по группе vgdisplay, видим свободные блоки PE, например FreePE = 5119. Смотрим данные по существующему логическому LVM разделу lvdisplay /dev/VolGroup/lv_root, например, CurrentLE = 1217. Вычисляем новый размер логического раздела 5119+1217=6336.

Расширяем логический раздел lvresize -l 6336 /dev/VolGroup//lv_root. Изменяем размер файловой системы находящейся на разделе resize2fs /dev/VolGroup/lv_root.

Комментарии

Лучшая статья. Спасибо! Мы

Не надо бояться LVM - это реально удобно! Допустим, корневой раздел LVM форматирован в ext3. Рассмотрим пример увеличения корневого раздела на лету путем добавления нового физического диска (его раздела) в логический том LVM:

Добавляем новый диск (/dev/sdd) и создаем на нем раздел:

Диск /dev/sdd: 28.9 ГБ, 28991029248 байт
255 heads, 63 sectors/track, 3524 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт На диске /dev/sdd отсутствует верная таблица разделов Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый цилиндр (1-3524, по умолчанию 1):
Используется значение по умолчанию 1
Последний цилиндр или +size или +sizeM или +sizeK (1-3524, по умолчанию 3524):
Используется значение по умолчанию 3524 Диск /dev/sdd: 28.9 ГБ, 28991029248 байт
255 heads, 63 sectors/track, 3524 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система
/dev/sdd1 1 3524 28306498+ 83 Linux

Команда (m для справки): w
Таблица разделов была изменена!

Если ваш диск больше 2 Тб, то вместо утилиты fdisk необходимо использовать утилиту GNU Parted и ставить метку GPT (применить разбиение GUID Partition Table), поскольку fdisk не поддерживает GPT, а значит, не в ней создать раздел больше 2 Тб:

(parted) mkpart primary ext3 1 -1
(parted) set 1 lvm on
(parted) print Модель: ATA ST32000641AS (scsi)
Диск /dev/sdd: 2000GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt

Новый раздел на новом диске создан . Инициализируем раздел в качестве физического тома в LVM и добавляем его в группу VolGroup00:

Расширяем логический том LogVol00 на 27G

Ага, немного не хватило экстентов, тогда увеличиваем на 26G

Чтобы не подгадывать размер, на какой увеличить логический том, а использовать все доступное пространство нового диска, команду расширения тома можно выполнить с такими ключами:

Теперь расширение прошло успешно. Ресайзим корень на лету в работающей системе (обратите внимание, не всякий тип файловой системы поддерживает расширение раздела без потери информации)!

Читайте также: