Igorka Лекція №15 - монтування файлових систем

Дещо про все і все про небагато, або практичний досвід системного адміністратора.

лекція

Листопад 2009Пн Вт Ср Чт Пт Сб Нд
«ОктГрудень »
1
2345678
9101112131415
16171819202122
23242526272829
30

igorka

Лекція №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. (У деяких випадках useful info про процеси, що 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 2048 1664 /media/cdrom0 less 19323 igor 4r REG 11,0 32 1669 /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. Як правило в системі є кілька подібних блокових псевдопристроїв:

/linux$ ls -l /dev/loop* brw-rw-- 1 root disk 7, 0 2009-11-1611:05 /dev/loop0 <11 brw-rw-- 1 root disk 7, 1 2009-11-16 11:05 /dev/loop1 brw-rw-- 1 root disk 7, 2 2009-11 -16 11:05 /dev/loop2 <11 brw-rw-- 1 root disk 7, 3 2009-11-16 11:05 /dev/loop3 brw-rw-- 1 root disk 7, 4 2009 -11-16 11:05 /dev/loop4 <11 brw-rw-- 1 root disk 7, 5 2009-11-16 11:05 /dev/loop5 brw-rw-- 1 root disk 7, 6 2009-11-16 11:05 /dev/loop6 brw-rw-- 1 root disk 7, 7 2009-11-16 11:05 /dev/loop7

Для чого нам знадобиться монтувати файли? Найбільш наочний приклад це, коли ми маємо образ диска у форматі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

Таким чином, ми примонтували файл Ubuntu_DocsPack_9.04.2.iso і тепер можемо звертатися до нього як до диска.

Наприкінці цієї лекції хочу показати команду, яка покаже нам всі розділи всіх блокових пристроїв системи. Ми будемо детальніше розглядати цю команду пізніше. Щоб подивитися на всі розділи які є в системі, наберіть від імені суперкористувача командуfdisk -l :

Диск /dev/sda: 250.1 ГБ, 250059350016 байт 255 heads, 63 sectors/track, 30401 cylinders Units = циліндри of 16065 * 512 = 825 Disk identifier: 0xd4b146b8

Устр-во Загр Початок Кінець Блоки Id Система /dev/sda1 * 1 2304 18506848+ 7 HPFS/NTFS /dev/sda2 2305 2472 1349460 e W95 FAT16 (LBA) 3 62581207+ 7 HPFS/NTFS /dev/sda4 10264 30401 161758485 f W95 розшир. (LBA) /dev/sda5 10264 12826 20587266 83 Linux /dev/sda6 12827 12947 971901 82 Linux своп / Solaris /dev/sda7 129 11>/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 bytes2

Устр-во Загр Початок Кінець Блоки Id Система /dev/sdb1 1 4660 37431418+ 83 Linux /dev/sdb2 4661 4865 1646662+ 5 Розширений /dev/sdb58 46 / Solaris /dev/sdb6 4851 4865 120456 83 Linux

Диск /dev/sdc: 4016 МБ, 4016046080 байт 90 heads, 25 sectors/track, 3486 cylinders Units = циліндри of 2250 * 512 = 1152000 bytes <010

Устр-во Загр Початок Кінець Блоки Id Система /dev/sdc1 4 3487 3917824 b W95 FAT32

Ця команда хороша тим, що показує як ім'я розділу, а й файлову систему раздела. Наприклад, файлова система розділу/dev/sdc1 - FAT32.