Во время выполнения различных задач по администрированию системы может понадобится работать с файловой системой Linux, форматировать разделы, изменять их размер конвертировать файловые системы, выполнить дефрагментацию в Linux или восстановление файловых систем.
Многие из этих действий выполняются в графическом интерфейсе, многие и вовсе автоматически. Но может возникнуть ситуация, в которой придется делать все через терминал. Также при администрировании удаленных серверов работать с ними приходится только через ssh, а это означает недоступность графического интерфейса.
В этой статье мы рассмотрим как выполняется работа с файловой системой Linux в терминале. За основу возьмем семейство файловых систем ext2/3/4, так как они самые распространенные среди большого многообразия дистрибутивов Linux.
Основные команды
Для управления файловой системой ext в Linux используется целый набор команд из пакета e2progs. Сюда входят как команды для управления флагами файлов, создания и изменения файловых систем, так и утилиты для отладки файловой системы.
Рассмотрим основные утилиты, которые будем использовать:
- badblocks — если у вас старый жесткий диск и на нем накопилось много битых блоков, вы можете с помощью этой утилиты пометить их все на уровне файловой системы, чтобы больше не использовать.
- e2label — позволяет изменить метку раздела с файловой системой ext.
- fsck — проверка файловой системы linux и исправление найденных ошибок
- mkfs — позволяет создать файловую систему Linux.
- resize2fs — изменить размер раздела с файловой системой
- tune2fs — позволяет изменить файловую систему 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
root
Устанавливаем новую:
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:
$ 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. Просто выполните:
e4defrag /dev/sda6
Чтобы проверить нужна ли дефрагментация в 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. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Буквы в 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
- ext*
- APFS
- HFS*
Возможно, вы уже сталкивались с одним или несколькими из этих типов файловых систем. Вы можете даже связать типы с их соответствующими операционными системами.
Вообще говоря, 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 полезным. Если вам нравится эта статья, пожалуйста, поделитесь ее в социальных сетях.
Если у вас есть какие-либо комментарии или вопросы, пожалуйста, оставьте их ниже. Если у вас есть предложения по темам, которые вы бы хотели охватить, не стесняйтесь также оставлять их.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
The mkfs command stands for “make file system” is utilized to make a file system (which is, a system for organizing a hierarchy of directories, subdirectories, and files) on a formatted storage device usually, a partition on a hard disk drive (HDD) or it can also be a USB drive, etc. A partition is logically an autonomous part of an HDD. An organized segment is one to which a low-level arrangement or format, additionally called a physical format(organization), has been applied. It comprises separating the disk’s tracks into a predetermined number of divisions and filling the information zone of every segment with dummy bytes.
These outcomes in the demolition of any current information on the disk. Formatting(organizing) of new HDD and floppy plates is done at the manufacturing plant. It is seldom important to do a low-level format on an HDD. The creation of a file system is also known as high-level formatting or logical formatting. It includes making a table of contents for the partition or disk, but in this case, the data already present on the disk or segment is not destroyed. Basically, “mkfs” is just a front-end for the various specific file system creation programs that are available in Linux, such as mke2fs, mkfs.ext3 and mkfs.vfat, etc. When the “mkfs” command is compiled, then a precise list of standard directories is created, and therefore the specified program is searched for from the same list.
Syntax for mkfs command:
mkfs [ -V ] [ -t fstype ] [ fs-options ] filesys [ blocks ]
- The items in the square brackets are discretionary, but the main obligatory argument is “filesys”. filesys is the name of a device document (i.e., a record that the system uses to execute admittance to a physical device), for example, /dev/hda3, the third segment on the primary HDD, or/dev/fd0, the principal floppy disk. It can likewise be the mount point (i.e., where it is joined to the system) for the new file system.
- The most commonly used option is “-t”, which is utilized for specifying the type of file system to be created. If this option is not used, the default filesystem created will be ext2 (second extended file system) from the other types of file systems that can be created like ext3, minix, msdos, vfat and xfs.
- The -V option is used to produce verbose output, and also includes all file system-specific commands that are executed. By specifying this option more than once, the execution of any file system-specific commands can be prevented.
- The “-c” option, will check the storage device for bad blocks before creating the file system, and the “-l” option, will read the bad blocks list from a file whose name follows it.
- “fs-options” stand for file system-specific options that are to be passed to the real file system creation program (i.e., the program for which mkfs is serving just as a front end).
Journaling
It is a significant idea in file systems. The file system records the awaiting file keeps in touch with a diary. As each file is composed of, the diary is refreshed, and the unresolved setup accounts are refreshed. This permits the file system to fix broken, halfway composed files that have happened because of a disastrous occasion, for example, a power cut. A portion of the more seasoned file systems doesn’t uphold journaling. Those that don’t, keep in touch with the disk, less regularly in light of the fact that they don’t have to refresh the diary. They might give a faster performance, yet they are more inclined to harm because of interrupted file writes.
- In the modern era, the way of utilizing mkfs is to type “mkfs.” and then the name of the file system you wish to create.
- Now, in order to see all the file systems offered by the “mkfs” command, hit the Tab key twice.
- The list of all available file systems available in the Linux distribution being used will be displayed in the terminal window. The screenshot is from Ubuntu 18.04 LTS. Other distributions may have more or fewer options:
To make a File System on a USB:
1. Finding the required device on the OS through the terminal. Type in the following command, and it will show all the disk nodes that are currently mounted. Be always sure in choosing the right disk or otherwise, you can remove the storage device and then again plug it in if the above command is not showing it in the list, thereafter again run the above command to list all the nodes. Here, our required disk is “/dev/sdb” which is of 3.7 GiB.
sudo fdisk -l
2. Un-mounting the USB drive’s partition
Un-mounting the storage drive is necessary before performing the format. Run the following command, but remember to replace “sdb1″ with your USB drive’s partition label, and then press Enter.
sudo umount /dev/sdb1
3. Erasing all the data on the drive (discretionary)
You can erase everything on the drive by entering the following command. But, remember to supplant “sdb” with your USB drive’s name.
sudo dd if=/dev/zero of=/dev/sdb bs=4k status=progress && sync
4. Creating a new partition table
Type in the following command, by replacing “sdb” with your USB drive’s label, and then press Enter.
sudo fdisk /dev/sdb
Enter “o” for creating an empty partition table.
Enter the option “n” for creating a new partition.
Enter “w” to write the table and exit.
5. Execute the following command for viewing the partition.
lsblk
6. Formatting the new volume created
Enter the following command and press Enter for formatting the drive as ext4. Remember to, replace “sdb1” with your partition’s label:
sudo mkfs.vfat /dev/sdb1
7. Verifying the newly created filesystem
Run the following command in the terminal:
sudo file -sL /dev/sdb1
8. Lastly, execute the following command for ejecting the drive when finished.
sudo eject /dev/sdb
Now, We have successfully formatted the USB storage device and have also created a file system with a partition.
The mkfs command stands for “make file system” is utilized to make a file system (which is, a system for organizing a hierarchy of directories, subdirectories, and files) on a formatted storage device usually, a partition on a hard disk drive (HDD) or it can also be a USB drive, etc. A partition is logically an autonomous part of an HDD. An organized segment is one to which a low-level arrangement or format, additionally called a physical format(organization), has been applied. It comprises separating the disk’s tracks into a predetermined number of divisions and filling the information zone of every segment with dummy bytes.
These outcomes in the demolition of any current information on the disk. Formatting(organizing) of new HDD and floppy plates is done at the manufacturing plant. It is seldom important to do a low-level format on an HDD. The creation of a file system is also known as high-level formatting or logical formatting. It includes making a table of contents for the partition or disk, but in this case, the data already present on the disk or segment is not destroyed. Basically, “mkfs” is just a front-end for the various specific file system creation programs that are available in Linux, such as mke2fs, mkfs.ext3 and mkfs.vfat, etc. When the “mkfs” command is compiled, then a precise list of standard directories is created, and therefore the specified program is searched for from the same list.
Syntax for mkfs command:
mkfs [ -V ] [ -t fstype ] [ fs-options ] filesys [ blocks ]
- The items in the square brackets are discretionary, but the main obligatory argument is “filesys”. filesys is the name of a device document (i.e., a record that the system uses to execute admittance to a physical device), for example, /dev/hda3, the third segment on the primary HDD, or/dev/fd0, the principal floppy disk. It can likewise be the mount point (i.e., where it is joined to the system) for the new file system.
- The most commonly used option is “-t”, which is utilized for specifying the type of file system to be created. If this option is not used, the default filesystem created will be ext2 (second extended file system) from the other types of file systems that can be created like ext3, minix, msdos, vfat and xfs.
- The -V option is used to produce verbose output, and also includes all file system-specific commands that are executed. By specifying this option more than once, the execution of any file system-specific commands can be prevented.
- The “-c” option, will check the storage device for bad blocks before creating the file system, and the “-l” option, will read the bad blocks list from a file whose name follows it.
- “fs-options” stand for file system-specific options that are to be passed to the real file system creation program (i.e., the program for which mkfs is serving just as a front end).
Journaling
It is a significant idea in file systems. The file system records the awaiting file keeps in touch with a diary. As each file is composed of, the diary is refreshed, and the unresolved setup accounts are refreshed. This permits the file system to fix broken, halfway composed files that have happened because of a disastrous occasion, for example, a power cut. A portion of the more seasoned file systems doesn’t uphold journaling. Those that don’t, keep in touch with the disk, less regularly in light of the fact that they don’t have to refresh the diary. They might give a faster performance, yet they are more inclined to harm because of interrupted file writes.
- In the modern era, the way of utilizing mkfs is to type “mkfs.” and then the name of the file system you wish to create.
- Now, in order to see all the file systems offered by the “mkfs” command, hit the Tab key twice.
- The list of all available file systems available in the Linux distribution being used will be displayed in the terminal window. The screenshot is from Ubuntu 18.04 LTS. Other distributions may have more or fewer options:
To make a File System on a USB:
1. Finding the required device on the OS through the terminal. Type in the following command, and it will show all the disk nodes that are currently mounted. Be always sure in choosing the right disk or otherwise, you can remove the storage device and then again plug it in if the above command is not showing it in the list, thereafter again run the above command to list all the nodes. Here, our required disk is “/dev/sdb” which is of 3.7 GiB.
sudo fdisk -l
2. Un-mounting the USB drive’s partition
Un-mounting the storage drive is necessary before performing the format. Run the following command, but remember to replace “sdb1″ with your USB drive’s partition label, and then press Enter.
sudo umount /dev/sdb1
3. Erasing all the data on the drive (discretionary)
You can erase everything on the drive by entering the following command. But, remember to supplant “sdb” with your USB drive’s name.
sudo dd if=/dev/zero of=/dev/sdb bs=4k status=progress && sync
4. Creating a new partition table
Type in the following command, by replacing “sdb” with your USB drive’s label, and then press Enter.
sudo fdisk /dev/sdb
Enter “o” for creating an empty partition table.
Enter the option “n” for creating a new partition.
Enter “w” to write the table and exit.
5. Execute the following command for viewing the partition.
lsblk
6. Formatting the new volume created
Enter the following command and press Enter for formatting the drive as ext4. Remember to, replace “sdb1” with your partition’s label:
sudo mkfs.vfat /dev/sdb1
7. Verifying the newly created filesystem
Run the following command in the terminal:
sudo file -sL /dev/sdb1
8. Lastly, execute the following command for ejecting the drive when finished.
sudo eject /dev/sdb
Now, We have successfully formatted the USB storage device and have also created a file system with a partition.
Файловая система управляет хранением данных на диске и предоставляет доступ к ним. Linux поддерживает множество файловых систем, некоторые из которых являются собственными, например семейство ext (Extended Filesystem), а остальные пришли из других операционных систем — FAT из MS-DOS, NTFS из Windows NT, HFS и HFS+ из Mac OS и т.д.
Стандартным инструментом создания файловой системы в Linux является mkfs
(make file system). Вариант исполнения этого инструмента зависит от файловой системы, с которой он должен работать.
Создание файловой системы ext2/ext3/ext4
Расширенная файловая система ext (Extended File System) была первой файловой системой для Linux. С годами ее заменили новые версии под названием ext2, ext3 и ext4, которые в настоящее время являются файловой системой по умолчанию для многих дистрибутивов Linux.
Утилиты mkfs.ext2
, mkfs.ext3
и mkfs.ext4
используются для создания файловых систем ext2, ext3 и ext4. Фактически, все эти утилиты существуют только как символические ссылки на другую утилиту под названием mke2fs
. mke2fs
изменяет свои параметры по умолчанию в соответствии с именем, по которому она вызывается. Таким образом, все они имеют одинаковое поведение и параметры командной строки.
Самая простая команда выглядит так mkfs.ext2 TARGET, где TARGET
— это имя раздела, в котором должна быть создана файловая система. Например, для создания файловой системы ext3 на блочном устройстве (разделе) /dev/sdb1
команда будет:
mkfs.ext3 /dev/sdb1
Вывести список блочных устройств (дисков и разделов) можно командой lsblk.
Как создать новый раздел на диске можно прочесть в этой статье.
Вместо использования команды с именем конкретной файловой системы, можно вызвать утилиту mke2fs
с параметром -t
, за которым следует имя файловой системы. В примере ниже используются две эквивалентные команды, создающие одну файловую систему ext4 на /dev/sdb1
.
mkfs.ext4 /dev/sdb1
mke2fs -t ext4 /dev/sdb1
Параметры командной строки
mke2fs
поддерживает широкий спектр параметров и опций командной строки. Вот некоторые наиболее важных из них. Все они также относятся к mkfs.ext2
, mkfs.ext3
и mkfs.ext4
:
-b size
Задает размер блоков данных в устройстве, который может составлять 1024, 2048 или 4096 байт на блок.
-с
Проверяет целевое устройство на наличие поврежденных блоков перед созданием файловой системы. Вы можете выполнить тщательную, но гораздо более медленную проверку, передав этот параметр дважды, например так mkfs.ext4 -c -c TARGET
.
-d DIRECTORY
Копирует содержимое указанного каталога в корень новой файловой системы. Полезно, если вам нужно “предварительно заполнить” диск предопределенным набором файлов.
-F
Осторожно! Этот параметр заставит mke2fs создать файловую систему, даже если другие переданные параметры опасны или вообще не имеют смысла. Если параметр передать дважды -F -F
, то это запустит процесс создания файловой системы на устройстве, которое смонтировано или используется, что может привести к очень печальным последствиям.
-L VOLUME_LABEL
Установит метку тома VOLUME_LABEL
. Эта метка должна содержать не более 16 символов.
-n
Это действительно полезная опция, которая имитирует создание файловой системы и отображает, что было бы сделано, если бы выполнялось без этой опции. Думайте об этом как о “пробном” режиме. Бывает полезно проверить, прежде чем вносить какие-либо изменения на диск.
-q
Тихий режим. mke2fs
будет работать как обычно, но не будет выводить никаких данных на терминал. Полезно при запуске mke2fs
из скрипта.
-U ID
Этот параметр установит UUID (универсальный уникальный идентификатор) раздела в значение, указанное в ID
. UUID — это 128-битные числа в шестнадцатеричной системе счисления, которые служат для уникальной идентификации раздела в операционной системе. Это число задается как 32-значная строка в формате 8-4-4-4-12, что означает 8 цифр, дефис, 4 цифры, дефис, 4 цифры, дефис, 4 цифры, дефис, 12 цифр, например D249E380-7719-45A1-813C-35186883987E
.
Вместо ID
вы также можете указать такие параметры, как clear
— очистка UUID файловой системы, random
— использование случайно сгенерированного UUID,time
— создание UUID на основе времени.
-V
Подробный режим, печатает гораздо больше информации во время работы, чем обычно. Полезно для целей отладки.
Создание файловой системы FAT или VFAT
Файловая система FAT возникла из MS-DOS и за прошедшие годы претерпела множество изменений, кульминацией которых стал формат FAT32, выпущенный в 1996 году с Windows 95 OSR2.
VFAT — это расширение формата FAT16 с поддержкой длинных (до 255 символов) имен файлов. Обе файловые системы обрабатываются одной и той же утилитой mkfs.fat
, которая так же является алиасом утилиты mke2fs
.
Файловая система FAT имеет значительные недостатки, которые ограничивают ее использование на больших дисках. Например, FAT16 поддерживает тома не более 4 ГБ и максимальный размер файла 2 ГБ. FAT32 увеличивает размер тома до 2 ПБ, а максимальный размер файла — до 4 ГБ. Из-за этого файловые системы FAT сегодня чаще используются на небольших флэш-накопителях или картах памяти (размером до 2 ГБ) или на устаревших устройствах и операционных системах, которые не поддерживают более продвинутые файловые системы.
Самая простая команда для создания файловой системы FAT — это mkfs.fat TARGET
, где TARGET
это раздел, в котором вы хотите создать файловую систему. Например:
mkfs.fat /dev/sdc1
Как и другие утилиты, mkfs.fat
поддерживает ряд параметров командной строки. Ниже приведены наиболее важные из них. Полный список и описание каждой опции можно прочитать в руководстве к утилите, используя команду man mkfs.fat
.
-c
Проверяет целевое устройство на наличие поврежденных блоков перед созданием файловой системы.
-C FILENAME BLOCK_COUNT
Создаст файл, указанный в FILENAME
, а затем создаст внутри него файловую систему FAT, фактически создавая пустой “образ диска”, который позже можно записать на устройство с помощью утилиты, такой как dd
или смонтировать как петлевое устройство loopback. При использовании этой опции количество блоков в файловой системе (BLOCK_COUNT
) должно быть указано после имени устройства.
-F SIZE
Определяет размер FAT (таблицы распределения файлов) — 12, 16 или 32: то есть FAT12, FAT16 или FAT32. Если не указано, то mkfs.fat
будет выбран соответствующий параметр в зависимости от размера файловой системы.
-n NAME
Задает метку тома (имя) для файловой системы. Она может быть длиной до 11 символов, а по умолчанию — без имени.
-v
Подробный режим. Выводит гораздо больше информации чем обычно, что полезно для отладки.
mkfs.fat
не способен создавать “загрузочную” файловую систему. В руководстве утилиты сказано, что “это не так просто, как вы думаете” и не будет реализовано.
Создание файловой системы exFAT
exFAT — это файловая система, созданная Корпорацией Майкрософт в 2006 году, которая устраняет одно из наиболее значимых ограничений FAT32: размер файла и диска. В exFAT максимальный размер файла составляет 16 эксабайт (против 4 ГБ в FAT32), а максимальный размер диска составляет 128 петабайт.
Поскольку эта файловая система поддерживается всеми тремя основными операционными системами (Windows, Linux и mac OS), то будет хорошим выбором там, где требуется совместимость: например, на флэш-накопителях большой емкости, картах памяти и внешних дисках. Ассоциация SD рекомендует exFAT как файловую систему по умолчанию для карт памяти формата SDXC объемом более 32 ГБ.
Создание файловых систем exFAT выполняется утилитой mkfs.exfat
, которая является ссылкой на mkexfatfs
. Основное использование команды выглядит так: mkfs.exfat TARGET
, где TARGET
это раздел, в котором вы хотите создать файловую систему. Например:
mkfs.exfat /dev/sdb2
В отличие от других утилит, рассмотренных в этом уроке, mkfs.exfat
имеет очень мало параметров командной строки.
-i VOL_ID
Устанавливает идентификатор тома в значение, указанное в VOL_ID
. Это 32-разрядное шестнадцатеричное число. Если не определено, то устанавливается идентификатор, основанный на текущем времени.
-n NAME
Задает метку или название тома. Может содержать до 15 символов, по умолчанию имя не используется .
-p SECTOR
Задает первый сектор первого раздела на диске. Это необязательное значение и по умолчанию оно равно нулю.
-s SECTORS
Определяет какое количество физических секторов будет распределено на каждый кластер. Это должна быть степень двойки, например 1, 2, 4, 8 и так далее.
Создание файловой системы XFS
XFS — это высокопроизводительная файловая система, первоначально разработанная Silicon Graphics в 1993 году для своей операционной системы IRIX. Благодаря своим характеристикам производительности и надежности она обычно используется для серверов и других сред, требующих высокой (или гарантированной) пропускной способности файловой системы.
Инструменты для управления файловыми системами XFS являются частью пакета xfsprogs
. Возможно потребуется установить этот пакет вручную, поскольку он не включен по умолчанию в некоторые дистрибутивы Linux. А в других, например Red Hat Enterprise Linux, XFS используют в качестве файловой системы по умолчанию.
Файловые системы XFS разделены как минимум на 2 части: раздел журнала, в котором ведется журнал всех операций файловой системы (обычно называемый Журналом), и раздел данных. Раздел журнала может быть расположен внутри раздела данных (поведение по умолчанию) или вообще на отдельном диске для повышения производительности и надежности.
Самая основная команда для создания файловой системы XFS — это mkfs.xfs TARGET
, где TARGET
это раздел, в котором вы хотите создать файловую систему. Например:
mkfs.xfs /dev/sda1
mkfs.xfs
поддерживает ряд параметров командной строки. Вот некоторые из наиболее распространенных:
-b size=VALUE
Устанавливает размер блока в файловой системе в байтах, равный размеру указанному в VALUE
. Значение по умолчанию — 4096 байт (4 КБ), минимальное — 512, а максимальное — 65536 (64 КБ).
-m crc=VALUE
Параметры, начинающиеся с -m
, являются параметрами метаданных. Этот параметр задействует (если VALUE
1
) или отключит (если VALUE
есть0
) использование CRC32c для проверки целостности метаданных на диске. Это позволяет лучше обнаруживать ошибки и восстанавливать после сбоев, связанных с проблемами оборудования. Поэтому эта проверка включена по умолчанию. Обычно нет причин ее отключать, так как влияние этой проверки на производительность минимально.
-m uuid=VALUE
Устанавливает UUID раздела в значение, указанное в VALUE. Помните, что UUID — это 32-символьные (128 бит) числа с шестнадцатеричным основанием, заданные группами из 8, 4, 4, 4 и 12 цифр, разделенных тире. Например 1E83E3A3-3AE9-4AAC-BF7E-29DFFECD36C0
.
-f
Принудительно создает файловую систему на целевом устройстве, даже если на нем обнаружена файловая система.
-l logdev=DEVICE
Раздел журнала файловой системы будет размещен на указанном устройстве, а не внутри раздела данных.
-l size=VALUE
Размер раздела журнала будет равен размеру, указанному в VALUE
. Размер может быть указан в байтах с использованием суффиксов m
или g
. Например -l size=10m
, раздел журнала будет ограничен 10 мегабайтами.
-q
Тихий режим. В этом режиме mkfs.xfs
не будет выводить информации о параметрах создаваемой файловой системы.
-L LABEL
Задает метку файловой системы, длина которой может составлять не более 12 символов.
-N
Аналогично -n
параметру в mke2fs
, заставит mkfs.xfs
печатать все параметры создания файловой системы, фактически не создавая ее (имитирует создание файловой системы).
Создание файловой системы Btrfs
Btrfs (официально файловая система B-Tree, произносится как “Butter FS”, “Better FS” или даже “Butterfuss”, на ваш выбор) — это файловая система, которая разрабатывается с 2007 года специально для Linux корпорацией Oracle и другими компаниями, включая Fujitsu, Red Hat, Intel и SUSE.
Существует множество функций, которые делают Btrfs привлекательными в современных системах, где распространены большие объемы памяти. Среди них поддержка нескольких устройств (включая чередование, зеркальное отображение и чередование + зеркальное отображение, как при настройке RAID), прозрачное сжатие, оптимизация SSD, инкрементное резервное копирование, моментальные снимки, онлайн-дефрагментация, проверки в автономном режиме, поддержка вложенных объемов (с квотами), дедупликация и многое другое.
Поскольку Btrfs это файловая система с копированием при записи, она очень устойчива к сбоям. И вдобавок ко всему, Btrfs проста в использовании и хорошо поддерживается многими дистрибутивами Linux. И некоторые из них, такие как SUSE, используют его в качестве файловой системы по умолчанию.
В традиционной файловой системе, когда вы хотите перезаписать часть файла, новые данные помещаются непосредственно поверх старых данных, которые они заменяют. В файловой системе с копированием при записи новые данные записываются на свободное место на диске, затем исходные метаданные файла обновляются для ссылки на новые данные, и только после этого освобождаются старые данные, поскольку они больше не нужны. Это снижает вероятность потери данных в случае сбоя, поскольку старые данные удаляются только после того, как файловая система абсолютно уверена, что они больше не нужны и новые данные на месте.
Для создания файловой системы Btrfs используется утилита mkfs.btrfs
. Использование команды без каких-либо параметров создает файловую систему Btrfs на заданном устройстве, например:
mkfs.btrfs /dev/sdb1
Если в вашей системе нет утилиты
mkfs.btrfs
, найдитеbtrfs-progs
в менеджере пакетов вашего дистрибутива и установите ее.
Вы можете использовать -L
чтобы задать метку (или имя) для вашей файловой системы. Метки Btrfs могут содержать до 256 символов. Если используются пробелы заключите имя в кавычки:
mkfs.btrfs /dev/sdb1 -L "New disk"
Обратите внимание на эту особенность Btrfs: вы можете передать в команду mkfs.btrfs
несколько устройств. В случае передачи команде более одного устройства, будет создана одна файловая система на всех устройствах, что аналогично настройке RAID или LVM. Используйте параметр -m
, чтобы указать как будут распределяться метаданные на дисковом массиве. Допустимыми параметрами являются raid0
, raid1
, raid5
, raid6
, raid10
, single
и dub
.
Например, чтобы создать файловую систему, объединяющую два раздела /dev/sdb1
и /dev/sdc1
в один большой раздел, используйте:
mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Файловые системы, охватывающие несколько разделов, на первый взгляд могут показаться выгодными. Но это плохая идея с точки зрения безопасности данных, поскольку сбой на одном диске массива означает определенную потерю данных. Чем больше дисков вы используете, тем выше риск потери данных, так как у вас больше возможных точек отказа.
Управление вложенными томами
Вложенные тома подобны файловым системам внутри файловых систем. Представляйте их как каталог, который может быть смонтирован как отдельная файловая система. Вложенные тома упрощают организацию и администрирование системы, поскольку каждый из них может иметь отдельные квоты или правила снэпшота (моментального снимка диска).
Вложенные тома не являются разделами. Раздел занимает фиксированное пространство на диске. Это может привести к дальнейшим проблемам, например к тому, что на одном разделе заканчивается свободное место, когда на другом остается достаточно места. С вложенными томами иначе, поскольку они “разделяют” свободное пространство из своей корневой файловой системы и растут по мере необходимости.
Предположим, у вас есть файловая система Btrfs, смонтированная на диске /mnt/disk
, и вы хотите создать внутри нее вложенный том для хранения ваших резервных копий. Давайте назовем этот том BKP
:
btrfs subvolume create /mnt/disk/BKP
Далее выведем содержимое файловой системы /mnt/disk
. Вы увидите, что появился новый каталог, названный в честь вложенного тома.
$ ls -lh /mnt/disk/
total 0
drwxr-xr-x 1 root root 0 jul 13 17:35 BKP
drwxrwxr-x 1 carol carol 988 jul 13 17:30 Images
Да, к вложенным томам можно получить доступ так же как к директории.
Мы можем проверить, что вложенный объем активен, с помощью команды:
# btrfs subvolume show /mnt/disk/BKP/
Name: BKP
UUID: e90a1afe-69fa-da4f-9764-3384f66fa32e
Parent UUID: -
Received UUID: -
Creation time: 2019-07-13 17:35:40 -0300
Subvolume ID: 260
Generation: 23
Gen at creation: 22
Parent ID: 5
Top level ID: 5
Flags: -
Snapshot(s):
Вы можете смонтировать вложенный том в /mnt/BKP
, передав команде mount
параметры -t btrfs -o subvol=NAME
.
mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
где параметр -t
задает тип монтируемой файловой системы.
Работа со снэпшотами
Снэпшоты аналогичны вложенным объемам, но предварительно заполняются содержимым тома, из которого был сделан снимок.
При создании, моментальный снимок и исходный том имеют точно такое же содержимое. Но с этого момента времени они будут расходиться. Изменения, внесенные в исходный том (добавленные, переименованные или удаленные файлы), не будут отражены на моментальном снимке, и наоборот.
Имейте в виду, что снэпшот не дублирует файлы и изначально почти не занимает места на диске. Он просто дублирует дерево файловой системы, ссылаясь при этом на исходные данные.
Команда для создания моментального снимка такая же как и для создания вложенного объема, просто добавьте параметр snapshot
после btrfs subvolume
. Приведенная ниже команда создаст снимок файловой системы Btrfs, смонтированной в /mnt/disk/, в директорию mnt/disk/snap
:
btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
Теперь представьте, что у вас есть следующее содержимое в/mnt/disk
:
$ ls -lh
total 2,8M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg
-rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg
-rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
drwx------ 1 carol carol 366 jul 13 17:56 snap
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Обратите внимание на каталог snap, содержащий снэпшот. Теперь давайте удалим некоторые файлы и проверим содержимое каталога:
$ rm LG-G8S-ThinQ-*
$ ls -lh
total 1,7M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
drwx------ 1 carol carol 366 jul 13 17:56 snap
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Но если проверить содержимое каталога со снэпшотом, то удаленные файлы будут все еще там и при необходимости их можно восстановить.
$ ls -lh snap/
total 2,8M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg
-rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg
-rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Также возможно создавать моментальные снимки, доступные только для чтения. Они работают точно так же как доступные для записи моментальные снимки, но с той разницей, что содержимое моментального снимка не может быть изменено. Просто добавьте параметр -r
при создании снимка:
btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Несколько слов о сжатии в Btrfs
Btrfs поддерживает прозрачное сжатие файлов с тремя различными алгоритмами, доступными пользователю. Оно выполняется автоматически для каждого файла, если файловая система смонтирована с помощью этой опции -o compress
. Алгоритм сжатия достаточно умен, чтобы обнаружить несжимаемые файлы и не будет пытаться сжать их, экономя таким образом системные ресурсы. Итак, в одном каталоге у вас могут быть сжатые и несжатые файлы вместе. Алгоритм сжатия по умолчанию — ZLIB, но доступны LZO (быстрее, но худшая степень сжатия) или ZSTD (быстрее чем ZLIB и сопоставимое сжатие) с несколькими уровнями сжатия.
Содержание
- 1 Основные команды
- 2 Работа с файловой системой в Linux
- 2.1 Создание файловой системы
- 2.2 Изменение метки файловой системы
- 2.3 Настройка файловой системы linux
- 2.4 Изменение размера файловой системы Linux
- 2.5 Проверка файловой системы Linux
- 2.6 Дефрагментация файловой системы
- 3 Выводы
- 3.1 Предостережения
- 3.2 Расширение файловой системы на основе разделов
Во время выполнения различных задач по администрированию системы может понадобится работать с файловой системой 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. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!
Примечание. Изменение размера файловой системы на разделе диска может быть опасным и привести к потере данных. Убедитесь, что у вас есть резервная копия, прежде чем выполнять действия, описанные ниже.
Предостережения
1. Файловая система, размер которой вы хотите изменить, должен находиться на последнем разделе диска. В этом случае потери данных не происходит, поскольку мы воссоздаем раздел, не уничтожая фактические данные на нем.
2. Если это не последний раздел, вы должны уничтожить данные и воссоздать новый раздел с желаемым размером.
Расширение файловой системы на основе разделов
1. Сначала проверьте существующий размер файловой системы.
Устанавливаю Ubuntu рядом с Windows 7, причем хочу, чтобы не потерялись данные. Проблема возникает на этапе уменьшения размера диска, чтобы создать раздел для ubuntu. Пробовал изменять файловую систему как во время установки, так и через GParted , загрузившись в Ubuntu. Вот текст ошибки:
Как-то странно разделы отображаются в Ubuntu: разделы D, E, L выглядят как один. В разделе L у меня 60 Гб свободно, а я уменьшаю объем на 40.
Всего у меня 6 разделов в Windows: зарезервированный для Bitlocker 1 мб, зарезервированный системой 100 мб, раздел с системой (диск С в wibdows) и 3 пользовательских раздела. В Linux же я вижу только 4. Что я делаю не так и как создать раздел для Linux без потерь данных?
Introduction
A disk partition must be formatted and mounted before use. The formatting process can also be done for several other reasons, such as changing the file system, fixing errors, or deleting all data.
In this tutorial, you will learn how to format and mount disk partitions in Linux using ext4, FAT32, or NTFS file system.
Prerequisites
- A system running Linux
- A user account with sudo or root privileges
- Access to a terminal window / command line (Activities > Search > Terminal)
Checking the Partitions
Before formatting, locate a partition you wish to format. To do so, run the lsblk
command that displays block devices. Block devices are files that represent devices such as hard drives, RAM disks, USB drives, and CD/ROM drives.
lsblk
The terminal prints out a list of all block devices as well as information about them:
- NAME – Device names
- MAJ:MIN – Major or minor device numbers
- RM – Whether the device is removable (1 if yes, 0 if no)
- SIZE – The size of the device
- RO – Whether the device is read-only
- TYPE – The type of the device
- MOUNTPOINT – Device’s mount point
We will use the /dev/sdb1
partition as an example.
The lsblk
command without additional options does not display information about the devices’ file systems.
To display a list containing file system information, add the -f
option:
lsblk -f
The terminal prints out the list of all block devices. The partitions that do not contain information on the file system in use are non-formatted partitions.
Formatting Disk Partition in Linux
There are three ways to format disk partitions using the mkfs
command, depending on the file system type:
- ext4
- FAT32
- NTFS
The general syntax for formatting disk partitions in Linux is:
mkfs [options] [-t type fs-options] device [size]
Formatting Disk Partition with ext4 File System
1. Format a disk partition with the ext4 file system using the following command:
sudo mkfs -t ext4 /dev/sdb1
2. Next, verify the file system change using the command:
lsblk -f
The terminal prints out a list of block devices.
3. Locate the preferred partition and confirm that it uses the ext4 file system.
Formatting Disk Partition with FAT32 File System
1. To format a disk with a FAT32 file system, use:
sudo mkfs -t vfat /dev/sdb1
2. Again, run the lsblk
command to verify the file system change and locate the preferred partition from the list.
lsblk -f
The expected output is:
Formatting Disk Partition with NTFS File System
1. Run the mkfs
command and specify the NTFS file system to format a disk:
sudo mkfs -t ntfs /dev/sdb1
The terminal prints a confirmation message when the formatting process completes.
2. Next, verify the file system change using:
lsblk -f
3. Locate the preferred partition and confirm that it uses the NFTS file system.
Mounting the Disk Partition in Linux
Before using the disk, create a mount point and mount the partition to it. A mount point is a directory used to access data stored in disks.
1. Create a mount point by entering:
sudo mkdir -p [mountpoint]
2. After that, mount the partition by using the following command:
sudo mount -t auto /dev/sdb1 [mountpoint]
Note: Replace [mountpoint]
with the preferred mount point (example:/usr/media
).
There is no output if the process completes successfully.
3. Verify if the partition is mounted using the following command:
lsblk -f
The expected output is:
Understanding the Linux File System
Choosing the right file system before formatting a storage disk is crucial. Each type of file system has different file size limitations or different operating system compatibility.
The most commonly used file systems are:
- FAT32
- NTFS
- ext4
Their main features and differences are:
File System | Supported File Size | Compatibility | Ideal Usage |
FAT32 | up to 4 GB | Windows, Mac, Linux | For maximum compatibility |
NTFS | 16 EiB – 1 KB | Windows, Mac (read-only), most Linux distributions | For internal drives and Windows system file |
Ext4 | 16 GiB – 16 TiB | Windows, Mac, Linux (requires extra drivers to access) | For files larger than 4 GB |
Conclusion
After following this tutorial, you should be able to format and mount a partition in Linux in various file systems. Partition manipulation is essential for efficient data management, and next, we recommend learning how to delete a partition in Linux.