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

Создание файловой системы 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

  1. Откройте терминал.
  2. Выполните setfacl -m g:account:rx /data/sales и setfacl -m g:sales:rx /data/account.
  3. Выполните getfacl, чтобы убедиться, что права доступа были установлены так, как вы хотели.
  4. Выполните setfacl -m d:g:account:rwx,g:sales:rx /data/sales, чтобы установить ACL по умолчанию для каталога sales.
  5. Добавьте ACL по умолчанию для каталога /data/account, используя setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Убедитесь, что настройки 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

  1. Для SUID используйте chmod u+s.
  2. Для SGID используйте chmod g+s.
  3. Для 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 сделало более надежным опознавание аппаратных средств, но одновременно с этим поставило необходимость решения ряда новых вопросов:

  1. Порядок подключения при наличии более чем одного контроллера SATA/SCSI или простых контроллеров IDE становится случайным. Как следствие имена одного и того же устройств вида hdx/hdy или sdx/sdy случайно чередуются после каждой загрузки.Использование постоянных именований позволяет больше не беспокоиться об этом.
  2. Для машин с контролёрами IDE (включая, например, машины со всеми жёсткими дисками SATA и только одним IDE cdrom), переход на стандартное ядро Squeeze может вызвать проблемы: с введением поддержки новой libata PATA, устройство IDE hdX станет устройством sdX. Опять же, если используется постоянное именование, этого даже не будет заметно. (postinst для пакета linux-base содержит код помогающий с переходом, но сначала имеет смысл получить представление и заранее понять как это работает.)

  3. На больших машинах, с большим количеством 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.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: