- Работа с файловой системой Linux
- Основные команды
- Работа с файловой системой в Linux
- Создание файловой системы
- Изменение метки файловой системы
- Настройка файловой системы linux
- Изменение размера файловой системы Linux
- Проверка файловой системы Linux
- Дефрагментация файловой системы
- Выводы
- Команда mkfs в Linux
- Синтаксис
- Опции
- Типы файловых систем
- Выбор файловой системы
- Создание файловой системы
- Выводы
Работа с файловой системой 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 — версия программы
Создаем файловую систему на нашем устройстве. Будем создавать ext4:
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 root1
Настройка файловой системы linux
Различные параметры файловой системы, такие как размер блока данных, иноды или зарезервированное место под данные пользователя root можно настроить. Для этого существует утилита tune2fs.
Синтаксис команды очень прост:
$ tune2fs опции устройство
Поддерживаются следующие опции:
- -j — создать файл журнала. Позволяет превратить файловую систему ext2 в ext3.
- -J — настроить параметры журнала
- -l — получить содержимое суперблока
- -L — изменить метку раздела
- -m — изменить процент дискового пространства, зарезервированного для суперпользователя
- -M — изменить последнюю папку монтирования
- -U — задать UUID файловой системы
- -C — изменить значение счетчика монтирования
- -T — изменить последнюю дату проверки файловой системы
- -с — изменить периодичность проверок файловой системы с помощью fsck
- -O — изменить опции файловой системы.
Изменить размер зарезервированного места для суперпользователя до пяти процентов:
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
Изменить счетчик количества монтирований:
Setting current mount count to 0
Думаю тут смысл понятен, нужно только немного со всем этим поэкспериментировать.
С помощью опции -O мы вообще можем превратить нашу ext3 в ext4 следующей командой:
sudo tune2fs -O extents,uninit_bg,dir_index
После этого действия нужно выполнить проверку файловой системы на ошибки в fsck. Подробнее об этом поговорим ниже.
Таким образом вы можете изменить файловую систему 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, заметьте, что диск должен быть не примонтирован:
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. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Команда mkfs в Linux
Команда mkfs (Make file system) используется в Linux чаще всего для создания файловой системы в разделе жёсткого диска.
Синтаксис
mkfs [параметры] [-t ] [параметры ФС] []
Опции
-t, —type= <тип>Тип файловой системы; ext2, если ничего не указано fs-options Параметры для программы создания реальной файловой системы Путь к используемому устройству Число используемых блоков устройства -V, —verbose Подробная информация о выполняемых действиях; указание параметра -V более одного раза приведет к тестовому запускутип>
Типы файловых систем
Вы можете увидеть список файловых систем, доступных для создания вашим дистрибутивом Linux. Для этого следует набрать в терминале команду и дважды нажать клавишу Tab:
Эти варианты предлагают дистрибутивы Arch Linux и Ubuntu
Выбор файловой системы
Самой популярная файловая система Linux в настоящее время — Ext4. Она проверена, надёжна и является стандартной для ряда дистрибутивов. Ext4 позволяет уменьшить фрагментацию файлов и работать с очень большими дисками, разделами и файлами.
Создание файловой системы BFS вряд когда-либо потребуется, так как она является загрузочной и создаётся при установке Linux.
Системы MSDOS и FAT являются устаревшими и мало кому-нибудь нужны.
Система VFAT обычно используется на внешних носителях: флеш-накопителях, картах памяти.
Файловая система NTFS может потребоваться тем пользователям, которые хотят получить совместимость с операционной системой Windows.
Создание файловой системы
Помните! Все данные, находившиеся ранее на разделах будут безвозвратно утеряны!
Создаём файловую систему ext2 на /dev/sdb1 :
oleg@mobile:~:$ sudo mkfs -t ext2 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) /dev/sdb1 contains a ext2 file system created on Sat Jul 2 11:34:38 2022 Proceed anyway? (y,N) y Creating filesystem with 3781376 4k blocks and 946560 inodes Filesystem UUID: d1be6ca8-ecd2-4e35-af67-5cceb323cb4e Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
При создании файловой системы ext2 можно использовать команду mkfs и так:
Утилита mkfs без опций также создаст файловую систему ext2 по умолчанию.
При создании других файловых систем необходимо указывать их тип.
Проверка устройства хранения на наличие бед-блоков:
oleg@mobile:~:$ sudo mkfs -c /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) /dev/sdb1 contains `DOS/MBR boot sector' data Proceed anyway? (y,N) y Creating filesystem with 3781376 4k blocks and 946560 inodes Filesystem UUID: d1cf78a6-aa45-41d7-9889-2e23c8103f06 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Checking for bad blocks (read-only test): done Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
Подобная проверка занимает значительное время.
Проверка типа файловой системы носителя:
oleg@mobile:~:$ sudo file -sL /dev/sdb1 /dev/sdb1: Linux rev 1.0 ext2 filesystem data, UUID=d1be6ca8-ecd2-4e35-af67-5cceb323cb4e (large files)
Выводы
Использование команды Linux mkfs не представит серьёзных трудностей даже при недостатке опыта. Необходимо лишь быть очень внимательным, ведь по ошибке можно навсегда распрощаться с данными, находившимися ранее на разделах диска.