Как монтировать и отключать устройства хранения данных из терминала Linux
Файловые системы в Linux и Unix-подобных операционных системах, таких как macOS, можно монтировать, размонтировать и повторно монтировать с помощью терминала. Это мощный и универсальный инструмент — здесь есть все, что вам нужно знать.
Файловая система Linux
Файловые системы в Linux, macOS и других Unix-подобных операционных системах не используют отдельные идентификаторы томов для устройств хранения, как, скажем, в Windows. Windows назначает каждому тому букву диска, такую как C: или D:, а файловая система для каждого тома представляет собой дерево каталогов, расположенных под этой буквой диска.
В Linux файловая система представляет собой единое дерево каталогов. Смонтированное устройство хранения имеет свою файловую систему, привитую к этому дереву, так что оно кажется неотъемлемой частью единой файловой системы. Вновь смонтированная файловая система будет доступна через каталог, в который она смонтирована. Этот каталог называется точкой монтирования для этой файловой системы.
Многие файловые системы автоматически монтируются во время загрузки или «на лету» в качестве томов хранения, подключаемых к компьютеру во время выполнения. Осторожные системные администраторы могут отключить функции автоматического монтирования во время выполнения, чтобы они могли контролировать подключения к системе.
Это означает, что устройства хранения данных, подключенные во время выполнения, могут не монтироваться автоматически, и их потребуется монтировать вручную. Монтирование файловой системы вручную позволяет вам принимать решения об этой файловой системе, например, где будет точка монтирования и будет ли файловая система доступна только для чтения или для чтения и записи.
Будь то по необходимости или по собственному выбору, команды mount
, umount
и remount
дают вам возможность взять под контроль этот важный аспект вашей системы Linux.
Опросите свою файловую систему с помощью mount
Mount имеет очень много параметров, но для перечисления всех смонтированных файловых систем на вашем компьютере вообще не требуется никаких параметров. Просто введите mount
и нажмите Enter:
mount
отобразит список всех подключенных файловых систем в окне терминала.
Может быть трудно разобраться в этой дампе данных, чтобы найти то, что вы ищете.
Вы можете уточнить вывод, попросив mount
перечислить только интересующие вас файловые системы. Параметр -t
(тип) указывает mount
, для какого типа файловой системы следует создавать отчет.
mount -t tmpfs
mount -t ext4
Например, мы попросили mount
указать только файловые системы tmpfs
. Мы получаем гораздо более управляемый результат.
Файловая система tmpfs
выглядит так, как будто это обычная смонтированная файловая система, но на самом деле она хранится в энергозависимой памяти (tmp означает временное), а не в постоянном хранилище. устройство.
Вы захотите заменить параметр tmpfs
на тип файла, который вас интересует.
Мы также выпустили команду для получения списка файловых систем ext4
. На этом тестовом компьютере есть одна файловая система ext4
, она находится на устройстве sda
— первом смонтированном устройстве хранения, обычно на основном жестком диске — и смонтированном на /
, который является корнем дерева файловой системы.
Остальные индикаторы означают:
- rw: файловая система доступна для чтения и записи.
- relatime: ядро использует оптимизированную схему для записи доступа к файлам и изменения метаданных.
- errors=remount -o: если обнаружена достаточно серьезная ошибка, файловая система будет перемонтирована в режиме только для чтения для проведения диагностики.
Опросите свою файловую систему с помощью df
Команду df
также можно использовать для отображения того, какие файловые системы смонтированы и где находятся их точки монтирования.
Использование df
без параметров приводит к той же проблеме информационной перегрузки, что и mount
. Например, в Ubuntu Linux существует псевдофайловая система squashfs
, созданная для каждого приложения, которое было установлено с помощью команды snap
. Кто хочет увидеть все это?
Чтобы заставить df
игнорировать их или любой другой тип файловой системы, используйте параметр -x
(исключить):
df -x squashfs
Вы можете легко увидеть имена файловых систем, их емкости, используемое и свободное пространство, а также их точки монтирования.
Перемонтирование всех файловых систем в fstab
Все файловые системы, смонтированные во время загрузки, имеют записи в файле с именем fstab
, который является таблицей файловой системы, расположенной в /etc
.
Вы можете использовать mount
, чтобы принудительно «обновить» и перемонтировать все файловые системы, перечисленные в fstab
. В нормальных условиях эксплуатации этого не требуется. Это действительно полезно, если у вас есть проблемы с несколькими файловыми системами.
Вам нужно будет использовать sudo
, поэтому вам будет предложено ввести пароль.
sudo mount -a
Правда, на корректно работающем компьютере это немного разочаровывает.
Однако на компьютере с проблемами файловой системы перемонтирование может устранить проблемы. Если этого не произойдет, то, по крайней мере, вы получите диагностические сообщения на экране и в системных журналах, которые помогут вам найти причину проблемы.
Монтирование ISO-образа
Образ ISO легко смонтировать, чтобы вы могли получить доступ к его содержимому как к части файловой системы.
Это будет работать с любым образом ISO. В этом примере мы используем ISO-образ Tiny Core Linux, потому что он удобно небольшой и его можно быстро загрузить. (Крошечный дистрибутив Linux с графическим интерфейсом, размером 18 МБ! Вероятно, у вас есть файлы .mp3 большего размера.)
В том же каталоге, что и образ ISO, введите эту команду. Замените имя файла ISO, который вы монтируете.
sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt
Поскольку нам нужно использовать sudo
, вам нужно будет ввести свой пароль.
Параметр -t
(тип) сообщает mount
, какой тип файловой системы мы монтируем. Это файл ISO, поэтому мы предоставляем спецификатор типа iso9660
.
Флаг -o
(опции) используется для передачи дополнительных параметров в mount
. Наш параметр — loop
.
Мы используем loop
, чтобы заставить mount
использовать файл устройства цикла для подключения к нашему образу ISO. Файл циклического устройства позволяет монтировать файл (например, образ ISO) и обрабатывать его так, как если бы он был устройством хранения.
Файлы устройств — это специальные файлы, используемые в качестве интерфейса, поэтому подключенные устройства выглядят так, как если бы они были обычным файлом файловой системы. Это часть философии дизайна файлов в Linux.
Существует множество различных типов файлов устройств. Мы видели один ранее, когда заметили, что единственная файловая система ext4
на этой тестовой машине была смонтирована в /
и называлась sda
.
Чтобы быть более точным, эта файловая система ext4
находится на устройстве хранения, подключенном к файловой системе через файл устройства /dev/sda
и файловая система на этом устройстве хранения смонтирована в /
.
Конечно, мы должны указать имя ISO-образа и сообщить mount
, куда мы хотим смонтировать файловую систему. Мы выбрали /mnt
.
Образ ISO смонтирован. В окне терминала появляется напоминание о том, что ISO-образы всегда монтируются в режиме только для чтения.
Изучение ISO-образа
Теперь, когда он смонтирован, мы можем перемещаться по каталогам в образе ISO так же, как и по любой другой части файловой системы. Давайте перечислим файлы в образе ISO. Помните, он монтируется в /mnt
.
ls /mnt
ls /mnt/cde/
Размонтирование ISO-образа
Чтобы размонтировать смонтированную файловую систему, используйте команду umount
. Обратите внимание, что между буквами «u» и «m» нет буквы «n» — это команда umount
, а не «размонтировать».
Вы должны указать umount
, какую файловую систему вы размонтируете. Сделайте это, указав точку монтирования файловой системы.
sudo umount /mnt
Отсутствие новостей - хорошая новость. Если нечего сообщить, то все прошло хорошо.
Создание точки монтирования
Вы можете создавать и использовать свои собственные точки монтирования. Мы собираемся создать его с именем isomnt
и смонтировать на него наш ISO-образ. Точка монтирования — это просто каталог. Таким образом, мы можем использовать mkdir
для создания новой точки монтирования.
sudo mkdir /media/dave/isomnt
Теперь мы можем использовать тот же формат команды, что и раньше, для монтирования нашего ISO-образа. На этот раз мы не будем монтировать его в /mnt
, мы будем монтировать его в /media/dave/isomnt/
:
sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/
Теперь мы можем получить доступ к смонтированной файловой системе из нашей новой точки монтирования.
ls /media/dave/isomnt/cde/optional
Но эти пути становятся очень длинными. Это быстро надоест. Давайте что-нибудь с этим сделаем.
Привязка точки монтирования
Вы можете привязать точку монтирования к другому каталогу. Доступ к смонтированной файловой системе можно получить либо через исходную точку монтирования, либо через связанный с ней каталог.
Вот рабочий пример. Мы создадим каталог в нашем домашнем каталоге с именем iso
. Затем мы привяжем точку монтирования ISO-образа /media/dave/isomnt
к новому каталогу iso
в нашем домашнем каталоге.
Мы сможем получить доступ к ISO-образу через исходную точку монтирования /media/dave/isomnt
и через новый каталог iso
. Для параметра -B
(bind) требуется имя точки монтирования и имя каталога, к которому она будет привязана.
mkdir iso
sudo mount -B /media/dave/isomnt/ iso
ls iso
ls /media/dave/isomnt
cd iso
ls
cd cde
Использование umount с привязками
Файловая система, точка монтирования которой привязана к другому каталогу, требует размонтирования из точки монтирования и точки привязки.
Даже если мы размонтируем файловую систему из исходной точки монтирования, вы все равно сможете получить доступ к файловой системе из связанного с ней каталога. Файловая система также должна быть размонтирована из этого каталога.
sudo umount /media/dave/isomnt
ls iso
sudo umount iso
ls iso
Установка гибкого диска
Флоппи-дисковод (с дискетой в нем) — это запоминающее устройство. Это означает, что файл устройства sd (для устройства хранения) будет использоваться для подключения к физическому устройству. Мы должны установить, какой файл является следующим бесплатным файлом устройства SD. Мы можем сделать это, направив вывод df
через grep
и найдя в них записи с «sd».
df | grep /dev/sd
На этом компьютере используется один файл устройства SD. Это /dev/sda
. Следующим выпущенным файлом устройства SD будет /dev/sdb
. Это означает, что когда мы подключаем дисковод к компьютеру, Linux будет использовать /dev/sdb
для подключения к дисководу.
Мы укажем mount
смонтировать файловую систему на гибком диске в дисководе, подключенном к /dev/sdb
, к /mnt
Точка монтирования.
Вставьте дискету в дисковод и подключите дисковод к USB-порту компьютера. Введите следующую команду:
sudo mount /dev/sdb /mnt
Метки файловой системы
Мы можем использовать параметр -l
(метка) с mount
, чтобы узнать, какая метка прикреплена к файловой системе. Ярлыки — это не более чем произвольные имена. У них нет функционального назначения.
Мы используем параметр -t
(тип), чтобы попросить mount
сообщать только о файловых системах vfat
.
mount -l -t vfat
Вы найдете ярлык в квадратных скобках в конце списка. Этикетка для этого флоппи-дисковода — NORTUN.
Мы можем получить доступ к дисководу через точку монтирования /mnt
.
cd /mnt
ls
ls -l AMATCH.C
Дискета содержит файлы исходного кода на языке C. Отметка даты одного файла показывает, что последний раз он был изменен в октябре 1992 года. Вероятно, он старше многих наших читателей. (Излишне говорить, что значение NORTUN как ярлыка теряется в глубине веков.)
Если мы повторим нашу команду df
, переданную через команду grep
, чтобы получить список файлов SD-устройства, мы увидим, что теперь их два.
df | grep /dev/sd
Наш флоппи-дисковод отображается как смонтированный на /dev/sdb
, как мы и ожидали. Файловая система на гибком диске в дисководе смонтирована в /mnt
.
Чтобы размонтировать дискету, мы используем umount
и передаем файл устройства в качестве параметра.
sudo umount /dev/sdb
Ленивый вариант размонтирования
Что произойдет, если вы (или другой пользователь) используете файловую систему, когда пытаетесь размонтировать ее? Размонтировать не получится.
sudo umount /dev/sdb
Это не удалось, потому что текущий рабочий каталог пользователя находится в файловой системе, которую он пытается размонтировать. Linux достаточно умен, чтобы не позволить вам отпилить ветку, на которой вы сидите.
Чтобы обойти это, используйте параметр -l
(ленивый). Это заставляет umount
ждать, пока файловую систему можно будет безопасно размонтировать.
sudo umount -l /dev/sdb
ls
cd ~
ls /mnt
Несмотря на то, что введена команда umount
, файловая система по-прежнему смонтирована, и пользователь может просматривать файлы как обычно.
Как только пользователь меняет каталог на свой домашний, файловая система дискеты освобождается и размонтируется. Попытка перечислить файлы в /mnt
не дает результатов.
Установка общего ресурса Samba
Samba — это набор программных служб, которые обеспечивают взаимозаменяемый доступ к сетевым ресурсам между Linux и Unix-подобными операционными системами и операционными системами Windows.
Настройка Samba выходит за рамки этой статьи. Но если у вас есть авторизованный доступ к общему ресурсу Samba, который был вам предоставлен, вот как вы можете смонтировать его в Linux.
Raspberry Pi, подключенный к той же сети, что и тестовая машина, имеет общий ресурс Samba. Это каталог под названием Backup, которому Samba присвоено имя «общий ресурс». Давайте подключимся к нему по SSH и посмотрим на содержимое общего каталога. Общий каталог находится на USB-накопителе, установленном на Pi.
Имя пользователя — pi
, а сетевое имя Raspberry Pi — marineville.local
.
ssh pi@marineville.local
ls /media/pi/USB64/Backup
exit
Пользователь вводит команду SSH
и получает запрос на ввод пароля Raspberry Pi.
Они предоставляют свой пароль и проходят аутентификацию. Приглашение в окне терминала изменится на pi@marineville
, поскольку оно подключено к Raspberry Pi.
Они перечисляют содержимое общего каталога в /media/pi/USB64/Backup
. Содержимое состоит из двух каталогов, один из которых называется dave
, а другой называется pat
. Итак, теперь мы знаем, чего ожидать при монтировании общего ресурса Samba.
Они набирают exit
, чтобы отключиться от Raspberry Pi, и приглашение снова меняется на dave@howtogeek
.
Чтобы использовать Samba, вы должны установить пакет cifs-utils
.
Используйте apt-get
для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux вместо этого используйте инструмент управления пакетами вашего дистрибутива Linux.
sudo apt-get install cifs-utils
После завершения установки смонтируйте общий ресурс с помощью следующей команды, изменив IP-адрес, имя общего ресурса и точку подключения (которая должна уже существовать) в соответствии с вашими обстоятельствами.
sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS
Давайте разберем части этой команды.
- -t cifs: тип файловой системы — cifs.
- -o мандаты=/etc/samba/creds,uid=1000,gid=1000: параметры параметров представляют собой путь к защищенному файлу с именем
creds
. и содержит имя пользователя и пароль для пользователя Raspberry Pi; идентификатор пользователя (UID) и идентификатор группы (GID), которые используются для установки владельца и группы корня файловой системы. - //192.168.4.13/share: сетевое расположение устройства с общим ресурсом Samba на нем и имя общего каталога Samba. Корнем общего ресурса является каталог с именем
Backup
, но имя его общего ресурса Samba установлено какshare
. - /media/dave/NAS: имя точки подключения. Вы должны заранее создать точку подключения.
Получая доступ к нашей точке монтирования в /media/dave/NAS
, мы получаем доступ к общему каталогу на Raspberry Pi по сети. Мы видим две папки на Raspberry Pi с именами dave
и pat
.
cd /media/dave/NAS
Создание и монтирование файловой системы
Вы можете использовать команду dd
для создания файла изображения, а затем использовать mkfs
для создания внутри него файловой системы. Затем эту файловую систему можно смонтировать. Это хороший способ попрактиковаться и поэкспериментировать с mount
.
Мы используем параметр if
(входной файл), чтобы указать dd
использовать поток нулевых значений из /dev/zero
в качестве входного файла.
of
(выходной файл) — это новый файл с именем geek_fs
.
Мы используем параметр bs
(размер блока), чтобы запросить размер блока 1 МБ.
Мы используем параметр count
, чтобы указать dd
включить 20 блоков в выходной файл.
dd if=/dev/zero of./geek_fs bs=1M count=20
Это создает наш файл изображения для нас. Он не содержит ничего, кроме нулевых значений.
Мы можем создать рабочую файловую систему внутри файла geek_fs
с помощью команды mkfs
. Параметр -t
(тип) позволяет нам выбрать тип файловой системы. Мы создаем систему ext4
.
mkfs -t ext4 ./geek_fs
Это все, что нужно для работы файловой системы.
Давайте смонтируем его на /media/dave/geek
и затем с помощью chown
назначим владельца и группы, чтобы разрешить доступ к нему.
sudo mount ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek
Это работает? Давайте перейдем в новую файловую систему и скопируем файл, чтобы увидеть.
cd /media/dave/geek
cp /etc/fstab .
ls -l
Нам удалось изменить каталог на новую файловую систему, и мы успешно сделали копию файла /etc/fstab
. Работает!
Если мы используем mount
для вывода списка смонтированных файловых систем, но ограничиваем его вывод файловыми системами ext4
с помощью параметра -t
(тип), мы Вы увидите, что теперь есть две смонтированные файловые системы ext4
.
mount -t ext4
Перемонтирование файловой системы
Для перемонтирования файловой системы используется параметр -o remount
. Обычно это делается для изменения файловой системы из состояния только для чтения (тестирование) в состояние чтение-запись (производство).
Давайте снова смонтируем наш дисковод. На этот раз мы будем использовать флаг -r
(только для чтения). Затем мы пропустим mount
через grep
и посмотрим на детали файловой системы дискеты.
sudo mount -r /dev/sdb /mnt
mount | grep /mnt
Как видите, выделенный ro
указывает, что файловая система смонтирована только для чтения.
Используя параметр -o remount
с флагом rw
(чтение-запись), мы можем размонтировать и перемонтировать файловую систему с новыми настройками, и все это одной командой.
sudo mount -o remount,rw /mnt
Повторение конвейера mount
через grep
показывает нам, что ro
был заменен на rw
(выделено). Теперь файловая система находится в режиме чтения-записи.
mount | grep /mnt
(Не) перемещение файловой системы
Раньше вы могли размонтировать файловую систему и перемонтировать ее в другой точке монтирования с помощью одной команды.
Параметр -M
(переместить) в mount
существует специально для того, чтобы вы могли это сделать. Но он больше не работает в дистрибутивах Linux, перешедших на systemd
. И это большинство громких имен.
Если мы попытаемся переместить файловую систему из /mnt
в ./geek
, произойдет сбой и появится сообщение об ошибке, показанное ниже. Попытка перечислить файлы в файловой системе через ./geek
не дает результатов.
sudo mount -M /mnt ./geek
ls ./geek
Обходной путь заключается в использовании параметра -B
(bind), который мы использовали ранее для привязки исходной точки монтирования к новой точке монтирования.
sudo mount -B /mnt ./geek
ls ./geek
Помимо того, что исходная точка монтирования не освобождается, это будет иметь тот же практический результат.
Заключительные наблюдения
С помощью параметра --make-private
было возможно принудительно выполнить перемещение в systemd
версиях Linux. Эта техника не представлена здесь по двум причинам.
- Возможно непредсказуемое поведение.
- Это не было постоянным, и его нужно было повторять при каждой перезагрузке.
Devuan Linux использует инициализацию SysV
, а не systemd
. Компьютер был загружен с последней версией Devuan и протестирован. Параметр -M
(переместить) работал в этой системе должным образом.
Помимо проблем systemd
с параметром -M
(переместить), вы должны найти использование mount
и umount
прямолинейно. Это отличные команды, которые нужно иметь в рукаве, когда вы сталкиваетесь с поврежденной системой, и вам нужно начать собирать файловую систему вручную.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts