Перейти к содержимому

Как примонтировать диск в linux

  • автор:

Introduction To Filesystems

Data on a computer, as you may know, is stored in binary as a series of 1s and 0s. The way these are stored on a device and their structure is called the "filesystem". In Linux devices are referenced in /dev. Data is not actually stored on a device so you cannot access this data by going into /dev, this is because it is stored inside the filesystem on the device so you need to access these filesystems somehow. Accessing such filesystems is called "mounting" them, and in Linux (like any UNIX system) you can mount filesystems into any directory, that is, make the files stored in that filesystem accessible when you go into a certain directory. These directories are called the "mount points" of a filesystem. In other systems this is done differently. For example in Windows there is no distinction made between a device and the filesystem on it, and the user is restricted to mounting a device’s filesystem in a top-level volume which is automatically assigned a letter such as C:, D:, etc. and the files inside these filesystems are accessed inside each volume’s root such as "C:\", "D:\", "E:\", etc. (remember, Windows uses back slashes instead of the more common forward slashes you find in Linux)

Linux only has one top-level volume which is kept in the system’s RAM. It too has a root, but since there is only one top-level volume there is no point giving it a label (as there is nothing to distinguish it from) which means that all files in a Linux system are accessed via simply "/". This top-level volume is kept in RAM, but the files themselves are stored on various drives (some real and some fake) (also, files may be kept in the RAM before they are written to disc for reasons which I will explain further down). A Linux system needs only one "physical" (real) filesystem, which is that of /. However, it is very useful to keep some directories inside / separate. For example, users’ files are often kept on a separate hard drive partition and mounted on /home. Also, the "fake" filesystems can make it much easier to administer and run a Linux system. For example the folder "/proc" does not actually contain any data. In fact, it is "fake" since it shows various files containing useful pieces of information to do with your system, however none of these files actually exist until they are opened, in which case the system does a quick check to find the required information, displays it and pretends that it was there all along.

These system filesystems are all automatically set up, but it is creating custom filesystems and using removable media which allow for some interesting uses of mounting.

What Can Be Mounted

The most common thing to be mounted is a hard drive partition. Hard drives are kept in /dev and have different names depending on what type of drive they are. IDE/ATA drives are labelled as /dev/hda, /dev/hdb, /dev/hdc and /dev/hdd (since a PC’s IDE interfaces can only handle 4 devices at a time). Note that these can be devices such as IDE/ATA CDROMS, Compact Flash to IDE converters, and some special floppy drives (although they tend to appear mainly in laptops). For SCSI devices the labels are /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf, /dev/sdg, /dev/sdh and /dev/sdi (since a SCSI chain can contain up to nine devices). Other types of drive, such as USB, SATA, etc. are mapped to these SCSI devices by Linux. Therefore SATA and USB drives are labelled as /dev/sdX where X is a letter, starting at "a".

Since these are literally the devices you can issue a command such as:

If /dev/hdc is a CD drive then it will eject.

In the case of hard drives, there is another abstraction. A hard drive (and many devices such as USB "sticks" which act like hard drives) can be partitioned to allow many filesystems to be stored on them. This means that the filesystems themselves are accessible via the partition labels, such as /dev/hda1 (the first partition on /dev/hda). This means that we finally know about something we can mount, a partition, since it contains a filesystem.

Another physical filesystem which can be mounted is the ISO9660 filesystem used on CDROMs. Since there is only ever one CD in a CD drive there is no point creating /dev/hdc1 (where /dev/hdc is a CDROM drive) since there is only one filesystem on it. That means that you can mount CD drive devices explicitly, so if /dev/hdc is a CDROM drive then it is possible to mount /dev/hdc if there is a disc in it.

Floppy disks only contain one filesystem, and are labeled as /dev/fd0 for the first drive, /dev/fd1 for the second drive, etc. So now we know three things which can be mounted.

Devices like USB sticks are treated like hard drives (so /dev/sda1, for example, may contain a filesystem) and so are iPods (although I think the main data on an iPod is stored on the second partition)

Mounting is not restricted to physical devices. If you have a filesystem "image" (which IS a filesystem, whether an exact copy of an existing filesystem, or a filesystem created specifically for that file) then you can mount that through the use of a fake device called the "loopback device"

How To Mount/Unmount Filesystems

Unmounting

Firstly I will tell you how to unmount any filesystem you mount after trying these commands. Unmounting is done through the "umount" command, which can be given a device or a mount point so:

Would both unmount the filesystem on /dev/hda1 if it is mounted on /mnt.

Remember that a filesystem cannot be in use when it is unmounted, otherwise umount will give an error. If you know it is safe to unmount a filesystem you can use:

To do a "lazy" unmount

Note that files are often stored temporarily in the RAM to prevent filesystem fragmentation and speed up access times for slow devices like floppy disks. For this reason you should always unmount filesystems before you unplug or eject the device or you may find that your files have not actually been written to your device yet.

Mounting

Is responsible for mounting filesystems. The syntax for this command is quite simple (remember that mount must be run with super user privileges to change the system) so:

Will mount the filesystem on /dev/sda1 (which may be a USB drive, a SATA drive or a SCSI drive) into the folder /mnt. That means that going into /mnt will show you the filesystem which is on /dev/sda1.

Many options can be given to mount. A useful option is the "type" option, when automatic filesystem-type detection fails. An example would be:

That command tells mount to put the filesystem on the first floppy disk into the folder /floppy, and tells it to treat the filesystem as a FAT filesystem. If the wrong type is given then mount will not mount the filesystem and you will be told of the error.

To mount a filesystem contained in a file using the loopback device the command would look like this

To create a filesystem image you can either "dump" an existing filesystem into a file, for example by using the command:

Alternatively you can create an empty file by using:

And then creating a filesystem on this file as if it were a drive by using the command:

Which will create an ext3 filesystem on the device (ext2 with a journal). Images created using either method can be mounted via the loopback device.

An interesting ability of mount is it’s ability to move specific parts of a filesystem around. For example:

Will let the folder "/mnt/Files/Music" also be accessible in /home/user/Music. If you wish to "move" a folder (no data is copied or removed, it is merely displayed in a different place) then use:

Instead. This can come in handy, for example you may have your dual-boot Windows partition mounted in /windows. You can get easier access to your personal files by using:

For windows 98/95 users, and with:

For Windows XP users.

Mount can mount filesystems which are accessed remotely using NFS (the Networked Files System) (Please complete this as I do not know how to use NFS)

Windows NTFS Disks

Permanently mount internal Windows NTFS disks. Install and use the NTFS Configuration Tool (external link) To get it go to the Ubuntu Software Center -> System Tools -> NTFS Configuration Tool -> Install

Способы монтирования

Способ 1: монтирование через универсально уникальный идентификатор (UUID)

UUID — это атрибут конкретной файловой системы, а не произвольное число, зависящее от физического порядка подключения дисков или случайностей инициализации дисковой подсистемы ядром.

Узнаем UUID разделов, для этого

Предположим, мы хотим подключить раздел «Shared» (NTFS-раздел, находящийся на основном диске компьютера) и «TRENDNET8GB» (флэшка, отформатированная в FAT32).

Способ 2: монтирование через имена устройств

Считается устаревшим и строго не рекомендуется к постоянному использованию.

Единственным заметным плюсом является небольшая длина имён устройств, что удобно при прямой работе с консолью. Например, во время реанимации умершей системы.

Разделы, оканчивающиеся цифрой — файловые системы. Разделы без цифры на конце — реальные физические устройства. В данном примере участвуют два физических диска (/dev/sda и /dev/sdb) и два рейд-массива (по сути — две файловые системы, не привязанные напрямую к какому-то одному физическому носителю).

Пример вывода команды fdisk (вывод parted отличается очень незначительно):

Попробуем достучаться до массива md0.

Дополнительная информация

Я не стал загружать основной текст статьи расшифровкой опций монтирования, но несколько слов пояснения сказать необходимо.

Донастройка системы

Теперь диски стали подключаться автоматически, но так как это делается от имени root, у нас пропала возможность на подключенных дисках давать права на общий доступ, чтобы восстановить эту возможность добавим настройку в Samba:

A. Partitioning (for >2GB Harddisk) (New) (Updated on 18 Jan 2020)

Sik-Ho Tsang

2. But we cannot mount it right now, if we mount it now, errors will come out. We need to partition it first, we use parted to partition:

3. Within the parted, type the following to have gpt partition, gpt can allow partition larger than 2GB:

4. Set the size for partition, I here partition from 0GB to 4GB:

5. Then quit the parted:

B. Formatting

  1. Format the newly partitioned harddisk:

C. Mounting (including auto mount after reboot)

  1. Usually drive is mounted in /mnt/. Create a new directory in /mnt/ first.

2. Then we can mount it by:

3. But we need to mount it for every time we reboot. To mount it automatically after each reboot, I use nano to modify the file /etc/fstab:

4. Enter following at the end of file:

The first item is the path for the hard drive. The second one is the destination for the mounted drive, where we want to mount. The third one is the format type. The forth to sixth one I just kept as defaults, 0 and 0.

D. Checking whether the hard drive is mounted

To check if the drive sdb, is mounted? Use mount command:

  • mount

E. Unmounting (Updated on 05 May 2020)

To unmount, simply using the umount command:

But sometimes, the mounted harddisk maybe still in use which makes you cannot unmount. To unmount under this condition, there is a lazy mode:

F. Partitioning Using fdisk (for <2GB Harddisk) (Old)

  1. First, after connecting the harddisk to the computer by SATA and power cables, we can check the new 4-TB harddisk by:

2. But we cannot mount it right now, if we mount it now, errors will come out. We need to partition it first:

Как в Linux подключить новый диск, разметить и отформатировать разделы

В этой небольшой заметке я покажу на практическом примере, как работать с дисками в Linux.

Активация диска в Linux

Предположим вы подключили новый диск, на котором ещё нет файловой системы. Система его не видит и нам нужно выполнить команды для его подключения.

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

При подключении нового диска нам нужно:

  • разметить его на разделы
  • отформатировать каждый раздел для создания файловой системы
  • смонтировать диск для возможности записи и чтения данных
  • настроить автоматическое монтирование при включении компьютера

Как узнать имена дисков, как просмотреть все диски в системе

Начать нужно с того, чтобы узнать имя диска, который мы будем изменять. В Linux совсем непохожая на Windows система обозначения дисков. Вместо привычных дисков C, D, E и так далее, в Linux диски это устройства в папке /dev/. В dev вообще все возможные устройства, даже весьма экзотические, не существующие в Windows.

Чтобы посмотреть доступные диски, выполните команду:

Как видно из скриншота, имеется диск /dev/nvme0n1. Затем перечислены два устройства /dev/nvme0n1p1 и /dev/nvme0n1p2. По совпадающему части названия nvme0n1 можно понять, что это разделы, на которые разделён диск /dev/nvme0n1.

Также имеется диск /dev/sda, который не разделён ни на какие разделы — именно его я и буду подключать.

Разметка дисков (разделение на разделы) в Linux

В консоли диск можно разбить на разделы командой cfdisk. После неё укажите имя диска, с которым вы хотите выполнить действия:

Диск может быть GPT или MBR (показывается как dos). Вы без труда найдёте множество информации об этих таблицах разделов в Интернете. Только отмечу, что GPT является более современной и имеет больше возможностей. Поэтому если не нужно работать со старым железом, которое понимает только MBR, то выбираем GPT.

Для создания диска выберите Новый:

Введите его размер.

Если нужно, поменяйте тип раздела:

Затем переместитесь вниз на свободное место и повторяйте эти действия по созданию разделов. Когда закончите, выберите Запись.

Форматирование разделов

Для форматирования в ext4:

Для форматирования в ext3:

Для форматирования в ext2:

Для форматирования в FAT32:

Мой пример (я не стал разбивать диск на разделы):

Кстати, если вы хотите отформатировать раздел, который уже используете, то его нужно сначала отмонтировать (об этом дальше).

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

С дисками в /dev/ нельзя работать напрямую, то есть нельзя на них записывать файлы или копировать с них файлы. Для работы с ними их нужно смонтировать. Это делается командой mount.

Диск подключается к точке монтирования и уже в этой папке можно работать с содержимом диска.

Эта концепция может показаться непривычной пользователям Windows, но это очень удобно! Диск можно смонтировать в любую папку. Например, домашняя папка может быть на другом диске — удобно при переустановке системы — данные не нужно копировать в безопасное место, поскольку они уже на другом диске.

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

Допустим, я хочу, чтобы новый диск был подключён (смонтирован) к папке /mnt/disk_d. Название можно выбрать любое и точка монтирования необязательно должна быть в директории /mnt/ — можно сделать в домашней папке или в любой другой.

Начинаем с создания директории, в которую будет смонтирован диск:

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

На самом деле, права доступа можно настроить более тонко — без полного разрешения для всех.

Для размонтирования диска используется любая из двух команд:

Автоматическое монтирование диска при загрузке Linux

Диски для монтирования при запуске Linux прописаны в файле /etc/fstab.

Допустим, я хочу при загрузке монтировать диск /dev/sda в директорию /mnt/disk_d/. При этом я хочу чтобы диск был доступен для чтения и записи пользователем. Тогда я создаю каталог — точку монтирования:

Открываю файл /etc/fstab:

и дописываю туда следующую строчку:

В этой строке вам нужно заменить

  • /dev/sda — на диск, который вы желаете смонтировать
  • /mnt/disk_d — на вашу точку монтирования, которую вы выбрали для своего диска.
  • ext4 — на файловую систему вашего диска

Если вы не уверены в файловой системе или её обозначении, то выполните команду:

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

Чтобы ваш пользователь имел доступ к этой папке без необходимости повышать свои привилегии, выполните команду:

Можно более тонко настроить права доступа — например, создав группу, только члены которой будут иметь доступ к диску.

Обратите внимание, что если вы что-то неправильно сделали в файле /etc/fsta, то система не сможет загрузиться в графический интерфейс и вам придётся всё исправлять из консоли. Ссылка на дополнительную инструкцию в конце этой статьи.

Для проверки записей в файле /etc/fstab используйте команду

На скриншоте можно увидеть, что диск с UUID равным 26FC3023FC2FEC2D является недоступным (unreachable). Это может означать, что запись в файле /etc/fstab имеет ошибку. Но в данном случае диск с UUID=26FC3023FC2FEC2D — это съёмный диск, для его монтирования указана опция nofail (не вызывать фатальную ошибку, даже если диск отсутствует), поэтому предупреждение можно проигнорировать.

Для вывода более подробной информации добавьте опцию —verbose:

Все пункты успешно прошли проверку, рассмотрим более подробно записи проблемного диска:

  • /mnt/disk_e — точка монтирования
  • [ ] target exists — целевая папка (точка монтирования), существуют, то есть директория /mnt/disk_e имеется в системе
  • [ ] VFS options: rw — найдена такая опция монтирования как rw, то есть диск монтируется для чтения и для записи. VFS — это опции ядра, системных вызовов. Эти опции одинаковы для всех файловых систем.
  • [ ] FS options: utf8 — найдена опция, специфичная для данной файловой системы. Этой опцией является utf8, то есть для преобразования имён файлов будет использоваться кодировка UTF-8.
  • [ ] userspace options: noauto,nofail — здесь перечислены опции пользовательского пространства. Опция noauto означает не монтировать автоматически, а опция nofail означает не сообщает об ошибках для этого устройства, если оно не существует — эта опция важна для съёмных носителей и сетевых дисков, которые могут отсутствовать во время загрузки компьютера.
  • Структура записей в /etc/fstab
  • Управление опциями монтирования с помощью /etc/fstab

Подключение съёмного носителя (флешки, внешнего диска) в Linux

Между прочим, многие дистрибутивы Linux при подключении USB флешки или внешнего диска автоматически их монтируют. Автоматическое монтирование обычно является функцией окружения рабочего стола. То есть на одном и том же дистрибутиве Linux, но с разными рабочими столами (версии Linux Mint как пример) автомонтирование может иметься или отсутствовать.

Если этого не произошло, значит нужно смонтировать вручную. Этот процесс ничем не отличается от обычного монтирования дисков: также создайте точку монтирования и используйте команду mount.

Съёмные носители можно монтировать через /etc/fstab, для этого даже есть специальная опция nofail — игнорировать ошибки, если диск отсутствует.

Как просмотреть все диски и точки монтирования

Для этого используйте уже знакомую нам команду:

Как удалить разделы диска

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

Откройте диск в gdisk:

Для перехода в экспертный режим там введите

Затем для удаления GPT введите

Дважды согласитесь, чтобы полностью очистить диск.

Перемонтирование диска с правами записи

Иногда диски монтируются только с правами чтения. В этом случае можно скопировать файлы с диска, но нельзя на него что-либо записать или удалить. Перемонтировать диск на запись можно одной командой:

В ней /dev/sdb1 замените на имя вашего раздела.

Если вы столкнулись с ошибкой:

То нужно выполнить команду (замените /dev/sdb1 на ваш раздел):

После этого перемонтируйте диск.

Обратите внимание, что если вы монтируете диск с файловой системой NTFS, то у вас должен быть установлен пакет ntfs-3g, иначе что бы вы не делали, диск будет только для чтения.

Заключение

Если у вас ещё остались вопросы, то задавайте их в комментариях.

Ещё несколько советов и проблемных случаев рассмотрено в статье «Работа с дисками в BlackArch (монтирование, решение проблем)» — эта статья подходит для всех дистрибутивов, не только BlackArch.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *