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

45

У меня есть доступ к серверу только через терминал, и я не могу использовать графические инструменты, такие как 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
Хамид ФЗМ
источник

Ответы:

37

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

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

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

  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 вики .

Тотти
источник
Я думаю, что это самый простой и эффективный ответ =)! Есть ли смысл в использовании файла вместо раздела?
Алаа Али
2
Немного низкая производительность, если файл фрагментирован. Нет никакого преимущества в производительности для смежного файла подкачки или раздела, оба обрабатываются одинаково.
Тоттил
1
Я думаю, что это лучшее решение. Так как вы не форматируете, не уменьшаете и не изменяете иным образом раздел (таблицы), риск потери данных отсутствует.
R110
28

Прежде всего, важно знать, что вы не можете изменить размер, чтобы сжать корневой раздел, если вы его используете (это называется онлайн-сжатием). Вы можете только вырастить это онлайн. Это поддерживается 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.4G

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

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

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

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

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

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

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

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

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

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

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

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

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

Луис Альварадо
источник
Мне любопытно, есть ли другие файловые системы, которые поддерживают сжатие онлайн? ZFS или BTRFS может быть?
Сет
Я добавил ссылку внизу. Ядро также должно поддерживать это, если файловая система должна корректно изменять размер онлайн.
Луис Альварадо
У меня есть сервер Ubuntu на машине VMware и его размер диска составляет 120G. Но после использования первого решения, я получаю эту ошибку: файловая система уже 27262720 блоков. Нечего делать!
Dr.jacky
1
Спасибо, мистер Хайд. Было несколько проблем с рабочей станцией 10 и даже 11. Я бы порекомендовал 12, а для Ubuntu я бы также обновился до последней или новой LTS, потому что были также некоторые проблемы. В моем случае у меня есть рабочая станция VMware 12.0.1 и 64-битная Ubuntu 15.10.
Луис Альварадо
4
С man- The resize2fs program does not manipulate the size of partitions.
страницы
6

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

noleti
источник