lwilis 17.06.2010 06:55
Жизнь в консоли — Уменьшение файловой системы с помощью /sbin/resize2fs
В наше гуевое время да при наличии утилиты parted задача из заголовка может показаться не очень актуальной. Редко, но случаются ситуации, когда остаешься в очень ограниченных условиях: специфический дистрибутив, с минимумом софта; либо ситуация нештатная. Всякое бывает. А еще есть такая потребность: хочу знать. Впрочем, я сегодня просто забыл про наличие parted, вот и освежил память.В общем-то в наличии есть один диск, на нем файловая система, которая занимает диск целиком. Сама по себе файловая система заполнена не до конца. Нужно отрезать от нее свободный кусочек и создать еще одну фс на диске.
Краткий план мероприятия
Убедимся, что фс отмонтированаПроверяем фс на целостностьУменьшаем фсУменьшаем разделСоздаем новый разделСоздаем искомую фсОсновная часть
Убедимся, что фс отмонтирована
Здесь X — буква диска, N — номер раздела
1 |
|
Если в ответ тишина, продолжаем.
Проверяем фс на целостность
resize2fs не начнет работать, пока фс не пройдет проверку на целостность. Проверяем. У меня оказалась ext3. Ключ -f обязателен.
У fsck не возникло возражений. Обращаем внимание на нижнюю строчку вывода fsck. Занято 31809485 блоков, и всего 38409984 блоков.
Уменьшаем фс
1 |
|
Я задал новый размер фс чуть больше, чем на ней уже занято.
Уменьшаем раздел
Теперь нам нужно изменить размер раздела, на котором расположена наша фс. По сути, мы удалим старый раздел и создадим новый, но меньшего размера. Главное, чтоб начальные метки старого и нового раздела совпадали, а также размер раздела должен быть не меньше размера фс. Запустим fdisk и воспользуемся командой "p".
fdisk работает с блоками по 1K и с цилиндрами. Цилиндр — это произведение кол-ва головок (255) на кол-во секторов (63) и на размер сектора 512 байт. А fsck работает с фактическим размером блока, заданным для фс. У меня блоки по 4K. Узнать размер блока вашей файловой системы можно с помощью tune2fs
1 |
|
Тогда умножаем новый размер (31809490) фс на 4, получим ее в размерности 1K на блок. Составляем пропорцию (19129/x) = (153653661/(31809490*4)) и получим x примерно 15850. Тут лучше немного прибавить на всякий случай. Теперь командой d удаляем старый раздел, командой n создаем новый. Первый цилиндр задаем как было (1), конечный 15850. Теперь создадим еще один раздел, сохраним изменения с помощью команды w. Осталось только создать новую фс.
Создаем искомую фс
1 |
|
Готово.