Mount

Материал из Wiki семьи Белых
Перейти к: навигация, поиск

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

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

Монтирование Linux-разделов

В большинстве случаев монтирования EXT2, EXT3, EXT4, ReiserFS, BTRFS, JFS, XFS и других файловых систем Linux достаточно просто указать устройство и точку монтировани

Code: Монтирование жесткого диска
mount /dev/sda1 /media/hd

Если нужно принципиально указать ФС, то

Code: Монтирование жесткого диска
mount -t ext3 /dev/sda1 /media/hd

Если нужно смонтировать только на чтение

Code: Монтирование жесткого диска
mount -o ro /dev/sda9 /media/hd

На внешних носителях лучше еще и отключить возможность исполнения файлов (опция rw желательна, но не обязательна)

Code: Монтирование жесткого диска
mount -t reiserfs -o rw,noexec /dev/sda1 /media/hd

Монтирование BTRFS

btrfs позволяет использовать "подразделы" внутри раздела.

Code: Монтирование btrfs
mount -t btrfs -o subvol=Music /dev/sda2 /mnt/Drive

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

Code: Монтируем оптический диск
mount -t iso9660 -o ro,umask=0,users,exec,iocharset=utf8 /dev/sdrom /media/cdrom
Code: Монтируем оптический диск
mount -t udf -o ro,umask=0,users,exec,iocharset=utf8 /dev/sdrom /media/cdrom

В данном случае параметр ro обязателен. Без него система заругается, что файловая система не доступна для записи - не страшно, но не приятно.

Монтирование FAT и NTFS разделов

Монтируем NTFS-раздел

Code: Монтирование NTFS-раздела
mount -t ntfs-3g -o users,umask=000,fmask=111,dmask=000,noexec,codepage=866,locale=ru_RU.UTF-8,rw,sync /dev/sdc1 /media/hd

Должен быть установлен пакет ntfs-3g. Он работает через fuse - медленне и больше потребляет системных ресурсов, зато надежнее, чем встроенный в ядро модуль:

Code: Монтирование NTFS-раздела
mount -t ntfs -o users,umask=000,,noexec,nls=utf8,ro /dev/sdc1 /media/hd

Ядро должно быть собрано с поддержкой ntfs. Запись черевата крахом ФС.

Файловая система FAT практически осталась только на флэшках и картах памяти.

Code: Монтирование FAT-раздела
mount -t vfat -o users,umask=000,noexec,codepage=866,iocharset=utf8,rw /dev/sde1 /media/flash

По умолчанию все операции изменения ФС происходят после команды отмонтирования устройства. Это черевато тем, что при неправильном извлечении устройства, измененные данные могут потеряться. Что бы записывать файлы синхронно, делаем:

Code: Монтирование FAT-раздела
mount -t vfat -o users,umask=000,noexec,codepage=866,iocharset=utf8,rw,sync /dev/sde1 /media/flash

При этом уменьшается скорость записи, и уменьшает срок службы флэш-накопителя.

Code: Монтирование FAT-раздела
mount -t vfat -o users,umask=000,noexec,codepage=866,iocharset=utf8,rw,flush /dev/sde1 /media/flash

В этом случае изменения записываются после копирования последнего файла в буфер.

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

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

Монтирование образов жестких дисков ничем не отличается от монтирования разделов с физических устройств.
Только имя устройства заменяется на имя файла.

Code: Монтируем файл
mount /home/user/disk.img <точка монтирования>

Монтирование образов компакт-дисков (*.iso, *.nrg *.mdf)

  • Производим монтирования iso файла:
Code: Монтируем образ ISO
mount -o loop -t iso9660 file.iso <Точка_монтирования>
  • Производим монтирования mdf файла:
Code: Монтируем образ MDF
mount -o loop file.mdf <Точка_монтирования>
  • Производим монтирования nrg файла:
Code: Монтируем образ NRG
mount -o loop,offset=307200 file.nrg <Точка_монтирования>

Опции монтирования:

  • -t iso9660 -- указываем файловую систему монтируемого устройства. iso9660 - фс для cd.
  • -o loop,offset=307200 -- первая сообщает команде mount, что устройство - это файл на жестком диске, вторая даёт указание пропустить 307200 блоков устройства и не считывать служебную информацию, записанную NERO.

Для этих целей также есть:

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

Монтирование NFS-шары

Code: NFS
mount shadowman.example.com:/misc/export <точка монтирования>

Монтирование SMB-шары

Code: SMB
mount -t cifs -o username=user,password=pass,file_mode=0777,dir_mode=0777 //server/dir /mnt/localdir/ <точка монтирования>

или

Code: SMB
mount -t cifs -o username=domain\\user,password=pass,gid=<users>,uid=<user> //server/dir /mnt/localdir/ <точка монтирования>

Для этого должен стоять пакет cifs-utils

Монтирование FTP-шары

Code: FTP
 curlftpfs -v -o iocharset=UTF-8 ftp://user:password@ftp.domain.ru/ <точка монтирования>

Для этого должен стоять пакет curlftpfs

Монтирование WebDAV-шары

Code: WebDAV
mount -t davfs2 -o username=<your_login>,uid=<user>,gid=<users> https://server.com:443/ <точка монтирования>

Пакет davfs2 должен быть установлен. Пароль нужно вводить при каждом подключении.

Монтирование каталога по SSH

Code: SSHFS
sshfs user@remotehost:/path/to/directory /local/path -o reconnect
  • Для того, что бы пользователь смог смонтировать удаленную файловую систему. он должен быть в группе fuse, а так же модуль ядра fuse был загружен.
  • Можно использовать параметр idmap=<local_user>, если имена локального и удаленного пользователя не совпадают.

Монтирования папки

В Linux для создания синонима каталога в дереве файловой системы применяется команда mount с параметром --bind

Code: --bind
mount --bind /mnt/Files /var/ftp/directory

или

Code: --bind
mount -o bind /mnt/Files /var/ftp/directory

При этом можно даже запретить изменение файлов, даже целевая ФС это разрешала, добавив параметр ro.

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

Общие параметры монтирования

(указываются через запятую, без пробелов) :

Общие

Могут применяться к любой файловой системе (но не все файловые системы на самом деле поддерживают их) - например, опция sync сегодня имеет силу только для ext2, ext3, fat, vfat и ufs

Опции
Описание
sync / async Все операции ввода / вывода файловой системы должны выполняться синхронно/асинхронно.
atime Производить запись времени последнего доступа к файлу. Значение по умолчанию.
noatime Не обновлять время доступа к файлу (например, для быстрого доступа к новостным потокам, для ускорения серверов новостей).
relatime Обновлять время доступа только при изменении файла или изменении времени доступа. (В отличие от noatime, необходимая опция для нормальной работы, например, почтовых клиентов или других приложений, которым необходимо точное время последнего изменения файлов)
norelatime Не включать функцию relatime (например, для систем, в которых эта функция включена по умолчанию, для более подробной информации см. параметры монтирования в /proc/mounts).
strictatime Обновление времени доступа к структуре данных при изменении файлов. Отключает noatime и relatime.
nostrictatime Обновлять время доступа к структуре данных, в соответствии с настройками ядра по умолчанию.
auto / noauto При auto устройство будет устанавливаться автоматически при загрузке, или по команде mount. auto является вариантом по умолчанию. Если вы не хотите, чтобы устройство устанавливалось автоматически, используйте параметр noauto.
context=fscontext=
defcontext=rootcontext=
Эти опции полезны при монтировании файловой систем, которые не поддерживают дополнительные атрибуты, такие как дискеты или жесткие диски отформатирован в VFAT, или файловые системы, которые обычно не работает под SELinux (например ext3 диск отформатированный на не-SELinux рабочей станции). Вы можете также использовать *context= для файловых систем которым вы не доверяете, например на дискетах или флешках. Более подробно о контексте можно узнать прочитав о SELinux.
defaults Использовать настройки по умолчанию. Эквивалентно: rw,suid,dev,exec,auto,nouser,async.
dev / nodev Интерпретировать/не интерпретировать блок специальных устройств на файловой системе.
diratime / nodiratime Обновлять/не обновлять время доступа к каталогу структуры данных. По умолчанию установлено diratime
dirsync Изменения каталогов в файловой системе выполняются синхронно. Это относится к следующим системным командам: creat, link, unlink, symlink, mkdir, rmdir, mknod и rename.
exec / noexec exec позволяет выполнять двоичные файлы, которые находятся на этом раздел, в то время как noexec не позволяет этого делать. noexec может быть полезно для раздела, который не содержит бинарные файлы например /var, или содержит бинарные файлы которые вы не хотите выполнять на вашей системе, или которые не могут быть выполнены в вашей системе. Последнее может быть в случае Windows раздела.
group Разрешает обычным (т.е. не root) пользователям монтировать файловую систему, если одна из его групп совпадает с группой устройства. Эта опция подразумевает наличие опций nosuid и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как group,dev,suid).
encryption Определяет используемый алгоритм шифрования. Используется в сочетании с опцией loop.
keybits Определяет размер ключа для используемого алгоритма шифрования. Используется в сочетании с loop и encryption.
nofail В случае отсутствия устройства не сообщать об ошибке.
iversion Номер версии структуры данных увеличивается каждый раз, когда структура данных изменяется.
noiversion Номер версии структуры данных не увеличивается при изменении структуры данных.
mand Разрешает принудительное блокирование файловой системы.
nomand Не разрешает принудительное блокирование файловой системы.
_netdev Используется для предотвращения попыток смонтировать файловые системы, подключённые к сети.
suid / nosuid Разрешает использование битовых идентификаторов пользователей или групп / Запрещает использование битовых идентификаторов пользователей или групп. (Это достаточно небезопасно, особенно, если установлен suidperl).
owner Разрешает обычному (т.е. не root) пользователю монтировать файловую систему, если он является владельцем устройства. Эта опция подразумевает параметры nosuid и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как owner, suid и dev).
ro Монтировать только для чтения.
rw Монтирование файловой системы для чтения и записи.
user / nouser user - разрешает монтирование от лица обычного пользователя, по умолчанию это имеет право сделать только root. nouser — соответсвенно запрещает (является параметром по умолчанию).
users Разрешает монтирование от лица любого пользователя. Эта опция подразумевает параметры nosuid, noexec и nodev (за исключением случаев, когда пересекается с последующими опциями, такими как users, exec, owner, suid и dev).

NTFS

nls=utf8 Включение поддержки utf-8. Поддержка «нестандартных» символов (кирилицы) в файловой системе.
codepage=866 Включаем поддержку кириллицы в названия файлов папок для MS-DOS/fat32 разделов. Подробнее.

FAT 32

utf8 Включение поддержки utf-8. Поддержка «нестандартных» символов (кирилицы) в файловой системе.
codepage=866 Включаем поддержку кириллицы в названия файлов папок для MS-DOS/fat32 разделов. Подробнее.

btrfs

Все опции ради совместимости и отсутствия проблем применяются при вынесеном на отдельный раздел /boot и ядром 3.0+

autodefrag Дефрагментация на «лету», не применять для SSD
noacl Отключить контроль доступа к файлам (права)
compression
compress=zlib Включение прозрачного сжатия с алгоритмом gzip (медленнее lzo, но лучше сжимает)
compress=lzo Включает алгоритм прозрачного сжатия lzo (быстрее gzip, немного хуже сжимает), граб не умеет грузится с lzo. Btrfs LZO Compression Performance.
compress=no Без компрессии с версии ядра 3.6
compress-force Применяется вместо compress, опция force позволяет выполнять компрессию файлов, которые обычно имеют низкий коэффициент сжатия (таких, как сжатые аудио или видео форматы).
cache
inode_cache (>3,0) Включить кэширование inode. Эта опция может замедлить работу системы при первом запуске.
space_cache Кэширование данных о свободных блоках, чтобы не искать их перед записью
clear_cache (>2.6.37) Очищает весь кеш свободного места, после монтирования. Это безопасная опция, но вызывает пересоздание кеша.
nospace_cache (>3.2) выключает space_cache
subvol=name_subvolume «Подразделы»
skip_balance (>3.3)Пропускает автоматическую балансировку после монтирования или неправильного выключения.
nodatasum Не высчитывать хэш-сумму, для новых файлов. Некоторый мусор и ошибки могут быть не замечены, но позволяет ускорить работу с FS. На большинстве современных CPU не даст ощутимого прироста к производительности.
SSD
ssd Включает некоторые оптимизации для SSD в Btrfs. Минимизируется количество записей, отключается последовательная запись файлов. Эта опция включается автоматически, если вращение диска = 0. Не влечет за собой включения параметров TRIM/discard.
ssd_spread Монтирование с -o ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области жёсткого диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие SSD. (Переводит систему в режим «лого-структурированной FS»)
recovery and debug
recovery (>3.2)Включает автовосстановление после монтирования, на данный момент сканирует старые списки корней и деревьев, которые можно прочесть. Информация о корнях деревьев сохраняется с версии ядра > 3.2, старые ядра не смогут использовать режим восстановления. Практика показала что оно работает, но нужно иметь снимки файловой системы и оно просто вытаскивает списки корней и деревьев из снимков если таковые имеются
degraded Используйте это, если у вас есть несколько устройств в объеме Btrfs и одно из них не монтируется. Это позволит вам по-прежнему монтировать файловую систему, даже если неисправное устройство выдаёт ошибки.
enospc_debug Используйте, если столкнулись с ошибкой «Не хватает места»

Упрощения ввода команды монтирования

Упростить монтирование можно тремя способами:

  • Прописать точки монтирование в Fstab
  • Прописать алиасы
  • Создать скрипты

Алиасы

Если опции монтирования стали для нас привычными и их значение понятным, то вносим в пресловутый ~/.bashrc по одной строке для каждого типа образов: Код:

Файл: ~/.bashrc
alias mount.iso "mount -t iso9660 -o loop"
alias mount.mdf "mount -o loop"
alias mount.nrg "mount -o loop,offset=307200"

Теперь, когда мы будем вводить в командной строке Код:

Code: Монтируем образ
mount.nrg nrg_file.nrg /media/virtcd

то командный интерпретатор, прежде чем выполнить команду, произведет подстановку алиаса и в итоге выполнит Код:

Code: Монтирует образ
mount -o loop,offset=307200 nrg_file.nrg /mnt/virtcd