Тэги:
Текст:
Как и в случае с 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.
Комментарии
Лучшая статья!!! Спасибо! Мы
Опубликовано пользователем Requier (не проверено)
Лучшая статья!!! Спасибо! Мы делаем во второму варианту и не для эстетики, а для увеличения имеющегося пространства.
Действительно - все
Опубликовано пользователем FPadmin (не проверено)
Действительно - все рассказано настолько просто, что я без опыта в linux, сразу разобрался.
Спасибо!
Спасибо! делал по второму
Опубликовано пользователем kipkid (не проверено)
Спасибо! делал по второму пути эстетическому.
Все понятно.
Огромное спасибо. Моё первое
Опубликовано пользователем rus364 (не проверено)
Огромное спасибо. Моё первое знакомство с LVM. Просто спасли.
При вводе команды resize2fs
Опубликовано пользователем Владимир (не проверено)
При вводе команды resize2fs /dev/centos/root выдает ошибку:
bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock
resize2fs работает только с
Опубликовано пользователем manager
resize2fs работает только с ext2, ext3, ext4 если у вас другая файловая система, например, XFS нужен другой инструмент.
>> Плюсы данного метода
Опубликовано пользователем Michael (не проверено)
>> Плюсы данного метода весьма сомнительны. Но есть ньюанс, в системе не создается новый раздел.
Отнюдь! Для виртаулбокса как показала практика лучший вариант. Монтирование дополнительных дисков иногда встает боком.
При копировании большого количества файлов с диска на диск просто все зависло и диск виртуальный запоролся (а места на основном уже не хватает). Так что ваша статья очень помогла, спасибо.
Спасибо большое за статью.
Опубликовано пользователем Сергей (не проверено)
Спасибо большое за статью. Перерыв интернет в поисках информации, но только здесь нашел действительно рабочую инструкцию. Удивительно, что при предыдущих попытках ничего не запорол :)
если используется XFS
Опубликовано пользователем Old Druid (не проверено)
если используется XFS (например CentOS7) вместо resize2fs /dev/centos/root используем xfs_growfs /dev/centos/root
Спасибо!
Опубликовано пользователем Николай (не проверено)
Спасибо!
ОГРОМЕННОЕ СПАСИБО!!!!
Опубликовано пользователем Дмитрий (не проверено)
ОГРОМЕННОЕ СПАСИБО!!!! Пробовал разобраться по другим статьям, но оказалось всё сложнее чем я думал. По Вашей статье получилось всё и с первого раза! Уфф. Круто!
Спасибо автору. Помогли
Опубликовано пользователем Александр (не проверено)
Спасибо автору. Помогли разобраться новичку
Спасибо огромное! Автору
Опубликовано пользователем Михаил (не проверено)
Спасибо огромное! Автору уважение и низкий поклон. Сработало с первого раза на отлично!
Очень пригодилось в
Опубликовано пользователем сергей (не проверено)
Очень пригодилось в виртуальной машине, спасибо автору. Всё получилось сравнительно легко. Хотя сам процесс.... , команды не так очевидны как хотелось. Ещё раз спасибо за труд.
Я не чайник в технике и
Опубликовано пользователем Георгий (не проверено)
Я не чайник в технике и компьютерах, поставил под свои сайты сервер с Centos у себя дома. А вот в Linux я чайник. Долго изучал Вашу статью, в итоге по ней удалось "довести до сведения системы", что она переехала с винта в 200 гигов на винт 500 Гб. До Вашей статьи я был уверен, что все изменения через fdisk ведут к потерям данных, тем более удаление раздела. В целом, инструкций много в сети, но только у Вас есть маааленькое, но очень важное для меня замечание, о том, что данные не пропадут, за что Вам огромное спасибо! И ещё за то, что Вы один из немногихи илм даже единственный написали, что не надо нтчего отмонтировать, да и вообще можно изменять раздел прямо из системы, лишь перезагрузить для применения изменений.
В общем, пресного благодарен!
LVM может использовать
Опубликовано пользователем manager
LVM может использовать устройство целиком.
Например, /dev/sdb, в этом случае изменять размер раздела не требуется, так как привычной таблицы разделов на устройстве нет.
Алгоритм в этом случае такой:
1. изменяем размер диска ВМ
2. перегружаем ВМ
3. lvm pvresize /dev/sdb - появятся freePE
4. lvm lvextend ...
5. resize2fs ...
Спасибо автору! Только ваша
Опубликовано пользователем Вячеслав (не проверено)
Спасибо автору! Только ваша статья помогла увеличить размер динамического диска. Использовал второй способ.
Самая правильная статья.
Опубликовано пользователем Dupych (не проверено)
Самая правильная статья.
На тестовом стенде сделал по 2 Варианту.
Плюсы: На лету, надежно 100%.
Вариант1 мне кажется рисковым.
Не понимал как можно удалить и создать раздел не потеряв данные.
В нете наткнулся на статью, что данные не тронутся.
Кто-то писал, что не грузиться система потом.
Почему раздел не отмаунтить?
Пока не наткунлся на эту статью. Но все равно. Почему бы раздел не отмаунтить и не сделать перед этим проверку?
Можно отмонтировать и сделать
Опубликовано пользователем manager
Можно отмонтировать и сделать проверку, можно поплясать с бубном, можно еще что-нибудь сделать - как кому нравиться.
Но зачем делать лишние движения не приносящие никакой пользы?
Спасибо за статью, два дня
Опубликовано пользователем Евгений (не проверено)
Спасибо за статью, два дня пытался расширит диск ВМ по разным мануала. Дело в том, что ПО развивается и статьи устаревают.
Хочу обратить внимание. Если вы устанавливаете CentOS 7 в ВМ поколение 2 MS Hyper-V (для запуска нужно отключить "Безопасную загрузку") создается диск с таблицей GPT, не зависимо от размера. По этому для корректной работы, после увеличения диска ПЕРВЫМ запустите /sbin/parted и дайте команду "p free". Вы получите сообщение об ошибке, копия GPT находится не в конце диска, необходимо выполнить Fix. Затем предупреждение, что не все пространство /dev/sda доступно для использования , нужно по фиксить таблицу GPT. Далее по инструкции , обязательно перегрузите ВМ после fdisk и меняем resize2fs на xfs_growfs.
Спасибо. Всем удачи.
для корректной работы с GPT
Опубликовано пользователем manager
для корректной работы с GPT дисками установите утилиту gdisk
yum install gdisk
последовательность относительно текста статьи немного изменится:
sgdisk -e /dev/sda - перемещаем резервную GPT в конец диска
gdisk /dev/sda - открываем на редактирование
p - выводим список разделов
d - удаляем раздел с данными (у меня он под номером 3)
n - создаем новый увеличенный раздел
w - записываем изменения
перегружаем ОС
выполняем работу с lvm по тексту статьи
xfs_growfs /dev/sda3 - увеличиваем файловую систему
Добавка к комментарию 26.03
Опубликовано пользователем Евгений (не проверено)
Добавка к комментарию 26.03.17
Есть ВМ CentOS 7 Hyper-V поколение 2. Пытался решить проблему расширения на останавливая ВМ.
Hyper-V позволяет без проблем увеличить виртуальный диск ВМ2 на ходу. Чтобы увеличение увидел CentOS в терминале даем команду
echo 1 > /sys/class/scsi_disk/X:X:X:X/device/rescan
(у меня это 0.0.0.0 , можно проверить /sys/class/scsi_disk/). Запускаем /sbin/parted вводим P free, дважды Fix, и видим что диск увеличился. После этого fdisk ( по инструкции).
А вот потом пришлось делать reboot. Если кто знает как обойтись без перезагрузки, было бы отлично (/sbin/partprobe не помогло).
Спасибо.
После того как мы записали
Опубликовано пользователем manager
После того как мы записали измененную через fdisk таблицу разделов на диск командой w, нужно поменять также и копию в памяти - которой пользуется ядро (посмотреть ее можно командой cat /proc/partitions).
Для этого используем partprobe и затем опять смотрим что получилось через cat /proc/partitions, обычно все проходит успешно.
Если partprobe выдает ошибку:
Error: Partition(s) 2 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
можно попробовать partx -u /dev/sda, которая обновит таблицу в памяти на основе таблицы записанной на диске.
Спасибо большое,вот как раз
Опубликовано пользователем Ildar (не проверено)
Спасибо большое,вот как раз нужен был отдельный диск вне тома LVM.Первый способ. А для LVM у CentOS 7 есть утилита ssm, очень хорошая штука. Советую
Добавить комментарий.