- Работа с файловой системой Linux
- Основные команды
- Работа с файловой системой в Linux
- Создание файловой системы
- Изменение метки файловой системы
- Настройка файловой системы linux
- Изменение размера файловой системы Linux
- Проверка файловой системы Linux
- Дефрагментация файловой системы
- Выводы
- Изменение размера ext4 lvm тома
- Alexey Egorychev
- Изменение размера диска или раздела Linux
- Введение
- Подготовка
- Изменение размера диска без форматирования
- Изменение размера диска с форматированием
- Обновление загрузчика Grub2
- Преобразование раздела утилитой fstransform
- Уменьшение диска образа RAW
- Вывод
Работа с файловой системой Linux
Во время выполнения различных задач по администрированию системы может понадобится работать с файловой системой Linux, форматировать разделы, изменять их размер конвертировать файловые системы, выполнить дефрагментацию в Linux или восстановление файловых систем.
Многие из этих действий выполняются в графическом интерфейсе, многие и вовсе автоматически. Но может возникнуть ситуация, в которой придется делать все через терминал. Также при администрировании удаленных серверов работать с ними приходится только через ssh, а это означает недоступность графического интерфейса.
В этой статье мы рассмотрим как выполняется работа с файловой системой Linux в терминале. За основу возьмем семейство файловых систем ext2/3/4, так как они самые распространенные среди большого многообразия дистрибутивов Linux.
Основные команды
Для управления файловой системой ext в Linux используется целый набор команд из пакета e2progs. Сюда входят как команды для управления флагами файлов, создания и изменения файловых систем, так и утилиты для отладки файловой системы.
Рассмотрим основные утилиты, которые будем использовать:
- badblocks — если у вас старый жесткий диск и на нем накопилось много битых блоков, вы можете с помощью этой утилиты пометить их все на уровне файловой системы, чтобы больше не использовать.
- e2label — позволяет изменить метку раздела с файловой системой ext.
- fsck — проверка файловой системы linux и исправление найденных ошибок
- mkfs — позволяет создать файловую систему Linux.
- resize2fs — изменить размер раздела с файловой системой
- tune2fs — позволяет изменить файловую систему Linux, настроить ее параметры.
А теперь будет рассмотрена работа с файловой системой linux на примерах.
Работа с файловой системой в Linux
Перед тем как переходить к работе с реальным жестким диском важно попрактиковаться. Если сменить метку или проверить на битые сектора можно и рабочий диск, то создавать новую файловую систему, изменять ее размер, рискуя потерять данные на реальном диске не рекомендуется. Можно отделить небольшой раздел диска для экспериментов с помощью Gparted и выполнять все действия в нем. Допустим, у нас этот раздел будет называться /dev/sda6.
Создание файловой системы
Создать файловую систему linux, семейства ext, на устройстве можно с помощью команды mkfs. Ее синтаксис выглядит следующим образом:
sudo mkfs -t тип устройство
Доступны дополнительные параметры:
- -с — проверить устройство на наличие битых секторов
- -b — размер блока файловой системы
- -j — использовать журналирование для ext3
- -L — задать метку раздела
- -v — показать подробную информацию о процессе работы
- -V — версия программы
Создаем файловую систему на нашем устройстве. Будем создавать ext3:
sudo mkfs -t ext4 -L root /dev/sda6
Creating filesystem with 7847168 4k blocks and 1962240 inodes
Filesystem UUID: 3ba3f7f5-1fb2-47af-b22c-fa4ca227744a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Изменение метки файловой системы
Утилита e2label позволяет изменить или посмотреть метку раздела диска. Принимает всего два параметра — устройство и новую метку если нужно.
sudo e2label /dev/sda6
sudo e2label /dev/sda6 root1
Настройка файловой системы linux
Различные параметры файловой системы, такие как размер блока данных, иноды или зарезервированное место под данные пользователя root можно настроить. Для этого существует утилита tune2fs.
Синтаксис команды очень прост:
$ tune2fs опции устройство
Поддерживаются следующие опции:
- -j — создать файл журнала. Позволяет превратить файловую систему ext2 в ext3.
- -J — настроить параметры журнала
- -l — получить содержимое суперблока
- -L — изменить метку раздела
- -m — изменить процент дискового пространства, зарезервированного для суперпользователя
- -M — изменить последнюю папку монтирования
- -U — задать UUID файловой системы
- -C — изменить значение счетчика монтирования
- -T — изменить последнюю дату проверки файловой системы
- -с — изменить периодичность проверок файловой системы с помощью fsck
- -O — изменить опции файловой системы.
Изменить размер зарезервированного места для суперпользователя до пяти процентов:
sudo tune2fs -m 5 /dev/sda6
Setting reserved blocks percentage to 5% (392358 blocks)
Посмотреть информацию из суперблока, эта команда показывает всю доступную информацию параметрах файловой системы:
Filesystem volume name: root
Last mounted on: /
Filesystem UUID: 3ba3f7f5-1fb2-47af-b22c-fa4ca227744a
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg spar
se_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Изменить счетчик количества монитрований:
tune2fs -C 0 /dev/sda6
Setting current mount count to 0
Думаю тут смысл понятен, нужно только немного со всем этим поэкспериментировать.
С помощью опции -O мы вообще можем превратить нашу ext3 в ext4 следующей командой:
sudo tune2fs -O extents,uninit_bg,dir_index
После этого действия нужно выполнить проверку файловой системы на ошибки в fsck. Подробнее об этом поговорим ниже.
sudo fsck -np /dev/sda6
Таким образом вы можете изменить файловую систему linux, и настроить по своему усмотрению любые ее параметры.
Изменение размера файловой системы Linux
Раньше такая функция поддерживалась в утилите parted, но потом ее убрали и для этого действия приходится использовать утилиту из набора e2fsprogs — resize2fs.
Запустить утилиту очень просто. Ей нужно передать всего два параметра:
$ resize2fs [опции] устройство размер
Доступны также опции:
- -M уменьшить файловую систему до минимального размера
- -f — принудительное изменение, не смотря на потерю данных
- -F — очистить буфер файловой системы
Размер передается, как и во многих других утилитах, целым числом с указанием единиц измерения, например, 100М или 1G.
Для примера уменьшим размер нашего раздела до 400 Мегабайт:
sudo resize2fs /dev/sda6 400M
Resizing the filesystem on /dev/sda7 to 102400 (4k) blocks.
The filesystem on /dev/sda7 is now 102400 blocks long
Проверка файловой системы Linux
При неправильном отключении носителей или неожиданном отключении питания, файловая система Linux может быть повреждена. Обычно проверка корневой файловой системы и домашнего каталога на ошибки выполняется во время загрузки. Но если эта проверка не была выполнена или нужно поверить другой носитель, придется все делать вручную. Для этого есть утилита fsck.
$ fsck [опции] устройство
- -p — автоматическое восстановление
- -n — только проверка, без восстановления
- -y — ответить да на все запросы программы
- -с — проверить на битые сектора (аналог badblocks
- -f — принудительная проверка, даже если раздел помечен как чистый
- -j — внешний журнал файловой системы
Проверка файловой системы Linux выполняется такой командой, проверим диск /dev/sda6, заметьте, что диск должен быть не примонтирован:
sudo fsck -a /dev/sda6
root: clean, 11/32704 files, 37901/102400 blocks
Дефрагментация файловой системы
Хотя и фрагментация нехарактерное явление для файловых систем семейства ext, при очень интенсивном использовании может накапливаться фрагментированость, что будет замедлять работу файловой системы. Для дефрагментации можно использовать стандартную утилиту e4defrag. Просто выполните:
Чтобы проверить нужна ли дефрагментация в Linux выполните эту же команду с опцией -c:
Total/best extents 26247/24953
Average size per extent 1432 KB
Fragmentation score 0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This device (/dev/sda6) does not need defragmentation.
Done.
В поле Fragmentation score отображен процент фрагментации, как видите, у меня 0, нормой считается до 30, 31-55 небольшие проблемы, и больше 56 — нужна дефрагментация.
Выводы
В одной из предыдущих статей мы рассмотрели как выполняется разметка диска с помощью parted. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!
Источник
Изменение размера ext4 lvm тома
По умолчанию установленный linux mint 15 c lvm скушал все 750GB под корневую директорию. Не привык я к такой роскоши. Нужно ограничить корневой раздел 100GB, правда это тоже излишества, но у меня сейчас данных порядка 80GB, которые нельзя затирать.
Значит уменьшаю корневой раздел, затем создаю отдельный раздел /home.
По феншую еще надо бы /var, /tmp, /usr выделить, но пока не буду так заморачиваться на домашней машине. Никогда не поздно допилить.
Правильная последовательность шагов для УМЕНЬШЕНИЯ lvm тома выглядит следующим образом:
- Проверка lvm тома (e2fsck)
- Уменьшение размера файловой системы (resize2fs)
- Уменьшение lvm тома (lvreduce)
- Проверка lvm тома (e2fsck)
Перед этим, естественно, надо раздел отмонтировать. Нюанс в том, что это корневой раздел, а значит эти действия надо произвести с LiveCD. У меня под рукой установочная флешка, с нее я и стартую систему.
У меня раздел с lvm томом /dev/mapper/mint—vg-root. Над ним и произвожу шаманства.
Проверка:
# e2fsck -f /dev/mapper/mint—vg-root
Далее уменьшаю размер файловой системы.
Делать размер файловой системы меньше, чем занимаемый данными размер — плохая идея!
итак:
# resize2fs -p /dev/mapper/mint—vg-root 100G
ключ -p позволяет следить за прогрессом выполнения.
Теперь уменьшаю логический задел (lv):
# lvreduce -L 100G /dev/mapper/mint—vg-root
где -L задает размер логического тома.
Далее
# e2fsck -f /dev/mapper/mint—vg-root
Проверка лишний раз не помешает.
Кстати проверить состояние физических разделов, группы томов и логических разделов можно командами pvdisplay, vgdisplay, lvdisplay соответственно.
Создаю новый логический том из группы томов:
# lvcreate -L 100g -n mint—vg-home mint-vg
Монтирую вновь созданный раздел и переливаю туда данные
# mkfs.ext4 /dev/mapper/mint—vg-home
# mount /dev/mapper/mint—vg-home /mnt
# cp -R /home/extor /mnt/
Процесс не быстрый. Объемы большие.
После этого удаляю раздел /home (НЕ вновь созданный, находящийся в /mnt)
# rm -R /home
Добавляю в /etc/fstab следующее:
где ext4 — тип файловой системы
defaults — опции монтирования — таковых в наличии воз и маленькая тележка.
0 — делать ли dump
2 — очередность проверки fsck (0 — не проверять, 1 — обычно корень, 2 — остальные системы)
После этого отправляю систему в reboot и можно стартовать систему с HDD/SSD.
Alexey Egorychev
FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.
Источник
Изменение размера диска или раздела Linux
Рано или поздно всегда приходиться делать изменение размера диска или раздела Linux. Варианты как это сделать существуют разные и все зависит от конкретного случая. Постарался найти вариант который подходит для разных случаев.
Введение
Рано или поздно всем необходимо произвести изменение размера диска, раздела, или вообще перестроить разбивку диска по новому.
Вариантов как это сделать множество, но мне кажется я нашел идеальный и 100% рабочий вариант.
Основной принцип состоит из следующих моментов:
- Подключаем дополнительный диск;
- Загружаем систему с Live-образа;
- Переносим информацию на дополнительный диск;
- Создаем, изменяем разделы на требуемом диске;
- Возвращаем данные в случае форматирования;
- Обновляем загрузчик системы и вносим правки в файл системы отвечающий за подключение разделов диска в систему.
Это очень грубая общая схема не отражающая всех нюансов, но дающая понять суть процесса.
В моем случае необходимо было поменять размер диска с преобразованием системы XFS в EXT4 на виртуальной машине работающей в Proxmox.
Меня лично необходимость уменьшить раздел возникла по причине того что в системе Proxmox появился диск SSD, но вот перенести туда нужную машину я не мог по причине большого размера диска а не реально используемого пространства.
Подготовка
Обязательно перед выполнением работ сделайте резервные копии виртуальных машин или как минимум данных с них!
Все действия необходимо выполнять только на отключенных разделах.
Забегая вперед скажу, что для уменьшения размера диска мы будем использовать возможности типа файлов raw и для этого в системе Proxmox диски должны находится в файловом варианте.
В моем случае делались изменения размеров на корневом разделе а значит необходимо запустить систему с Live-образа. Для этих целей у меня сделана собственная сборка дистрибутива Calculate Linux где установлены все необходимые мне утилиты. Можно использовать любой удобный вам Live-образ системы Linux.
Перед началом работ выполните команду которая покажет все реально смонтированные диски в работающей системе:
Сохраните эти данные, так как в последствии нам с ними будет проще работать.
Загружаем систему используя Live-образ.
Работать в консоли самого Proxmox не удобно, так как нет возможности копировать команды. Запускаю ssh сервер командой:
Подключаюсь по ssh используя данные авторизации live-образа.
Все подготовительные действия сделаны и переходим к непосредственной работе с разделами диска.
В примере имеется ввиду что раздел /boot выведен на отдельный раздел и мы его не трогаем. Всегда при создании выношу раздел boot на отдельный раздел и не раз эта схема упрощала мне жизнь при работе или проблемах с диском.
Изменение размера диска без форматирования
В случае простого изменения размеров у разделов все просто.
К сожалению раздел XFS уменьшить нельзя а увеличить можно.
Запускаем программу Gparted и выполняем необходимые действия с имеющимися разделами. Уменьшаем, перераспределяем или отключаем какой то раздел и переносим в корень. Например, в моем случае раздел /var/sevo44 находился на отдельном разделе а мне захотелось перенести его в корневой раздел.
Самое главное это перед тем как удалять раздел и переносить его в общий не забудьте сохранить данные с него.
Если выполнялись действия только по изменению размера имеющихся разделов делать больше ничего не надо. После перезагрузки система успешно запустится с новым размером разделов.
Изменение размера диска с форматированием
В моем случае файловая система была XFS и для уменьшения этого раздела мне необходимо было его переформатировать.
Определяем имеющиеся диски в системе выполнив команду:
Из вывода видно что sda рабочий диск а sdb подключенный.
Создаем раздел из всего диска sdb и форматируем его в ext4:
Создаем две папки куда будем монтировать диски:
Монтируем раздел sdb1 в необходимую папку:
C диском sda немного посложнее. В нашем случае разделы были подключены следующим образом:
Раздел sda1 надо оставить как есть а вот sda3 убрать переместив все данные в корневой раздел sda2.
Монтируем вначале главный раздел а затем вложенный:
Проверяем что у нас получилось:
Всё смонтировалось как надо.
Переносим теперь все данные с папки /mnt/sda в папку /mnt/sdb
Переносить необходимо в консольном файловом менеджере Midnight Commander (mc), так как она при переносе сохранит все права на файлы и перенесёт все один в один.
Есть и другие способы переноса в консоли, но вариант с Midnight Commander проще и наглядней.
После переноса проверяем правильность и только после этого отключаем разделы диска sda строго в таком порядке:
Запускаем программу Gparted с Live-образа и делаем с разделами что нам необходимо. В моем случае получилось следующее:
Удалил раздел sda3 а раздел sda2 увеличил и отформатировали в формат ext4. Уменьшили диск больше чем на 50 Гиб.
Можно высчитывать и обрезать раздел ровно для последующего уменьшения, но мне проще потом его расширить подключившись с Live-образа.
Монтируем sda2 в папку /mnt/sda и копируем обратно в программе mc все данные с папки /mnt/sdb в /mnt/sda:
После копирования и проверки отключаем sdb1:
Теперь нам необходимо отредактировать файл /etc/fstab который отвечает за монтирование разделов.
Определим какие uuid у разделов диска sda (при форматирование раздела uuid меняется на новый):
Открываем /mnt/sda/etc/fstab и смотрим какие там прописаны uuid и параметры файловых систем:
Как видим у раздела /boot uuid не поменялся а вот у корневого сменился. Приведем файл к необходимым параметрам:
Обновление загрузчика Grub2
После перезагрузки системы CentOS 8 вы увидите такое сообщение:
Система говорит что она не видит корневой диск с таким uuid.
В случае если вы делали изменения раздела /boot вы увидите другую ошибку и способ устранения этой ошибки выходит за рамки данной статьи.
Решается эта проблема в два шага:
- Загрузится указав правильный uuid;
- В загрузившейся системе обновить Grub2.
Запускаем систему и как только увидите варианты загрузки нажимайте клавишу е:
В результате вы увидите место где необходимо сменить информацию:
Меняем на наш новый uuid 611171b8-5da5-460c-a6da-7bf8d42f2128 и нажимаем сочетание клавиш Ctrl и X.
Система загрузится, но значения загрузчика не поменяются. Выполним команду которая обновит grub2 в системе CentOS 8:
Все успешно обновилось, но я не отключил дополнительный диск и он добавился в меню загрузчика. На работу системы это никак не повлияет, но лучше не забывать отключать дополнительный диск после того как он больше не нужен.
Диск мы уменьшили и добились работоспособности системы теперь осталось выполнить последнее действие по уменьшению файла raw.
Преобразование раздела утилитой fstransform
Существует более простой способ, но как он работает на практике точно сказать не могу. Для меня описанный вариант выше более надежен, так как я не завишу от правильности действий этой утилиты.
Утилита называется fstransform и способна она преобразовывать в разные форматы.
Для преобразования корневого раздела необходимо загрузится с Live-образа установить утилиту и преобразовать нужный раздел.
Для Live-образа системы Debian (консольный вариант) нам вначале необходимо получить права root:
Обновить список пакетов и установить:
Определить нужный раздел для преобразования командой # fdisk -l и запустить необходимую команду:
Раздел преобразуется с изменением uuid и дальше необходимо выполнить действия аналогично описанным выше.
Боле подробно об утилите можно посмотреть тут.
Уменьшение диска образа RAW
Возможно если у вас виртуальная машина работает на LVM существует способ более простой и не надо переносить образ в файловый вариант, но мне не захотелось выполнять более сложные действия с системой LVM.
Воспользуемся командой которая может произвести изменение диска обрезав образ диска raw с конца на нужный размер.
В нашем случае номер виртуальной машины был 112 и нам необходимо уменьшить образ на 50 G:
Как видим образ успешно изменён.
Осталось загрузится c Live-образа и в программе Gparted задействовать все свободное место от диска.
В системе Proxmox после изменения размера диска в разделе вы увидите уже новые параметры а вот в свойствах машины будет стоять старое значение. Возможно необходимо выполнить какое то действие, но в моем случае я переношу диск на раздел LVM и после этого везде будет показываться правильное значение.
Вывод
Как видно из статьи нюансы и главное внимательность при работе с разделами главный залог успеха. В любом случае всегда необходимо делать резервную копию выполняя изменение размера диска.
При создании новой системы всегда в голове возникает мысль как лучше разбить и какое использовать место, но попасть в нужные параметры удаётся не всегда. Зная как производить изменение разделов можно больше не ломать голову а делать все стандартным проверенным способом и в случае необходимости все исправить.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник