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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.