Практика. Управление файловыми хранилищами
Документация по подключению файловых систем
- Подключение файловых систем. Команда mount в Linux
- Фаловая система Linux
- Подключение и отключение файловых систем в Linux
Краткий обзор взаимодействия с файловыми системами в Linux
Введение
На данном занятии рассмотрим способы взаимодействия с устройствами для хранения данных в операционной системе Linux.
В файловой системе Linux и других UNIX-подобных ОС используется единое дерево каталогов, в нём отсутствует понятие «имя диска», применяемое в ОС Windows. Каждый «диск» в Windows соотносится с одним разделом на хранилище данных, жёстком диске, флеш-накопителе и т.д. Дисковые разделы могут иметь разные файловые системы: для флеш-носителей применяются FAT32, exFat; для жёстких дисков NTFS, ext4, xfs, jfs и т.д.; для оптических дисков UDF.
Для того, чтобы файлы с дискового раздела стали доступны пользователям ОС Linux, их необходимо «подключать» к общему дереву каталогов. Для подключения каталогов используется приложение mount
. Оно может подключить произвольный раздел или раздел, обозначенный в конфигурационном файле /etc/fstab
.
Рассмотрим структуру данного файла:
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=817be564-396a-4bb7-b908-49c2f0c96d3f / ext4 errors=remount-ro 0 1
# swap was on /dev/sda1 during installation
UUID=38a7e0a2-d087-4d86-a9b8-8ad11d3cbc1b none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Данный файл содержит информацию в структурированном виде, где на каждой строке указываются параметры подключения. Рассмотрим поля конфигурационного файла.
# | Содержимое | Описание |
---|---|---|
1 | Раздел диска | Данное поле может содержать название раздела, который необходимо подключить. Оно может быть оформлено в формате пути к файлу-устройству, например /dev/sdc2 (второй раздел на третьем автоматически определённом диске). Другой подход — использовать метки устройств или UUID раздела, который присваивается ему при создании. Последний подход для конфигурационного файла является предпочтительным, так как позволяет разделить логическую конфигурацию от физической. |
2 | Точка подключения | Каталог на файловой системе, к которому необходимо подключить дерево каталогов из целевого раздела. |
3 | Тип файловой системы | Указывается название файловой системы, например ext4 , vfat (FAT32), ntfs и так далее. |
4 | Опции подключения | В опциях мы можем указать, например, что данные доступны только на чтение, что с данного каталога нельзя запускать приложения, и так далее. |
5 | Резервное копирование | Число, которое указывает когда каталог должен быть сохранён с помощью команды dump . 0 указывает, что выполнять сохранение данных не нужно. |
6 | Порядок проверки | Число, которое указывает порядок проверки целостности с помощью приложения fsck. 0 указывает, что выполнять проверку не нужно |
Просмотр подключённых разделов
Если вызвать приложение mount
, тогда оно отобразит список подключённых разделов:
user@playground:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1006532k,nr_inodes=251633,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204272k,mode=755)
/dev/sda2 on / type ext4 (rw,relatime,errors=remount-ro)
....
Формат вывода информации следующий:
- Устройство, которое подключено.
on
разделитель.- Точка подключения.
type
разделитель.- Тип подключённой файловой системы.
- Опции подключения.
Из этого вывода можно увидеть, что устройство /dev/sda2
подключено как корневая файловая система /
. На этом разделе используется файловая система ext4
, которая доступна на чтение и запись, rw
.
Предпоследняя запись говорит о подключении tmpfs
по пути /run
. tmpfs — это специальная файловая система, которая позволяет хранить данные прямо в оперативной памяти. В этом случае скорость доступа к данным наибольшая, но её размер ограничен параметрами подключения. В данном случае доступно 200 мегабайт.
Подключение разделов из fstab
В конфигурационном файле playground после установки есть запись для подключения CD-диска. В опциях к ней указана опция noauto
, которая говорит, что не надо данный раздел подключать во время загрузки ОС. /dev/sr0
— путь к устройству cd-rom.
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Посмотрим содержимое каталога точки подключения /media/cdrom0
, оно должно быть пустым.
Подключим ISO-образ внутри VirtualBox к привод дисков. Для этого выберите пункт меню «Устройства» -> «Оптические диски». В меню либо выберите существующий iso-образ, либо используйте пункт «Выбрать файл диска». В качестве образа диска можно использовать установочный образ Debian netinstall.
После подключения образа данные в точке подключения не появились. Данное действие сравнимо с физическим добавлением носителя в CD-привод. После добавления носителя необходимо дать команду ОС для её подключения.
mount /media/cdrom0
Для подключения раздела, который указан в файле fstab
достаточно указать только точку подключения. После выполнения команды в каталоге подключения будут доступны данные с образа подключённого диска.
Отключение раздела
По окончании использования раздела необходимо выполнить процедуру отключения диска от файловой системы. Для выполнения этого действия используется приложение umount
. В качестве аргумента указывается точка подключения или устройство. Этой информации достаточно, чтобы произвести отключение.
Например для отключения ранее подключенного диска достаточно выполнить команду от имени суперпользователя:
umount /media/cdrom0
Отключать разделы необходимо, чтобы все изменения, сделанные в соответствующем каталоге, отобразились внутри файловой системы данного раздела. Если физическое отключение произойдёт до окончания логического отключения раздела, тогда данные на физическом носителе могут отличаться от тех, что видит пользователь. Это связано с тем, что ОС Linux активно кеширует данные с жёсткого диска, чтобы уменьшить количество операций над физическими носителями.
Подключение флеш-носителя
В отличие от виртуального cd-диска для подключения произвольного флеш-накопителя невозможно добавить правило в файл /etc/fstab
для такого использования, поэтому для подключения такого носителя надо выполнить чуть больше телодвижений.
Стоит отметить, что современные графические пользовательские интерфейсы предоставляют возможность обычным пользователям подключать сменные носители без использования командного интерфейса. С технической точки зрения для подключения используется подсистема policy mount
и приложения pmount
, pumount
её реализующие. Рассмотрение деталей работы данных приложений находится за пределами курса.
При ручном подключении необходимо выполнить следующие действия:
- Определить файл, соответствующий подключённому устройству.
- Возможно определить тип файловой системы, используемой на разделе.
- Подключить раздел к точке подключения.
Для определения файла можно воспользоваться:
- Приложением
lsblk
, которое отображает все доступные блочные устройства. - Приложением
fdisk
с флагом-l
. - Приложением
demesg
, которое отображает сообщения от ядра ОС. - Просмотром файлов-журналов
/var/log/syslog
или/var/log/messages
.
Наименование файлов-устройств
Файлы, соответствующие устройствам, располагаются в Linux в каталоге /dev
.
Шаблон | Устройства |
---|---|
/dev/fd* |
Флоппи-диски |
/dev/lp* |
Принтеры |
/dev/sd* |
Файлы жёстких дисков, ранее подсистема SCSI-накопителей. Первое физическое устройство имеет имя sda , второе sdb и так далее. Для первого раздела на устройстве будет создан файл sda1 , для второго sda2 и так далее.` |
/dev/sr* |
Файлы оптических приводов |
Пример подключения флеш-носителя в VirtualBox
VirtualBox позволяет подключить физический флеш-носитель к виртуальной машине. В результате выполнения этого действия USB-устройство перестанет быть доступным для хост-системы и становится доступным как USB-устройство внутри виртуальной машины.
- Подключаем флеш к компьютеру.
- Подключаем данное устройство к виртуальной машине с помощью пункта меню «Устройства»->«USB»->Название устройства.
- Находим устройство в виртуальной машине. Для playground его имя будет скорее всего
/dev/sdb
. - На флеш-накопителях обычно один раздел, следовательно его имя скорее всего будет
/dev/sdb1
. - Создаём каталог, к которому будем подключать данный носитель. Например
~/flash
. - Даём команду на подключение дерева каталогов от имени суперпользователя:
mount /dev/sdb1 /home/user/flash
.
После этого в каталоге ~/flash
доступны данные с флеш-накопителя.
Для отключения флеш-накопителя надо выполнить следующие действия:
- Отключить раздел флеш-накопителя от дерева каталогов Linux, выполнив команду
umount /dev/sdb1
. - Дождаться окончания записи данных на носитель.
- Отключить носитель от виртуальной машины VirtualBox с помощью того же пункта. Напротив нужного устройства надо снять галочку.
- Открыть раздел флеш-накопителя в хост-системе и убедиться, что все данные доступны.
Подключение флеш-накопителей с файловой системой exfat
Для множества UNIX-специфических файловых систем прямо в ядре ОС Linux реализована поддержка. Файловая система exfat разработана Microsoft и была защищена патентами на использование, которые были сняты относительно недавно. Работа над драйвером сейчас активно ведётся и в ближайших обновлениях ядра поддержка будет реализована нативным образом.
Поддержка файловой системы exfat реализована через механизм FUSE, filesystem in user space. Для включения поддержки данной файловой системы необходимо установить пакет exfat-fuse
. После этого диски будут автоматически подключаться.
Задачи на подключение дисков
- Подключите .iso-образ к виртуальному дисковому приводу вашей виртуальной машины и подключите его к файловой системе. Убедитесь, что данные с диска доступны. Корректно отключите диск.
- Перенесите файлы .sh с помощью процедуры подключения флеш-носителя с виртуальной машины на основную машину.
- Добавьте описание подключения флеш-носителя в конфигурационный файл
/etc/fstab
. Используйте данную строку для подключения носителя. - Установите пакет
pmount
. Используйте инструменты из данного пакета для подключения носителей.- Какие требования предъявляются пользователям, чтобы они могли использовать данные инструменты?
- Какой подход удобнее: использование pmount или добавление данных в
/etc/fstab
? Обоснуйте свою точку зрения.
Документация на инструменты
- Изучаем Linux, 101: Создание разделов и файловых систем
- команда fdisk. Управление разделами жёсткого диска
- fdisk на ArchWiki
Задача на манипулирование файловыми системами
Прочитайте документацию о том как использовать инструмент fdisk.
Добавьте новый виртуальный жёсткий диск к своей машине. Для этого:
- Выключите виртуальную машину playground.
- Откройте настройки виртуальной машины и перейдите в раздел «Носители».
- Выберите контролер SATA и нажмите на иконку добавления жёсткого диска.
- В появившемся менеджере дисков создайте новый диск на 20 гигабайт и добавьте его к виртуальной машине.
- Сохраните настройки и запустите виртуальную машину.
- Определите название файла нового жёсткого диска внутри виртуальной машины. Скорее всего он будет называться
/dev/sdb
. - Используя приложение fdisk разделите новый жёсткий диск на 2 части: 2 гигабайта и 18 гигабайт.
- Отформатируйте первый раздел в формат раздела подкачки, swap.
- Отформатируйте второй раздел в формат ext4.
- Обеспечьте подключение второго раздела к точке подключения
/home
, обеспечьте автоматическое подключение данного раздела при загрузке системы. Для этого надо настроить автоматическое подключение в файле/etc/fstab
.