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

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

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

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

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

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

  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 wiki.

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

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

Существует 2 типа разделов, размер которых можно изменять: разделы LVM или разделы Logical Volume Manager, которые поддерживают изменение размера (уменьшение / увеличение) в режиме онлайн с момента создания galaxy, и стандартные разделы, используемые большинством из нас. Прямо сейчас единственной, которая имеет почти 100%-ную поддержку полного онлайн-изменения размера (сокращения / увеличения), является файловая система 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 не поддерживает сжатие в режиме онлайн. Если вы попытаетесь это сделать, вы получите следующее:

enter image description here

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

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

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

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

    enter image description here

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

В качестве дополнительной справки здесь приведена поддержка 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 через графический интерфейс администратора. Я считаю, что в настоящее время это ваш лучший выбор.