Объединение двух разделов ext3
Ситуация и цель
В примере система имеет системный раздел /dev/sda1 (~6 ГБ), за которым непосредственно следует /dev/sda3 (~4 ГБ). /dev/sda3 смонтирован в /data и содержит только пользовательские данные, а не файлы, необходимые для загрузки Linux. Цель — объединить пространство /dev/sda3 в /dev/sda1, удалив /dev/sda3 и расширив /dev/sda1.
Опасность: все данные на /dev/sda3 будут потеряны при удалении — сделайте полную резервную копию перед началом.
Текущая таблица монтирования (пример)
df -hFilesystem Size Used Avail Use% Mounted on
/dev/sda1 5.8G 4.1G 1.6G 73% /
varrun 94M 132K 94M 1% /var/run
varlock 94M 0 94M 0% /var/lock
udev 10M 56K 10M 1% /dev
devshm 94M 0 94M 0% /dev/shm
lrm 94M 18M 77M 19% /lib/modules/2.6.17-10-generic/volatile
/dev/sda3 3.5G 72M 3.3G 3% /dataПодготовка к операции
- Полная резервная копия данных с /dev/sda3. Рекомендуемые инструменты: rsync, tar, cp -a или копирование на внешний диск. Пример:
rsync -aHAX --progress /data/ /mnt/backup/data/- Убедитесь, что у вас есть Live-CD/Live-USB (Knoppix, SystemRescue, Ubuntu Live), если потребуется загрузиться в окружение восстановления.
- Проверьте, что на /dev/sda3 нет запущенных сервисов. Остановите приложения/демоны, использующие /data.
- Запланируйте окно обслуживания и уведомите пользователей.
Шаги — удаление /dev/sda3 и расширение /dev/sda1
Ниже шаги, отражающие оригинальную последовательность команд из примера.
- Удалите (или закомментируйте) строку с /dev/sda3 в /etc/fstab, чтобы система не пыталась монтировать удалённый раздел при загрузке.
vi /etc/fstabНовый /etc/fstab может выглядеть так:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda1
UUID=566fd9e9-098f-4aae-9908-51efe171d8ba / ext3 defaults,errors=remount-ro 0 1
# /dev/sda5
UUID=82102b65-35db-469a-9532-03d619d8cffb none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/ /media/floppy0 auto rw,user,noauto 0 0- Размонтируйте /dev/sda3 на работающей системе — если на разделе нет системных файлов, это можно сделать без перезагрузки:
umount /dev/sda3Если umount отказывается из-за занятого ресурса, выясните, какие процессы используют раздел:
lsof +f -- /data
fuser -vm /data- Запустите fdisk для изменения таблицы разделов (работаем с /dev/sda, не с /dev/sda1):
fdisk /dev/sdaВнутри fdisk вы можете вызвать справку командой m. Чтобы удалить /dev/sda3:
Command (m for help): d
Partition number (1-5): 3После удаления запишите таблицу разделов на диск:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.Возможна ситуация, когда повторное чтение таблицы не удаётся:
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.- Перезагрузите систему и загрузитесь в Live-CD/рескью-среду (Knoppix):
shutdown -r nowЗагрузившись с Live-CD, станьте root и убедитесь, что разделы не смонтированы:
su
umount /dev/sda1Дальше — шаги по увеличению /dev/sda1 аналогичны описанным в разделе 3: пересоздание раздела с тем же начальным сектором и увеличением размера до конца свободного пространства, а затем запуск resize2fs для ext3. Короткая последовательность (примерно):
- Создать новую партицию с fdisk/parted, начав с того же стартового сектора, но заканчивая позже (используя доступное пространство).
- Записать таблицу и перезагрузиться, если потребуется.
- Выполнить проверку файловой системы и resize:
e2fsck -f /dev/sda1
resize2fs /dev/sda1Замечание: точные команды зависят от схемы разделов (MBR/GPT) и инструментов — используйте parted для GPT.
Проверка и восстановление данных
- После расширения смонтируйте /dev/sda1 и проверьте файловую систему и доступность данных.
- Восстановите резервную копию на / (или в нужный каталог), если нужно вернуть файлы из /dev/sda3:
rsync -aHAX --progress /mnt/backup/data/ /data/- Обновите /etc/fstab, если вы хотите смонтировать отдельные каталоги или изменить точки монтирования.
Частые ошибки и как их исправить
- Ошибка: «Device or resource busy» при перезаписи таблицы разделов. Решение: перезагрузитесь в Live-CD и выполните изменения уже оттуда.
- Потеря данных из-за отсутствия бэкапа. Решение: восстановите из резервной копии; если бэкапа нет — возможна попытка восстановления с помощью tools типа testdisk/photorec, но успех не гарантирован.
- Несовместимость с загрузчиком (LILO/старые BIOS) при превышении 1024 цилиндров. Решение: проверить загрузчик и, при необходимости, обновить конфигурацию загрузчика или использовать GRUB.
Риски и смягчения
- Риск: потеря данных. Смягчение: полная резервная копия на внешний носитель.
- Риск: система не загрузится после изменений в partition table. Смягчение: иметь Live-CD и знание восстановления загрузчика (например, chroot + grub-install).
- Риск: ошибки при переконфигурации fstab. Смягчение: сохранять резервную копию /etc/fstab и иметь доступ к консоли восстановления.
Контрольный чеклист перед началом (роль: системный администратор)
- Сделана полная резервная копия /dev/sda3
- Оповещены пользователи и назначено окно обслуживания
- Остановлены сервисы, использующие /data
- Строка /dev/sda3 удалена или закомментирована в /etc/fstab
- Доступен Live-CD и инструменты (fdisk, e2fsck, resize2fs)
Критерии приёмки
- /dev/sda3 отсутствует в таблице разделов.
- /dev/sda1 расширен и файловая система корректно использует новое пространство.
- Данные из /dev/sda3 успешно восстановлены в нужное место (если применимо).
- Система корректно загружается и сервисы работают как до операции.
Короткие советы и альтернативные подходы
- Если вы не хотите удалять раздел, можно переместить данные с /dev/sda3 в /dev/sda1 и изменить точки монтирования, но это не даст больше свободного места для корня, если корень уже ограничен.
- Для GPT-дисков используйте parted или gdisk вместо fdisk.
- При работе с LVM рекомендуется использовать логические тома: объединение в LVM проще и безопаснее, чем изменение классификаторов MBR-разделов.
Полезные команды-напоминания
- Резервное копирование: rsync -aHAX –progress /data/ /mnt/backup/data/
- Проверка занятости: lsof +f – /data; fuser -vm /data
- Удаление раздела в fdisk: d (номер раздела) -> w
- Проверка ext3: e2fsck -f /dev/sda1
- Расширение ext3: resize2fs /dev/sda1
Заключение
Объединение подряд идущих разделов ext3 сводится к безопасному удалению ненужного раздела и расширению целевого раздела. Ключевые требования — актуальный бэкап, тихая консольная среда (Live-CD) и аккуратная работа с таблицей разделов. Следуйте чеклисту и проверкам до и после операции.
Ссылки
Похожие материалы
Ошибка: принтер используется другим компьютером — решение
Искривление текста в Photoshop и Illustrator
Payday 2 VR не работает — как исправить
Эмулятор HoloLens — запуск и управление приложениями
Как зашифровать облачный диск с BoxCryptor