Авторизация

Вы можете войти через одну из учетных записей:

ИЛИ



Напомнить пароль
Регистрация

How-toУменьшение файловой системы с помощью /sbin/resize2fs

В наше гуевое время да при наличии утилиты parted задача из заголовка может показаться не очень актуальной. Редко, но случаются ситуации, когда остаешься в очень ограниченных условиях: специфический дистрибутив, с минимумом софта; либо ситуация нештатная. Всякое бывает. А еще есть такая потребность: хочу знать. Впрочем, я сегодня просто забыл про наличие parted, вот и освежил память.

В общем-то в наличии есть один диск, на нем файловая система, которая занимает диск целиком. Сама по себе файловая система заполнена не до конца. Нужно отрезать от нее свободный кусочек и создать еще одну фс на диске.

Краткий план мероприятия


  1. Убедимся, что фс отмонтирована
  2. Проверяем фс на целостность
  3. Уменьшаем фс
  4. Уменьшаем раздел
  5. Создаем новый раздел
  6. Создаем искомую фс


Основная часть

Убедимся, что фс отмонтирована

Здесь X — буква диска, N — номер раздела

$ mount|grep sdXN


Если в ответ тишина, продолжаем.
Проверяем фс на целостность

resize2fs не начнет работать, пока фс не пройдет проверку на целостность. Проверяем. У меня оказалась ext3. Ключ -f обязателен.

$ sudo /sbin/fsck.ext3 -f /dev/sdXN
e2fsck 1.41.8 (11-July-2009)
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                                     
backup: 29454/9609216 files (2.4% non-contiguous), 31809485/38409984 blocks


У fsck не возникло возражений. Обращаем внимание на нижнюю строчку вывода fsck. Занято 31809485 блоков, и всего 38409984 блоков.

Уменьшаем фс


$ sudo /sbin/resize2fs /dev/sdXN 31809490


Я задал новый размер фс чуть больше, чем на ней уже занято.

Уменьшаем раздел


Теперь нам нужно изменить размер раздела, на котором расположена наша фс. По сути, мы удалим старый раздел и создадим новый, но меньшего размера. Главное, чтоб начальные метки старого и нового раздела совпадали, а также размер раздела должен быть не меньше размера фс. Запустим fdisk и воспользуемся командой «p».

$ sudo /sbin/fdisk /dev/sdXN
Disk /dev/sdX: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x3f5a3f59

   Device Boot      Start         End      Blocks   Id  System
/dev/sdXN               1       19129   153653661   83  Linux


fdisk работает с блоками по 1K и с цилиндрами. Цилиндр — это произведение кол-ва головок (255) на кол-во секторов (63) и на размер сектора 512 байт. А fsck работает с фактическим размером блока, заданным для фс. У меня блоки по 4K. Узнать размер блока вашей файловой системы можно с помощью tune2fs

$ sudo /sbin/tune2fs /dev/sdXN -l|grep 'Block size'
Block size:               4096


Тогда умножаем новый размер (31809490) фс на 4, получим ее в размерности 1K на блок. Составляем пропорцию (19129/x) = (153653661/(31809490*4)) и получим x примерно 15850. Тут лучше немного прибавить на всякий случай. Теперь командой d удаляем старый раздел, командой n создаем новый. Первый цилиндр задаем как было (1), конечный 15850. Теперь создадим еще один раздел, сохраним изменения с помощью команды w. Осталось только создать новую фс.
Создаем искомую фс

$ sudo /sbin/mkfs.ext4  -L Black_Label /dev/sdXM


Готово.
  • +1
  • Diesel
  • 01 ноября 2010, 05:31
  • add twitter 

Комментарии (0) Вконтакте (0) facebook (0)

Комментарии (0)

rss свернуть / развернуть

Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.