Как установить mkfs
Перейти к содержимому

Как установить mkfs

  • автор:

Команда mkfs в Linux

Команда mkfs (Make file system) используется в Linux чаще всего для создания файловой системы в разделе жёсткого диска.

Команда Linux mkfs

Содержание

  • Синтаксис
  • Опции
  • Типы файловых систем
  • Выбор файловой системы
  • Создание файловой системы
  • Выводы

Синтаксис

mkfs [параметры] [-t ] [параметры ФС] []

Опции

-t, —type= <тип>Тип файловой системы; ext2, если ничего не указано fs-options Параметры для программы создания реальной файловой системы Путь к используемому устройству Число используемых блоков устройства -V, —verbose Подробная информация о выполняемых действиях; указание параметра -V более одного раза приведет к тестовому запуску

Типы файловых систем

Вы можете увидеть список файловых систем, доступных для создания вашим дистрибутивом Linux. Для этого следует набрать в терминале команду и дважды нажать клавишу Tab:

Команда Linux mkfs, список доступных файловых систем

Эти варианты предлагают дистрибутивы 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 и так:

$ sudo mkfs /dev/sdb1

Утилита mkfs без опций также создаст файловую систему ext2 по умолчанию.

При создании других файловых систем необходимо указывать их тип.

$ sudo mkfs -t ext4 /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb1

Проверка устройства хранения на наличие бед-блоков:

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 не представит серьёзных трудностей даже при недостатке опыта. Необходимо лишь быть очень внимательным, ведь по ошибке можно навсегда распрощаться с данными, находившимися ранее на разделах диска.

Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе

Использование команды mkfs в Linux для форматирования файловой системы на диске или разделе

Буквы в mkfs значке означают «make file system» (создать файловую систему). Команда обычно используется для управления устройствами хранения в Linux. Вы можете рассматривать mkfs как инструмент командной строки для форматирования диска в определенной файловой системе.

mkfs -t [fs type] [target device]

Вы также можете использовать команду mkfs следующим образом:

mkfs.[fs type] [target device]

В этой статье мы в общих чертах расскажем, что такое файловая система. А также приведем примеры эффективного использования команды mkfs.

Поскольку команда mkfs работает с дисками и разделами, вам необходимо быть пользователем root или sudo с правами доступа для запуска команд администратора.

MKFS это мощный инструмент. Важно понимать потенциальные последствия изменения файловой системы. Выбор неправильного узла устройства удалит все данные на этом устройстве. Используйте эту команду на свой страх и риск. Вы были предупреждены

Что такое файловая система

Файловая система (fs) относится к структуре и логике, которые управляют данными на устройстве. Файловая система контролирует, как данные хранятся и извлекаются.

Существует много типов файловых систем, каждая из которых имеет свои преимущества и недостатки. Вот наиболее распространенный тип файловых систем:

Возможно, вы уже сталкивались с одним или несколькими из этих типов файловых систем. Вы можете даже связать типы с их соответствующими операционными системами.

Вообще говоря, FAT/NTFS предназначены для Windows, Ext используется с системами Linux, а APFS/HFS — файловые системы macOS. Каждый из них по-разному обращается к логике файловой структуры, что может привести к проблемам.

Вот почему важно подумать об этом перед объявлением типа файловой системы или «форматированием» вашего устройства. Каждый вариант использования индивидуален, и вам решать, какая файловая система лучше всего подходит для ваших нужд.

Примеры команд mkfs

Позвольте нам показать вам наиболее распространенное использование команды mkfs.

Пожалуйста, не пытайтесь использовать вслепую ни одну из этих команд в вашей реальной системе. Они отформатирует целевое устройство/раздел диска, удалив все данные.

mkfs без опций создает файловую систему ext2

Если вы не укажете тип файловой системы для целевого устройства, он будет использовать файловую систему ext2 по умолчанию.

sudo mkfs /dev/sdb1

Укажите тип файла с помощью mkfs

Использование ext2 не очень удобно или целесообразно. В наши дни большинство систем Linux рекомендуют использовать ext4. Вы можете указать файловую систему следующим образом:

sudo mkfs -t ext4 /dev/sdb1

Вы также можете использовать это так:

sudo mkfs.ext4 /dev/sdb1

Проверьте наличие плохих блоков на устройстве

Вы также можете проверить наличие плохих блоков на устройстве, но имейте в виду, что проверка часто занимает много времени.

sudo mkfs -c /dev/sdb1

Бонусный совет: проверьте тип файловой системы устройства

Вы можете проверить тип файловой системы устройства, которое вы только что отформатировали, используя команду mkfs. Вы можете использовать команду file для этой цели.

sudo file -sL /device

Вот пример, который показывает, какой вывод он может показать:

linux@andreyex:~$ sudo file -s /dev/nvme0n1p2 /dev/nvme0n1p2: Linux rev 1.0 ext4 filesystem data, UUID=34daa4b7-a2c4-4983-b5cc-df9baa6a6543 (extents) (64bit) (large files) (huge files)

Реальный пример использования: использование команды mkfs для создания файловой системы на USB-устройстве.

Теперь, когда у вас есть некоторая справочная информация, вы можете начать использовать mkfs.

Самая практическая демонстрация, которую мы можем придумать, — это форматирование USB-накопителя. Эти же принципы будут применяться к любому типу хранилища по вашему выбору.

Найди свое устройство

Сначала вам нужно будет найти свое устройство. Один метод, который вы можете использовать, это sudo fdisk -l. Это перечислит все дисковые узлы, которые в настоящее время смонтированы.

destroyer@linux-andreyex:~$ sudo fdisk -l Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors Disk model: VBOX HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x3c62c49c Device Boot Start End Sectors Size Id Type /dev/sda1 * 4096 1023998 1019903 498M 83 Linux /dev/sda2 1024000 44036094 43012095 20.5G 83 Linux /dev/sda3 44036096 52424702 8388607 4G 82 Linux swap / Solaris Disk /dev/sdb: 28.93 GiB, 31040995328 bytes, 60626944 sectors Disk model: Patriot Memory Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 91A34D6F-E67B-E54D-B19C-5CC828DAAB9A Device Start End Sectors Size Type /dev/sdb1 2048 60626910 60624863 28.9G Linux filesystem

Ваш вывод, очевидно, будет различным. Пожалуйста, будьте очень осторожны при определении желаемого диска . Если вы не уверены, извлеките диск и повторите команду fdisk -l. Если у вас есть правильное устройство, оно не будет отображаться во время отключения.

Проверьте раздел

Устройство, которое мы используем, является USB-накопителем Patriot Memory, и оно находится по адресу /dev/sdb. В дополнение к определению правильного диска, вам нужно будет убедиться, что вы меняете fs нужного раздела.

Мы использовали инструменты fdisk, чтобы удалить существующие данные и написать новую таблицу разделов. Пока мы делали это, мы создали новый раздел для записи. Этот раздел будет нашей целью /dev/sdb1.

Отсоединение

Прежде чем пытаться изменить файловую систему, вам нужно размонтировать ее с помощью команды umount.

destroyer@linux-andreyex:~$ sudo umount /dev/sdb1

Создать файловую систему

Теперь, когда вы проверили свою цель и размонтировали диск, вы можете приступить к созданию файловой системы.

Мы добавили опцию -v verbose, чтобы отобразить больше информации при запуске.

destroyer@linux-andreyex:~$ sudo mkfs.ext4 /dev/sdb1 -v mke2fs 1.45.5 (07-Jan-2020) fs_types for mke2fs.conf resolution: 'ext4' Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1896832 inodes, 7578107 blocks 378905 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2155872256 232 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Filesystem UUID: 73882769-7599-4c79-a00b-ef317ccd921d 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

Этот процесс может занять некоторое время, но должен завершиться менее чем за 20 минут, если цель не превышает 2 ТБ.

У нас было несколько проблем с программой, висящей на последнем пункте. К сожалению, нет индикатора прогресса, и мы не видели ошибок.

Проверьте вновь созданную файловую систему

Сначала проверьте файловую систему устройства, которое вы только что использовали. Это тот, который вы хотели?

sudo file -sL /dev/sdb1

Важно убедиться, что устройство распознается в системах, с которыми оно будет использоваться. Мы создали папку с именем test и внутри нее файл с именем test.txt.

Чтобы сэкономить время, вы можете скопировать и вставить мои команды здесь.

mkdir test && cd test touch test.txt echo "THIS IS ONLY A TEST" > test.txt cat test.txt

Если все работает, вы сможете смонтировать диск в нужные вам системы и получить доступ к файлам. Если вы не можете получить доступ к файлам в вашей системе, возможно, существует проблема совместимости.

Вывод

Мы надеемся, что вы найдете это краткое руководство по команде mkfs полезным. Если вам нравится эта статья, пожалуйста, поделитесь ее в социальных сетях.

Если у вас есть какие-либо комментарии или вопросы, пожалуйста, оставьте их ниже. Если у вас есть предложения по темам, которые вы бы хотели охватить, не стесняйтесь также оставлять их.

24. Работа с файловыми системами

Кое-какое представление о файловых системах у нас сложилось, пора уже приступать к делу. Для начала, давайте запишем файловую систему. В этом нам поможет утилита mkfs. Всякие настройки по умолчанию для файловой системы ext4 лежат в файле /etc/mke2fs.conf:

head /etc/mke2fs.conf 

Тут у нас размеры блоков, инод и всё такое.

И всё что нам остаётся сделать для создания файловой системы – написать команду mkfs точка, желаемый тип файловой системы, а потом раздел или диск:

sudo mkfs.ext4 /dev/sdb1 

Программа создаст файловую систему и покажет нам информацию о ней – сколько блоков какого объёма поместилось в файловой системе, какое количество инод, идентификатор файловой системы, где сохранились бэкапы суперблока — того самого, где хранятся метаданные самой файловой системы.

Всякие детали о файловой системе можно посмотреть с помощью tune2fs и указанием раздела с нужной файловой системой:

sudo tune2fs -l /dev/sdb1 

Но в большинстве случаев с этим всем не нужно заморачиваться. По умолчанию всё настроено так, чтобы работать из коробки для большинства случаев. А если файловая система вам нужна для каких-то более серьёзных задач, то нужно изучать документацию. Пойдём дальше. Ну, есть у нас файловая система, а что с ней делать? Её нужно куда-то прицепить, точнее, примонтировать в какую-то директорию. Собственно, всё зависит от ваших задач. Задачи могут быть разные – скажем, отделить файлы пользователей от системы, чтобы можно было переустановить операционную систему, не стерев ваши файлы. Тут нужно отделить директорию /home. Или, допустим, вы хотите на сервере отделить файлы с данными от файлов операционной системы. Или, например, отделить директорию с логами, чтобы в случае какой-нибудь проблемы они внезапно не забили весь диск логами, от чего система вообще может перестать нормально работать. И это только ряд задач, на деле причин может быть много. Но, давайте, например, вынесем файлы пользователей на новую файловую систему.

Если я возьму и просто примонтирую новую файловую систему в /home, то я перекрою существующие файлы пользователей и вместо них будет чистая файловая система и директория /home окажется пустой. Это не дело, нужно сначала перенести файлы пользователей на новую файловую систему. А это не такая простая задача – если я сейчас сижу от имени пользователя, пусть даже не видно, но я работаю с файлами в домашней директории своего пользователя. Т.е. графический интерфейс подгрузил всякие файлы настроек и всячески использует мою домашнюю директорию, например, браузер может писать кэш, баш сохраняет историю и т.п. А пока файлы используются, перемещать их не стоит – можно случайно повредить их. Поэтому нужно завершить все процессы, использующие директорию /home и все поддиректории.

Во первых, для этого мне нужно разлогиниться. Но как мне тогда работать? Правильно, через виртуальный терминал. Нажимаем правый Ctrl+F3 (это зависит от гипервизора, на реальном железе Alt+Ctrl+F3) и заходим в виртуальный терминал из под рута. Дальше убеждаемся, что никакой процесс не использует файлы в директории /home, в этом нам поможет утилита lsof, показывающая открытые файлы, с ключом +D, чтобы проверить во всех субдиректориях:

lsof +D /home 

У меня тут пусто, но если у вас какие-то процессы используют файлы, желательно их завершить, вы знаете как.

Дальше стоит проверить размер директории /home – хотя надо было ещё при создании разделов. Для этого используем утилиту du:

du -h /home 

Как видите, тут файлов на 140 мегабайт, а наш раздел sdb1 почти на 200:

fdisk -l /dev/sdb1 

Хоть тут и хватает места, у меня дальше начинается другой раздел, а значит в будущем я не смогу увеличить размер раздела и файловой системы, по крайней мере без кучи махинаций. Поэтому лучше изначально разделы распределить так, чтобы у каждой файловой системы хватало места с запасом. Но при этом, если нет необходимости, не занимайте всё свободное место на раздел – увеличить раздел и файловую систему всегда можно, если есть свободное место, а вот уменьшить размер файловой системы зачастую проблемно, а на xfs пока вообще нет такой возможности.

Но у меня есть раздел sdc2 на 800 мегабайт:

fdisk -l /dev/sdc2 

его и будем использовать. Опять же, нам нужна файловая система:

mkfs.ext4 /dev/sdc2 

Теперь мне нужно перенести файлы из директории /home на новую файловую систему. А чтобы это сделать, мне нужно временно примонтировать новую файловую систему. Для таких целей даже есть специальная директория — /mnt. Я просто пишу:

mount /dev/sdc2 /mnt/ 

т.е. какую файловую систему монтировать в какую директорию. Чтобы убедиться, что всё сработало, я использую утилиту df:

df -h 

Самая последняя запись — /dev/sdc2 примонтирован в /mnt.

Окей, пора переносить файлы:

mv -v /home/* /mnt 

Проверяем, всё ли нормально:

ll /mnt /home du -h /mnt | tail -1 

Вроде всё ок – файлы перемещены. Теперь пора отмонтировать новую файловую систему и примонтировать в /home. Чтобы отмонтировать — umount /mnt.

Но прежде чем пойдём дальше, есть ещё одна деталь. То как мы примонтировали сейчас, не означает, что после перезагрузки операционная система также примонтирует. Ей нужно об этом сказать, чтобы в будущем она всегда монтировала sdc2 в /home. Для этого есть файл /etc/fstab:

cat /etc/fstab 

И в нём нам нужно достоверно компьютеру сказать, какую файловую систему куда нужно монтировать. А так как мы выяснили, что sda sdb и sdc – имена, которые могут меняться, то нельзя указывать их. Вместо них мы можем использовать идентификатор файловой системы. Помните, при создании мы видели такой? И чтоб не искать его, можем воспользоваться утилитой blkid:

blkid /dev/sdc2 

Второй столбик – UUID – это наш идентификатор файловой системы. Если мы форматнём эту файловую систему, будет другой UUID.

И теперь нам нужно переписать этот UUID в файл /etc/fstab. Но.. тут же много символов? Хотя… мы же знаем, что у нас в системе куча утилит для работы с текстом. Воспользуемся одной из них – cut. И так, blkid делит столбцы по пробелам, значит пробел наш делитель. При этом, нам нужен второй столбец. Значит:

blkid /dev/sdc2 | cut -d' ' -f2 

И мы получили нужную строку. Теперь нужно записать её в файл /etc/fstab. Но прежде чем делать эксперименты с реальными файлами, лучше их забэкапить:

cp /etc/fstab.bkp> ls /etc/fstab* 

Теперь выполняем команду blkid, но вывод добавляем в fstab:

blkid /dev/sdc2 | cut -d' ' -f2 >> /etc/fstab 

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

Теперь осталось дописать строку:

nano /etc/fstab 

И так, файловая система указана. Можно ориентироваться на примеры выше. После UUID-а указываем точку монтирования — /home. Количество пробелов не важно. Дальше указываем тип файловой системы – ext4. После этого – опции монтирования. Допустим, чтобы в inode не писалась информация о последнем доступе к файлу – это сильно сократит частоту записи на жёсткий диск – напишем defaults,noatime, через запятую, без пробела. А по умолчанию можно оставить defaults. На самом деле, defaults тут чтобы поле не пустовало, мы могли бы убрать defaults и оставить только noatime, но я решил оставить, чтобы показать пример нескольких опций. По ссылке вы можете найти различные опции монтирования, там же можно найти информацию, что включает в себя defaults. Дальше две цифры. Первая – dump – для создания резервной копии файловой системы. Хотя для работы этого нужна утилита dump, которая сейчас практически не пользуются. Но, в целом, есть такая возможность, и если стоит 1, то будет сниматься дамп, а в большинстве случаев здесь указывается 0 – т.е. без дампа. Вторая цифра – проверка файловой системы.

Во время работы на файловой системе могут накапливаться ошибки, и всякие внештатные ситуации, как, например, при внезапном отключении компьютера, могут создавать ошибки. Да, журналирования частично решает проблемы, но не полностью. Поэтому файловые системы желательно иногда проверять на наличие ошибок и исправлять, для этого есть утилита fsck. Но проверять целостность файловой системы во время работы нельзя, это может её повредить. Её нужно предварительно отмонтировать. Но это не всегда просто – как вы отмонтируете корень, где у вас система? Да и чтобы не заниматься этим вручную, это можно автоматизировать, чтобы при включении компьютера конкретная файловая система проверялась на ошибки и они исправлялись. Тут значение может быть 0 – это не проверять. 1 стоит ставить только для файловой системы, где лежит корень, так как исправление ошибок на нём более приоритетно. Для проверки всех остальных файловых систем можно указать 2. После чего сохраняем и выходим.

И теперь, когда система знает куда монтировать sdc2, можно просто написать:

mount /dev/sdc2 
mount /home 

Теперь можем вернуться к графическому интерфейсу – Ctrl+F1 и залогиниться. Опять напишем df -h и посмотрим, что куда примонтировано. Как видите, файловая система sdc2 примонтирована в директорию /home. И если бы что-то не работало, мы бы просто не смогли залогиниться.

И так, при включении компьютера операционная система смотрит в fstab, видит какую файловую систему куда и как монтировать и делает это. Но что, если файловая система недоступна? Допустим, какие-то проблемы с диском или самой файловой системой, а может опечатка в fstab. В таких случаях операционная система не загружается полностью, а предлагает нам посмотреть и исправить ошибку. Игнорировать проблемы с файловой системой и загрузиться операционная система не может, если это не указано в fstab. Представьте, что на этой файловой системе есть какие-то важные файлы, допустим файлы приложения. И если у нас система запустится, запустит приложение, но оно не увидит свои файлы – приложение может создать кучу проблем. Во избежание такого операционная система не даст запустить всю систему, если ей не удаётся примонтировать какую-то файловую систему.

Давайте воссоздадим такую ситуацию и попытаемся её решить. Для этого давайте испортим запись в fstab:

sudo nano /etc/fstab 

Добавим здесь перед UUID какие-нибудь буквы, типа мы опечатались, и перезагрузимся:

reboot 

Как видите, система не смогла запуститься и предложила нам командную строку. Во первых, вводим пароль от пользователя root. Чуть выше командная строка рекомендует посмотреть логи:

journalctl -xb 

Немного полистаем вниз и увидим красную строчку – Failed to mount /home – т.е. не получилось примонтировать /home. Чуть выше написана причина – не найдено устройство.

Но прежде чем исправлять, представим, что дело не в нашей опечатке, а какая-то проблема с файловой системой. Для этого выполним проверку файловой системы с помощью утилиты fsck:

fsck /dev/sdc2 

А для файловой системы xfs используется утилита xfs_repair. Сейчас у меня ошибок нет, но если бы были, программа бы о них сказала и предложила бы пути решения.

Также, у многих возникает вопрос – а какие директории стоит выносить на отдельные файловые системы:

Идеальной схемы нету, где-то что-то имеет смысл отделять, а где-то это просто усложняет. Мы разобрали, зачем это для /home. Вскоре мы разберём, зачем это может понадобится для /boot. Какие-то директории, например dev, proc и sys – мы их уже разбирали – в них и так виртуальные файловые системы. В /etc важные для загрузки операционной системы настройки, тот же fstab – и вынести /etc на отдельный раздел очень сложно и бесполезно. /media и /mnt обычно пустые директории, куда временно монтируются всякие флешки и cd диски, поэтому их выносить бессмысленно. В /opt обычно лежит проприетарный софт, на домашних компьютерах его выносить на отдельный раздел обычно не нужно, а на серверах сильно зависит от самого софта – иногда, для удобства, стоит отделять файлы приложения от файлов системы – это позволит легче бэкапить приложение, переносить его на новые системы и т.д. Это в целом касается приложений на серверах, которые могут использовать в качестве директории с данными /opt, /home, а то и отдельную директорию в корне, например /srv. Домашнюю директорию рута — /root – выносить бессмысленно, там обычно ничего примечательного. В /run – еще одна виртуальная файловая система. Про /tmp мы упоминали, тут у нас всякие процессы и пользователи могут создавать временные файлы при работе. И в большинстве случаев имеет смысл вынести /tmp в виртуальную файловую систему – можете почитать по ссылке. Касаемо /usr всё сложно – раньше имело смысл вынести /usr, чтобы сделать его read only – то есть доступным только для чтения. В таких случаях во время обновления или установки программ её перемонтировали для записи, а потом обратно в read only, что позволяло обеспечить безопасность, так как если нет возможности изменить файлы – то всяким вирусам будет посложнее. Но в современных дистрибутивах происходят изменения и вынести /usr если и можно, то всё равно не рекомендуется. А read only можно сделать весь корень, при определённых условиях. В директории /var лежат динамические файлы, которые меняются, например логи, файлы базы данных, сайты и т.п. В этом и суть директории – если вы хотите обезопасить систему и сделать её read only, то директорию, в которой что-то постоянно меняется стоит вынести в отдельную файловую систему. При этом монтировать /var можно с определёнными опциями, например noexec – чтобы нельзя было запускать программы в этой файловой системе. Но тут, конечно, нюансы – у вас тут может лежать сайт в директории /var/www, где может требоваться запускать какие-то файлы сайта. Поэтому имеет смысл выносить не весь /var, а его определённые субдиректории – например, /var/log, где лежат логи. В целом рекомендуется выносить директорию /var/log на отдельную файловую систему, потому что бывают случаи, когда какие-то сервисы начинают внезапно писать очень много логов. И если /var/log вместе с корнем в одной файловой системе, то когда закончится место на файловой системе, начнут появляться проблемы.

Всё это – базовые операции при работе с файловыми системами – мы знаем, как её создать, как её примонтировать, как сделать так, чтобы она монтировалась при включении компьютера. И мы для примера переместили /home на раздел одного из дисков. И, хотя, казалось бы, в целом проделать это всё не сложно, но когда речь идёт о терабайтах данных, все эти махинации могут занять много времени, при этом сервисы, использующие эти данные, будут недоступны для пользователей. Время – это деньги, и пока вы будете перемещать данные на новые диски большего объёма, бизнес будет терять деньги. Поэтому админ должен заранее определить – сколько места понадобится на те или иные файловые системы, какие из них в дальнейшем могут потребовать больше места, какого рода файлы будут храниться – большие или маленькие, в зависимости от этого подкорректировать размеры блоков файловой системы и рассчитать необходимое количество инод. И всё это сделать ещё на этапе установки операционной системы. Но как бы идеально вы не рассчитали, в жизни не всё идёт по плану, поэтому есть более гибкие системы, о которых мы поговорим в следующий раз.

© Copyright 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия 5f665cc2 .

Как использовать команду mkfs в Linux

 Терминал Linux на ноутбуке с рабочим столом в стиле Ubuntu.

Вы должны создать файловую систему, прежде чем сможете использовать устройства хранения данных, подключенные к компьютеру Linux. Узнайте, как использовать mkfs и другие утилиты, чтобы сделать это точно для всех типов файловых систем. Мы покажем вам, как.

mkfs создает файловые системы

mkfs создает файловые системы. В других операционных системах создание файловой системы называется форматированием. Независимо от имени, это процесс, который подготавливает раздел для хранения данных. В разделе нужен способ сохранения файлов, да. Но ему также нужен механизм для хранения имен и местоположений этих файлов вместе с их метаданными, такими как метка времени создания файла, метка измененного времени, размер файла и т. Д. После того, как mkfs собрал необходимую среду для обработки и сохранения метаданных из файлов, вы можете начать добавлять файлы в раздел.

Синтаксис очень прост. Просто скажите mkfs раздел устройства, на котором вы хотите создать файловую систему, и какой тип файловой системы вы хотите. Вот и все с первого взгляда. За кулисами это немного по-другому. Некоторое время в большинстве дистрибутивов Linux mkfs был пакетом для mke2fs . Команда mkfs вызывает команду mke2fs и передает ее указанным вами параметрам. Бедный старик mke2fs делает всю работу, но ничего не получает от славы.

Синтаксис mkfs обновлен, а старый формат устарел. Обе формы будут работать, но мы будем использовать современный стиль в этой статье.

Выбор файловых систем

Современный способ использования mkfs заключается в вводе «mkfs». имя файловой системы, которую вы хотите создать.

Чтобы увидеть файловые системы, которые mkfs может создать, введите «mkfs» и дважды нажмите клавишу Tab. После mkfs нет пробела, дважды нажмите клавишу Tab.

 Список поддерживаемых файловых систем в окне терминала

Список доступных файловых систем отображается в окне терминала. Скриншот взят из Ubuntu 18.04 LTS. Другие дистрибутивы могут предлагать больше или меньше вариантов. Мы рассмотрим их и кратко опишем. После короткого слова о журналировании.

Журналирование является важной концепцией в файловых системах. Файловые системы регистрируют ожидающий файл, который записывается в журнал. При записи в каждый файл журнал обновляется, а текущие записи записи обновляются. Это позволяет файловой системе восстанавливать испорченные, частично записанные файлы, которые произошли в результате катастрофического события, такого как отключение питания. Некоторые из старых файловых систем не поддерживают ведение журнала. Те, кто не пишет на диск реже, потому что им не нужно обновлять дневник. Они могут работать быстрее, но они более подвержены повреждениям из-за прерванных операций записи.

  • Ext2 : Самой первой файловой системой для Linux была файловая система MINIX. Позже она была заменена первой файловой системой, написанной специально для Linux, а именно Ext. Ext2 был преемником Ext. Ext2 не является файловой системой журнала.
  • Ext3 : это был преемник Ext2 и его можно рассматривать как Ext2 с журналированием, который защищает вашу файловую систему от повреждения данных, вызванного сбоями и внезапной потерей питания. [19659015] Ext4 : Ext4 является файловой системой по умолчанию для майских дистрибутивов Linux. Это надежная, проверенная и проверенная файловая система. Он имеет функции, которые уменьшают фрагментацию файлов и может использоваться с большими дисками, разделами и файлами, чем Ext3.
  • BFS : это загрузочная файловая система, предназначенная для одной задачи и одной: для файлов в загрузочном разделе. Редко, когда вы создаете загрузочную файловую систему вручную. Ваш процесс установки Linux делает это для вас.
  • FAT : Файловая система таблицы размещения файлов разработана для гибких дисков консорциумом тяжеловесов компьютерной индустрии. Он был представлен в 1977 году. Единственная причина, по которой вам следует использовать эту файловую систему без регистрации, – это совместимость с операционными системами не-Linux.
  • NTFS : Файловая система новой технологии – это файловая система журнала Microsoft, представленная в Windows NT. Это был преемник FAT. Единственная причина, по которой вы используете эту файловую систему, заключается в совместимости с операционными системами, отличными от Linux.
  • MINIX : Первоначально созданная Эндрю С. Таненбаумом в качестве учебного пособия, MINIX – это операционная система, которая & # 39; mini-Unix & # 39; есть. В настоящее время он нацелен на создание самовосстанавливающейся и устойчивой к ошибкам операционной системы . Файловая система MINIX разработана как упрощенная версия файловой системы Unix. Возможно, если вы осуществляете кросс-разработку на компьютере Linux и ориентируетесь на платформу MINIX, вы можете использовать эту файловую систему. Или вам может потребоваться совместимость с компьютером MINIX по другим причинам. Сценарии использования этой файловой системы на компьютере Linux не выделяются, но она доступна.
  • VFAT : Таблица размещения виртуальных файлов, была введена в Windows 95 и убрала ограничение в восемь символов для имен файлов. Имена файлов длиной до 255 символов стали возможными. Единственная причина, по которой вы используете эту файловую систему, заключается в совместимости с операционными системами, отличными от Linux.
  • CRAMFS : Файловая система сжатого ПЗУ – это файловая система только для чтения, предназначенная для встроенных систем и специализированного использования только для чтения. , как в процессах запуска компьютеров Linux. Обычно сначала загружают небольшую временную файловую систему, чтобы можно было запустить процессы начальной загрузки для подготовки «настоящей» загрузочной системы.
  • MSDOS : файловая система дисковой операционной системы Microsoft. Выпущенная в 1981 году, эта базовая файловая система настолько проста, насколько это возможно. В первой версии даже не было папок. Он занимает видное место в истории компьютеров, но, помимо совместимости со старыми системами, сегодня нет оснований для его использования.

ОТНОСИТЕЛЬНО: Какую файловую систему Linux вы должны использовать? [19659008] Безопасный способ экспериментировать с файловыми системами

Создание файловой системы в разделе разрушительно для всех данных, которые могут уже находиться в этом разделе. Использование запасного жесткого диска – или даже запасного компьютера – это идеальный способ экспериментировать с созданием и использованием различных файловых систем. Но, конечно, у многих людей нет запасного оборудования в ожидании эксперимента.

Однако мы можем создать файл изображения и создать файловые системы в нем. После того, как мы смонтировали его, мы можем использовать его как обычный раздел. Мы можем исследовать файловые системы и экспериментировать с ними без необходимости дополнительного оборудования. Мы используем команду от для создания нашего файла изображения.

Файл изображения создается путем взятия исходных данных и записи их в изображение. Мы должны сказать от где мы должны получить исходные данные. Мы используем опцию if (входной файл), чтобы указать dd использовать / dev / zero в качестве источника данных для ввода. Это становится потоком с нулями.

С опцией из (выходной файл) мы можем указать имя для файла изображения. Мы называем это «howtogeek.img».

Размер файла изображения определяется размером и количеством блоков, которые мы к нему добавляем. Мы используем опцию bs (размер блока), чтобы запросить размер блока 1 МБ, и опцию count чтобы запросить 250 блоков. Это дает нам файловую систему на 250 МБ. Когда вы даете эту команду, вы настраиваете количество блоков в соответствии с вашими потребностями и доступную свободную емкость на вашем компьютере с Linux.

dd if = / dev / zero или = ~ / howtogeek.img bs = 1M count = 250 [19659033] dd if = / dev / zero или = ~ / howtogeek.img bs = 1M count = 250 " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> [19659006] Файл был создан для нас, и от сообщает, что для нас было изготовлено 250 блоков по запросу.

Мы можем просмотреть наш файл изображения с ls :

ls -hl

 ] ls -hl в a окно терминала

Это 250 МБ, как и ожидалось, что обнадеживает.

Создание файловой системы

Давайте выберем файловую систему для использования. Мы возвращаемся назад и используем Ext2, первую версию Ext, которая может сделать эту реализацию mkfs . Это не журнальная файловая система, поэтому не храните ничего ценного, не имея резервных копий в другом месте. Мы используем mkfs.ext2 вариант команды mkfs и мы говорим ему использовать наш файл изображения в качестве цели.

mkfs.ext2 ~ / howtogeek.img [19659043] mkfs.ext2 ~ / howtogeek.img в окне терминала " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>

Файловая система создана, и отображаются некоторые сведения о файловой системе.

Как видно из выделенного текста, появляется mke2fs .

Теперь у нас есть контейнер для файловой системы - файл образа, который обозначает жесткий диск в этом сценарии. Мы создали файловую систему в этом контейнере. Теперь нам нужно смонтировать файловую систему, чтобы мы могли ее использовать.

Это временный параметр, поэтому мы создадим точку монтирования в / mnt с именем «geek». Мы удалим его, когда мы & # 39; закончил снова.

sudo mkdir / mnt / geek cialis19659050Buchmkfs.ext2 ~ / howtogeek.img в окне терминала " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>

Теперь мы можем смонтировать наш файл изображения. img / mnt / geek cialis19659053Buchmkfs.ext2 ~ / howtogeek.img в окне терминала " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>

Нам нужно изменить владельца файла точки подключения, чтобы у нас был доступ для чтения и записи к ней. [19659032] sudo chown dave: users / mnt / geek /

 sudo chown dave: users / mnt / geek / в окне терминала

И теперь мы должны иметь возможность использовать нашу новую файловую систему. Давайте изменим файловую систему и скопируем в нее некоторые файлы.

cd / mnt / geek
cp ~ / Documents / Code / *.? ,

 cp ~ / Documents / Code / *.? , в окне терминала

Копирует все файлы с расширением из одной буквы из папки ~ / Documents / Code в нашу новую файловую систему. Давайте проверим, были ли они скопированы.

 ls в окне терминала

Файлы были скопированы, поэтому наша файловая система была создана, связана и использована. Или мы так думаем. Давайте проверим это снова. Мы отключаем файловую систему от нашего домашнего каталога. Обратите внимание, что в umount есть только одно «n».

sudo umount / mnt / geek

 sudo umount / mnt / geek в окне терминала

Теперь, если мы вернемся к / mnt / geek и проверим файлы, мы не должны найти их, потому что они находятся в нашем файле изображения, и он был не связан.

cd / mnt / geek

 cd / mnt / geek в окне терминала

СВЯЗАННЫЕ: Как подключать и отключать устройства хранения данных от терминала Linux

Дальнейшее исследование

Теперь мы отработали процесс, пробовать другую файловую систему должно быть просто. На этот раз мы будем использовать файловую систему MINIX. В нашей домашней папке мы можем создать новую файловую систему в нашем существующем файле образа.

Будь осторожен! Если в файловой системе есть важные файлы в файле изображения, свяжите файл изображения и получите их в для чтобы создать новую файловую систему.

mkfs.minix ~ / howtogeek.image

 mkfs.minix ~ / howtogeek.image в окне терминала

Без каких-либо указаний на то, что вас спросят & # 39; если вы уверены & & # 39; , новая файловая система создается через старую. Мы можем смонтировать наш файл образа точно такой же командой, как и раньше:

sudo mount ~ / howtogeek.img / mnt / geek

 sudo mount ~ / howtogeek.img / mnt / geek в окне терминала

[19659006] Давайте изменим на новая файловая система в / mnt / geek и посмотрим, сможем ли мы создать файл.

touch geek.txt

 touch geek.txt в окне терминала

ls -ah geek.txt

 ls -ah geek.txt в окне терминала

И так далее Просто и быстро, мы создали и смонтировали новую файловую систему и можем ее использовать.

Удаление точки присоединения

Когда вы закончите, мы можем удалить точку привязки "geek". Для этого мы будем использовать rmdir:

cd / mnt
sudo rmdir geek

 sudo rmdir geek в окне терминала

Жонглирование огнем

С Linux, как и большинство вещей вы учитесь на практике. Проблема с некоторыми командами заключается в том, что они потенциально разрушительны. Дилемма заключается в том, как вы можете практиковать их использование без ущерба для вашей системы или данных?

Теперь у вас есть простой метод создания и тестирования файловых систем с помощью mkfs который оставляет ваш компьютер без изменений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *