Как изменить размер разделов с помощью командной строки без использования графического интерфейса на сервере?

У меня есть доступ к серверу только через терминал, и я не могу использовать графические инструменты, такие как GParted!
Я хочу создать новый раздел из части корня (около 768 МБ) для подкачки.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

3 ответа

Решение

Вы не можете сжать / отредактировать раздел, если какой-либо раздел на устройстве хранения смонтирован. Таким образом, чтобы размонтировать и отредактировать корневую файловую систему, ОС необходимо отключить. Затем загрузитесь в работающую систему и отредактируйте раздел, как описано в других ответах.

Альтернативное решение: файл подкачки

В качестве альтернативы созданию целого раздела файл подкачки предлагает возможность изменять его размер на лету, и его проще всего удалить. Файл подкачки может быть горячим подключением. т.е. можно добавлять и удалять без размонтирования / выключения ОС.

  1. Создайте файл 512 МБ с именем /swapfile, Это будет наш файл подкачки.

    fallocate -l 512M /swapfile  
    

    ИЛИ ЖЕ

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Установите правильные разрешения (потому что общедоступный файл подкачки является огромной локальной уязвимостью):

    chmod 600 /swapfile
    
  3. После создания файла правильного размера отформатируйте его для замены:

    mkswap /swapfile
    
  4. Активируйте файл подкачки:

    swapon /swapfile
    
  5. редактировать /etc/fstab и добавьте запись для файла подкачки:

    /swapfile none swap defaults 0 0
    

Более подробная информация на Arch Linux вики.

Прежде всего, важно знать, что вы не можете изменить размер, чтобы сжать корневой раздел, если вы его используете (это называется онлайн-сжатием). Вы можете только вырастить это онлайн. Это поддерживается resize2fs команда. Я приму следующее:

  • Вы не хотите потерять свою информацию в корневом разделе.
  • У вас нет физического доступа к жесткому диску, чтобы использовать LiveCD. Это может относиться к виртуальной или удаленной среде. В случае виртуального вы все равно можете загрузиться с LiveCD, если вы установите виртуальную машину для загрузки с LiveCD. Это предполагает, что виртуальная машина поддерживает вывод графического интерфейса рабочего стола, из которого вы могли бы легко запустить приложение Gparted. Но так как это менее вероятно, я предполагаю, что вы не можете.

Существует 2 типа разделов, размер которых вы можете изменить, разделы LVM или разделы Logical Volume Manager, которые поддерживают изменение размера онлайн (уменьшение / увеличение) с момента создания галактики и стандартных разделов, которые большинство из нас использует. На данный момент единственной, которая имеет почти 100% поддержку полного онлайн-изменения размера (Shrink/Grow), является файловая система btrfs (которая все еще находится в разработке). Я объясню, как сделать нормальные разделы, которые большинство из нас использует в файловой системе ext4.

Изменение размера (увеличение) раздела

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

sudo resize2fs /dev/sda1

При условии, что у вас уже есть пустое пространство, готовое для объединения. После этого я рекомендую перезагрузку, чтобы изменения вступили в силу правильно. Приведенная выше команда изменяет размер до максимально допустимого. Если вы хотите изменить размер до определенного размера, просто добавьте размер в конце:

sudo resize2fs /dev/sda1 25G

Обратите внимание, что если вы хотите указать 25,4 ГБ, вы не можете использовать ".". вам нужно будет перейти на одну единицу измерения. В этом случае от ГБ до МБ, так это будет выглядеть так:

sudo resize2fs /dev/sda1 25400M

Таким образом, у вас будет раздел 25.4 G

Изменение размера (сокращение) раздела

Сокращение раздела - это двухэтапный процесс, который включает в себя:

  • Уменьшение размера файловой системы на необходимое количество.
  • Уменьшение размера базового блочного устройства в соответствии с размером файловой системы.

Прежде чем уменьшить емкость файловой системы, необходимо уменьшить размер блочного устройства (которое может быть разделом или логическим томом). Поскольку это недоступно ни для одной файловой системы ext*, вы не сможете уменьшить ее с 20 ГБ до 19,5 ГБ для создания подкачки объемом 500 МБ.

Даже Ext4 не поддерживает онлайн-сжатие. Если вы попытаетесь это сделать, вы получите следующее:

введите описание изображения здесь

Насколько я знаю, ваша единственная ставка - либо:

  • Установите другую версию Ubuntu на том же сервере (в другом разделе), которую затем можно использовать для сжатия корневого раздела исходного сервера Ubuntu.

  • Установите сервер Ubuntu с нуля того размера, который вам действительно нужен

  • Используйте Live Image Ubuntu Server для изменения размера раздела. В этом случае вам нужно перейти на этот экран:

    введите описание изображения здесь

    И выберите опцию Resize, как показано на рисунке выше. Оттуда вы выберете новый размер, так как отсюда вы можете размонтировать устройство и уменьшить его, если хотите.

В качестве дополнительной помощи здесь приводится поддержка gparted файловой системы http://gparted.org/features.php которая дает очень подробный список поддерживаемых и включает в себя, если они имеют полное онлайн-изменение размера. Btrfs среди них.

Ответ зависит от того, можете ли вы размонтировать раздел для сжатия или нет. В вашем случае вы, вероятно, не можете размонтировать раздел. В Linux (UNIX/MAC OS) монтирование раздела относится к использованию файловой системы и ее сопоставлению с точкой монтирования (в вашем случае /). Размонтирование означает, что вы прекратите использование файловой системы и удалите сопоставление с точкой монтирования. Вы не можете размонтировать файловую систему, содержащую вашу работающую ОС.

Если раздел можно отключить

Предположим, вы хотите сжать раздел ext4 размером 200 ГБ на /dev/sda4 установлен на /data, В настоящее время он содержит музыку и фильмы или аналогичные, поэтому вы можете временно отключить его. Вы хотите создать 4 ГБ подкачки.

sudo umount /dev/sda4

размонтировать раздел.

sudo resize2fs /dev/sda4 196G

изменить размер файловой системы ext4 до 196 ГБ, предполагая, что места достаточно. Теперь вам нужно сжать раздел. Я в настоящее время считаю, что вам нужно использовать cfdisk удалить существующий раздел и воссоздать меньший раздел на его месте. Затем вы также можете создать новый раздел для обмена.

sudo cfdisk /dev/sda 

даст вам текстовый графический интерфейс для проверки вашей таблицы разделов. Я бы порекомендовал вам print разделите таблицу на файл или экран в этот момент и запишите текущую конфигурацию в качестве резервной копии. Затем вы можете выбрать /dev/sda4 а также delete раздел. На его месте free space будет отображаться. использование new создать новый раздел с 196 ГБ на его месте и установить тип ext4. Затем перейдите на свободное место и создайте раздел подкачки объемом 4 ГБ с типом swap, Примечание. Я не проверял эти команды, так как не могу поиграть с / в данный момент.

Если раздел не может быть размонтирован

Вы не можете сжать смонтированный раздел ext3/4 (см. Справочную страницу resize2fs). Как вы работаете с ОС от /, вы не можете размонтировать /, Это означает, что вы должны загрузить другую ОС (например, с USB-ключа), чтобы внести изменения.

В вашем случае это удаленный сервер (скорее всего, на KVM), поэтому вы не сможете загрузиться с USB/ образа работающей ОС. Могут быть и другие способы изменить разделение у вашего провайдера vServer через графический интерфейс администратора. Я считаю, что это ваша лучшая ставка в настоящее время.

Другие вопросы по тегам