Поиск по сайту:

Как монтировать и отключать устройства хранения данных из терминала 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. Эта техника не представлена здесь по двум причинам.

  1. Возможно непредсказуемое поведение.
  2. Это не было постоянным, и его нужно было повторять при каждой перезагрузке.

Devuan Linux использует инициализацию SysV, а не systemd. Компьютер был загружен с последней версией Devuan и протестирован. Параметр -M (переместить) работал в этой системе должным образом.

Помимо проблем systemd с параметром -M (переместить), вы должны найти использование mount и umount прямолинейно. Это отличные команды, которые нужно иметь в рукаве, когда вы сталкиваетесь с поврежденной системой, и вам нужно начать собирать файловую систему вручную.

RELATED: Best Linux Laptops for Developers and Enthusiasts