Создание файловой системы exFAT
exFAT — это файловая система, созданная Корпорацией Майкрософт в 2006 году, которая устраняет одно из наиболее значимых ограничений FAT32: размер файла и диска. В exFAT максимальный размер файла составляет 16 эксабайт (против 4 ГБ в FAT32), а максимальный размер диска составляет 128 петабайт.
Поскольку эта файловая система поддерживается всеми тремя основными операционными системами (Windows, Linux и mac OS), то будет хорошим выбором там, где требуется совместимость: например, на флэш-накопителях большой емкости, картах памяти и внешних дисках. Ассоциация SD рекомендует exFAT как файловую систему по умолчанию для карт памяти формата SDXC объемом более 32 ГБ.
Создание файловых систем exFAT выполняется утилитой , которая является ссылкой на . Основное использование команды выглядит так: , где это раздел, в котором вы хотите создать файловую систему. Например:
В отличие от других утилит, рассмотренных в этом уроке, имеет очень мало параметров командной строки.
Устанавливает идентификатор тома в значение, указанное в . Это 32-разрядное шестнадцатеричное число. Если не определено, то устанавливается идентификатор, основанный на текущем времени.
Задает метку или название тома. Может содержать до 15 символов, по умолчанию имя не используется .
Задает первый сектор первого раздела на диске. Это необязательное значение и по умолчанию оно равно нулю.
Определяет какое количество физических секторов будет распределено на каждый кластер. Это должна быть степень двойки, например 1, 2, 4, 8 и так далее.
Фрагментация
Обычно дефрагментацию диска выполняют при его фрагментации более 20%. При создании расширенной файловой системы около 5% дискового пространства резервируется для системных задач во избежание необходимости дефрагментации. Если говорить кратко, то в обычных условиях вам не нужно беспокоиться о выполнении дефрагментации. Тем не менее это не означает, что современное поколение расширенных файловых систем совершенно не подвержено фрагментации. Если вы подозреваете, что файл фрагментирован, это можно проверить с помощью команды . Опция позволяет получить более подробную информацию.
Дисковые файловые системы Linux
По большей части в этой статье обсуждается работа с семейством расширенных файловых систем Linux (ext). Однако среди прочих файловых систем Linux поддерживает и множество дисковых файловых систем, например, XFS, ReiserFS, Btrfs (B-tree File System) и JFS (IBM Journaled File System). В зависимости от задач, выполняемых на вашем компьютере и в вашей рабочей среде, какие-то из этих файловых систем могут оказаться более подходящими, чем расширенная файловая система. Тем не менее знакомство с расширенной файловой системой является хорошей отправной точкой, поскольку в большинстве дистрибутивов Linux по умолчанию используется файловая система ext3 или ext4.
Файловая система ext3 является результатом дальнейшего развития более ранней файловой системы ext2 и широко используется в настоящее время. Одним из важных принципиальных отличий ext3 от ext2 является наличие журналирования. Файловая система ext3 обратно совместима с ext2, поэтому для перехода с ext2 на ext3 нет необходимости повторно разбивать диск на разделы. Обычно для этого достаточно запустить команду с привилегиями пользователя root. Например, если файловая система ext2 используется на втором разделе первого жесткого диска, то для ее преобразования в ext3 достаточно запустить команду .
Помимо журналирования, в ext3 реализован и ряд других улучшений по сравнению с ext2, например, повышенная скорость и надежность. Не обладая возможностями журналирования, файловая система ext2 страдала из-за «грязных» перезагрузок операционной системы (например, в случае непредвиденного отключения электропитания или краха системы). Во время загрузки компьютера каждую файловую систему ext2 нужно было проверять перед ее монтированием. Учитывая современные объемы файловых систем, время проверки целостности в большинстве случаев оказывается неприемлемым, поскольку этот долгий процесс существенно снижает доступность системы. В журналируемых файловых системах (как, например, NTFS) данные записываются на диск и помечаются либо как целостные, либо как нецелостные. Поэтому при «грязной» перезагрузке проверяются только те файлы, помеченные как нецелостные, что устраняет необходимость проверки всей файловой системы. В ext3 предусмотрено три режима журналирования:
- Journal. Полное журналирование данных. Записываются не только метаданные, но и сами данные. Это самый медленный режим.
- Ordered. Формально записываются только метаданные, но этот способ может устранять повреждения, связанные с отложенной записью, поскольку сначала выполняется запись в блоки данных.
- Writeback. Журналируются только метаданные, но не сами данные. Это самый быстрый режим.
Последней версией расширенной файловой системы на сегодняшней день является файловая система ext4, обратно совместимая с ext2 и ext3. По сравнению с ext3 в ext4 реализован ряд улучшений, в основном касающихся скорости и надежности. Файловая система ext4 имеется в Linux с версией ядра 2.6.28 и выше.
В таблице 1 показаны некоторые основные характеристики наиболее распространенных файловых систем Linux, которые помогут вам планировать схемы разделов или преобразовывать существующие разделы.
Эволюция расширенной файловой системы
Файловая система | |
---|---|
Extended file system | (приблизительно с 1991 г.) Самая ранняя файловая система Linux. Недостатком этой файловой системы является чрезмерная фрагментация. |
Ext2 | (приблизительно с 1993 г.) Эта файловая система обладает высокой надежностью, но в ней отсутствует журналирование. После внезапной перезагрузки или сбоя системы для всей файловой системы запускается команда. |
Ext3 | (приблизительно с 2001 г.) Эта файловая система может содержать 32 000 поддиректорий, поддерживает журналирование и обратно совместима с файловой системой ext2. |
Ext4 | (приблизительно с 2008 г.) Эта файловая система может содержать 64 000 поддиректорий, позволяет полностью отключить журналирование (в отличие от ext3) и обратно совместима с файловыми системами ext2 и ext3. |
Как хранятся данные в расширенной файловой системе Linux
В файловой системе Linux хранятся два типа данных. Первый тип – это пользовательские данные (обычные файлы и директории, с которыми работают пользователи). Файлы также могут быть четырех типов: обычные файлы, ссылки, именованные каналы (FIFO) и сокеты.
Возможно, вы слышали выражение «В Linux все является файлами или процессами». Это выражение подразумевает тот факт, что в Linux отсутствует концепция системного реестра. Вместо этого все объекты хранятся в виде одного из четырех типов файлов. Другой тип данных, хранящихся в файловой системе – это метаданные, являющиеся индексными дескрипторами (index node) и обычно называемые inode. Индексные дескрипторы являются способом индексации атрибутов файлов в Linux. Каждый файл имеет свой inode, который обычно содержит следующую информацию:
- Размер файла.
- Владельцы файла (пользователь и группа).
- Файловые разрешения.
- Количество жестких и мягких ссылок.
- Время последнего доступа и изменения файла.
- Информацию о списке контроля доступа (ACL).
- Любые дополнительные атрибуты, определенные для файла (например, признак неизменяемости).
В листинге 1 приведен пример использования команды , позволяющей получить информацию, хранящуюся в inode.Листинг 1. Использование команды stat
$ stat /etc/services File: `/etc/services' Size: 362031 Blocks: 728 IO Block: 4096 regular file Device: fd00h/64768d Inode: 1638437 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-12-19 00:01:25.000000000 -0600 Modify: 2006-02-23 07:09:23.000000000 -0600 Change: 2011-09-18 17:29:37.000000000 -0500 |
В листинге 1 команда была выполнена для файла /etc/services. В результате ее выполнения мы получили в наглядном виде всю информацию индексного дескриптора и файловые атрибуты.
Директории
При работе в командной строке Linux вы будете видеть файловые папки, часто называемые директориями. Директории служат для тех же целей, что и папки Windows или папки графического интерфейса Linux. Но в действительности директории – это всего лишь пустые файлы для упорядочения других файлов или даже директорий.
Все директории упорядочены в иерархическую структуру, начинающуюся с корневой директории (/). В действительности это лишь логическое упорядочение, поскольку не все директории располагаются в одном разделе файловой системы. Фактически, если вы монтируете сетевую файловую систему (например, NFS), точка монтирования будет располагаться где-то в этой иерархической структуре ниже корневой директории. В этом заключается существенное отличие от Windows, где вы привыкли к тому, что диск C обычно содержит дисковую файловую систему, а последующие файловые системы (подключенные сетевые ресурсы, дисководы CD-ROM и USB-накопители) смонтированы в виде отдельных дисков — D, E, F и так далее.
Суперблок
На самом верхнем уровне вся информация о самой файловой системе хранится в т. н. суперблоке. Хотя работа с суперблоком может не представлять особого интереса, понимание концепции использования команды может помочь вам получить полное представление о концепциях хранения данных в файловой системе.
В листинге 2 приведен пример, в котором мы получаем информацию о разделе, расположенном на устройстве /dev/sda1 (в нашем случае это раздел /boot). В конструкции мы используем команду без учета регистра для вывода информации, содержащей строку .Листинг 2. Использование dumpe2fs для получения информации суперблока
# dumpe2fs /dev/sda1 | grep -i superblock Primary superblock at 1, Group descriptors at 2-2 Backup superblock at 8193, Group descriptors at 8194-8194 Backup superblock at 24577, Group descriptors at 24578-24578 Backup superblock at 40961, Group descriptors at 40962-40962 Backup superblock at 57345, Group descriptors at 57346-57346 Backup superblock at 73729, Group descriptors at 73730-73730 |
Управление ACL (setfacl, getfacl) в Linux
Изменение и просмотр настроек ACL с помощью setfacl и getfacl
setfaclgetfaclls -lgetfaclls -ldgetfacl
getfacl setfacl -m g:sales:rx /dir-mg:sales:rxrxg
setfacl -m u:linda:rwx /datasetfacl -R
Пример управления расширенными правами с использованием ACL
- Откройте терминал.
- Выполните setfacl -m g:account:rx /data/sales и setfacl -m g:sales:rx /data/account.
- Выполните getfacl, чтобы убедиться, что права доступа были установлены так, как вы хотели.
- Выполните setfacl -m d:g:account:rwx,g:sales:rx /data/sales, чтобы установить ACL по умолчанию для каталога sales.
- Добавьте ACL по умолчанию для каталога /data/account, используя setfacl -m d:g:sales:rwx,g:account:rx /data/account.
- Убедитесь, что настройки ACL действуют, добавив новый файл в /data/sales. Выполните touch /data/sales/newfile и выполните getfacl /data/sales/newfile для проверки текущих разрешений.
1. Что такое /etc/fstab и зачем он нужен? Наверх
fstab — это текстовый файл, содержащий список устройств хранения информации и параметры монтирования. Различные накопители, которые необходимо автоматически присоединить во время загрузки операционной системы, по порядку перечисляются в файле fstab. Также в этом файле содержатся информация об устройствах, которые не присоединяются автоматически, но при выполнении монтирования устройства стандартной командой mount происходит присоединение устройства с заданными параметрами Это необходимо, к примеру, для CD/DVD-приводов, которые не примонтированы постоянно, а монтируются при наличии диска в приводе.
Определение файловой системы
Конкретное место расположения файловой системы может быть определено различными способами. В файле /etc/fstab можно указать имя файла устройства, его метку или UUID (в том числе GPT-метку и GPT-UUID для дисков GPT). Определение по UUID является наиболее предпочтительным способом.
Далее приведены примеры определений файловых систем с использованием каждого из способов. Вывод lsblk -f and blkid для этих примеров вы можете найти на странице Persistent block device naming.
По именам устройств
Запустите lsblk -f , чтобы отобразить список разделов. Укажите имена устройств с префиксом /dev/ :
# <file system> <dir> <type> <options> <dump> <pass> /dev/sda1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro 0 2 /dev/sda2 / ext4 rw,relatime,discard,data=ordered 0 1 /dev/sda3 /home ext4 rw,relatime,discard,data=ordered 0 2 /dev/sda4 none swap defaults 0 0
По меткам
Запустите lsblk -f , чтобы отобразить список разделов. Укажите метки из столбца LABEL с префиксом LABEL= :
# <file system> <dir> <type> <options> <dump> <pass> LABEL=EFI /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro 0 2 LABEL=SYSTEM / ext4 rw,relatime,discard,data=ordered 0 1 LABEL=DATA /home ext4 rw,relatime,discard,data=ordered 0 2 LABEL=SWAP none swap defaults 0 0
По UUID
Запустите lsblk -f, чтобы отобразить список разделов. Укажите идентификаторы из столбца UUID с префиксом UUID= :
# <file system> <dir> <type> <options> <dump> <pass> UUID=CBB6-24F2 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro 0 2 UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 rw,relatime,discard,data=ordered 0 1 UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 rw,relatime,discard,data=ordered 0 2 UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
Совет: Если вы хотите отобразить только UUID конкретного раздела, используйте команду lsblk -no UUID /dev/sda2.
По меткам GPT
Запустите blkid чтобы отобразить список разделов. Укажите значения PARTLABEL без кавычек:
# <file system> <dir> <type> <options> <dump> <pass> PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro 0 2 PARTLABEL=GNU/LINUX / ext4 rw,relatime,discard,data=ordered 0 1 PARTLABEL=HOME /home ext4 rw,relatime,discard,data=ordered 0 2 PARTLABEL=SWAP none swap defaults 0 0
По UUID GPT
Запустите blkid чтобы отобразить список разделов. Укажите значения PARTUUID без кавычек:
# <file system> <dir> <type> <options> <dump> <pass> PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro 0 2 PARTUUID=98a81274-10f7-40db-872a-03df048df366 / ext4 rw,relatime,discard,data=ordered 0 1 PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4 rw,relatime,discard,data=ordered 0 2 PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none swap defaults
Утилита Cryptsetup
Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.
В Debian или Ubuntu, для этого используйте такую команду:
В дистрибутивах, основанных на Red Hat это будет выглядеть так:
Синтаксис запуска команды такой:
$ cryptsetup опции операция параметры_операции
Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:
- luksFormat — создать зашифрованный раздел luks linux;
- luksOpen — подключить виртуальное устройство (нужен ключ);
- luksClose — закрыть виртуальное устройство luks linux;
- luksAddKey — добавить ключ шифрования;
- luksRemoveKey — удалить ключ шифрования;
- luksUUID — показать UUID раздела;
- luksDump — создать резервную копию заголовков LUKS.
Параметры операции зависят от самой операции, обычно это либо физическое устройство, с которым нужно произвести действие, либо виртуальное или и то и другое. Еще не все понятно, но на практике, я думаю, вы со всем разберетесь.
Использование постоянных именований
Выбрав-таки наиболее удобный способ именования устройств, можно приступить к использованию постоянных именований в системе:
В fstab
Включение постоянных имён в /etc/fstab легко: для каждой файловой системы в файле fstab нужно заменить имя устройства в первом столбце (где указано что-то вроде /dev/sda7) на постоянное имя. Это делается путём замены соответствующих путей в /dev/disk, примерно так:
/dev/disk/by-label/home
или
/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591
Тем не менее, вместо задания явных путей в /dev/disk, обычно рекомендуется использовать ключевые слова LABEL=<label> или UUID=<uuid> для монтирования файловых систем, например:
LABEL=home
или
UUID=31f8eb0d-612b-4805-835e-0e6d8b8c5591
Расширенные права
Понимание расширенных прав SUID, GUID и sticky bit
ls -ls x
accountls -lds
- Пользователь является владельцем файла;
- Пользователь является владельцем каталога, в котором находится файл.
ls -ldt
Применение расширенных прав
chmodchmod
chmod
- Для SUID используйте chmod u+s.
- Для SGID используйте chmod g+s.
- Для sticky bit используйте chmod +t, а затем имя файла или каталога, для которого вы хотите установить разрешения.
Пример работы со специальными правами
Откройте терминал, в котором вы являетесь пользователем linda. Создать пользователя можно командой useradd linda, добавить пароль passwd linda.
Создайте в корне каталог /data и подкаталог /data/sales командой mkdir -p /data/sales. Выполните cd /data/sales, чтобы перейти в каталог sales. Выполните touch linda1 и touch linda2, чтобы создать два пустых файла, владельцем которых является linda.
Выполните su — lisa для переключения текущего пользователя на пользователя lisa, который также является членом группы sales.
Выполните cd /data/sales и из этого каталога выполните ls -l. Вы увидите два файла, которые были созданы пользователем linda и принадлежат группе linda. Выполните rm -f linda*. Это удалит оба файла.
Выполните touch lisa1 и touch lisa2, чтобы создать два файла, которые принадлежат пользователю lisa.
Выполните su — для повышения ваших привилегий до уровня root.
Выполните chmod g+s,o+t /data/sales, чтобы установить бит идентификатора группы (GUID), а также sticky bit в каталоге общей группы.
Выполните su — linda. Затем выполните touch linda3 и touch linda4. Теперь вы должны увидеть, что два созданных вами файла принадлежат группе sales, которая является владельцем группы каталога /data/sales.
Выполните rm -rf lisa*. Sticky bit предотвращает удаление этих файлов от имени пользователя linda, поскольку вы не являетесь владельцем этих файлов
Обратите внимание, что если пользователь linda является владельцем каталога /data/sales, он в любом случае может удалить эти файлы!
Просмотр статуса файловой системы
Естественно, вам захочется настроить базовые параметры файловой системы, такие как распределение дискового пространства, контрольные точки безопасности и заданный уровень производительности. В арсенале GNU имеется множество инструментов для работы с файловой системой. Наиболее распространенные команды – это , , и, а также и (эти команды не столь популярны, но не менее полезны).
Команды du и df
Команды и используются для получения информации об использовании диска и свободном дисковом пространстве. Команда показывает размер файлов в директории /var. Если необходимо получить информацию о вложенных поддиректориях директории /var, то нужно выполнить команду .
# du -csh /var 73M /var 73M total |
Команда выводит информацию об использовании файловыми системами дискового пространства для всех точек монтирования в удобочитаемом () формате:
# df -h File System Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 37G 3.2G 32G 10% / /dev/sda1 99M 12M 82M 13% /boot tmpfs 506M 0 506M 0% /dev/shm |
Команда fsck
Команда используется для проверки файловой системы и при необходимости ее восстановления. Например, если вам необходимо проверить на наличие ошибок раздел, расположенный на устройстве /dev/sda2, то введите команду :
# umount /var # fsck /var fsck from util-linux-ng 2.17.2 e2fsck 1.41.12 (17-May-2010) /dev/sda3: clean, 702/192000 files, 52661/768000 blocks |
Примечание. Эту команду следует запускать на несмонтированной файловой системе.
В вышеприведенных примерах все задачи выполнялись в однопользовательском режиме. Раздел /var, расположенный на устройстве /dev/sda3, сначала был демонтирован. Команда не обнаружила каких-либо ошибок, в противном случае она попыталась бы исправить их.
Команда iostat
Команда выводит статистику дисковых операций ввода/вывода.
$ iostat Linux 2.6.18-164.el5 (DemoServer) 12/19/2011 avg-cpu: %user %nice %system %iowait %steal %idle 0.25 1.74 1.26 2.89 0.00 93.86 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 10.69 351.52 227.60 1759192 1139038 sda1 0.06 0.45 0.00 2254 22 sda2 10.62 351.01 227.60 1756658 1139016 dm-0 40.06 350.72 227.60 1755178 1139016 dm-1 0.02 0.18 0.00 920 0 hdc 0.00 0.03 0.00 144 0 fd0 0.00 0.00 0.00 16 0 |
В этом примере демонстрируется, как можно использовать команду для получения информации об операциях чтения/записи, а также общей статистики
Обратите внимание на то, что по умолчанию эта команда выводит информацию об операциях чтения/записи для всех устройств, а в верхней строке отображает общую статистику использования
Команда sar
Команда выводит значения системных счетчиков, подобно программе Performance Monitor операционной системы Windows. Команду можно использовать для отображения прошлых значений или для вывода счетчиков в реальном времени:
$ sar 4 5 Linux 2.6.18-164.el5 (DemoServer) 12/19/2011 12:20:20 AM CPU %user %nice %system %iowait %steal %idle 12:20:24 AM all 0.00 0.00 0.00 0.00 0.00 100.00 12:20:28 AM all 0.00 0.00 1.01 0.00 0.00 98.99 12:20:32 AM all 0.00 0.00 0.50 0.00 0.00 99.50 12:20:36 AM all 0.00 0.00 0.00 0.00 0.00 100.00 12:20:40 AM all 0.25 0.00 1.01 0.00 0.00 98.74 Average: all 0.05 0.00 0.50 0.00 0.00 99.45 |
В этом примере команда выводит пять значений счетчиков, обновляемых через каждые 4 секунды.
Обзор: UUID, метка раздела и fstab
Постоянные именования (persistent naming) в обозначении блочных устройств стали возможным с появлением udev и предоставляют несколько преимуществ по сравнению с наименованиями на базе Bus таких как /dev/hda1 или /dev/sda2.
Развитие Linux дистрибутивов и udev сделало более надежным опознавание аппаратных средств, но одновременно с этим поставило необходимость решения ряда новых вопросов:
- Порядок подключения при наличии более чем одного контроллера SATA/SCSI или простых контроллеров IDE становится случайным. Как следствие имена одного и того же устройств вида hdx/hdy или sdx/sdy случайно чередуются после каждой загрузки.Использование постоянных именований позволяет больше не беспокоиться об этом.
-
Для машин с контролёрами IDE (включая, например, машины со всеми жёсткими дисками SATA и только одним IDE cdrom), переход на стандартное ядро Squeeze может вызвать проблемы: с введением поддержки новой libata PATA, устройство IDE hdX станет устройством sdX. Опять же, если используется постоянное именование, этого даже не будет заметно. (postinst для пакета linux-base содержит код помогающий с переходом, но сначала имеет смысл получить представление и заранее понять как это работает.)
-
На больших машинах, с большим количеством CPU и Fiber Channel Host Bus Adapters, FC коммутаторами с переменной нагрузкой/задержкой, контролёрами SCSI, и/или высокопроизводительными сетевыми картами, могут возникнуть проблемы с синхронизацией при работе с udev и многолучевым I/O, из за почти непредсказуемого порядка определения устройств и автоматического назначения имен в процессе загрузки.
Существуют и другие причины. Но перечисленные — наиболее важны как в настоящий время, так и в ближайшем будущем. Поэтому Debian рекомендует использование схемы наименования блочных устройств с постоянными именами.
Создание файловой системы FAT или VFAT
Файловая система FAT возникла из MS-DOS и за прошедшие годы претерпела множество изменений, кульминацией которых стал формат FAT32, выпущенный в 1996 году с Windows 95 OSR2.
VFAT — это расширение формата FAT16 с поддержкой длинных (до 255 символов) имен файлов. Обе файловые системы обрабатываются одной и той же утилитой , которая так же является алиасом утилиты .
Файловая система FAT имеет значительные недостатки, которые ограничивают ее использование на больших дисках. Например, FAT16 поддерживает тома не более 4 ГБ и максимальный размер файла 2 ГБ. FAT32 увеличивает размер тома до 2 ПБ, а максимальный размер файла — до 4 ГБ. Из-за этого файловые системы FAT сегодня чаще используются на небольших флэш-накопителях или картах памяти (размером до 2 ГБ) или на устаревших устройствах и операционных системах, которые не поддерживают более продвинутые файловые системы.
Самая простая команда для создания файловой системы FAT — это , где это раздел, в котором вы хотите создать файловую систему. Например:
Как и другие утилиты, поддерживает ряд параметров командной строки. Ниже приведены наиболее важные из них. Полный список и описание каждой опции можно прочитать в руководстве к утилите, используя команду .
Проверяет целевое устройство на наличие поврежденных блоков перед созданием файловой системы.
Создаст файл, указанный в , а затем создаст внутри него файловую систему FAT, фактически создавая пустой “образ диска”, который позже можно записать на устройство с помощью утилиты, такой как или смонтировать как петлевое устройство loopback. При использовании этой опции количество блоков в файловой системе () должно быть указано после имени устройства.
Определяет размер FAT (таблицы распределения файлов) — 12, 16 или 32: то есть FAT12, FAT16 или FAT32. Если не указано, то будет выбран соответствующий параметр в зависимости от размера файловой системы.
Задает метку тома (имя) для файловой системы. Она может быть длиной до 11 символов, а по умолчанию — без имени.
Подробный режим. Выводит гораздо больше информации чем обычно, что полезно для отладки.
Параметры монтирования
mount
-t Тип файловой системы
DVDUDF
mount /dev/cdrom /mnt/dvd -t udf
mount
mount: wrong fs type, bad option, bad superblock on /dev/cdrom, missing codepage or other error In some cases useful info is found in syslog - try dmesg | tail or so
Unable to identify CD-ROM format.
mount: block device /dev/cdrom is write-protected, mounting read-only
-o Атрибуты доступа
- Доступ «только для чтения» (ro) или на «чтение и запись» (rw)
- Разрешение или запрещение запуска программ (noexec)
mount -t vfat -o rw,noexec,iocharset=utf-8,codepage=866 /dev/sda1 /mnt/usb
mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp
mount -o remount,rw /dev/sda2
Создание файловой системы ext2/ext3/ext4
Расширенная файловая система ext (Extended File System) была первой файловой системой для Linux. С годами ее заменили новые версии под названием ext2, ext3 и ext4, которые в настоящее время являются файловой системой по умолчанию для многих дистрибутивов Linux.
Утилиты , и используются для создания файловых систем ext2, ext3 и ext4. Фактически, все эти утилиты существуют только как символические ссылки на другую утилиту под названием . изменяет свои параметры по умолчанию в соответствии с именем, по которому она вызывается. Таким образом, все они имеют одинаковое поведение и параметры командной строки.
Самая простая команда выглядит так mkfs.ext2 TARGET, где — это имя раздела, в котором должна быть создана файловая система. Например, для создания файловой системы ext3 на блочном устройстве (разделе) команда будет:
Вместо использования команды с именем конкретной файловой системы, можно вызвать утилиту с параметром , за которым следует имя файловой системы. В примере ниже используются две эквивалентные команды, создающие одну файловую систему ext4 на .
Параметры командной строки
поддерживает широкий спектр параметров и опций командной строки. Вот некоторые наиболее важных из них. Все они также относятся к , и :
Задает размер блоков данных в устройстве, который может составлять 1024, 2048 или 4096 байт на блок.
Проверяет целевое устройство на наличие поврежденных блоков перед созданием файловой системы. Вы можете выполнить тщательную, но гораздо более медленную проверку, передав этот параметр дважды, например так .
Копирует содержимое указанного каталога в корень новой файловой системы. Полезно, если вам нужно “предварительно заполнить” диск предопределенным набором файлов.
Осторожно! Этот параметр заставит mke2fs создать файловую систему, даже если другие переданные параметры опасны или вообще не имеют смысла. Если параметр передать дважды , то это запустит процесс создания файловой системы на устройстве, которое смонтировано или используется, что может привести к очень печальным последствиям. Установит метку тома . Эта метка должна содержать не более 16 символов
Установит метку тома . Эта метка должна содержать не более 16 символов.
Это действительно полезная опция, которая имитирует создание файловой системы и отображает, что было бы сделано, если бы выполнялось без этой опции. Думайте об этом как о “пробном” режиме. Бывает полезно проверить, прежде чем вносить какие-либо изменения на диск.
Тихий режим. будет работать как обычно, но не будет выводить никаких данных на терминал. Полезно при запуске из скрипта.
Этот параметр установит UUID (универсальный уникальный идентификатор) раздела в значение, указанное в . UUID — это 128-битные числа в шестнадцатеричной системе счисления, которые служат для уникальной идентификации раздела в операционной системе. Это число задается как 32-значная строка в формате 8-4-4-4-12, что означает 8 цифр, дефис, 4 цифры, дефис, 4 цифры, дефис, 4 цифры, дефис, 12 цифр, например . Вместо вы также можете указать такие параметры, как — очистка UUID файловой системы, — использование случайно сгенерированного UUID, — создание UUID на основе времени.
Подробный режим, печатает гораздо больше информации во время работы, чем обычно. Полезно для целей отладки.
Как сделать так, чтобы диски и USB флешки имели одинаковые имена
Под блочными устройствами подразумеваются жёсткие диски, SSD, USB флешки и диски, а также карты памяти.
В Linux присутствуют только блочные устройства, то есть данные в них считываются и записываются блоками, в противовес символьным устройствам, в которых данные могут быть считаны или записаны отдельными символами. Файлы символьных устройств используются для небуферизованного обмена данными. В Linux, чтобы получить символьное устройство для диска, необходимо использовать «raw» (необработанный) драйвер, хотя можно получить тот же эффект, что и при открытии символьного устройства, открыв блочное устройство с помощью специфичного для Linux флага O_DIRECT.
Предыдущая информация дана только для того, чтобы вы понимали, что «диски» и «блочные устройства» это одно и то же для целей данной статьи.
Внутренние и внешние диски, а также USB флешки имеют имена вида /dev/sdX, где вместо X подставляется буква a, b, c и так далее, например: /dev/sda и /dev/sdb.
Имена устройств NVM Express (NVMe) начинаются с nvme, например, /dev/nvme0n1.
Если на вашем компьютере несколько контроллеров дисков SATA, SCSI или IDE, порядок добавления соответствующих узлов устройств является произвольным. Это может привести к тому, что имена устройств, такие как /dev/sda и /dev/sdb, будут меняться друг с другом при каждой загрузке, что приведёт к невозможности загрузки системы
Также назначение одному и тому же диску одинакового имя может иметь значение для обработке их в скриптах или при другом использовании когда важно, чтобы блочное устройство имело одинаковое имя.
Обзор блочных устройств:
lsblk -f
На самом деле Linux «из коробки» предусматривает возможность индивидуализации дисков — не требуется дополнительная настройка или установка утилит. Проблема в том, что отличить один диск от другого (особенно после форматирования) это не всегда простая задача, поэтому, с одной стороны, однозначного единственного решения нет, но с другой стороны предлагается сразу несколько вариантов, среди которых вы можете выбрать наиболее подходящий.
Суть в следующем, кроме имён вида /dev/sd* к которым привыкли большинство пользователей, имеется ещё четыре схемы постоянного наименования, все они представлены в виде ссылок в директориях:
- /dev/disk/by-label
- /dev/disk/by-uuid
- /dev/disk/by-id
- /dev/disk/by-path
Директории и файлы в /dev/disk/ создаются и уничтожаются динамически, в зависимости от того, есть ли в них устройства или нет. То есть это означает, что какие-то из этих директорий могут отсутствовать в вашей системе, либо присутствовать только после подключения определённых устройств (дисков).
Кстати, данная статья не имеет отношения к логическим томам LVM поскольку пути устройств вида /dev/ИмяГруппыТома/ИмяЛогическогоТома являются постоянными
Автоматическое монтирование в systemd
Система инициализации Systemd разбирает /etc/fstab при загрузке и автоматически генерирует все нужные файлы юнитов на основе описанных там крапинок монтирования, а уже потом их загружает. Вы можете посмотреть все созданные в systemd точки монтирования подобной командой:
Но нам ничего не мешает самим создать такой файл крапинки монтирования. Например, для той же домашней папки автоматическое монтирование fstab будет выглядеть вот так, имя непременно должно состоять из точки монтирования (Монтирование файловой системы Каскадно-объединённое монтирование Монтировка Установка), в которой слеши заменены на дефис:
Как уже упоминалось реке, в файловой структуре Linux можно монти-ровать разделы, используемые операционной системой MS-DOS. Случится это так же, как при монтировании любой файловой системы Linux. Нужно только указать тип раздела — msdos. Возможно, будет удобнее, если система будет автоматически монтировать разделы MS-DOS при пуске системы Linux.
Для этого нужно ввести в файл /etc/fstab запись для любого монтируемого раздела MS-DOS. Укажите имя устройства для раздела и имя каталога, в котором он должен устанавливаться. Логичный выбор — каталог /mnt/dos (убедитесь, что каталог dos в /mnt уже создан). В качестве типа файловой системы заведите msdos. В следующем примере показана стандартная строка файла /etc/fstab для раздела MS-DOS
Адресуете внимание на то, что эта запись является последней в приведенном выше файле /etc/fstab
Разоблачил, для которого в файле /etc/fstab есть запись, можно монтировать только в каталоге, подтвержденном в этой записи. Имя файла (именованная область данных на носителе информации) устройства вводить не нужно. Программа mount найдет запись, подходящую этому разделу, в файле fstab (по имени каталога) и таким образом определит имя приборы. Например, чтобы демонтировать DOS-раздел /dev/hda1 в предыдущем примере, команде mount нужно показать только каталог, в котором он смонтирован. В данном случае это /mnt/dos.
Если файл /etc/fstab порван — скажем, вы случайно удалили или изменили строку — система загрузится в режиме сопровождения и даст вам доступ к разделам только для чтения. Чтобы получить доступ на чтение и запись и отремонтировать файл fstab, необходимо перемонтировать основной раздел. Эту операцию выполняет следующая бригада:
Приведенный здесь в качестве примера файл /etc/fstab можно утилизировать как руководство по формированию записей. Особенно важны элементы, соответствующие разделам /ргос и swap.