Сейчас 126 заметки.

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

Материал из ЗАметки

Монтирование разделов в Linux - общие слова Если ядро Linux опознало ваше устройство-носитель данных, то оно должно предоставить какой-то внешний интерфейс пользователю для работы с устройством. Этим интерфейсом является создание файлов-устройств в каталоге /dev

Пример:

Устройствам, подключённым к IDE, будут соответствовать файлы-устройства /dev/hda, /dev/hdb и так далее.

Устройствам типа SCSI, а также близкие им по духу SATA-устройства и USB-флешки, будут иметь файлы-устройства /dev/sda, /dev/sdb и тому подобное.


Если на диске есть разделы, то цифра в имени файла-устройства будет соответствовать номеру раздела.

Пример:

если на USB-флешке есть два раздела, то первый будет называться /dev/sda1, а второй /dev/sda2

Монтирование разделов = объяснение системе, как добраться до ваших данных и сделать их доступными для использования. Системе нужно объяснить три простые вещи:

какая файловая система на разделе;

какой файл-устройство вам нужно;

куда его подключить для просмотра = точка монтирования;

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

В переводе на язык UNIX, это звучит так:

   mount -t vfat /dev/hda3 /mnt/storage


Если нужно часто монтировать одни и те же разделы, занесите их в /etc/fstab - это общесистемный конфиг, в котором указаны все необходимые разделы для монтирования. Редактировать этот файл может не абы кто, а только root. Так что разживитесь рутовыми полномочиями и редактируйте /etc/fstab

Файл /etc/fstab состоит из колонок, разделителями между которыми являются символы табуляции (клавиша TAB). Вот пример содержимого файла /etc/fstab:

   # /etc/fstab: static file system information.
   #
   #
   /dev/hda2 / reiserfs notail,noatime 0 1
   /dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0
   /dev/sda1 /mnt/flash vfat iocharset=koi8-r,codepage=866,rw,user,auto 0 0

Формат колонок такой:

   Монтируемое устройство (файл-устройство, он же раздел, который вы хотите примонтировать)
   Точка монтирования (в какую директорию в файловой системе монтировать)
   Тип монтируемой файловой системы
   Опции монтирования (кодировка языка, необходимость монтирования при старте)
   Dump (обычно 0)
   Pass (обычно 0)

Важно, чтобы вы вставляли Тab после каждой колонки при редактировании /etc/fstab

Ниже приводятся уточнения для каждого случая файловой системы, но идея монтирования разделов в Linux одна и та же.

mount -t vfat /dev/hda1 /home/vasya/tempdir прикрутить тип FAT что прикрутить куда это прикрутить

Пишем буквально то, чего хотим: от имени суперпользователя, прикрутить логическую структуру с файловой системой типа FAT, находящуюся в файле /dev/hda1, к каталогу /home/vasya/tempdir

После всех операций раздел следует размонтировать, чтобы данные на него записались из памяти - точно так же, как при работе с флешками в Windows. Для этого следует дать команду:

   # umount /mnt/XX
   или
   $ sudo umount /mnt/XX

где /mnt/XX - точка монтирования. Если ни одно приложение не работает с разделом, то раздел размонтируется, отключится и данные на него полностью запишутся. После этого устройство можно безопасно извлечь.

Чтобы посмотреть, что можно смонтировать, и увидеть информацию о разделах, можно воспользоваться командой (запуск от root):

   # fdisk -l

Увидите что-то вроде:

   Disk /dev/hda: 60.0 GB, 60011642880 bytes
   255 heads, 63 sectors/track, 7296 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot Start End Blocks Id System
   /dev/hda1 1 36 289138+ 82 Linux swap / Solaris
   /dev/hda2 * 37 7296 58315950 83 Linux

Всё очень просто и логично. Как и многое другое в UNIX.


Предварительные действия перед монтированием Прежде, чем монтировать разделы, нужно создать точки монтирования. Точки монтирования следует создавать в каталогах /mnt или /media.Пример: Для того, чтобы создать точку монтирования с названием /mnt/win в консоли даём команду:

   $ sudo mkdir /mnt/win
   или
   # mkdir /mnt/win

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

   $ sudo chmod 777 /mnt/win
   или
   # chmod 777 /mnt/win

Это позволит считывать и записывать данные не только суперпользователю-руту, но и обычному пользователю. Даже если в системе вы - единственный пользователь. Свою точку монтирования в директории /mnt нужно создать для каждого раздела.Не бойтесь, если вы не знаете точно, как теперь называются ваши виндовые диски C:\ или D:\ и монтируйте разделы с указанием типа файловой системы fat или ntfs - если ошибётесь, раздел не примонтируется и вы увидите ошибку вроде

   mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or other error
   In some cases useful info is found in syslog - try
   dmesg | tail or so

Не боимся - просто нам команда mount сказала, что примонтировать у неё не получилось.

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


Как примонтировать раздел с файловой системой FAT в Linux Самое главное здесь - кодировка. Замечательная корпорация Microsoft изобрела свою собственную кодировку CP866 для MS DOS, CP1251 для Windows и только в последнее время прозрела до UTF8. Благодарим Microsoft за изобретение велосипеда с треугольными колёсами и приступаем к монтированию.

Однократное монтирование FAT Временное, однократное монтирование, например, флешки, выглядит в командной строке так:

   $ sudo mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=866,rw
   или
   # mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=866

Пример: монтирование типичной флешки выглядит так

   $ sudo mount -t vfat /dev/sda1 /mnt/flash -o iocharset=utf8,codepage=866,rw

То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash Постоянное монтирование FAT Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

   /dev/XX /mnt/YY vfat iocharset=utf8,codepage=866,user,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

   /dev/sda1 /mnt/flash vfat iocharset=utf8,codepage=866,user,rw 0 0

То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash После этого раздел FAT в Linux будет доступен. Отмонтирование по команде umount /mnt/flash Как правильно говорят в комментариях, iocharset совпадает с текущей локалью - например, iocharset=utf8.


Как примонтировать раздел с файловой системой NTFS в Linux Замечательная корпорация Microsoft изобрела не просто новый велосипед с треугольными колёсами NTFS, а ещё и закрыла его описание. Да так, что пришлось очень долго его взламывать и создавать драйвера обратной разработкой. О сложности проблемы даёт понять описание дефрагментации NTFS, что, как говорится, внушает.

Монтировать и записывать на NTFS в Linux, тем не менее, возможно благодаря героическим усилиям разработчиков, создавших драйвер NTFS-3g. Этот драйвер можно установить командой:

   aptitude install ntfs-3g

или поискать пакет ntfs-3g в графической оболочке установки программ вашего любимого дистрибутива.


Однократное монтирование NTFS Временное, однократное монтирование, например, раздела с данными Windows, выглядит так:

   $ sudo mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf8
   или
   # mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf8

Пример: монтирование раздела Windows с NTFS разделом выглядит так

   $ sudo mount -t ntfs-3g /dev/sda1 /mnt/flash -o umask=0,nls=utf8

То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/flash


Постоянное монтирование NTFS Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

   /dev/XX /mnt/YY ntfs-3g umask=0,nls=utf8,user,auto,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

   /dev/sda1 /mnt/windows ntfs-3g umask=0,nls=utf8,exec,user,auto,rw 0 0

Иногда в /etc/fstab это уже есть с настроками вида:

   /dev/sda1 /mnt/windows ntfs-3g umask=0,nls=ru-RU.UTF-8 0 0

При такой записи всё нормально, кроме одного - файлы и каталоги с русскими именами не отображались, как-будто их не было вовсе. Чтобы это исправить, можно попробовать изменить на:


   /dev/sda1 /mnt/windows ntfs-3g exec,user,auto,rw 0 0

То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/windows После этого раздел NTFS в Linux будет доступен. Отмонтирование по команде umount /mnt/windows


Как примонтировать CD/DVD диск в Linux Всё проще - скорее всего, это уже сделано в вашем дистрибутиве. Тем не менее, привожу это здесь для примера.

Однократное монтирование CD/DVD Временное, однократное монтирование, например, DVD-диска с данными в Linux, выглядит так:

   $ sudo mount -t iso9660 /dev/XX /mnt/YY
   или
   # mount -t iso9660 /dev/XX /mnt/YY

Пример: монтирование DVD-диска с данными выглядит так

   $ sudo mount -t iso9660 /dev/cdrom /mnt/dvd

То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/dvd


Постоянное монтирование CD/DVD Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

   /dev/XX /mnt/YY iso9660 user,ro 0 0

Пример: оптический диск в /etc/fstab смотрится так

   /dev/cdrom /mnt/cdrom iso9660 user,ro 0 0

То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/cdrom После этого оптический диск в Linux будет доступен. Отмонтирование по команде umount /mnt/cdrom


Как примонтировать ISO-файл или другой файл в Linux Вы откуда-то скачали ISO-файл и хотите просмотреть его содержимое. Для этого в Windows есть такой костыль под названием Alcohol. В Linux и вообще в UNIX такие костыли не требуются, так как монтирование ISO-образа ничем для системы не отличается от монтирования CD/DVD-диска. Нужно только передать один параметр -o loop чтобы сообщить системе, что монтировать мы собираемся на петлевое устройство (loopback). Если делать это надо много и часто, можно воспользоваться программой GmountISO, описанной тут.

Для монтирования ISO-образа в командной строке даём команду:

   $ sudo mount -t iso9660 file.iso /mnt/YY -o loop
   или
   # mount -t iso9660 file.iso /mnt/YY -o loop

Пример: монтирование DVD-диска с данными выглядит так

   $ sudo mount -t iso9660 file.iso /mnt/dvd -o loop

То есть монтируем файл file.iso типа iso9660 в точку монтирования /mnt/dvd на петлевое устройство loop

Точно так же можно монтировать любой CD/DVD образ, а также файл-образы сжатых\зашифрованных\экзотических файловых систем типа SquashFS. Отмонтирование по команде umount /mnt/dvd


Как примонтировать раздел с файловой системой EXT2/EXT3/ReiserFS/XFS/JFS... в Linux Монтирование нормальных файловых систем проблем не создаёт. Приведу пример только с ext3, остальные файловые системы в Linux монтируются точно так же, только вместо ext3 подставьте буквально: ext2, reiserfs, xfs, jfs в зависимости от вашей файловой системы.

Однократное монтирование Временное, однократное монтирование, например, флешки, выглядит в командной строке так:

   $ sudo mount -t ext3 /dev/XX /mnt/YY
   или
   # mount -t ext3 /dev/XX /mnt/YY

Пример: монтирование раздела с данными выглядит так

   $ sudo mount -t ext3 /dev/sda1 /mnt/data

То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data


Постоянное монтирование Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

   /dev/XX /mnt/YY ext3 user,auto,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

   /dev/sda1 /mnt/data ext3 user,auto,rw 0 0

То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data После этого раздел EXT3 в Linux будет доступен. Отмонтирование по команде umount /mnt/data Как узнать тип файловой системы на диске?

Для этого есть утилита file, которая может определить тип файловой системы, используемый файлом. Так как в UNIX/Linux/*BSD исповедуется принцип "всё есть файл", то раздел с файловой системой это тоже файл. Так что команда file выдаст нам информацию о файловой системе дисковых разделов - надо только указать программе воспринимать их как специальные файлы.

Используем опцию -s (–special-files) для выдачи информации о типе файловой системы блочного устройства. Пример:

   # file -s /dev/sda1
   или$ sudo file -s /dev/sda1


   получаем в ответ:
   /dev/sda1: ReiserFS V3.6 block size 4096 (mounted or unclean) num blocks 17920496 r5 hash

То есть на разделе /dev/sda1 имеем файловую ReiserFS V3.6. Или например:

   # file -s /dev/sda1

выдаст в ответ:

   /dev/sda1: x86 boot sector, code offset 0x58, OEM-ID "MSWIN4.1", sectors/cluster 64, reserved sectors 126, Media descriptor 0xf8, heads 255, hidden sectors 63, sectors 284237982 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 34693, reserved3 0x800000, serial number 0x287d1dfa, unlabeled

Это поможет в определении того, какая файловая система (и намекнёт на то, какие данные там лежат) на данном разделе.


Что делать, если устройство в Linux не хочет размонтироваться!?Вы пытаетесь размонтировать раздел с данными (флешка, CD/DVD диск...) и получаете сообщение с ошибкой - устройство занято. Например, при выполнении команды umount /mnt/windows получаете сообщение вида:

   umount /mnt/windows
   umount: /mnt/windows: device is busy

Ну и что делать, если раздел в Linux не размонтируется!? Очень просто - посмотреть, какой процесс держит раздел или файл и не даёт отмонтировать его. Дальше либо закрыть это приложение, либо придушить его с помощью команды kill. Даём команду:

   lsof | grep /mnt/windows

Вертикальная черта означает передачу вывода команды lsof программе grep и фильтрации по слову /mnt/windows После этого вы получите ответ вида:

   $ lsof | grep /mnt/windows
   lsof: WARNING: can't stat() reiserfs file system /dev/.static/dev
   Output information may be incomplete.
   mc 14134 beast cwd DIR 8,1 4096 1 /mnt/windows

Стало быть, ваш раздел держит MC (Midnight Commander), который вы скорее всего открыли на другом рабочем столе и просто забыли о нём. Найдите это приложение, закройте его и отмонтируйте раздел снова - теперь проблема должна быть решена.


http://creativecommons.org/licenses/by-nc-sa/3.0/

http://mydebianblog.blogspot.com