Библиотека сайта rus-linux.net
Администрирование систем Linux. Монтирование файловых систем
Оригинал: MountingАвтор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 29 марта 2015 г.
Глава 7. Монтирование файловых систем
После того, как вы создали файловую систему в разделе жесткого диска, вы можете смонтировать
ее. Монтирование файловой системы делает ее доступной для использования обычно посредством специально созданной директории. Мы говорим о монтировании файловой системы
, а не о монтировании раздела жесткого диска, ведь, как мы увидим позднее, у нас также имеется возможность монтирования файловых систем, которые созданы вне разделов жестких дисков.
Во всех системах Unix
каждый файл и каждая директория являются частью одного большого дерева директорий файловой системы. Для доступа к файлу вы должны знать полный путь к этому файлу, начинающийся с корневой директории. При добавлении файловой системы
в ходе обслуживания операционной системы вам придется предоставить доступ к этой файловой системе из какой-либо точки дерева директорий файловой системы. Директория, из которой будет доступна ваша файловая система, называется точкой монтирования.
7.1. Монтирование локальных файловых систем
7.1.1. Создание точки монтирования с помощью утилиты mkdir
В данном примере демонстрируется методика создания новой точки монтирования
с помощью утилиты mkdir
.
root@RHELv4u2:~# mkdir /home/project42
7.1.2. Утилита mount
После того, как точка монтирования
создана, а файловая система
присутствует на разделе жесткого диска, утилита mount
может быть использована для монтирования файловой системы
в директорию
, которая станет точкой монтирования
.
root@RHELv4u2:~# mount -t ext2 /dev/sdb1 /home/project42/
После монтирования пользователи получат доступ к файловой системе.
7.1.3. Файл /etc/filesystems
На самом деле использование параметра -t ext2
утилиты mount для явного указания типа файловой системы не всегда является необходимым. Утилита mount
имеет возможность автоматической идентификации типов множества файловых систем.
В случае монтирования файловой системы без явного указания ее типа утилита mount
в первую очередь попытается идентифицировать файловую систему как одну из файловых систем, перечисленных в файле /etc/filesystems
. При этом утилита mount будет пропускать строки с директивой nodev
.
paul@RHELv4u4:~$ cat /etc/filesystems ext3 ext2 nodev proc nodev devpts iso9660 vfat hfs
7.1.4. Файл /proc/filesystems
В том случае, если файла /etc/filesystems
не существует или данный файл заканчивается строкой с одним символом *, утилита mount
будет читать файл /proc/filesystems
.
[root@RHEL52 ~]# cat /proc/filesystems | grep -v ^nodev ext2 iso9660 ext3
7.1.5. Утилита umount
Вы можете отмонтировать
файловую систему с помощью утилиты umount
.
root@pasha:~# umount /home/reet
7.2. Вывод списка смонтированных файловых систем
Для вывода списка смонтированных файловых систем следует использовать команду mount
. Также можно прочитать содержимое файлов /proc/mounts
и /etc/mtab
.
7.2.1. Утилита mount
Простейший и наиболее часто используемый способ вывода списка смонтированных файловых систем заключается в использовании утилиты mount
без каких-либо аргументов.
root@RHELv4u2:~# mount | grep /dev/sdb /dev/sdb1 on /home/project42 type ext2 (rw)
7.2.2. Файл /proc/mounts
Ядро ОС предоставляет информацию о смонтированных файловых системах посредством файла /proc/mounts
, причем данный файл не хранится на жестком диске. При чтении информации из файла /proc/mounts
осуществляется чтение информации, переданной непосредственно ядром ОС.
root@RHELv4u2:~# cat /proc/mounts | grep /dev/sdb /dev/sdb1 /home/project42 ext2 rw 0 0
7.2.3. Файл /etc/mtab
Содержимое файла /etc/mtab
не обновляется средствами ядра ОС, а поддерживается в актуальном состоянии средствами утилиты mount
. Не редактируйте файл /etc/mtab
вручную.
root@RHELv4u2:~# cat /etc/mtab | grep /dev/sdb /dev/sdb1 /home/project42 ext2 rw 0 0
7.2.4. Утилита df
Более удобный для пользователя способ получения списка смонтированных файловых систем заключается в использовании утилиты df
. Утилита df
(название расшифровывается как diskfree
- свободное пространство диска) имеет полезную дополнительную возможность, заключающуюся в выводе данных об объеме свободного пространства в каждой из смонтированных файловых систем, расположенных в разделах жестких дисков. Как и большинство утилит из состава Linux, утилита df
поддерживает параметр -h
, предназначенный для активации режима вывода данных в формате, облегчающем чтение.
root@RHELv4u2:~# df Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в /dev/mapper/VolGroup00-LogVol00 11707972 6366996 4746240 58% / /dev/sda1 101086 9300 86567 10% /boot none 127988 0 127988 0% /dev/shm /dev/sdb1 108865 1550 101694 2% /home/project42 root@RHELv4u2:~# df -h Файловая система Размер Использовано Дост Использовано% Cмонтировано в /dev/mapper/VolGroup00-LogVol00 12G 6.1G 4.6G 58% / /dev/sda1 99M 9.1M 85M 10% /boot none 125M 0 125M 0% /dev/shm /dev/sdb1 107M 1.6M 100M 2% /home/project42
7.2.5. Команда df -h
В приведенном ниже примере вывода команды df -h
вы можете обнаружить информацию о размере файловой системы, свободном пространстве, использованном пространстве в гигабайтах и процентах, а также точке монтирования файловой системы, созданной в соответствующем разделе жесткого диска.
root@laika:~# df -h | egrep -e "(sdb2|File)" Файловая система Размер Использовано Дост Использовано% Cмонтировано в /dev/sdb2 92G 83G 8.6G 91% /media/sdb2
7.2.6. Утилита du
Утилита du
позволяет получить количественные показатели использования пространства жесткого диска
для хранения файлов и директорий. Используя утилиту du
с параметром, являющимся путем к точке монтирования, вы на самом деле будете получать информацию о пространстве раздела жесткого диска, занятом данными из файловой системы.
Хотя утилита du
и может осуществлять рекурсивный обход дерева директорий с последующим выводом информации о каждой из директорий, параметр -s
позволит вам получить обобщенную информацию о размере родительской директории. Этот параметр чаще всего используется вместе с параметром -h
. Поэтому команда du -sh
по отношению к точке монтирования позволит получить информацию обо всем пространстве раздела диска, использованном файловой системой.
root@debian6~# du -sh /boot /srv/wolf 6.2M /boot 1.1T /srv/wolf
7.3. Процесс монтирования файловой системы от начала до конца
В приведенном ниже примере показана полная последовательность действий, начинающаяся с определения имени файла устройства жесткого диска (/dev/sdb) и заканчивающаяся монтированием созданной в разделе этого жесткого диска файловой системы в директорию /mnt
.
[root@centos65 ~]# dmesg | grep '\[sdb\]' sd 3:0:0:0: [sdb] 150994944 512-byte logical blocks: (77.3 GB/72.0 GiB) sd 3:0:0:0: [sdb] Write Protect is off sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support \ DPO or FUA sd 3:0:0:0: [sdb] Attached SCSI disk [root@centos65 ~]# parted /dev/sdb (parted) mklabel msdos (parted) mkpart primary ext4 1 77000 (parted) print Модель: ATA VBOX HARDDISK (scsi) Диск /dev/sdb: 77.3GB Размер сектора (логич./физич.): 512B/512B Таблица разделов: msdos Номер Начало Конец Размер Тип Файловая система Флаги 1 1049kB 77.0GB 77.0GB primary (parted) quit [root@centos65 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 4702208 inodes, 18798592 blocks 939929 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 574 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group ( вывод сокращен ) ... [root@centos65 ~]# mount /dev/sdb1 /mnt [root@centos65 ~]# mount | grep mnt /dev/sdb1 on /mnt type ext4 (rw) [root@centos65 ~]# df -h | grep mnt /dev/sdb1 71G 180M 67G 1% /mnt [root@centos65 ~]# du -sh /mnt 20K /mnt [root@centos65 ~]# umount /mnt
7.4. Монтирование файловых систем на постоянной основе
До текущего момента мы монтировали все файловые системы вручную. Такой подход вполне приемлем, но файловая система остается смонтированной только до следующей перезагрузки системы. К счастью, существует способ уведомления вашего компьютера о необходимости монтирования определенных файловых систем в процессе загрузки операционной системы.
7.4.1. Файл /etc/fstab
Таблица монтируемых файловых систем, расположенная в файле /etc/fstab
, содержит список файловых систем с параметрами, позволяющими монтировать каждую из них в процессе загрузки операционной системы.
Ниже приведен пример файла /etc/fstab
.
root@RHELv4u2:~# cat /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0
Добавив в данный файл следующую строку, вы можете автоматизировать процесс монтирования созданной файловой системы.
/dev/sdb1 /home/project42 ext2 defaults 0 0
7.4.2. Команда mount /точка_монтирования
Благодаря добавлению элемента с список монтируемых файловых систем, расположенный в файле /etc/fstab
, вы можете использовать упрощенный вариант команды mount
. Команда из примера ниже позволяет осуществить поиск информации о файле устройства, представляющем связанный с переданной точкой монтирования раздел жесткого диска, в файле /etc/fstab
с помощью утилиты mount
.
root@rhel65:~# mount /home/project42
7.5. Безопасное монтирование файловых систем
Безопасное монтирование файловых систем становится возможным благодаря наличию нескольких специализированных параметров монтирования файловых систем
. Эти параметры рассмотрены в примерах, приведенных ниже.
7.5.1. Параметр ro
Параметр ro
позволяет смонтировать файловую систему в режиме только для чтения, что позволит предотвратить запись данных в нее любым пользователем.
root@rhel53 ~# mount -t ext2 -o ro /dev/hdb1 /home/project42 root@rhel53 ~# touch /home/project42/testwrite touch: невозможно выполнить touch для `/home/project42/testwrite': Файловая система доступна только для чтения
7.5.2. Параметр noexec
Параметр noexec
позволяет предотвратить исполнение бинарных файлов и сценариев, расположенных в смонтированной файловой системе.
root@rhel53 ~# mount -t ext2 -o noexec /dev/hdb1 /home/project42 root@rhel53 ~# cp /bin/cat /home/project42 root@rhel53 ~# /home/project42/cat /etc/hosts -bash: /home/project42/cat: Отказано в доступе root@rhel53 ~# echo echo hello > /home/project42/helloscript root@rhel53 ~# chmod +x /home/project42/helloscript root@rhel53 ~# /home/project42/helloscript -bash: /home/project42/helloscript: Отказано в доступе
7.5.3. Параметр nosuid
Параметр nosuid
позволяет игнорировать биты setuid
, установленные для бинарных файлов из смонтированной файловой системы.
Обратите внимание на то, что в случае использования данного параметра вы все также сможете устанавливать биты setuid
для бинарных файлов из файловой системы.
root@rhel53 ~# mount -o nosuid /dev/hdb1 /home/project42 root@rhel53 ~# cp /bin/sleep /home/project42/ root@rhel53 ~# chmod 4555 /home/project42/sleep root@rhel53 ~# ls -l /home/project42/sleep -r-sr-xr-x 1 root root 19564 июн 24 17:57 /home/project42/sleep
Но пользователи не смогут воспользоваться привилегиями, обусловленными наличием битов setuid
.
root@rhel53 ~# su - paul [paul@rhel53 ~]$ /home/project42/sleep 500 & [1] 2876 [paul@rhel53 ~]$ ps -f 2876 UID PID PPID C STIME TTY STAT TIME CMD paul 2876 2853 0 17:58 pts/0 S 0:00 /home/project42/sleep 500 [paul@rhel53 ~]$
7.5.4. Параметр noacl
Для предотвращения использования механизма управления правами доступа к файлам на основе списков контроля доступа
следует использовать параметр noacl
.
root@rhel53 ~# mount -o noacl /dev/hdb1 /home/project42
Описания других параметров монтирования
файловых систем доступны на странице руководства для утилиты mount
.
7.6. Монтирование удаленных файловых систем
7.6.1. Файловая система SMB/CIFS
Команда разработчиков проекта Samba (samba.org) осуществляет разработку системной службы для Unix/Linux, которая совместима с протоколом SMB/CIFS. Данный протокол используется главным образом компьютерами, работающими под управлением ОС производства компании Microsoft.
Соединение с сервером Samba (или компьютером, работающим под управлением ОС производства компании Microsoft) также может осуществляться с помощью утилиты mount.
В данном примере показана методика соединения с сервером, имеющим IP-адрес 10.0.0.42
, для доступа к разделяемому ресурсу с именем data2
.
[root@centos65 ~]# mount -t cifs -o user=paul //10.0.0.42/data2 /home/data2 Password: [root@centos65 ~]# mount | grep cifs //10.0.0.42/data2 on /home/data2 type cifs (rw)
Для корректного соединения с использованием описанного протокола необходимо установить дополнительные программные компоненты с помощью команды yum install cifs-client
.
7.6.2. Файловая система NFS
Серверы Unix обычно используют протокол NFS
(расшифровывается как Network File System - сетевая файловая система) для предоставления доступа к директориям по сети. Настройка сервера NFS будет обсуждаться позднее. Соединение же с сервером NFS со стороны клиента осуществляется также с помощью утилиты mount
и очень похоже на соединение с локальным дисковым хранилищем.
Данная команда демонстрирует методику соединения с сервером NFS с именем server42
, который предоставляет доступ к директории /srv/data
. Точка монтирования
(путь к которой приведен в конце строки команды) должна существовать.
[root@centos65 ~]# mount -t nfs server42:/srv/data /home/data [root@centos65 ~]#
В том случае, если сервер с именем server42
имеет IP-адрес 10.0.0.42
, вы также можете использовать запись:
[root@centos65 ~]# mount -t nfs 10.0.0.42:/srv/data /home/data [root@centos65 ~]# mount | grep data 10.0.0.42:/srv/data on /home/data type nfs (rw,vers=4,addr=10.0.0.42,clienta\ ddr=10.0.0.33)
7.6.2. Специфичные для NFS параметры монтирования
bg
: в случае неудачи при монтировании файловой системы повторять попытки в фоновом режиме.
fg
: (используется по умолчанию) в случае неудачи при монтировании файловой системы повторять попытки, выводя информацию в текущую командную оболочку.
soft
: прекратить процесс монтирования файловой системы после X неудачных попыток.
hard
: (используется по умолчанию) продолжать предпринимать попытки монтирования файловой системы после неудач.
Комбинация параметров soft+bg
позволяет осуществить наиболее быструю загрузку клиентской системы в случае неполадок с сервером NFS.
retrans=X
: Попытаться соединиться с сервером X раз (по протоколу UDP).
tcp
: Принудительно использовать протокол TCP (используется по умолчанию и всегда поддерживается).
udp
: Принудительно использовать протокол UDP (не всегда поддерживается).
7.7. Практическое задание: монтирование файловых систем
-
1. Смонтируйте файловую систему, созданную в рамках малого раздела размером в 200 МБ, в точку монтирования /home/project22.
-
2. Смонтируйте файловую систему, созданную в рамках большого первичного раздела размером в 400 МБ, в точку монтирования /mnt, после чего скопируйте некоторые системные файлы в эту директорию (рекомендуется скопировать все содержимое директории /etc). После этого отмонтируйте файловую систему и повторно смонтируйте ее в точку монтирования /srv/nfs/salesnumbers в режиме только для чтения. Где оказались скопированные вами ранее файлы?
-
3. Проверьте корректность своих выполненных действий с помощью утилит
fdisk
,df
иmount
. Также изучите содержимое файлов/etc/mtab
и/proc/mounts
. -
4. Сделайте так, чтобы монтирование обеих файловых систем осуществлялось автоматически на постоянной основе, после чего проверьте работоспособность использованного механизма монтирования.
-
5. Что случится, если вы смонтируете файловую систему в директорию, в которой уже содержатся файлы?
-
6. Что случится, если вы смонтируете две файловых системы в одну и ту же точку монтирования?
-
7 (дополнительное задание). Дайте пояснения относительно различий между данными утилитами: find, locate, updatedb, makewhatis, whereis, apropos, which и type.
-
8 (дополнительное задание). Выполните проверку файловой системы, созданной в разделе, который смонтирован в директорию /srv/nfs/salesnumbers.
7.8. Процедура корректного выполнения практического задания: монтирование файловых систем
-
1. Смонтируйте файловую систему, созданную в рамках малого раздела размером в 200 МБ, в точку монтирования /home/project22.
-
mkdir /home/project22 mount /dev/sdc1 /home/project22
-
2. Смонтируйте файловую систему, созданную в рамках большого первичного раздела размером в 400 МБ, в точку монтирования /mnt, после чего скопируйте некоторые системные файлы в эту директорию (рекомендуется скопировать все содержимое директории /etc). После этого отмонтируйте файловую систему и повторно смонтируйте ее в точку монтирования /srv/nfs/salesnumbers в режиме только для чтения. Где оказались скопированные вами ранее файлы?
-
mount /dev/sdb1 /mnt cp -r /etc /mnt ls -l /mnt umount /mnt ls -l /mnt mkdir -p /srv/nfs/salesnumbers mount /dev/sdb1 /srv/nfs/salesnumbers
Теперь вы можете обнаружить скопированные ранее файлы в директории /srv/nfs/salenumbers ...
Но физически эти файлы все также хранятся в рамках файловой системы ext3 на разделе жесткого диска, представленном файлом устройства /dev/sdb1
-
3. Проверьте корректность своих выполненных действий с помощью утилит
fdisk
,df
иmount
. Также изучите содержимое файлов/etc/mtab
и/proc/mounts
. -
fdisk -l df -h mount
В выводах всех трех приведенных выше команд должна содержаться информация о смонтированных вами файловых системах и файлах устройств соответствующих разделов дисков.
grep project22 /etc/mtab grep project22 /proc/mounts
-
4. Сделайте так, чтобы монтирование обеих файловых систем осуществлялось автоматически на постоянной основе, после чего проверьте работоспособность использованного механизма монтирования.
-
Добавьте следующие строки в файл /etc/fstab
/dev/sdc1 /home/project22 auto defaults 0 0 /dev/sdb1 /srv/nfs/salesnumbers auto defaults 0 0
-
5. Что случится, если вы смонтируете файловую систему в директорию, в которой уже содержатся файлы?
-
Уже имеющиеся файлы будут скрыты до момента отмонтирования файловой системы, к примеру, с помощью утилиты
umount
. -
6. Что случится, если вы смонтируете две файловых системы в одну и ту же точку монтирования?
-
Будут доступны файлы только из последней смонтированной файловой системы.
-
7 (дополнительное задание). Дайте пояснения относительно различий между данными утилитами: find, locate, updatedb, makewhatis, whereis, apropos, which и type.
-
man find man locate ...
-
8 (дополнительное задание). Выполните проверку файловой системы, созданной в разделе, который смонтирован в директорию /srv/nfs/salesnumbers.
-
# umount /srv/nfs/salesnumbers (необязательная команда, которую рекомендуется выполнить) # fsck /dev/sdb
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 6. Файловые системы | Глава 8. Инструменты для диагностики файловых систем |