mount

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

mount — утилита командной строки в UNIX-подобных операционных системах. Применяется для монтирования файловых систем.

В статье приведено описание и примеры для операционной системы GNU/Linux.

Часто mount используется для SD-карты, USB-накопителя, DVD и других съемных носителей. Команда также доступна в оболочке EFI[1].

Использование

[править | править код]
mount /dev/cdrom /mnt/cdrom

Устройство /dev/cdrom монтируется в каталог /mnt/cdrom, если он существует. Начиная от момента монтирования и пока пользователь не отмонтирует файловую систему (или туда не будет смонтировано что-то иное) в каталоге /mnt/cdrom будет содержаться дерево каталогов устройства /dev/cdrom; те файлы, и подкаталоги, которые раньше находились в /mnt/cdrom, сохранятся, но будут недоступны до размонтирования устройства /dev/cdrom.

Размонтирование командой umount

[править | править код]

Для размонтирования достаточно указать точку монтирования или имя устройства.

umount /dev/cdrom

Монтирование USB-дисков

[править | править код]

Для распространённого случая, когда USB-диск имеет файловую систему FAT32, команда монтирования выглядит так:

mount -t vfat -o codepage=866,iocharset=utf8 /dev/sda1 /mnt

Параметр codepage необходим, чтобы имена созданных файлов корректно отображались в старых ОС (например, DOS). Если дистрибутив использует в качестве кодировки системной локали не UTF-8, то её необходимо указать в параметре iocharset так:

mount -t vfat -o codepage=866,iocharset=koi8-r /dev/sda1 /mnt

Реально используемую кодировку можно определить, выполнив команду locale.

Полезными опциями при монтировании Flash-дисков являются sync и flush. Первая приводит к постоянному сбросу на диск буфера записи, так что данные не теряются при отсоединении flash-диска без размонтирования. Побочный эффект такого монтирования — значительное уменьшение в скорости записи. Вторая опция (доступна только в новых ядрах Linux) ведёт к сбросу буфера на диск после записи последнего файла. Это также способствует сохранению данных в случае удаления диска без размонтирования, но не приводит к падению скорости записи.

Монтирование NTFS дисков/разделов

[править | править код]
mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp

Монтирование образов дисков

[править | править код]

Если имеется образ диска в виде iso-файла, то для его монтирования нужно указать параметр -o loop и, обычно, тип файловой системы -t iso9660 (необязательно) (file.iso — это имя файла образа, а /mnt/iso — точка монтирования):

mount -o loop -t iso9660 file.iso /mnt/iso

Монтирование образов в форматах, отличных от iso потребует преобразования в iso-образ или использования эмулятора. Для преобразования можно использовать утилиты командой строки (см. ниже) или утилиту kiso с графическим интерфейсом. Монтирование образов дисков в Linux

Образы bin/cue

[править | править код]

Для преобразования образа bin/cue в iso-образ можно воспользоваться конвертером bchunk:

bchunk image.bin image.cue image.iso

Монтирование сетевых дисков NFS

[править | править код]
mount 172.22.2.1:/mnt/iso/ /mnt/iso/

Монтирование сетевых дисков SMB

[править | править код]

Пример монтирования сетевых SMB-ресурсов :

mount -t smbfs -o username=user,password=pass //server/dir /mnt/localdir/
mount -t cifs -o username=user,password=pass //server/dir /mnt/localdir/

(Утилита smbfs заменилась в ядре linux на совместимую с ней cifs.) примечания:

  • «-t cifs» можно иногда не указывать, если имя монтируемого устройства вида «//server/dir»
mount //server/dir /mnt/localdir/ -o username=user,password=pass
  • если для авторизации необходимо указать доменное имя пользователя, то в параметрах команды mount оно указывается как «-o username=domain\\user», однако при указании монтируемого ресурса в /etc/fstab имя пользователя указывается как «domain/user»:
//server/dir /mnt/localdir/ cifs user=domain/user,password=pass 0 0

Монтирование FTP серверов

[править | править код]
curlftpfs -v -o iocharset=UTF-8 ftp://user:[email protected]/ /mnt/ftp

Монтирование каталога файловой системы с другого компьютера через ssh

[править | править код]

Модуль ядра Fuse (был принят в официальную ветку ядра начиная с 2.6) позволяет непривилегированным пользователям монтировать различные файловые системы.

Для работы необходимо добавить пользователя в группу fuse, сделать это можно вот так:

usermod -G -a fuse user

или

adduser user fuse

или вручную отредактировав файл /etc/group. Ещё необходимо, чтобы загружен был модуль ядра fuse:

modprobe fuse

После этого, можно смонтировать каталог другого компьютера с помощью sshfs:

sshfs user@udalenniy_server:/tmp ~/udalennaya_papka

Для отмонтирования нужно ввести команду:

fusermount -u ~/udalennaya_papka

Параметры монтирования

[править | править код]

В случае необходимости при выполнении команды mount можно указать дополнительные параметры монтирования.

-t Тип файловой системы

[править | править код]

Обычно при монтировании определяется автоматически или берётся из файла конфигурации (см. ниже). Но в отдельных случаях нужно указывать тип файловой системы явно. Например при монтировании DVD диска с файловой системой UDF.

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)

Пример 1 (для образца, взято монтирование USB диска):

mount -t vfat -o rw,noexec,iocharset=utf8,codepage=866 /dev/sda1 /mnt/usb

Пример 2 (для образца, взято монтирование ntfs раздела с установленной Windows XP):

mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp

Пример 3 (перемонтировать устройство с доступом на «чтение и запись» (rw))

mount -o remount,rw /dev/sda2

Команда mount с ключом --bind или с коротким ключом -B применяется в системах на ядре Linux (начиная с 2.4.0) для создания синонима каталога в дереве файловой системы. К примеру, команда:

mount --bind /mnt/cdrom/Files /var/ftp/cdrom

позволит обращаться к файлам из /mnt/cdrom/Files через путь /var/ftp/cdrom, где /var/ftp/cdrom — некий уже существующий (возможно, пустой) каталог (его настоящее содержимое будет недоступно до момента размонтирования). Можно также вместо отдельной опции --bind написать -o bind, что будет иметь аналогичное действие. Также это позволяет добавить правило в файл /etc/fstab для монтирования при старте системы:

/olddir /newdir none bind

Преимуществом данного способа создания ссылок на каталоги над символьными ссылками является возможность обходить ограничения доступа к файловой системе, возникающие перед процессами, запущенными в среде chroot или серверами, применяющими принцип chroot. Например, FTP-сервер proftpd делает недоступными символьные ссылки, указывающие на файлы и каталоги вне определённого каталога. Действие команды mount --bind напоминает DOS-овский subst.

Список смонтированных файловых систем

[править | править код]

При запуске команды mount без параметров выводится список смонтированных файловых систем:

 /dev/md/5 on / type reiserfs (rw,noatime)
 proc on /proc type proc (rw)
 sysfs on /sys type sysfs (rw,nosuid,nodev,noexec)
 udev on /dev type tmpfs (rw,nosuid)
 devpts on /dev/pts type devpts (rw,nosuid,noexec)
 /dev/md/4 on /files type xfs (rw,noatime)
 /dev/sda3 on /mnt/a type ext3 (rw,noatime)
 /dev/sdd2 on /mnt/docs type reiserfs (rw,noatime)
 shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev)
 usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85)
 binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
 nfsd on /proc/fs/nfs type nfsd (rw,noexec,nosuid,nodev)
 //ax2/i on /mnt/smb type smbfs (0)
 172.22.2.1:/files on /mnt/files type nfs (rw,addr=172.22.2.1)

В этом примере показывается много смонтированных файловых систем (ФС).

  • в первой строке сообщается, что в качестве корневой ФС выступает RAID-массив, с ФС типа reiserfs и параметрами монтирования: доступ на чтение и запись (rw) и указанием не обновлять атрибут времени последнего доступа (noatime)
  • sysfs, udev, devpts — это стандартные (для систем Linux) виртуальные ФС
  • /dev/sda3 — это раздел SATA диска
  • usbfs — это виртуальная файловая система для работы с USB устройствами
  • //ax2/i — это путь к сетевому диску SMB
  • 172.22.2.1:/files — путь к сетевому диску NFS, находящемся на сервере с IP-адресом 172.22.2.1

Файл конфигурации

[править | править код]

Чтобы облегчить процедуру монтирования, можно внести в файл конфигурации /etc/fstab соответствующие строки. Примерное содержимое для этого файла:

 # <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>
 
 # NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
 #/dev/BOOT              /boot           ext2            noauto,noatime  1 2
 /dev/sda5               /               reiserfs        noatime         0 1
 /dev/sda1               none            swap            sw              0 0
 /dev/cdrom              /mnt/cdrom      iso9660         noauto,ro       0 0
 #/dev/fd0               /mnt/floppy     auto            noauto          0 0
 
 # NOTE: The next line is critical for boot!
 proc                    /proc           proc            defaults        0 0
 
 # glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
 # POSIX shared memory (shm_open, shm_unlink).
 # (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
 #  use almost no memory if not populated with files)
 shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0

В дальнейшем можно будет указывать в команде mount только имя устройства или точку монтирования — все дополнительные параметры будут браться из файла конфигурации. Например, применительно к данной конфигурации, команда mount /mnt/cdrom будет эквивалентна выполнению команды

mount /dev/cdrom /mnt/cdrom -t iso9660 -o noauto,ro

Другое назначения файла конфигурации — автоматическое монтирование файловых систем при загрузке системы. Если не требуется монтировать определённые файловые системы, то для них в файле конфигурации нужно указать параметр noauto.

Примечания

[править | править код]
  1. Mikael Olsson. Loops // PHP Quick Scripting Reference. — Berkeley, CA: Apress, 2013. — С. 25–28. — ISBN 978-1-4302-6283-1, 978-1-4302-6284-8.