Гид по технологиям

Как изменить размер ext3-раздела без потери данных

• 11 min read • Linux • Обновлено 25 Nov 2025
Изменение размера ext3-раздела без потери данных
Изменение размера ext3-раздела без потери данных

Кратко: пошаговое руководство по уменьшению и увеличению ext3-раздела без потери данных, с примерами команд, проверками и планом отката. Подойдёт для дисков без LVM; для удалённых серверов нужен rescue/Live-CD. Всегда сохраняйте резервную копию перед операцией.

К чему это руководство

Это руководство показывает, как уменьшить (shrink) и увеличить (grow) существующий ext3-раздел и как объединять два ext3-раздела на диске без LVM. Показанные шаги были опробованы на тестовой системе и описаны подробно: от проверки файловой системы и удаления журнала до пересоздания раздела и восстановления ext3-журнала. Внимание: при неправильных расчётах при уменьшении раздела возможно потеря данных — обязательно создайте резервную копию.

Важно: в терминалах и в примерах я запускаю команды от root. На Ubuntu можно стать root так:

sudo su

Определения в одну строку

  • ext2/3/4: семейство файловых систем Linux; ext3 — ext2 с журналом.
  • журнал (journal): структура ext3 для безопасного восстановления после сбоя.
  • resize2fs: утилита изменения размера файловой системы ext2/3 (после отключения журнала для ext3).

Применимость и ограничения

Кто может использовать это руководство:

  • администраторы локальных (физически доступных) серверов;
  • пользователи домашних и тестовых машин без LVM;
  • инженеры, имеющие доступ к rescue-системе для удалённых серверов.

Когда это НЕ подойдёт:

  • разделы на RAID (см. раздел «Когда это не сработает»);
  • зашифрованные разделы (LUKS) без расшифровки и корректной последовательности действий;
  • если система полностью на этом разделе и у вас нет Live-CD / rescue-сессии.

Важные предупреждения

Important: перед любыми изменениями создайте резервную копию (полный образ или хотя бы копию важных данных). При уменьшении раздела всегда оставляйте запас по объёму — если указать размер меньше, чем занято, данные будут потеряны.

Note: все команды в примерах сохраняются в неизменном виде. Переименуйте /dev/sda1 на свой целевой раздел при выполнении действий.


Содержание

  • Предварительная заметка
  • Уменьшение ext3-раздела (пошагово)
  • Как рассчитать новый размер — методика и примеры
  • Восстановление журнала и проверка
  • Расширение ext3-раздела (общая заметка)
  • Альтернативные подходы и инструменты
  • Когда это не сработает — частые ограничения
  • Проверки, критерии приёмки и тесты
  • План действий (SOP) и откат
  • Таблица команд (cheat sheet)
  • Контрольный список ролей
  • Ментальные модели и советы
  • Краткое глоссарий
  • Итог

Предварительная заметка

В примере оригинального руководства использовалась тестовая система Ubuntu (в примерах — Knoppix Live-CD). Предположим, целевой раздел — /dev/sda1. Если у вас другой путь — замените его в командах (например, /dev/hda5, /dev/sdb3).

Если раздел не содержит системных файлов (например, это /home или бэкап-раздел), всё можно выполнять с запущенной системой. Если раздел содержит корень / или другие системные каталоги — потребуется Live-CD / rescue-система с утилитами: fdisk, umount, fsck, tune2fs, e2fsck, resize2fs.

Если вы работаете с удалённой машиной без физического доступа, используйте rescue-режим от провайдера или загрузочный ISO через виртуальный KVM.


Уменьшение ext3-раздела — подробный пример

Ниже приведены шаги, которые были выполнены на тестовой системе. Следуйте последовательности, внимательно проверяя результаты каждой команды.

  1. Соберите исходные данные о разделе и использовании диска.
df

Пример вывода (оригинал):

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              9859036   4234908   5123304  46% /
varrun                   95480       132     95348   1% /var/run
varlock                  95480         0     95480   0% /var/lock
udev                     10240        52     10188   1% /dev
devshm                   95480         0     95480   0% /dev/shm
lrm                      95480     17580     77900  19% /lib/modules/2.6.17-10-generic/volatile

df -B 4k

Этот вызов показывает блоки по 4К, что удобно для дальнейших расчётов:

Filesystem           4K-blocks      Used Available Use% Mounted on  
/dev/sda1              2464759   1058727   1280826  46% /  
...
  1. Выполните проверку файловой системы в режиме только чтения (без исправлений):
fsck -n /dev/sda1

Ожидается вывод типа:

fsck 1.38 (30-Jun-2005)
e2fsck 1.38 (30-Jun-2005)
/dev/sda1: clean, 159037/1254176 files, 1095299/2504124 blocks

  1. Удалите журнал ext3, чтобы превратить раздел во временный ext2 — resize2fs не поддерживает изменение размеров ext3 с активным журналом:
tune2fs -O ^has_journal /dev/sda1
  1. Запустите принудительную проверку e2fsck для корректировки метаданных:
e2fsck -f /dev/sda1

Ожидаемый проход проверки (пример):

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: 164178/1254176 files (0.6% non-contiguous), 1051617/2504124 blocks

  1. Измените размер файловой системы с помощью resize2fs. На этом этапе вы решаете, насколько меньше будет раздел. В примере занято 4.1ГБ, поэтому безопасно уменьшить до ~6ГБ.
resize2fs /dev/sda1 6000M

Вывод даст число блоков и размер блока, например:

resize2fs 1.38 (30-Jun-2005)
Resizing the filesystem on /dev/sda1 to 1536000 (4k) blocks.
The filesystem on /dev/sda1 is now 1536000 blocks long.

Запомните число блоков (1536000) и размер блока (4k) — они понадобятся для расчёта размера нового раздела.

  1. Пересоздайте раздел в таблице разделов с уменьшенным размером. Для этого удалите старый /dev/sda1 и создайте новый с тем же началом, но меньшим концом.
fdisk /dev/sda

В fdisk: выполните d (delete) для раздела 1, затем n (new) -> p (primary) -> 1 (номер). Введите первый цилиндр — тот же (обычно 1). Для последнего цилиндра можно задать размер в килобайтах с префиксом +.

  1. Расчёт размера раздела: методика
  • У вас есть блоки: B = 1536000
  • Размер блока: S = 4K (4096 байт)
  • Минимальный размер в килобайтах: MinKB = B S / 1024 = 1536000 4096 / 1024 = 1536000 * 4 = 6144000 KB

Добавьте буфер — безопасно 3–5%:

  • 3% запас: 6144000 * 1.03 = 6328320 KB
  • 5% запас: 6144000 * 1.05 = 6451200 KB

В fdisk укажите, например:

Last cylinder or +size or +sizeM or +sizeK (1-1247, default 1247): +6328320K
  1. Пометьте раздел как загрузочный, если это был загрузочный раздел (команда a в fdisk). Затем запишите таблицу (w).

fdisk может сообщить об ошибке повторного чтения таблицы: “Re-reading the partition table failed with error 16: Device or resource busy.” Это нормально — новая таблица будет применена после перезагрузки.

  1. Перезагрузите систему и снова проверьте раздел (опять в Live-CD/rescue):
shutdown -r now

После загрузки в Live-CD станьте root:

su

И выполните:

fsck -n /dev/sda1
  1. Воссоздайте журнал ext3 (вернём раздел в ext3):
tune2fs -j /dev/sda1

Пример вывода:

tune2fs 1.38 (30-Jun-2005)
Creating journal inode: done
This filesystem will be automatically checked every 30 mounts or 0 days, whichever comes first. Use tune2fs -c or -i to override.

  1. Перезагрузите систему в обычный режим:
shutdown -r now

Если всё прошло успешно, система загрузится, данные останутся на месте, и раздел станет меньше.

Как проверить результат и критерии приёмки

Критерии приёмки:

  • Система загружается без ошибок.
  • Команда df показывает новый ожидаемый размер и корректное использование: занятое место не потеряно.
  • В выводе fsck нет предупреждений об ошибках.
  • Идентификаторы файлов и права сохранены (проверка случайных файлов и каталогов).

Проверочные команды:

df -h
fdisk -l
fsck -n /dev/sda1
tune2fs -l /dev/sda1   # показать параметры файловой системы и состояние журнала

Примеры ожидаемых изменений (по результату теста):

df -h
Filesystem            Size  Used Avail Use% Mounted on  
/dev/sda1             5.8G  4.1G  1.6G  73% /  

Если какие-то точки не сходятся — отложите принятие решения и выполните дополнительные проверки.


Как рассчитать новый размер — подробные рекомендации

Шаги расчёта, чтобы не потерять данные при уменьшении раздела:

  1. Узнайте занятое место в байтах/KB/MB/GB (df, du).
  2. Округлите вверх с запасом: +3–10% (зависит от важности). Для серверов лучше +10%.
  3. Переведите требуемый размер в блоки, если нужно (resize2fs и fdisk работают с разными единицами).
  4. Если resize2fs уже сказал количество блоков и размер блока — используйте их напрямую.

Пример: если resize2fs вывел 1536000 блоков по 4К:

  • Байт: 1536000 * 4096 = 6291456000 байт ≈ 6,291,456 KB ≈ 6,147 MB ≈ 6.00 GB (в зависимости от единиц)
  • Рекомендуемый размер с 5% запасом: 6.00 GB * 1.05 = 6.30 GB

В fdisk удобнее указывать в KB с префиксом + и буквой K.


Расширение ext3-раздела (основные заметки)

Процесс расширения (grow) проще, если есть свободное место после раздела:

  1. Убедитесь, что раздел не смонтирован, или что вы расширяете с работающей системой (resize2fs поддерживает онлайн-увеличение для ext3, но безопасность важна).
  2. Измените таблицу разделов, увеличив конец раздела до требуемого размера (fdisk или parted).
  3. Запустите resize2fs /dev/sda1 без указания размера (resize2fs автоматически расширит фс до размера раздела):
resize2fs /dev/sda1

Если расширять корневой раздел на работающей системе, лучше использовать Live-CD или убедиться в поддержке онлайн-расширения и создании резервной копии.


Альтернативные подходы и инструменты

  • LVM (Logical Volume Manager): предоставляет гибкое изменение размеров логических томов без пересоздания разделов. Если у вас LVM, операция обычно проще.
  • GParted Live: графический инструмент для изменения размеров и перемещения разделов (подходит для простых случаев и домашних ПК).
  • parted/parted-rescue: для сложных сценариев с нестандартной разметкой.
  • sfdisk и sgdisk: для автоматизированного экспорта/импорта таблицы разделов (полезно для бэкапа таблицы перед изменениями).

Когда выбирать альтернативу:

  • Если планируете частые изменения — стоит перейти на LVM.
  • Если разделы находятся на RAID — сначала работайте с уровнем RAID (mdadm), затем с файловой системой внутри MD.
  • Если вы предпочитаете GUI — GParted Live ускорит задачу, но всё равно создавайте резервную копию.

Когда это не сработает — ограничения и частые причины ошибок

  • Зашифрованный раздел (LUKS): нужно сначала расшифровать контейнер, работать с логическим томом внутри.
  • Устройства на RAID: нельзя просто менять отдельный диск — сначала манипулируйте mdadm-конфигурацией.
  • Разделы с нестандартными block size или несовместимым файловым форматом (reiserfs, xfs и т. п.): resize2fs и tune2fs работают только с ext2/3/4.
  • Если resize2fs сообщает, что файлсистема слишком большая для уменьшения — не продолжайте.
  • Программы загрузки, которые зависят от физического расположения блоков (редкие случаи старых LILO), могут перестать загружаться — проверьте конфигурацию загрузчика.

План действий (SOP) — краткий свод шагов

  1. Обслуживание и коммуникация: уведомите пользователей, планируйте окно обслуживания.
  2. Резервная копия: создайте образ/бэкап данных.
  3. Подготовка: загрузитесь в Live-CD/rescue если надо.
  4. Проверка: fsck -n /dev/XXX
  5. Удаление журнала (для уменьшения): tune2fs -O ^has_journal /dev/XXX
  6. e2fsck -f /dev/XXX
  7. resize2fs /dev/XXX <новый размер> или resize2fs /dev/XXX (при расширении)
  8. fdisk /dev/sdX: пересоздать разделы (при уменьшении) или расширить (при увеличении)
  9. Перезагрузка в Live-CD, fsck -n /dev/XXX
  10. Воссоздание журнала: tune2fs -j /dev/XXX
  11. Перезагрузка в обычный режим
  12. Проверка: df -h, fsck, проверка случайных файлов

Runbook инцидента и откат

Если после операции раздел не монтируется или данные неверны:

  1. Не делайте новых записей на диск — минимизируйте риск перезаписи.
  2. Попробуйте fsck с опциями восстановления: e2fsck -f -y /dev/sda1 (автоматически ответит да на исправления).
  3. Если были сохранены исходные данные таблицы разделов (рекомендуется предварительно экспортировать sfdisk), восстановите таблицу:

Сохранение таблицы до изменений:

sfdisk -d /dev/sda > /root/sda-partition-table-backup.sfdisk

Восстановление:

sfdisk /dev/sda < /root/sda-partition-table-backup.sfdisk
  1. Если таблица повреждена, используйте testdisk для восстановления структуры разделов.
  2. При серьёзных проблемах обращайтесь к бэкапу (восстановление образа диска).

Чек-лист ролей

Администратор (тот, кто выполняет команды):

  • Убедился в наличии резервной копии.
  • Выполнил все проверочные команды.
  • Задокументировал начальные значения (выводы df, fdisk -l, fdisk -s).

Офис резервного копирования:

  • Подтвердил доступность бэкапов и состояние хранения.
  • Подготовил план восстановления.

Оповещение пользователей:

  • Отправлено уведомление о простое и рисках.

Таблица команд (cheat sheet)

  • Просмотр использования: df -h
  • Просмотр блоков 4K: df -B 4k
  • Проверка файловой системы (только чтение): fsck -n /dev/sda1
  • Удаление журнала ext3: tune2fs -O ^has_journal /dev/sda1
  • Принудительная проверка: e2fsck -f /dev/sda1
  • Изменение размера фс: resize2fs /dev/sda1 6000M
  • Создание журнала: tune2fs -j /dev/sda1
  • Редактирование таблицы разделов: fdisk /dev/sda
  • Экспорт таблицы разделов: sfdisk -d /dev/sda > backup.sfdisk
  • Восстановление таблицы: sfdisk /dev/sda < backup.sfdisk

Тесты и критерии приёмки (примеры)

Тест 1: Перезагрузка и загрузка системы

  • Ожидается: система загружается и все сервисы стартуют.

Тест 2: Проверка целостности файлов

  • Выполнить выборочные сравнения контрольных сумм файлов (если были заготовлены).

Тест 3: Верификация свободного места

  • df -h показывает ожидаемый размер раздела и отсутствие неожиданного уменьшения доступного пространства.

Тест 4: Журнал файловой системы

  • tune2fs -l /dev/sda1 должен показать запись о наличии журнала и интервал проверки.

Ментальные модели и эвристики

  • Всегда думайте в терминах занимаемых блоков, а не только в гигабайтах — это точнее для файловых систем.
  • Уменьшение требует удаления беспорядка: удалите временные файлы, почистите логи, выполните du -sh /home/*, прежде чем уменьшать.
  • Запас в 5% обычно достаточен для рабочих столов; для серверов с активными базами данных — 10%.

Mermaid: простое дерево решений

flowchart TD
  A{Нужно изменить размер раздела?} -->|Да| B{Раздел в LVM?}
  B -->|Да| C[Использовать LVM tools 'lvresize, pvresize']
  B -->|Нет| D{Раздел на RAID или зашифрован?}
  D -->|RAID| E[Работа через mdadm, затем FS]
  D -->|Зашифрован| F[Расшифровать контейнер, работать внутри]
  D -->|Нет| G{Нужно уменьшить?}
  G -->|Да| H[Выключить журнал, e2fsck, resize2fs, пересоздать раздел]
  G -->|Нет| I[Увеличить: расширить раздел и запустить resize2fs]
  C --> Z[Проверка, бэкап, тесты]
  E --> Z
  F --> Z
  H --> Z
  I --> Z

Короткий глоссарий

  • fsck: проверка файловой системы.
  • e2fsck: утилита для проверки ext2/3/4.
  • tune2fs: настройка параметров ext* файловой системы (включая журнал).
  • resize2fs: изменение размера файловой системы ext2/3/4.
  • fdisk: утилита для редактирования таблицы разделов.
  • sfdisk: утилита для дампа/восстановления таблицы разделов.

Локальная совместимость и советы для русскоязычных администраторов

  • Если используете локализованные дистрибутивы, в Live-CD могут быть утилиты с теми же именами; команды и синтаксис одинаковы.
  • Для удалённых серверов у провайдеров часто есть web-консоль с опцией Rescue mode — заранее узнайте, какие утилиты доступны в rescue-образе.

Резюме

  • Уменьшение ext3-раздела требует временной деактивации журнала, проверки и изменения размеров файловой системы, а затем пересоздания раздела.
  • Всегда делайте резервные копии и проводите проверку перед и после операции.
  • Для гибкости и минимизации рисков в будущем рассмотрите переход на LVM.

Итоговое напоминание: перед выполнением команд на рабочем сервере — проверьте план и резервные копии. Если сомневаетесь, протестируйте процедуру на аналогичном тестовом окружении.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро