Моя цель: пояснить, как в Linux монтируются файловые системы; рассмотреть особенности монтирования различных носителей, параметры монтирования и др.; настройка журнала файловой системы ext3/ext4.
Команды mount и umount.
Друзья, чтобы работать с какой-либо файловой системой, необходимо примонтировать ее к корневой файловой системе. Например, когда мы вставляем в разъем USB флешку, монтируется ее файловая система к корневой файловой системе — в результате мы получаем доступ к файлам и каталогам, которые на этой флешке записаны. Аналогичная ситуация с жесткими, оптическими дисками и другими носителями данных.
Если вы хотите заменить сменный носитель данных (флешку, компакт-диск), вам нужно сначала размонтировать файловую систему, затем извлечь носитель данных, установить новый и заново смонтировать файловую систему. Компакт-диск система не разрешит вам извлечь, если он не размонтирован. В свою очередь, размонтировать файловую систему можно только, когда ни один процесс ее не использует.
При завершении работы системы (перезагрузке, выключении компьютера) размонтирование всех файловых систем выполняется автоматически.
Команда монтирования (ее нужно выполнять с привилегиями root) выглядит так:
# mount [опции] <устройство> <точка монтирования>
Точка монтирования — это каталог, через который будет осуществляться доступ к монтируемой файловой системе. Например, если вы подмонтировали компакт-диск к каталогу /mnt/cdrom, то получить доступ к файлам и каталогам, записанным на компакт-диске, можно будет через точку монтирования (именно этот каталог /mnt/cdrom). Точкой монтирования может быть любой каталог корневой файловой системы, хоть /aaa-111. Главное, чтобы этот каталог существовал на момент монтирования файловой системы.
Как мы знаем, для выполнения команд с привилегиями root вам нужно использовать команду sudo . Поэтому, чтобы выполнить команду монтирования привода компакт-диска, нужно ввести команду:
sudo mount /dev/scd0 /mnt/cdrom
Перед выполнением команды mount программа sudo попросит вас ввести пароль. Если введенный пароль правильный, то будет выполнена команда mount .
Для размонтирования файловой системы используется команда umount :
# umount <устройство или точка монтирования>
Файлы устройств и монтирование
Мы уже говорили о файлах устройств. Вернемся к ним снова, но в контексте монтирования файловой системы.
Напомню, для Linux нет разницы между устройством и файлом. Все устройства системы представлены в корневой файловой системе как обычные файлы. Например, /dev/sda — жесткий диск. Файлы устройств хранятся в каталоге /dev.
Жесткие диски
С появлением в Linux менеджера устройств udev и принятием глобального уникального идентификатора устройств (UUID) все дисковые устройства, вне зависимости от интерфейса подключения (PATA, SATA, SCSI), называются /dev/sdx, где x— буква.
Допустим, у нас есть устройство /dev/sda. На жестком диске может быть несколько разделов. У нас на диске имеются три раздела (логических диска), которые в Windows называются C:, D: и E:. Диск C: обычно является загрузочным (активным), поэтому этот раздел будет записан в самом начале диска. Нумерация разделов жесткого диска в Linux начинается с 1, и в большинстве случаев диску C: будет соответствовать имя /dev/sda1— первый раздел на первом жестком диске.
Мы можем предположить, что двум оставшимся разделам (D: и E:) будут присвоены имена /dev/sda2 и /dev/sda3. Это может быть и так, и не так. Как известно, на жестком диске могут существовать или четыре первичных раздела, или три первичных и один расширенный. В расширенном разделе могут разместиться до 11 логических дисков (разделов). Таким образом, раздел может быть первичным (primary partition), расширенным (extended partition) или логическим (logical partition).
Для возможных четырех первичных разделов диска в Linux зарезервированы номера 1, 2, 3, 4. Если разделы D: и E: нашего диска первичные, то, да — им будут присвоены имена /dev/sda2 и /dev/sda3. Но в большинстве случаев эти разделы являются логическими и содержатся в расширенном разделе. В Linux логические разделы именуются, начиная с 5, а это означает, что если разделы D: и E: — логические, им будут присвоены имена /dev/sda5 и /dev/sda6 соответственно.
ЗАМЕЧАНИЕ
В Windows расширенному разделу не присваивается буква, потому что этот раздел не содержит данных пользователя, а только информацию о логических разделах.
Узнать номер раздела очень просто: достаточно запустить утилиту, работающую с таблицей разделов диска, можно использовать стандартный fdisk, запустив ее от имени root. А можно — GParted. Кстати, сразу после установки Linux Mint я ее устанавливаю командой:
sudo apt-get install gparted
Чтобы узнать номера разделов первого жесткого диска (/dev/sda), введите команду:
# sudo fdisk /dev/sda
После этого вы увидите приглашение fdisk. В ответ на приглашение нужно ввести p и нажать клавишу <Enter>. Вы увидите таблицу разделов. После этого для выхода из программы введите q и нажмите клавишу <Enter>.
Мы видим таблицу разделов моего первого жесткого диска. Я его разбил на 4 первичных раздела, поэтому видим /dev/sda1, /dev/sda2, /dev/sda3, /dev/sda4. Первый раздел объемом 100М — вспомогательный раздел Windows 10. Второй - мой диск C:, где установлена система Windows 10. Третий — корневой раздел Linux Mint. Четвертый — домашний раздел Linux Mint. (Лично мое предпочтение)
Опции монтирования файловых систем.
Зная номер раздела, можно подмонтировать его файловую систему. Делается это так:
# mount <раздел> <точка монтирования>
Например:
# mount /dev/sda5 /mnt/win_d
У команды mount довольно много опций, но на практике наиболее часто используются только некоторые из них: -t , -r , -w , -a .
Параметр -t позволяет задать тип файловой системы. Обычно программа сама определяет файловую систему, но иногда это у нее не получается. Тогда мы должны ей помочь. Формат использования этого параметра следующий:
# mount -t <файловая система> <устройство> <точка монтирования>
Например,
# mount -t iso9660 /dev/sdc /mnt/cdrom
Вот опции для указания наиболее популярных монтируемых файловых систем:
ext2 , ext3 , ext4 — файловая система Linux;
iso9660 — указывается при монтировании CD-ROM;
vfat — FAT, FAT32 (поддерживается Windows 9x, ME, XP);
ntfs — NT File System (поддерживается NT, XP, Windows 7, Windows 10), будет использована стандартная поддержка NTFS;
ntfs-3g — будет использован модуль ntfs-3g, входящий в большинство современных дистрибутивов. Данный модуль позволяет производить запись информации на NTFS-разделы (устаревшее).
ЗАМЕЧАНИЕ
Если в вашем дистрибутиве нет модуля ntfs-3g, т. е. при попытке указания данной файловой системы вы увидели сообщение об ошибке, тогда вы можете скачать его с сайта www.ntfs-3g.org (если это для Вас действительно необходимо). На данном сайте доступны как исходные коды, так и уже откомпилированные для разных дистрибутивов пакеты (уже не используется).
Параметр -r монтирует указанную файловую систему в режиме "только чтение".
Параметр -w монтирует файловую систему в режиме "чтение/запись". Данный параметр используется по умолчанию для файловых систем, поддерживающих запись.
Параметр –a используется для монтирования всех файловых систем, указанных в файле /etc/fstab (кроме тех, для которых указано noauto — такие файловые системы нужно монтировать вручную). При загрузке системы вызывается команда mount с параметром -a .
Если вы не можете смонтировать NTFS-раздел с помощью опции ntfs-3g , то, вероятнее всего, он был неправильно размонтирован (например, работа Windows не была завершена корректно). В этом случае для монтирования раздела нужно использовать опцию –o force , например:
sudo mount -t ntfs-3g /dev/sdb1 /media/usb -o force
Монтирование разделов при загрузке
Если вы не хотите при каждой загрузке монтировать постоянные файловые системы (например, ваши Windows-разделы), то вам можно прописать их в файле /etc/fstab. Обратите внимание — в этом файле не нужно прописывать файловые системы сменных носителей (дисковода, CD/DVD-привода, флеш-диска).
Рассмотрим формат файла fstab:
устройство точка_монтирования тип_ФС опции флаг_РК флаг_проверки
Здесь: тип_ФС — это тип файловой системы, а флаг_РК — флаг резервного копирования. Если он установлен ( 1 ), то программа dump заархивирует данную файловую систему при создании резервной копии. Если не установлен ( 0 ), то резервная копия этой файловой системы создаваться не будет. Флаг_ проверки устанавливает, будет ли данная файловая система проверяться на наличие ошибок программой fsck.
Проверка производится в двух случаях:
если файловая система размонтирована некорректно;
если достигнуто максимальное число операций монтирования для этой файловой системы.
Поле опции содержит важные параметры файловой системы. Вот некоторые из них:
auto Файловая система должна монтироваться автоматически при загрузке. Опция используется по умолчанию, поэтому ее указывать не обязательно.
noauto Файловая система не монтируется при загрузке системы (при выполнении команды mount -a), но ее можно смонтировать вручную с помощью все той же команды mount
defaults Используется стандартный набор опций, установленных по умолчанию.
exec Разрешает запуск выполняемых файлов для данной файловой системы. Эта опция используется по умолчанию.
noexec Запрещает запуск выполняемых файлов для данной файловой системы.
ro Монтирование в режиме "только чтение"
rw Монтирование в режиме "чтение/запись". Используется по умолчанию для файловых систем, поддерживающих запись.
user Данную файловую систему разрешается онтировать/размонтировать обычному пользователю (не root)
nouser Файловую систему может монтировать только пользователь root. Используется по умолчанию.
umask Определяет маску прав доступа при создании файлов. Для не-Linux файловых систем маску нужно установить так: umask=0.
utf8 Применяется только на дистрибутивах, которые используют кодировку UTF8 в качестве кодировки локали. В старых дистрибутивах (где используется KOI8-R) для корректного отображения русских имен файлов на Windows-разделах нужно было задать параметры iocharset=koi8-u, codepage=866
ЗАМЕЧАНИЕ
Редактировать файл /etc/fstab, как и любой другой файл из каталога /etc, можно в текстовом редакторе xed, но перед этим нужно получить права root (командами su или sudo).
Небольшой пример:
/dev/sdc /mnt/cdrom auto umask=0,user,noauto,ro,exec 0 0
/dev/sda1 /mnt/win_c vfat umask=0,utf8 0 0
Первая строка — это строка монтирования файловой системы компакт-диска, а вторая — строка монтирования диска C:.
Начнем с первой строки. /dev/sdc — это имя устройства CD-ROM. Точка монтирования — /mnt/cdrom . Понятно, что этот каталог должен существовать. Обратите внимание — в качестве файловой системы не указывается жестко iso9660, поскольку компакт-диск может быть записан в другой файловой системе, поэтому в качестве типа файловой системы задано auto , т. е. автоматическое определение.
Теперь идет довольно длинный набор опций. Ясно, что umask установлен в ноль, поскольку файловая система компакт-диска не поддерживает права доступа Linux.
Параметр user говорит о том, что данную файловую систему можно монтировать обычному пользователю. Параметр noauto запрещает автоматическое монтирование этой файловой системы, что правильно — ведь на момент монтирования в приводе может и не быть компакт-диска. Опция ro разрешает монтирование в режиме "только чтение", а exec разрешает запускать исполнимые файлы. Понятно, что компакт-диск не нуждается ни в проверке, ни в создании резервной копии, поэтому два последних флага равны нулю.
Вторая строка проще. Первые два поля — это устройство и точка монтирования. Третье — тип файловой системы. Файловая система постоянна, поэтому можно явно указать тип файловой системы ( vfat ), а не auto . Опция umask , как и в предыдущем случае, равна нулю. Указание опции utf8 позволяет корректно отображать русскоязычные имена файлов и каталогов.
Замечу, что это общие понятия, приведенные для понимания механизмов монтирования, в последних дистрибутивах Linux Mint CD/DVD при загрузке не монтируется - монтирование происходит автоматически при загрузке компакт-диска в дисковод.
Подробно о UUID и файле /etc/fstab
Пока мы еще помним формат файла /etc/fstab, нужно поговорить о UUID (Universally Unique IDentifier), или о длинных именах дисков. В некоторых дистрибутивах Linux вместо имени носителя (первое поле файла fstab) указывается его ID, поэтому fstab выглядит «устрашающе», вот так:
# /dev/sda6
UUID=1f049af9-2bdd-43bf-a16c-ff5859a4116a / ext4 defaults 0 1
# /dev/sda1
UUID=45AE-84D9 /media/sda1 vfat defaults,utf8,umask=007 0 0
Понятно, что использовать короткие имена вроде /dev/sda1 намного проще, чем идентификаторы в стиле 1f049af9-2bdd-43bf-a16c-ff5859a4116a . Использование имен дисков еще никто не отменял, поэтому вместо идентификатора носителя можно указывать его файл устройства — так будет значительно проще!
Но все же вам нужно знать соответствие длинных имен коротким именам устройств. Ведь система использует именно эти имена, а в файле /etc/fstab не всегда указывается, какой идентификатор принадлежит какому короткому имени устройства (или указывается, но не для всех разделов).
В Linux Mint "длинные имена" устройств можно узнать с помощью команды:
blkid
В файле fstab эта команда указана в комментариях, так что, если забудете, можно подсмотреть и вспомнить. Например, напомню результат выполнения blkid на моем компьютере:
Спрашивается, зачем были введены длинные имена, если короткие имена были удобнее, во всяком случае для пользователей? Оказывается, разработчики Linux в первую очередь и заботились как раз о пользователях. Например, в эпоху IDE-дисков диск можно было подключить либо к первичному (primary), либо к вторичному (secondary), если он есть, контроллеру. В зависимости от положения перемычки выбора режима винчестер может быть либо главным устройством (master), либо подчиненным (slave). Таким образом, в зависимости от контроллера, к которому подключается диск, изменяется его короткое имя — sda (primary master), sdb (primary slave), sdc (secondary master), sdd (secondary slave). То же самое с SATA/SCSI-винчестерами — при изменении параметров подключения изменяется и короткое имя устройства.
А вот при использовании же длинных имен идентификатор дискового устройства остается постоянным вне зависимости от типа подключения устройства к контроллеру. Именно поэтому длинные имена дисков часто также называются постоянными именами (persistent name). Получается, что раньше вы могли ошибочно подключить жесткий диск немного иначе, и разделы, которые назывались, скажем, /dev/sdaN , стали называться /dev/sdbN. Понятно, что загрузить Linux с такого диска не получится, поскольку везде указаны другие имена устройств. Если же используются длинные имена дисков, система загрузится в любом случае, как бы вы ни подключили жесткий диск. Удобно? Конечно.
Но это еще не все. Постоянные имена — это только первая причина. Вторая причина заключается в обновлении библиотеки libata. В новых версиях libata все PATA-устройства именуются не как hdx, а как sdx, что вносит некую путаницу. Длинные имена дисков от этого не изменяются, поэтому они избавляют пользователя от беспокойства по поводу того, что его старый IDE-диск вдруг превратился в SATA/SCSI-диск.
При использовании UUID однозначно идентифицировать раздел диска можно несколькими способами:
UUID=45AE-84D9 /media/sda1 vfat defaults,utf8,umask=007, gid=46 0 0
здесь с помощью параметра UUID указывается идентификатор диска;
/dev/disk/by-id/scsi-SATA_WDC_WD1600JB-00_WD-WCANM7959048-part7 swap swap defaults 0 0
здесь указывается длинное имя устройства диска;
LABEL=/ / ext3 defaults 1 1
самый компактный третий способ, позволяющий идентифицировать устройства по их метке.
ЗАМЕЧАНИЕ
Первый способ получения длинного имени в англоязычной литературе называется
"by-uuid", т. е. длинное имя составляется по UUID, второй способ называется "by-id", т. е. — по аппаратному идентификатору устройства. Третий способ называется "by-label" — по метке. Просмотреть соответствие длинных имен коротким можно с помощью команд:
ls –l /dev/disk/by-uuid
ls –l /dev/disk/by-id
ls –l /dev/disk/by-label
Но есть еще и четвертый способ, который называется "by-path". В этом случае имя генерируется по sysfs. Данный способ является наименее используемым, поэтому вы редко столкнетесь с ним.
Узнать метки разделов можно с помощью команды:
ls -lF /dev/disk/by-label
В файле /etc/fstab вы можете использовать длинные имена в любом формате. Можно указывать имена устройств в виде: /dev/disk/by-uuid/* , /dev/disk/by-id/* или
/dev/disk/by-label/* , можно использовать параметры UUID=идентификатор или LABEL=метка . Используйте тот способ, который вам больше нравится.
Но это общие соображения. Мой совет — использовать UUID.
Настройка журнала файловой системы ext3/ext4.
Друзья, журналируемая файловая система имеет три режима работы:
journal
ordered
writeback
Первый режим ( journal )является наиболее медленным, но он позволяет минимизировать потери ваших данных в случае сбоя системы (или отключения питания). В этом режиме в системный журнал записывается все, что только можно, что позволяет максимально восстановить файловую систему в случае сбоя.
В последовательном режиме ( ordered) в журнал заносится информация только об изменении метаданных (служебных данных файловой системы). Даный режим используется по умолчанию и является компромиссным вариантом между производительностью и отказоустойчивостью.
Самым быстрым является режим обратной записи ( writeback). Но использвать его не рекомендуется, так как особого толку от него не будет. Проще тогда уже при установке Linux выбрать файловую систему ext2 вместо ext3/ext4.
Если отказоустойчивость для вас на первом месте — выбирайте режим journal, во всех остальных случаях лучше выбрать ordered.
Выбор режима осуществляется редактированием файла /etc/fstab.
Например:
# режим ordered используется по умолчанию,
# поэтому ничего указывать не нужно
/dev/sda1 / ext3 defaults 1 0
# на этом разделе важные данные, используем режим journal
/dev/sda2 /var ext3 data=journal 1 0
# здесь ничего важного нет, режим writeback
/dev/sda2 /opt ext3 data=writeback 0 0
Этот фай можно подредактировать, указав режимы для разных разделов, и если вы хотите применить изменения без перезагрузки - выполните команду:
# mount -a
Эта команда заново смонтирует все файловые системы, чтобы изменения вступили в силу.
Практический совет: раздел с фильмами и т.п. монтируйте в режиме writeback.
В заключение.
Друзья, мы рассмотрели, как в Linux монтируются файловые системы, особенности монтирования при загрузке и в загруженной системе, как настроить журнал файловой системы. Возможно, вам не все приведенные выше настройки придется производить на практике, но! - понимание этих вопросов - просто необходимо! Я хочу, чтобы вы эти вещи освоили...
***
Вам понравилось, оказалось полезным? Ставьте, пожалуйста, "лайк"!
Буду рад вашим подпискам.