Як змінити розмір розділів за допомогою командного рядка без використання графічного інтерфейсу на сервері?


45

Я маю доступ до сервера лише через термінал, і я не можу використовувати графічні інструменти, такі як GParted!
Я хочу створити новий розділ з частини кореня (близько 768mb) для swap.

# 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

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

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

Як альтернатива створенню всього розділу, файл swap пропонує можливість змінювати його розмір під час льоту і легше видаляється взагалі. Файл Swap може бути гарячим підключенням . тобто можна додавати та видаляти без відключення / відключення ОС.

  1. Створіть файл 512 Мб /swapfile. Це буде наш файл swap.

    fallocate -l 512M /swapfile  
    

    АБО

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

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

    mkswap /swapfile
    
  4. Активуйте файл swap:

    swapon /swapfile
    
  5. Відредагуйте /etc/fstabта додайте запис для файлу swap:

    /swapfile none swap defaults 0 0
    

Більше деталей у вікні arch linux .


Я думаю, що це найпростіша та найефективніша відповідь =)! Чи є наслідки використання файлу замість розділу?
Алаа Алі

2
Трохи низька продуктивність, якщо файл фрагментований. Немає переваги в продуктивності ні для суміжного файлу swap, ні для розділу, обидва трактуються однаково.
totti

1
Я думаю, що це найкраще рішення. Оскільки ви не форматуєте, не стискаєте або не змінюєте інший розділ (таблиці), немає ризику втрати даних.
R110

28

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

  • Ви не хочете втрачати свою інформацію на кореневому розділі.
  • У вас немає фізичного доступу до жорсткого диска, щоб використовувати LiveCD. Це може стосуватися віртуального середовища або віддаленого. У випадку віртуального ви все ще можете управляти завантаженням з LiveCD, якщо встановити VM для завантаження з LiveCD. Це припущення, що VM підтримує виведення GUI на робочий стіл, звідки ви б запустили додаток Gparted, щоб легко змінити розмір. Але оскільки це менш вірогідно, я припускаю, що ви не можете.

Є два типи розділів, які ви можете змінити розмір, розділи LVM або розділи Logical Volume Manager, які підтримують розмір в Інтернеті (зменшення / зростання) з моменту створення галактики та стандартних розділів, які використовує більшість з нас. На даний момент єдиною, яка має майже 100% підтримку повного зміни розміру в Інтернеті (Зменшення / Зростання), є файлова система 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 з нуля з потрібним розміром

  • Використовуйте Ubuntu Server Live Image для зміни розміру розділу. У цьому випадку вам потрібно буде перейти на цей екран:

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

    І виберіть варіант Змінити розмір, як показано на зображенні вище. Звідти ви виберете, який буде новий розмір, оскільки звідси ви можете відключити пристрій і зменшити його, якщо хочете.

В якості додаткової допомоги тут служить підтримка файлової системи gparted http://gparted.org/features.php, яка дає дуже детальний список підтримуваних і включає, якщо вони мають повний розмір в Інтернеті. Btrfs є серед них.


Мені цікаво, чи існують інші файлові системи, які підтримують скорочення в Інтернеті? zfs чи btrfs, можливо?
Сет

Я додав посилання внизу. Ядро також повинно це підтримувати, якщо файлова система повинна змінити розмір в Інтернеті правильно.
Луїс Альварадо

У мене є сервер ubuntu на машині vmware і його розмір диска 120G. Але після використання першого рішення я отримую цю помилку: файлова система вже становить 27262720 блоків. Нічого робити!
Dr.jacky

1
Дякую @ Mr.Hyde З Workstation 10 і навіть 11. було декілька проблем. Я рекомендував би 12, а для Ubuntu я також оновлював би або останню, або нову LTS, оскільки також були деякі проблеми. У моєму випадку у мене є робоча станція VMware 12.0.1 та Ubuntu 15.10 64 біт.
Луїс Альварадо

3
З manize сторінки resize2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

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

Якщо розділ можна відключити

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

sudo umount /dev/sda4

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

sudo resize2fs /dev/sda4 196G

змінити розмір файлової системи ext4 до 196 ГБ, якщо припустити, що є достатньо місця. Тепер вам доведеться скоротити перегородку. На даний момент я вірю, що вам потрібно використовувати cfdiskдля видалення існуючого розділу та відтворити на його місці менший розділ. Потім ви також можете створити новий розділ для swap.

sudo cfdisk /dev/sda 

дасть вам текстовий gui для огляду вашої таблиці розділів. Я б порекомендував вам 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.