Лекція №15 - монтування файлових систем
Лекція №15 - монтування файлових систем. команда mount
На попередніх лекціях вже кілька разів порушувалася тема монтування файлових систем. Сьогодні (і на наступній лекції) ми більш детально зупинимося на цьому питанні. У сучасних дистрибутивах монтування файлових систем в більшості випадків відбувається автоматично. Коли ви вставляєте флешку в USB-роз'єм комп'ютера, у вас в каталозі / media з'являється каталог з ім'ям флешки і ви можете відразу працювати з пристроєм (читати записувати файли). Раніше (до появи підсистеми udev), перш ніж працювати з флешкою (і будь-яким іншим блоковим пристроєм) потрібно було виконати операцію монтування. Коли підключається флешка (будемо використовувати флешку як приклад маю на увазі будь-який блоковий пристрій) в системі з'являється фізичний пристрій (в каталозі / dev) з яким можна працювати як з блоковим пристроєм. Наприклад, вважати інформацію за допомогою команди dd. Але нам необхідно отримати доступ до файлової системи цього пристрою, а не до самого пристрою і тому необхідно виконати операцію монтування.
У монтуванні присутні два основних компоненти: фізичний пристрій або розділ фізичного пристрою з певною файлової системою (то ЩО монтуємо) і точка монтування (то КУДИ монтуємо). Точка монтування - це звичайний каталог в будь-якому місці системи, який буде батьківським для файлової системи, що монтується пристрою. Каталог може бути як порожнім (як правило), так і з інформацією. Якщо монтувати в каталог з інформацією, то попередній вміст каталогу буде замінено вмістом файлової системи, що монтується пристрою, але тільки на час монтування. Це дуже важливо зрозуміти і запам'ятати. Як тільки ви размонтіруете каталог, інформація, яка була в ньому до монтування знову стане доступна. Але це окремий випадок. Все таки в більшості випадків монтують в порожні каталоги.
Для монтування використовується команда mount. Найбільш часто ця команда використовується у вигляді mount -t type device dir. де після ключа -t вказується тип монтируемой файлової системи, потім вказується монтується пристрій (device) і після цього директорія (точка монтування - dir). Наприклад, є флешка - пристрій / dev / sdc. на ньому є розділ / dev / sdc1. Монтувати потрібно саме розділ - / dev / sdc1 - отформатированную область, а не фізичний пристрій / dev / sdc. Команда mount для цього випадку буде виглядати так: mount -t vfat / dev / sdc1 / media / fleshka. Каталог fleshka (точка монтування) повинен існувати і якщо його немає, то необхідно його створити командою mkdir або вибрати інший - існуючий каталог. Так як флешка була відформатована в FAT32. то використовувався тип файлової системи vfat. Якби монтували ntfs-розділи Windows. то слід вказати файлову систему ntfs. Всі типи підтримуваних файлових систем можна подивитися в man mount.
Розмонтування файлової системи системи виконується за допомогою команди umount точка монтування | пристрій. З нашого прикладу з флешкою umount / media / fleshka або umount / dev / sdc1. Команда umount не зможе демонтувати пристрій якщо воно зайняте будь-якої програмою. Наприклад, якщо зайти в одній консолі в каталог на змонтованому CD-ROM-диску, а потім в інший консолі спробувати виконати командуumount. то отримаємо помилку:
/ Linux $ umount / media / cdrom0
umount: / media / cdrom0: device is busy.
(In some cases useful info about processes that use
the device is found by lsof (8) or fuser (1))
Команда lsof / media / cdrom0 покаже які файли відкриті з каталогу / media / cdrom0 і ким:
/ Linux $ lsof / media / cdrom0
COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAME
bash 4908 igor cwd DIR 11,0 2048 1664 / media / cdrom0
less 19323 igor cwd DIR 11,0 2048 1664 / media / cdrom0
less 19323 igor 4r REG 11,0 32 тисяча шістсот шістьдесят дев'ять /media/cdrom0/config.txt
Як бачите дійсно є відкриті файли і каталоги. Щоб коректно отмонтировать файлову систему, необхідно закрити всі відкриті файли і вийти з усіх каталогів або виконати команду umount з ключем -f - umount -f / media / cdrom0.
У зв'язку з цим часто зустрічається наступна ситуація у початківців linux-користувачів. Вставляється CD-диск в CD-привід і йде робота з файлами диска. Потім користувач натискає на кнопку приводу, щоб витягти диск і нічого не відбувається. Деякий навіть перевантажують комп'ютер так як не розуміють в чому справа. А справа вся в тому, що диск не може бути витягнутий поки не буде демонтувати, а демонтувати він не може бути тому, що з нього відкриті файли (він використовується). Варто тільки закрити всі файли вийти з усіх каталогів і привід "віддасть" диск при натисканні на кнопку вилучення. Якщо лоток із диском, значить потрібно виконати команду umount для диска і після цього натиснути на кнопку вилучення.
Щоб подивитися які файлові системи вже змонтовані в системі можна виконати команду mount без параметрів або виконати команду df -a. Також можна подивитися вміст файлу / etc / mtab. Командаmount при монтуванні нової файлової системи додає в цей файл рядок з інформацією про додається системі. А команда umount відповідно видаляє рядок стосується отмонтировать розділу.
Хочу відзначити, що команди mount / umount не виробляють ніяких змін в процесі своєї роботи з файловими системами пристроїв і не можуть їх пошкодити. Збої найчастіше бувають в результаті позаштатних спроб размонтирования файлової системи, наприклад натискання на кнопку reset системного блоку. Намагайтеся уникати цієї дії і застосовувати його тільки в самих крайніх випадках. Якщо доступна командний рядок, то перед тим як перевантажити комп'ютер за допомогою кнопки reset. виконайте команду sync. Дана команда каже ядру, що необхідно негайно записати всю інформацію що знаходиться в буферній пам'яті на відповідні фізичні пристрої. Це дозволить зменшити ризик втратити інформацію.
Команда mount вміє монтувати не тільки пристрої, але і файли. Для цього використовується такий пристрій як / dev / loop. Як правило в системі є декілька подібних блокових псевдопристроїв:
Для чого нам може знадобиться монтувати файли? Найбільш наочний приклад це, коли у нас є образ диска в форматі iso. Так як безпосередньо примонтировать файл до директорії не можна, то поступають таким чином: монтують файл до блокового пристрою / dev / loop. а потім вже блоковий пристрій / dev / loop монтується до точки монтування. Для цього команду mount необхідно виконати з ключем -o через який передати параметр loop:
/ Linux $ sudo mount -o loop /home/igor/downloads/Ubuntu_DocsPack_9.04.2.iso / home / igor / linux / docpack /
igor @ adm-ubuntu:
/ Linux $ ls ./docpack/
Document html Jurnal_FullCircle.tar.gz Jurnal_OpenSource.tar.gz Ubuntu_Docs.tar.gz
Jurnal_BlenderEmpire.tar.gz Jurnal_LGT.tar.gz readme.txt Video_Lesson.tar.gz
Таким чином ми примонтировать файл Ubuntu_DocsPack_9.04.2.iso і можемо тепер звертатися до нього як до диску.
У висновку цієї лекції хочу показати команду яка покаже нам все розділи всіх блокових пристроїв системи. Ми будемо докладніше розглядати цю команду пізніше. Щоб подивитися на всі розділи які є в системі наберіть від імені суперкористувача команду fdisk -l:
Диск / dev / sda: 250,1 ГБ, +250059350016 байт
255 heads, 63 sectors / track, 30401 cylinders
Units = циліндри of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd4b146b8
Пристрої під Загр Початок Кінець Блоки Id Система
/ Dev / sda1 * 1. 2304 18506848+ 7 HPFS / NTFS
/ Dev / sda2 2305 2472 1349460 e W95 FAT16 (LBA)
/ Dev / sda3 2473 10263 62581207+ 7 HPFS / NTFS
/ Dev / sda4 10264 30401 161 758 485 f W95 расшир. (LBA)
/ Dev / sda5 10264 12826 20587266 83 Linux
/ Dev / sda6 12827 12947 971 901 82 Linux своп / Solaris
/ Dev / sda7 12948 18184 42066171 7 HPFS / NTFS
/ Dev / sda8 18185 27967 78581916 7 HPFS / NTFS
/ Dev / sda9 27968 30401 19551073+ 7 HPFS / NTFS
Диск / dev / sdb: 40.0 ГБ, 40020664320 байт
255 heads, 63 sectors / track, 4865 cylinders
Units = циліндри of 16065 * 512 = 8225280 bytes
Disk identifier: 0xb292b292
Пристрої під Загр Початок Кінець Блоки Id Система
/ Dev / sdb1 1 4660 37431418+ 83 Linux
/ Dev / sdb2 4661 4865 1646662+ 5 Розширений
/ Dev / sdb5 4661 4850 1526143+ 82 Linux своп / Solaris
/ Dev / sdb6 4851 4865 120 456 83 Linux
Пристрої під Загр Початок Кінець Блоки Id Система
/ Dev / sdc1 4 3487 3917824 b W95 FAT32
Ця команда хороша тим, що показує не тільки ім'я розділу, але і файлову систему розділу. Наприклад, файлова система розділу / dev / sdc1 - FAT32.