Файлова система FreeBSD: ієрархія та монтування. Файлова система Freebsd монтування

Їх потрібно змонтувати, а коли всі необхідні дії буде виконано – розмонтувати. Зазвичай для монтування/розмонтування використовуються команди mount(8)/umount(8), і ніхто не замислюється про автоматизацію цих операцій. На мій погляд, це не оптимальний підхід, особливо якщо врахувати той факт, що до складу операційної системи FreeBSD входить спеціальний демон автоматичного монтування.

Постановка задачі

Демон автомонтування операційної системи FreeBSD amd(8) призначений для прозорого монтування будь-яких файлових систем у міру звернення до розміщених на них файлів і папок, а також для подальшого розмонтування цих файлових систем за відсутності активності протягом заданого інтервалу часу. Ця стаття присвячена налаштуванню amd для автоматичного монтування файлових систем, що експортуються NFS-серверами, та спільних папок, що надаються SMB-серверами. Крім цього, вона описує діагностику amd за допомогою утиліти amq(8) та виділення йому власного лога за допомогою штатних засобів управління логами syslogd(8) та newsyslog(8).

Початкові дані

Для розв'язання задачі не потрібно додаткове програмне забезпечення, однак Вам доведеться створити , що дозволяє суперкористувачеві root монтувати вибрані спільні папки, що надаються SMB-серверами, без введення пароля.

Автоматичне монтування файлових систем NFS

Для забезпечення автоматичного монтування файлових систем NFS достатньо додати файл /etc/rc.conf рядок:

Amd_enable="YES"

і запустити команду amd /etc/rc.d/amd start . За замовчуванням amd буде використовувати альтернативну папку /.amd_mnt , надсилати повідомлення про свій стан у розділ daemon системного журналу та дозволяти монтувати файлові системи NFS до папок локальної файлової системи /host та /net згідно з картою монтування /etc/amd.map (ця карта монтування входить до складу операційної системи FreeBSD та містить правила, що регламентують порядок монтування та розмонтування файлових систем NFS за допомогою Network Host Filesystem). Якщо перекласти сказане на людську мову, то відразу після запуску amd Ви зможете звертатися до файлової системи share, що експортується NFS-сервером nfsserver, як до звичайної локальної папки з ім'ям /host/nfsserver/share або /net/nfsserver/share. При будь-якому такому зверненні та відсутності необхідної файлової системи у списку змонтованих файлових систем amd створить точку монтування /.amd_mnt/nfsserver/host/share , підмонтує до неї файлову систему share , створить папку /host/nfsserver або /net/nfsserver символічне посилання на вищезгадану точку монтування. Якщо папка /host/nfsserver/share або /net/nfsserver/share не буде використовуватися протягом 5 хвилин, amd розмонтує файлову систему share , а потім видалить папки, що стали непотрібними, і символічне посилання.

Автоматичне монтування файлових систем SMBFS

Для забезпечення автоматичного монтування файлових систем SMBFS доведеться створити одну або кілька додаткових карток монтування, кожна з яких повинна містити правила, що базуються на використанні Program Filesystem. Для отримання можливості звернення до спільних папок шаблонних імен виду /smbfs/smbserver/share слід виділити кожному SMB-серверу окрему карту монтування. Наприклад, для вказівки правил монтування спільних папок share1 і share2 , що надаються SMB-сервером smbserver , можна створити карту монтування з ім'ям /etc/amd.map-smbserver (Ви може змінити це ім'я відповідно до власних уподобань) і додати до неї рядки:

Share1 type:=program;fs:=$(autodir)/$(path);mount:="/sbin/mount mount -t smbfs \\/\\\/ [email protected]/share1 $(fs)"; share2 type:=program;fs:=$(autodir)/$(path);mount:="/sbin/mount mount -t smbfs \\/\\\/ [email protected]/share2 $(fs)";

Вказані правила змусять amd монтувати спільні папки до точки монтування $(autodir) (змінна $(autodir) містить ім'я альтернативної папки) командами /sbin/mount -t smbfs // [email protected]/share... . Відсутність параметра umount або unmount передбачає використання команд змонтування за замовчуванням umount $(fs) (змінна $(fs) містить ім'я точки монтування).
Для зв'язування створеної карти монтування з точкою монтування /smbfs/smbserver необхідно додати файл /etc/rc.conf рядок:

Amd_flags="$amd_flags /smbfs/smbserver /etc/amd.map-smbserver"

і перезапустити команду amd /etc/rc.d/amd restart . Відразу після виконання цих дій Ви зможете звертатися до спільних папок share1 і share2 , що надаються SMB-сервером smbserver , як до звичайних локальних папок /smbfs/smbserver/share1 та /smbfs/smbserver/share2 .

Аналіз стану amd за допомогою утиліти amq

Для швидкого з'ясування поточного стану amd можна використовувати команду amq -m , призначену для відображення списку змонтованих файлових систем, що включає кількість посилань на кожну з них і містить відомості про помилки монтування приблизно в такому вигляді:

"root" root 1 localhost is up /etc/amd.map /host toplvl 1 localhost is up /etc/amd.map /net toplvl 1 localhost is up /etc/amd.map-smbserver /smbfs/smbserver toplvl 1 localhost is up nfsserver:/host/nfsserver /.amd_mnt/nfsserver host 1 nfsserver is up mount -t smbfs // [email protected]/share1 ... /.amd_mnt/smbfs/smbserver/share1 program 1 localhost is up

Перший стовпець цієї таблиці містить ім'я карти монтування для точок монтування або опції монтування для змонтованих файлових систем, другий - ім'я точки монтування, третій - тип файлової системи amd, четвертий - кількість посилань на точку монтування або файлову систему, п'ятий - ім'я комп'ютера, на якому знаходиться файлова система, шостий - стан точки монтування або файлової системи, сьомий - повідомлення про помилки монтування (при відсутності помилок сьомий стовпець не відображається). У зв'язку з тим, що amd і rpcbind(8), який він запускає, підтримують TCP Wrappers , результатом виконання команди amq -m можуть стати приблизно такі повідомлення про помилки:

Amq: localhost: RPC: port mapper failure - RPC: Authentication error amq: localhost: RPC: Authentication error; why = Failed (unspecified error)

Для усунення даних помилок слід додати файл /etc/hosts.allow правила, що дозволяють доступ до amd і rpcbind з localhost 'а:

Amd: 127.0.0.1: allow amd: ALL: deny rpcbind: 127.0.0.1: allow rpcbind: ALL: deny

Надання amd власного логу

Параметри запуску за замовчуванням, задані у файлі /etc/defaults/rc.conf, змушують amd надсилати повідомлення про свій стан у розділ daemon системного журналу. Якщо Ви бажаєте надати amd окремий лог з ім'ям /var/log/amd.log , доведеться перенаправити ці повідомлення в інший розділ системного журналу (у моєму випадку - в розділ local6), а також відповідним чином змінити конфігурацію демона syslogd.
З урахуванням всіх змін у файлах конфігурації, описаних у цій статті, для перенаправлення повідомлень amd у лог /var/log/amd.log потрібно, по-перше, привести визначення змінної amd_flags у файлі /etc/rc.conf до такого виду:

Amd_flags="-a /.amd_mnt -l syslog:local6 /host /etc/amd.map /net /etc/amd.map /smbfs/smbserver1 /etc/amd.map-smbserver1"

і перезапустити amd командою /etc/rc.d/amd restart , а по-друге, додати файл /etc/syslog.conf рядок:

Local6.* /var/log/amd.log

створити порожній лог командою touch /var/log/amd.log і перезапустити syslogd командою /etc/rc.d/syslogd restart.
Для запобігання розростанню лога amd слід включити його ротацію за допомогою утиліти newsyslog. Наприклад, для щодобового усічення лога /var/log/amd.log зі збереженням семи попередніх копій, стиснутих архіватором bzip2(1) , слід додати файл /etc/newsyslog.conf рядок:

/var/log/amd.log 644 7 * @T00 JC

Висновок

Після виконання дій, описаних у цій статті, Вам більше не доведеться стежити за необхідністю монтування та розмонтування файлових систем NFS та SMBFS. Я сподіваюся, що Ви оціните таку можливість як корисну і обов'язково зверніть увагу на amd.

від

Часто звертаю увагу на те, що прості питання найчастіше мало висвітлені в інтернеті. Напевно, це тому, що всі гуру впевнені, що ніхто ніколи не поставить таких дурних питань, адже це знає кожен. Але моя практика показала, що саме такі дрібні прості питання найчастіші не тільки у новачків, а й у серйозних адміністраторів, яким просто не доводилося мати із цим справи. Навіть серйозні адміністратори не роблять це щодня, а щоб не забути, ведуть якусь шпаргалку для себе, нікому в цьому не зізнаючись. Давайте все виправимо. Зараз Ви дізнаєтесь, як за 5 хвилин додати жорсткий диску FreeBSD. Отже. Спочатку буде зроблено повну інструкцію для розуміння процесу, а в кінці буде короткий список дій, який міститиме лише список команд як шпаргалку.

Детальна інструкція з поясненнями

Вибір імені жорсткого диска

Для початку потрібно визначити ім'я пристрою, яке ми щойно додали. У цьому нам допоможе наступна команда:

Geom disk list

Або ось така команда:

Camcontrol devlist

У реальній системі ці команди покажуть кориснішу інформацію, а саме: назви пристроїв та їх серійні номери.

До встановлення нового пристрою ми знали, що наша система встановлена ​​на ada0, отже, за логікою речей, наш новий диск ada1. Це можна визначити за назвою нового пристрою, його серійному номеруабо ж обсягом.

Тепер перевіримо, чи є розмітка на нашому новому диску

Gpart show ada1

Диск не має жодної розмітки.

Видалення існуючої розмітки

Якщо диск вже використовувався і потрібно видалити з нього розмітку, просто виконайте:

Gpart destroy -F ada1

Створення розмітки GPT

Спочатку ми повинні створити розмітку диска. Вкрай рекомендую забути про MBR і перейти на нову, більш зручну та функціональну - GPT.

Створюємо розмітку GPT на диску, потім перевіряємо, що сталося:

Gpart create -s gpt /dev/ada1 gpart show ada1

Тепер диск має розмітку GPT. З висновку можна побачити, що весь диск, починаючи з LBA 34 і закінчуючи LBA 8388541 порожній. LBA 0-33 – зарезервовані системою під таблицю розділів.

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

  • swap- розділ підкачування
  • data- розділ типу ufs для зберігання будь-яких, необхідних нам, даних.

Створення розділів (слайсів)

Якщо установка виготовляється на сучасні жорсткі диски, у яких розмір сектора = 4 кб, то при створенні розділів (партій) необхідно використовувати вирівнювання. Можна зробити два способи: 1) якщо вказуємо параметри розділу в блоках, то номер блоку вводити кратним 8, наприклад: -b 40; 2) якщо вказуємо розмір розділу в байтах, або взагалі не вказуємо початок і розмір, використовувати параметр -a 4k, який підганяє початок та кінець розділу під сектори, розміром 4 кб. Тому що ми в даному прикладіВиконуємо тестову установку на віртуальний жорсткий диск, то цього можна не робити. У будь-якому випадку перед створенням розділів потрібно точно знати розмір сектора вашого накопичувача, інакше це виллється моторошними гальмами в роботі.

Тепер створимо розділи. Для цього існує команда gpart add із різними параметрами. Перший параметр -t- Вказує на тип створюваної файлової системи. У нашому випадку буде використано два типи: freebsd-swap та freebsd-ufs. Далі йдуть два необов'язкові параметри: -b- вказує на номер LBA, з якого необхідно створити розділ. Якщо не вказати даний параметр, Розділ буде створено автоматично з першого вільного LBA. -s- Вказує на розмір розділу в LBA. Розмір одного блоку LBA = 512 байт. Бажано вказувати у кількості блоків LBA, але можна і в кіло/мега/гіга/… байтах (суфікс k/M/G). Якщо не вказати цей параметр, розділ буде створено до максимально можливого LBA в межах порожньої області. Також як параметр можна вказати мітку розділу, наприклад: -l swap1- у цьому випадку буде створена мітка /dev/gpt/swap1, за якою можна зручніше звертатися до розділу. Останнім обов'язковим параметром іде шлях до диска. У разі: /dev/ada1.

Давайте створимо два розділи, а потім побачимо, що в нас вийшло. Перший розділ будемо створювати без вказівки початкового LBA, але із зазначенням розміру 1 Гб (2097152 блоків). Другий розділ створимо без вказівки початкового LBA та без вказівки розміру – таким чином він буде створений на всьому вільному просторі.

Gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart show ada1

Розмір можна вказувати у байтах, а не блоках. Це значно зручніше. Єдиний мінус – система не завжди може коректно розрахувати кількість блоків. Можливі випадки, коли на диску залишиться пустувати кілька блоків при вказівці розміру розділу в байтах.

Створення файлової системи (форматування)

Розділи типу swap форматувати не потрібно. А ось розділи типу ufs перед використанням мають бути відформатовані. Правильніше сказати: на них має бути створена файлова система.

Щоб створити файлову систему на другому розділі, достатньо виконати таку команду:

Newfs -U /dev/ada1p2

У разі використовувався параметр -U - він свідчить, що у цій файлової системі має використовуватися механізм Soft Updates. Цей параметр не можна використовувати, щоб не включати цей механізм.

Монтування

Наступним кроком буде встановлення розділів. Для початку, щоб не забути, додамо наші нові розділи /etc/fstab. Мій файл після редагування виглядає так:

Для того, щоб перемонтувати всі розділи згідно з файлом /etc/fstab, просто виконаємо команду:

Mount-a

Як очевидно з висновку, розділ /dev/ada1p2 змонтований. Тепер подивимося, що сталося із розділом SWAP. Виконаємо команду:

Як видно, новий розділ SWAP не змонтовано. Щоб змонтуватись SWAP, необхідно його увімкнути спеціальною командою:

Swapon /dev/ada1p1

Так само за допомогою команди swapoff потрібно відключати розділ SWAP перед тим, як зробити над ним якісь дії.

На цьому всі дії щодо додавання нового жорсткого дискау систему завершено.

Коротка інструкція

Дано: жорсткий диск /dev/ada1

Ціль: видалити існуючу розмітку, створити нову розмітку GPT, створити два розділи: підкачування та дані та підключити їх до робочої системи.

Після кожної дії виконуйте gpart show, щоб спостерігати результат. Послідовність дій:

  1. Видалити існуючу розмітку: gpart destroy -F ada1
  2. Створити нову розмітку: gpart create -s gpt /dev/ada1
  3. Створити два розділи: підкачування та дані: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Створити файлову систему UFSv2на другому розділі: newfs -U /dev/ada1p2
  5. Додати у файл /etc/fstab рядки для автомонтування під час завантаження: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Змонтувати новий розділ (команда монтує всі розділи із файлу /etc/fstab): mount -a
  7. Включити в роботу новий розділ swap командою: swapon /dev/ada1p1

На цьому налаштування завершено.

Змінювати права доступу та власника файлів і каталогів у , можна за допомогою команд chmodі chown. Маску для встановлення прав на створювані файли, можна змінити глобально, /etc/profileдля Linux та в /etc/login.confдля FreeBSD. Зазвичай маска за замовчуванням 022 . Значення umaskвіднімається з 777 , таким чином права доступу матимуть значення 755 . exec - дозволено виконання read - право на читання write - право на запис SUID bit - атрибут файлу, разом з атрибутом виконуваного файлу, дозволяє файлу, що запускається виконуватися з ефективним UID власника файлу, а не того, хто запускає файл 1 --x execute # Права 764 = exec/read/write | read/write | read 2 -w- write # Для: |-- Owner --| |- Group-| |Oth| 4 r-- read ugo=a u=user, g=group, o=others, a=everyone# chmod MODE [, MODE] FILE # MODEмає форму: *([-+=]()) # chmod 640 /var/log/maillog # Встановити права доступу рівними -rw-r----- # chmod u = rw, g = r, o = /var/log/maillog # Як і вище # chmod -R o-r /home/* # Рекурсивно змінити права, заборонити читання для Інші # chmod u+s /path/to/prog # Встановити SUIDбіт на виконуваний файл(Тут обережніше, ви повинні розуміти, що ви робите)# find / -perm -u + s -print # Знайти всі програми з встановленим SUIDбітом# chown user:group /path/to/file # Встановити користувача та групу як володіють файлом# chgrp group /path/to/file # Змінити групу, що володіє файлом# chmod 640 `find./-type f-print` # Змінити права доступу на 640 для всіх файлів# chmod 751 `find./-type d -print` # Змінити права доступу на 751 для всіх директорій

Інформація про диски

# diskinfo -v /dev/ad2 # Подивитися інформацію про диск ( sector/size) FreeBSD# hdparm -I /dev/sda # Інформація про IDE/ATAдиск (Linux)# fdisk /dev/ad2 # Показати змінити розділи диска# smartctl -a /dev/ad2 # Показати SMARTінформацію диска

Завантаження

FreeBSD

Щоб завантажити старе ядро, в аварійній ситуації, наприклад після невдалого складання та встановлення нового, зупиніть завантаження, натиснувши 6 під час зворотного відліку, щоб потрапити в запрошення командного рядка. # unload # load kernel.old # boot

Точки монтування, використання дисків

# Mount | column -t # Показати змонтовані файлові системи# df # Показати кількість вільного місця та змонтовані пристрої# cat /proc/partitions # Показати всі зареєстровані розділи (Linux)

Інформація про директорії

# du -sh * # Розміри директорій у вигляді списку# du -csh # Сумарний обсяг поточної директорії# du-ks* | sort -n -r # Список директорій, відсортований за обсягом у кілобайтах# ls -lSr # Список директорій, зворотне сортування

Хто які файли відкрив

Іноді необхідно з'ясувати, який файл заблокував розділ, через що команда umountвидає відповідну помилку. # umount /home/ umount: unmount of /home # Розмонтувати розділ неможливо, поки /homeзаблоковано failed: Device busy

FreeBSD та більшість Unix подібних систем

# fstat -f /home # для точки монтування# fstat -p PID # для програми з PID# fstat -u user # для імені користувачаЗнайти відкритий файлдля Xorg: #ps ax | grep Xorg | awk "(print $1)" 1252 # fstat -p 1252 USER CMD PID FD MOUNT INUM MODE SZ | x--x 1679848 r root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w Знайти файл з inum 212042 у директорії /varможна так: # find -x /var -inum 212042 /var/log/Xorg.0.log

Linux

Знайти відкритий файл у директорії за допомогою fuserабо lsof: # fuser -m /home # Список процесів мають доступ до /home # lsof /home Команда PID USER FD TYPE DEVICE SIZE NODE NAME tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home) lsof 29140 eedcoba c8 /home) Знайти по PIDпрограми: ps ax | grep Xorg | awk "(print $1)" 3324 # lsof -p 3324 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log На ім'я файлу: # lsof /log/Xorg.0.log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log

Монтування/перемонтування файлових систем

Наприклад cdrom, прописаний у /etc/fstab: # mount /cdrom Або можна знайти пристрій у /devабо у висновку dmesg

FreeBSD

# mount -v -t cd9660 /dev/cd0c /mnt # Монтування диска Cdrom(Спосіб перший)# mount_cd9660 /dev/wcd0c /cdrom # Монтування диска Cdrom(Спосіб другий)# mount -v -t msdos /dev/fd0c /mnt # Дискет Запис в /etc/fstab: # Device Mountpoint FStype Options Dump Pass# /dev/acd0 /cdrom cd9660 ro,noauto 0 0 Дозволити користувачам встановлення дисків: # sysctl vfs.usermount=1 # Або впишіть рядок "vfs.usermount=1" in /etc/sysctl.conf

Linux

# mount -t auto /dev/cdrom /mnt/cdrom # Типова команда монтування диска cdrom # mount /dev/hdc -t iso9660 -r /cdrom # Монтування диска IDE # mount /dev/scd0 -t iso9660 -r /cdrom # Монтування диска SCSI cdrom# mount /dev/sdc0 -t ntfs-3g /windows # Монтування диска SCSI Запис у /etc/fstab: /dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

Монтування FreeBSD розділу з Linux

Подивіться номер розділу fdisk, зазвичай це кореневий розділ, але може бути і на іншому BSDслайсі. Якщо на розділі FreeBSD багато слайсів, їх не видно через fdisk, але їх можна знайти в dev/sda*або /dev/hda*. # fdisk /dev/sda # Знайти FreeBSD розділ/dev/sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt /dev/sda10 = /tmp; /dev/sda11 /usr # Інший слайс

Перемонтування

Перемонтувати пристрій без попереднього розмонтування, наприклад, fsck# mount -o remount,ro / # Linux # mount -o ro / # FreeBSD Копіювати потік даних з CDROM"а у файл ISO образу. # dd if=/dev/cd0c of=file.iso

Створення swap розділу на льоту

Припустимо вам потрібно збільшити swap розділ, скажімо до 2 гігабайт, /swap2gb(для Linux) # dd if=/dev/zero of=/swap2gb bs=1024k count=2000 # mkswap /swap2gb # Створити swap # swapon /swap2gb # Увімкнути swap, тепер його можна використовувати# swapoff /swap2gb # Вимкнути swap # rm /swap2gb

Монтування SMB розділу

CIFS- Common Internet File System SMB- server message blockПрипустимо вам потрібно отримати доступ до розшарованого SMBрозділу myshareна сервері smbserver, адреса набирається на Windows машині буде \\smbserver\myshare\. Монтувати будемо на /mnt/smbshare. Не забувайте, для cifsпотрібна IP-адреса або доменне ім'я.

Linux

# smbclient -U user -I 192.168.16.229 -L //smbshare/ # List the shares # mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare # mount -t cifs -o username=winuser, password=winpwd //192.168.16.229/myshare /mnt/share Крім того пакет mount.cifsдозволяє зберігати привілеї у файлі, наприклад /home/user/.smb: username=winuser password=winpwd І тепер монтуємо: # mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare

FreeBSD

Використовуйте ключ -I, щоб задати IP адресу (або DNS); smbserver, це ім'я Windows. # smbutil view -I 192.168.16.229 // [email protected] # Список розшарованих ресурсів# mount_smbfs -I 192.168.16.229 // [email protected]/myshare /mnt/smbshare

Монтувати образ

Linux loop-back

# mount -t iso9660 -o loop file.iso /mnt # Монтувати образ CD# mount -t ext3 -o loop file.img /mnt # Монтувати образ із файловою системою ext3

FreeBSD

Використовуючи md- пристрій пам'яті (якщо потрібно, зробіть kldload md.ko): # mdconfig -a -t vnode -f file.iso -u 0 # mount -t cd9660 /dev/md0 /mnt # umount /mnt; mdconfig -d -u 0 # Очистити пристрій пам'ятіАбо використовуючи псевдопристрій( VN, Virtual node): # vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt # umount /mnt; vnconfig -u /dev/vn0c # Очистити псевдопристрій

Створення та запис образу ISO

Копіюватимемо cd або dvd сектор за сектором. # dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc Використовуйте mkisofsщоб створити образ з файлу в директорії. Для подолання обмежень імен файлів використовуйте опцію -r, Що включає розширення RockRidge, основне для UNIX систем, -Jвключає Joliet, що використовується Microsoft, -Lдозволяє ISO9660імена, що починаються крапкою. # mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir У FreeBSD, mkisofsможна встановити з портів /usr/ports/sysutils/cdrtools.

Запис CD/DVD ISO образів

FreeBSD

FreeBSD не встановлює DMAна ATAPIпристрої, це можна зробити через змінну sysctlабо у файлі /boot/loader.conf, наступними записами. hw.ata.ata_dma="1" hw.ata.atapi_dma="1" Використовуйте burncdдля ATAPI пристроїв ( burncd, стандартна програма, частина базової системи) та cdrecord/usr/ports/sysutils/cdrtools) для SCSI пристроїв. # burncd -f /dev/acd0 data imagefile.iso fixate # Для ATAPI пристроїв# cdrecord -scanbus # Знайти рекордер # cdrecord dev=1,0,0 imagefile.iso

Linux

Також використовуйе cdrecord, як описано вище. Крім того, можна використовувати рідний ATAPI інтерфейс: # cdrecord dev=ATAPI -scanbus Записуйте, як було описано вище.

dvd+rw-tools

Пакет dvd+rw-tools (FreeBSD: ports/sysutils/dvd+rw-tools) має весь функціонал необхідний для роботи з DVD плюс growisofsдля запису CD або DVD. Документацію з прикладами можна знайти у FreeBSD handbook Розділ 18.7 # -dvd-compat закриває диск# growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # Записати існуючий iso образ # growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data # Записати безпосередньо

Конвертувати образ з файлу Nero .nrg у файл.iso

Nero додає до образу заголовок 300кб, його можна обрізати за допомогою dd. # dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300

Конвертувати образ bin/cue в.iso

Це можна зробити за допомогою невеликої програми, bchunk. У FreeBSD її можна знайти в портах /usr/ports/sysutils/bchunk. # bchunk imagefile.bin imagefile.cue imagefile.iso

Створення образу на основі файлу

Наприклад, розділ розміром 1Гб використовує файл /usr/vdisk.img. У цьому випадку ми використовуємо ключ -u 0але номер може бути будь-яким.

FreeBSD

# dd if = / dev / random of = / usr / vdisk.img bs = 1K count = 1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # Створюємо пристрій /dev/md1 # bsdlabel -w /dev/md0 # newfs /dev/md0c # mount /dev/md0c /mnt # umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img # Очистити mdОбраз створений з файлу може бути змонтований у процесі завантаження системи шляхом запису рядка в /etc/rc.confі /etc/fstab. Перевірити правильність налаштувань можна за допомогою команди /etc/rc.d/mdconfig start(попередньо видаливши пристрій md0за допомогою команди # mdconfig -d -u 0). Майте на увазі, що автоматичне монтування образу буде працювати, тільки якщо файл образу, лежить НЕ в кореневому розділі, тому що скрипт /etc/rc.d/mdconfigвиконується на ранній стадії завантаження, коли кореневий розділ ще не доступний запис. Образи розташовані поза кореневим розділом будуть змонтовані пізніше, скриптом /etc/rc.d/mdconfig2.
/boot/loader.conf: md_load="YES" /etc/rc.conf: mdconfig_md0="-t vnode -f /usr/vdisk.img" # /usrне в кореневому розділі/etc/fstab: (0 0 в кінці, дуже важливі, це вкаже fsckігнорувати перевірку пристрою, оскільки він ще не існує) /dev/md0 /usr/vdisk ufs rw 0 0
Крім того, згодом можна збільшити розмір образу, скажімо на 300 мегабайт. # umount /mnt; mdconfig -d -u 0 # dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # growfs /dev /md0 # mount /dev/md0c /mnt # Тепер файловий розділ на 300 мб більше

Linux

# dd if = / dev / zero of = / usr / vdisk.img bs = 1024k count = 1024 # mkfs.ext3 /usr/vdisk.img # mount -o loop /usr/vdisk.img /mnt # umount /mnt; rm /usr/vdisk.img # Очистити

Linux та losetup

/dev/zeroнабагато швидше, ніж urandom, але менш захищений для шифрування. # dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024 # losetup /dev/loop0 /usr/vdisk.img # Створити /dev/loop0 # mkfs.ext3 /dev/loop0 # mount /dev/loop0 /mnt # losetup -a # Перевірити # umount /mnt # losetup -d /dev/loop0 # Від'єднати # rm /usr/vdisk.img

Створення файлової системи у пам'яті

Файлова системау пам'яті дуже швидка, має сенс використовувати її для додатків із високим дисковим IO. Створимо розділ розміром 64 мб і змонтуємо його в /memdisk:

FreeBSD

# mount_mfs -o rw -s 64M md /memdisk # umount /memdisk; mdconfig -d -u 0 # Очистити mdпристрій md /memdisk mfs rw,-s64M 0 0 # запис у /etc/fstab

Linux

# mount -t tmpfs -osize=64m tmpfs /memdisk

Продуктивність дисків

Читання та запис 1гбфайлу у розділі ad4s3c (/home) # time dd if = / dev / ad4s3c of = / dev / null bs = 1024k count = 1000 # time dd if = / dev / zero bs = 1024k count = 1000 of = / home / 1Gb.file # hdparm -tT / dev/hda # Тільки Linux

Створенням розділів та файлових систем на них справа підготовки дискового простору до використання не закінчується. Усі створені файлові системи ще потрібно зробити доступними для FreeBSD. Для чого вони мають бути змонтовані - тобто включені в єдину ієрархію каталогів та файлів, для позначення якої також використовують назву файлової системи. Однак якщо раніше йшлося про фізичну організацію даних, то тепер настав час ознайомитися з її логікою.

Логіка файлової системи

Логічно файлова система FreeBSD (як і будь-якої Unix-системи) організована за деревоподібним принципом: в основі її лежить корінь (кореневий каталог, що позначається символом / і називається також root-каталогом; останнє не повинно плутати з каталогом /root , який виконує роль домашнього суперкористувача).

Від кореневого каталогу, який можна уподібнити швидше стовбуру дерева, відходять гілки - вкладені в нього підкаталоги, і пагони - звичайні файли. Останніх, правда, небагато: у версіях FreeBSD це ентропійний файл (/entropy) і файл з описом авторських прав на систему /COPYRIGHT .

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

У принципі ієрархія каталогів у всіх Unix-системах схожа, оскільки регламентується, по-перше, багаторічною традицією, по-друге - різного роду документами, що стандартизують, зокрема, FHS (Filesystem Hierarchy Standard), який нині доступний в російському перекладі (за який дякую Віктору Костроміну).

Стандарт FHS був розроблений спочатку для упорядкування структури каталогів у численних дистрибутивах Linux. І лише пізніше він був пристосований для інших Unix-подібних систем (зокрема і BSD-клану). Однак саме ієрархія каталогів FreeBSD може стати прикладом для зразкового дотримання духу FHS. А буквально штучні відступи у ній від його літери завжди функціонально обумовлені.

Стандарт FHS спочиває на двох основоположних принципах - чіткому відділенні у файловій ієрархії каталогів, що розділяються і нерозділяються, з одного боку, і незмінних і змінюваних - з іншого.

Протиставлення каталогів, що розділяються і нерозділяються, обумовлено спочатку мережевою природою Unix взагалі і FreeBSD зокрема. Тобто дані, що відносяться до локальної машини (наприклад, файли конфігурування її пристроїв) повинні лежати в каталогах, окремих від тих, вміст яких доступні з інших машин в мережі, локальної або глобальної (прикладом чого є не тільки дані користувача, а й програми) .

Суть протиставлення незмінних та змінних каталогів легко пояснити на прикладі. Так, ті ж програми користувача за своєю природою повинні бути незмінними (вірніше, доступними для модифікації тільки адміністратору системи, але не самому користувачеві, що застосовує їх у своїй роботі). В той же час ці програми при своїй роботі генерують не тільки файли даних, скажімо, тексти або зображення (змінна їх природа ясна без коментарів), але всякого роду службову інформацію, типу log-файлів, тимчасових файлів тощо). Яка і повинна групуватися в каталогах, відокремлених від файлів програм, необхідних для їх запуску бібліотек, конфігураційних файлів і т.д.

Чітке дотримання концепції відокремлення розділяються і нерозділяються, незмінних і незмінних каталогів один від одного дозволяє, в рамках єдиної деревоподібної файлової ієрархії, відокремити окремі її гілки фізично - тобто у вигляді самостійних файлових систем, розміщених на ізольованих пристроях (дисках, дискових слайс); в загальному випадку - і на віддалених, пов'язаних по мережі, носіях, але про це зараз не буде розмови). Резонів до того багато – і підвищення швидкодії, і збільшення надійності, і просто міркування зручності, – але й про них зараз не йтиметься. Тому що зараз для нас важливим є лише те, що ці гілки файлового древа повинні бути інкорпоровані в загальну файлову систему.

У Unix-системах будь-який файл (зокрема і каталог) упізнається системою за ім'ям, а, по унікальному ідентифікатору його записи у таблиці inodes. Існують засоби для того, щоб переглянути ці файлові ідентифікатори. Одне - команда ls з опцією -i , яка виведе ідентифікатори кожного іменованого файла. Дана для кореневого каталогу -

$ls -i /

вона покаже нам дещо несподівану картину (для спрощення з висновку виключені відомості про звичайні файли та символічні посилання в корені, а каталоги, що залишилися, відсортовані за їх ідентифікаторами):

2 ../ 2 ./ 2 dev/ 2 home/ 2 tmp/ 2 usr/ 2 var/ 3 cdrom/ 4 mnt/ 5 root/ 8257 dist/ 8258 bin/ 8294 proc/ 8295 sbin/ 16512 stand/6 2 boot/

З цього прикладу (що стосується файлової системи машини, на якій ці рядки пишуться) видно, що аж 7 каталогів мають однакові цифрові ідентифікатори, рівні 2. Постає питання, яка тут унікальність?

З першими двома елементами списку розібратися легко: ./ є позначення поточного каталогу (у разі кореневого), а../ - каталогу, батьківського стосовно поточного; а оскільки вище кореня у файловій ієрархії за визначенням нічого немає, останній позначає самого себе. Так що не дивно, що./ і../ мають один і той же ідентифікатор - це різні позначення (жорсткі посилання, або, інакше кажучи, імена, що дублюють) для одного і того ж, кореневого, каталогу.

А ось те, як здається на перший погляд, значення ідентифікатора для каталогів /dev , /home , /tmp , /usr , /var вимагає пояснення. Однак воно - просте: все це каталоги, в які змонтовані самостійні файлові системи, або розташовані на окремих пристроях - дискових партіях, як каталоги /home, /usr, /var, або віртуальні файлові системи, що не надбудовують будь-який реальний дисковий пристрій ( каталог /dev з файловою системою пристроїв і, в даному випадку, каталог /tmp , в який змонтована файлова система оперативної пам'яті, розмова про які ще належить). А оскільки таблиця inodes- Своя для кожної файлової системи, немає нічого дивного в тому, що корінь кожної з них ідентифікується числом 2 - нумерація inodesу них йде у власній системі відліку.

Так от, монтування - це і є включення файлової системи в якій-небудь з існуючих в кореневій системі каталог (не обов'язково безпосередньо в корені, він може бути будь-якої вкладеності, що проілюструється трохи нижче). Без цього каталоги та файли такої системи, що вмонтовується, просто недоступні. Це важливо розуміти, коли стикаєшся виразами на кшталт "створити файлову систему / usr". Зі сказаного вище очевидно, що створюється (командою newfs) просто абстрактна файлова система, а своє "ім'я" вона знаходить тільки в момент монтування в зазначений каталог.

Цікаво, що і ідентифікатор каталогу для монтування (він ще називається точкою монтування, mount point) знаходиться тільки в момент монтування. Щоб переконатись у цьому, проведемо простий експеримент. У каталозі /mnt , призначеному спеціально для монтування файлових систем, що тимчасово підключаються) можна побачити три підкаталоги - /mnt/disk , mnt/iso , /mnt/usb (це в моїй системі, я їх створив для власної зручності; спочатку каталог /mnt в FreeBSD порожній). При старті системи в них нічого не монтується, і звичайне їхнє стан - бути порожніми. Якщо переглянути їх ідентифікатори, то можна бачити щось на кшталт такого:

$ ls -i /mnt 18 диск/ 24 iso/ 19 usb/

Тепер візьмемо та змонтуємо в /mnt/usb флеш-накопичувач з USB-інтерфейсом (саме для цього я його і призначав) та повторимо перегляд. І бачимо:

18 диск/ 24 iso/ 2 usb/

Тобто ідентифікатори каталогів, що залишилися порожніми (/mnt/disk та /mnt/iso) не змінилися, а ідентифікатор каталогу /mnt/usb чарівним чином змінився на 2. Бо в момент монтування він став кореневим для своєї власної файлової системи та точкою відліку для обчислення inodesвсіх записаних у ній файлів.

Трохи відвернемося і згадаємо про жорсткі посилання, за допомогою яких одному й тому ж inodeі блокам даних, що відносяться до нього, можуть бути присвоєні різні імена. Тепер зрозуміло, чому всі такі файли-дублери повинні лежати в одній файловій системі: адже в різних файлових системах - своя нумерація, що не збігається. inodes, і ідентифікувати їх за номерами неможливо (інакше система відрізнила каталоги /usr і /var з нашого прикладу - адже імена файлів їй глибоко до лампочки). Для символічних посилань, які мають власні inode(власне, і майже нічого, крім них) зі своїми ідентифікаторами, що нумеруються у системі відліку файлової системи, в якій вони знаходяться, такого обмеження немає. І можуть символічні посилання лежати будь-де (у тому числі і на віддаленій машині - не тільки на іншому розділі).

Повернемося, проте, наприклад нашого кореневого каталогу. З усього розглянутого видно, що ціла низка його гілок лежить на окремих партицях і утворює власні файлові системи (власне, саме для цього ми створювали і ті, й інші). І, отже, всі вони потребують монтування.

Практика монтування

Цілям монтування служить команда mount, що виконується або в ході завантаження системи автоматично, або - вручну, з командного рядка. Власне, у повному розумінні автоматично в будь-якому випадку монтується лише коренева файлова система. Не обов'язково лежить на диску - при старті з rescue CD або іншого страхового носія вона може розташовуватися на віртуальному диску оперативної пам'яті.

Однак процес монтування кореневої файлової системи настільки ж неминучий, як перемога соціалізму у світовому масштабі: також, як соціалізм, не перемігши у світовому масштабі, просто втрачає здатність до існування (що ми нещодавно і спостерігали), так і ОС без кореневої системи існувати не може. У Linux це викликає kernel panic mode - приблизно той стан, який впали наші вожді років 20 тому. Правда, вони виявилися міцнішими за Linux"а і оклималися досить швидко - так що досі нас reboot"ят (або reboot? - а ми міцнішаємо:)). Втім, до справи монтування, яку я спробую вам зараз уявити, це не стосується.

Так ось, для монтування всіх файлових систем, крім кореневої, необхідно вжити деяких дій. Спочатку ми розглянемо, як виконати їх руками, а потім – як увічнити у відповідних конфігураційних файлах.

Отже, команда mount. Власне, це - ціле сімейство програм, кожна з якої покликана монтувати файлові системи певних типів - не тільки UFS, але і будь-який з FreeBSD, що підтримуються. Список таких дуже широкий - отримати про нього уявлення можна, переглянувши цей предмет каталог /sbin:

$ ls -1 /sbin/mount*

що дасть нам у відповідь

/sbin/mount_cd9660* /sbin/mount_devfs* /sbin/mount_ext2fs* /sbin/mount_fdescfs* /sbin/mount_linprocfs* /sbin/mount_mfs* /sbin/mount_msdosfs* /sbin/mount_nfs /sbin/mount_nullfs* /sbin/mount_procfs* /sbin/mount_std* /sbin/mount_udf* /sbin/mount_umapfs* /sbin/mount_unionfs*

Кожна команда з цього списку відповідає за монтування свого типу файлової системи, до яких ми повернемося надалі. А поки що помітимо тільки власне /sbin/mount , призначену для роботи з UFS та UFS2.

Викликана з командного рядка, вона вимагає двох аргументів - імені пристрою, що монтується, і точки монтування (тобто каталогу, в який повинна монтуватися файлова система, що лежить на ньому). Ім'я пристрою має позначати вже розмічену на існуючому BSD-слайсі патрицію із створеною на ній файловою системою UFS2 (UFS), наприклад,

$ mount /dev/ads0d /usr

змонтує файлову систему на вказаному розділі каталог /usr кореня файлового древа. Якщо файлова система на пристрої не створена або має тип, відмінний від UFS/UFS2, буде повідомлення про помилку - вказівка ​​на incorrect super block: на відміну від однойменної утиліти Linux, сама по собі команда mount у FreeBSD розпізнавати тип файлової системи не вміє.

До точки монтування пред'являються такі вимоги: а) каталог з таким ім'ям повинен існувати до моменту монтування; б) бути по можливості порожнім. Перше – обов'язково, друге ж – не зовсім. Монтування в каталог з будь-якими файлами пройде безперешкодно (пам'ятається, в Linux недавно це викликало крах системи), але весь його вміст стане недоступним аж до розмонтування. І якщо файли, в ньому містяться, відіграють істотну роль для будь-якої підсистеми, це може викликати будь-які негативні наслідки. Наприклад, якщо вміст каталогу /tmp буде блокований монтуванням туди будь-якої файлової системи під час роботи віконної системи X, результатом буде швидше за все крах X-сервера. Добре, що при необхідності можна здійснити об'єднане монтування (див. нижче).

У зазначеній формі монтування виконається з деякими умовчальними характеристиками: файлова система буде доступна для читання/запису як т.зв. noasync (тому, у якому операції з метаданими здійснюються синхронно, а операції з даними - асинхронно). Змінити це положення можна за допомогою значень опції -o. Їх досить багато, проте практично головними на цьому етапі для нас будуть:

  • async - забезпечить повністю асинхронний режим (незважаючи на грізні попередження у попередніх нотатках, я потім розповім про ситуацію, коли це може бути виправдано);
  • sync - навпаки, включення повністю синхронного режиму (щоправда, не дуже уявляю, навіщо це практично потрібно);
  • noatime - дуже корисна опція, яка запобігає оновленню атрибуту часу останнього доступу до файлів, чим чимало сприяє продуктивності;
  • rdonly - монтує файлову систему як для читання (іноді це буває необхідно);
  • union - та сама опція, яка дозволяє виконати об'єднане монтування, при якому колишній вміст каталогу mount point залишається видимим; правда - з деякими обмеженнями - див. man(8) mount.

Є ще кілька значень опції -o, що забороняють розміщення на змонтованій файловій системі файлів певних різновидів, наприклад виконуваних (-o noexec), файлів пристроїв (-o nodev) або файлів з т.зв. битому суїдності. Однак вони мають практичне значення в основному для адміністраторів серверів і служать цілям безпеки. На настільній же машині звичайною формою монтування буде щось на зразок цієї:

$ mount -o noatime /dev/ads0d /usr; $ mount -o noatime /dev/ads0e /var; $ mount -o noatime /dev/ads0f /home

Все сказане стосувалося лише монтування файлових систем FreeBSD. Однак на практиці часто виникає необхідність інкорпорації у її дерево каталогів файлових систем інших типів. Особливо часто це потрібно для ISO9660 (звичайна файлова система для всіх компакт-дисків, крім Macівських) і FATів різного роду. У цьому випадку відповідна нагода команда монтування повинна бути викликана явно, наприклад,

$ mount_cd9660 /dev/acd0 /cdrom

для монтування компакт-дисків, або

$ mount_msdosfs /dev/ad## /mnt

для FAT"а будь-якого роду (включаючи FAT32). Втім, зробити це можна і побічно, вказівкою команді mount опції -t тип_файлової_системи. Так, команда

$ mount -t ext2fs /dev/ad## /mnt/linux

змонтує файлову систему Linux (якщо відповідна можливість включена до ядра). При цьому стандартний mount для BSD-розділів просто підмінюється командою /mount_ext2fs, покликаною монтувати розділи ext2fs (і ext3fs теж - але, звичайно, без будь-яких функцій журналування). Тобто форма

$ mount -t fstype ... ...

буде повним еквівалентом команди

$mount_fstype ... ...

Усі операції з монтування файлових систем (у тому числі і на змінних носіях) у FreeBSD вимагають прав суперкористувача. У числі значень опції -o тут, на відміну від Linux-варіанту команди mount немає параметра -o user , що дозволяє монтування звичайним користувачам. Щоправда, є кілька способів обійти це, про що йдеться у спеціальному дописі.

Налаштування автоматичного монтування

Однак на практиці до ручного монтування вдаються тільки для файлових систем, що рідко використовуються. Всі принципово важливі для функціонування FreeBSD файлові системи монтуються автоматично при старті системи, а часто використовуються - у напівавтоматичному режимі.

Для автоматичного монтування програма mount запускається під час початкового завантаження з ініціалізаційних сценаріїв. Вона шукає свій конфігураційний файл - /etc/fstab , і монтує все, що у ньому виявить, за деякими (обумовленими нижче винятками).

Сам собою файл /etc/fstab генерується автоматично при установці FreeBSD, включаючи всі необхідні для забезпечення життєдіяльності файлові системи. Однак надалі він може правити вручну з метою внесення нових пристроїв для монтування або додаткових опцій для вже включених пристроїв.

Файл /etc/fstab - це простенька база даних у текстовому форматі (розподіл полів - пробілами або табуляцією), що включає такі поля:

  • Device - ім'я файлу пристрою, на якому розташована файлова система, аналогічно до першого аргументу команди mount при ручному її використанні;
  • Mountpoint – точка монтування (відповідає другому аргументу команди mount);
  • FStype - тип файлової системи, що вказується також, як значення опції -t;
  • Options - додаткові опції монтування, аналогічно значенням опції -o;
  • Dump - умови виконання резервного копіюванняфайлової системи утилітою утилітою dump;
  • Pass# - умови перевірки файлової системи утилітою fsck.

У свіжовстановленій FreeBSD /etc/fstab обов'язково включатиме наступні записи (приклад для 1-го слайсу Master-диска на 1-му IDE-каналі):

# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1b none swap sw 0 0

Якщо наслідувати поради резонних людей (і замовчуванням sysinstall) і виділити зі складу кореня деякі гілки файлової системи, до перерахованих додадуться (при автоматичній розмітці слайсу через sysinstall) ще й записи на кшталт

/dev/ad0s1d /var ufs rw 0 0 /dev/ad0s1e /usr ufs rw 0 0 /dev/ad0s1f /tmp ufs rw 0 0

/dev/ad0s1g /home ufs rw 0 0

відповідальна за файлову систему із домашніми каталогами користувачів.

Очевидно, що в полі Options можна додати будь-які доступні (і розумні) значення опції -o (через кому, без пробілів), наприклад, noatime для всіх файлових систем, а для /tmp - ще й async , адже вміст цього каталогу не передбачається збереження після перезавантаження.

Сказане вище стосувалося файлових систем, монтованих при старті автоматично. Однак ніхто не заважає зробити в / etc / fstab записи для систем, що підключаються час від часу - в цьому випадку їх можна буде монтувати за спрощеною схемою (саме це я мав на увазі вище під напівавтоматичним режимом). Так, для CD-накопичувача можна додати рядок (насправді він автоматично з'являється при генерації файлу /etc/fstab , якщо в sysinstall як джерело інсталяції вибирався CD)

/dev/acd0 /cdrom cd9660 ro,noauto 0 0

в якій опції, як неважко здогадатися, наказують відмову від монтування при старті (noauto) та режим "тільки для читання" (ro). Після чого для монтування CD достатньо вказати тільки mount point -

$ mount /cdrom

або. навпаки, ім'я файлу пристрою

$ mount /dev/acd0

Аналогічні записи можна зробити для всіх змінних накопичувачів (Zip, USB-драйвів, навіть флоппі-дисків) та для не-BSD розділів (FAT або Ext2fs). До речі сказати - монтувати файлові системи за спрощеною схемою можна відразу після внесення змін до /etc/fstab , не чекаючи перезавантаження машини.

Розмонтування

Усі файлові системи, що задіяні, перед вимиканням живлення або перезавантаженням машини в обов'язковому порядку повинні бути розмонтовані. При коректному завершенні роботи це здійснюється автоматично, внаслідок чого кожна з доступних для запису файлових систем отримує біт чистого розмонтування, що записується в її суперблоці. Наявність цього біта запобігає при наступному запуску системи перевірки файлових систем на несуперечність утилітою fsck.

Однак у ряді випадків (наприклад, при підключенні чи відключенні механізму Soft Updates або для перевірки на цілісність) виникає необхідність ручного розмонтування (і повторного монтування) файлових систем, для чого служить команда umount . Вона вимагає єдиного аргументу - вказівки точки монтування файлової системи, що "вилучається" з дерева каталогів, наприклад:

$ umount /tmp

або, як і у випадку з напівавтоматичним монтуванням, імені файлу "вимкненого" пристрою:

$ umount /dev/ad#s#?

Одним рядком можна розмонтувати кілька файлових систем:

$ umount /usr/var/home

А можна - всі змонтовані файлові системи або всі файлові системи, перелічені у файлі /etc/fstab (крім кореневої), для чого потрібні опції

$ umount -A

$ umount -a

відповідно. Є можливість розмонтування файлових систем певних типів шляхом вказівки значень опції -t . Так, команда

$ umount -t ufs

розмонтує тільки BSD-розділи, не торкнувшись CD і решти, що задіяно в системі.

Файлові системи в момент розмонтування не повинні використовуватися, тобто не повинно бути звернень до файлів, що на них знаходяться. Так, знаходження в якомусь каталозі файлової системи - достатня підстава для відмови в її розмонтуванні (з видачею повідомлення типу device busy), чому жодна з перерахованих вище команд і не зможе розмонтувати кореневу файлову систему. Приводом для відмови в розмонтуванні буде і зчитування файлу даних будь-якою програмою - як і при видаленні файлу, відкритий процесом дескриптор файлу зробити це не дозволить.

Втім, можна розмонтувати і файлову систему, що використовується - для цього команду umount потрібно дати з опцією -f (від force - тобто насильно). Щоправда, це може призвести до помилок, тому без гострої необхідності краще до неї не вдаватися. І на кореневу файлову систему опція примусового розмонтування впливу не вплине.

Масове монтування

Для продовження роботи після виконання низькорівневих операцій із файловими системами їх потрібно змонтувати назад. Це можна зробити не тільки без перезавантаження, але і без індивідуального нудного монтування. Достатньо вдатися до опції -a:

$mount-a

за допомогою якої будуть змонтовані всі файлові системи, для яких є записи /etc/fstab . При цьому буде зроблено спробу змонтувати і ті з них, які позначені прапором noauto. Для цього можна додатково визначити тип файлової системи. Тобто команда

$ mount -a -t ufs

змонтує тільки BSD-розділи, не роблячи замах на CD або флеш-накопичувачі. А можна, навпаки, виключити з процесу глобального монтування якісь із перелічених у /etc/fstab файлових систем, наприклад, непотрібні в даний момент FAT'и:

$ mount -a -t nomsdosfs

Преамбула замість ув'язнення

До слова сказати, команда mount без опцій та аргументів (а в такій формі, на відміну від усіх розглянутих вище випадків, її може дати і звичайний користувач) виведе список змонтованих в даний момент файлових систем із зазначенням точки монтування, умов та режиму роботи. Наприклад, для машини, на якій пишуться ці рядки, висновок її виглядатиме так:

/dev/ad0s1a on / (ufs, local, noatime, soft-updates) devfs on /dev (devfs, local) /dev/ccd0e on /var (ufs, local, noatime, soft-updates) /dev/ccd1e on / usr (ufs, local, noatime, soft-updates) /dev/ccd2e on /home (ufs, local, noatime, soft-updates) /dev/md0 on /tmp (ufs, local, noatime, async)

Перший рядок виводу показує, що партиція /dev/ad0s1a змонтована у нас у кореневому каталозі, несе на собі файлову систему UFS (конкретно в даному випадку - UFS2, але у виведенні команди mount вони не відрізняються) із задіяним механізмом Soft Updates, є локальною ( тобто розташована на диску цієї машини - мережні диски також монтуються командою mount) і не піддається оновленню атрибуту atime.

$ більше /etc/fstab /dev/ad0s1b none swap sw 0 0 /dev/ar0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw,noatime 1 1 /dev/ccd0e /var ufs rw,noatime 2 2 ccd1e /usr ufs rw,noatime 2 2 /dev/ccd2e /home ufs rw,noatime 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/da0s1 /mnt/usb ext2fs rw,noauto, dev/md0 /tmp mfs rw,noatime,async,-s32m 2 0

то побачимо, що одним із рядків виведення

Devfs on /dev (devfs, local)

взагалі немає відповідності серед його записів. Що це за пристрої та файлові системи?

Стандарт FHS був розроблений спочатку для упорядкування структури каталогів у численних дистрибутивах Linux. І лише пізніше він був пристосований для інших Unix-подібних систем (зокрема і BSD-клану). Однак саме ієрархія каталогів FreeBSD може стати прикладом для зразкового дотримання духу FHS. А буквально штучні відступи у ній від його літери завжди функціонально обумовлені.

Стандарт FHS спочиває на двох основоположних принципах - чіткому відділенні у файловій ієрархії каталогів, що розділяються і нерозділяються, з одного боку, і незмінних і змінюваних - з іншого.

Протиставлення каталогів, що розділяються і нерозділяються, обумовлено спочатку мережевою природою Unix взагалі і FreeBSD зокрема. Тобто дані, що відносяться до локальної машини (наприклад, файли конфігурування її пристроїв) повинні лежати в каталогах, окремих від тих, дані яких доступні з інших машин у мережі, локальної або глобальної (прикладом чому є не тільки дані користувача, а й програми) .

Суть протиставлення незмінних та змінних каталогів легко пояснити на прикладі. Так, ті ж програми користувача за своєю природою повинні бути незмінними (вірніше, доступними для модифікації тільки адміністратору системи, але не самому користувачеві, що застосовує їх у своїй роботі). В той же час ці програми при своїй роботі генерують не тільки файли даних, скажімо, тексти або зображення (змінна їх природа ясна без коментарів), але всякого роду службову інформацію, типу log-файлів, тимчасових файлів тощо). Яка і повинна групуватися в каталогах, відокремлених від файлів програм, необхідних для їх запуску бібліотек, конфігураційних файлів і т.д.

Чітке дотримання концепції відчленування поділяються і нерозділяються, незмінних і незмінних каталогів один від одного дозволяє, в рамках єдиної деревоподібної файлової ієрархії, відокремити окремі її гілки фізично - тобто у вигляді самостійних файлових систем, розміщених на ізольованих пристроях (дисках, дискових слайс); у загальному випадку — і на віддалених, пов'язаних по мережі, носіях, але про це зараз не буде розмови). Резонів до того багато — і підвищення швидкодії, і збільшення надійності, і просто міркування зручності, але про них зараз не йтиметься. Тому що зараз для нас важливим є лише те, що ці гілки файлового древа повинні бути інкорпоровані в загальну файлову систему.

У попередній замітці говорилося, що будь-який файл (у тому числі і каталог) упізнається системою не за її ім'ям, а за унікальним ідентифікатором його запису в таблиці inodes. Існують засоби для того, щоб переглянути ці файлові ідентифікатори. Одне — команда ls з опцією i, яка виведе ідентифікатори кожного іменованого файла. Дана для кореневого каталогу - $ls -i

вона покаже нам дещо несподівану картину (для спрощення з висновку виключені відомості про звичайні файли та символічні посилання в корені, а каталоги, що залишилися, відсортовані за їх ідентифікаторами) 2 ../ 2 ./ 2 dev/ 2 home/ 2 tmp/ 2 usr/ 2 var/ 3 cdrom/ 4 mnt/ 5 root/ 8257 dist/ 8258 bin/ 8294 proc/ 8295 sbin/ 16512 stand/ 24768 etc/ 24776 boot/

З цього прикладу (що стосується файлової системи машини, на якій ці рядки пишуться) видно, що аж 7 каталогів мають однакові цифрові ідентифікатори, рівні 2. Постає питання, яка тут унікальність?

З першими двома елементами списку розібратися легко: ./ є позначення поточного каталогу (у разі кореневого), а../ — каталогу, батьківського стосовно поточного; а оскільки вище кореня у файловій ієрархії за визначенням нічого немає, він позначає самого себе. Так що не дивно, що./ і../ мають один і той же ідентифікатор — це різні позначення (жорсткі посилання, або, інакше, імена, що дублюють) для одного і того ж, кореневого, каталогу.

А ось те, як здається на перший погляд, значення ідентифікатора для каталогів /dev, /home, /tmp, /usr, /var вимагає пояснення. Однак воно просте: все це каталоги, в які змонтовані самостійні файлові системи, або розташовані на окремих пристроях - дискових партіях, як каталоги /home, /usr, /var, або віртуальні файлові системи, що не надбудовують будь-який реальний дисковий пристрій ( каталог /dev з файловою системою пристроїв і, в даному випадку, каталог /tmp, в який змонтована файлова система в оперативній пам'яті, розмова про яку ще належить). Оскільки таблиця inodes — своя кожної файлової системи, немає нічого дивного у цьому, що корінь кожної їх ідентифікується числом 2 — нумерація inodes у яких йде у власній системі відліку.

Так ось, монтування - це і є включення файлової системи в якій-небудь з існуючих в кореневій системі каталог (не обов'язково безпосередньо в корені, він може бути будь-якої вкладеності, що проілюструється трохи нижче). Без цього каталоги та файли такої системи, що вмонтовується, просто недоступні. Це важливо розуміти, коли стикаєшся на вирази на кшталт «створити файлову систему /usr». Зі сказаного вище очевидно, що створюється (командою newfs) просто абстрактна файлова система, а своє «ім'я» вона знаходить тільки в момент монтування в зазначений каталог.

Цікаво, що і ідентифікатор каталогу для монтування (він ще називається точкою монтування, mount point) знаходиться тільки в момент монтування. Щоб переконатись у цьому, проведемо простий експеримент. У каталозі /mnt, призначеному спеціально для монтування файлових систем, що тимчасово підключаються, можна побачити три підкаталоги - /mnt/disk, mnt/iso, /mnt/usb (це в моїй системі, я їх створив для власної зручності; спочатку каталог /mnt в FreeBSD порожній). При старті системи в них нічого не монтується, і звичайне їхнє стан — бути порожніми. Якщо переглянути їх ідентифікатори, то можна бачити щось на кшталт: $ ls -i1 /mnt 16:46 ttyp0 18 disk/ 24 iso/ 19 usb/

Тепер візьмемо та змонтуємо в /mnt/usb флеш-накопичувач з USB-інтерфейсом (саме для цього я його і призначав) та повторимо перегляд. І бачимо: 18 disk/ 24 iso/ 2 usb/

Тобто ідентифікатори каталогів, що залишилися порожніми (/mnt/disk та /mnt/iso) не змінилися, а ідентифікатор каталогу /mnt/usb чарівним чином змінився на 2. Бо в момент монтування він став кореневим для своєї власної файлової системи та точкою відліку для обчислення inodes всіх записаних на ній файлів.

Трохи відвернемося і згадаємо про жорсткі посилання, за допомогою яких одному і тому ж inode і блокам даних, що відносяться до нього, можуть бути присвоєні різні імена. Тепер зрозуміло, чому всі такі файли-дублери повинні лежати в одній файловій системі: адже в різних файлових системах — своя нумерація inodes, що не збігається, і ідентифікувати їх за номерами неможливо (інакше як би система відрізнила каталоги /usr і /var з нашого прикладу - адже імена файлів їй глибоко до лампочки). Для символічних посилань, що мають власні inode (власне, і нічого, крім них) зі своїми ідентифікаторами, що нумеруються в системі відліку файлової системи, в якій вони знаходяться, такого обмеження немає. І можуть символічні посилання лежати будь-де (у тому числі і на віддаленій машині — не тільки на іншій партиції).

Повернемося, проте, наприклад нашого кореневого каталогу. З усього розглянутого видно, що ціла низка його гілок лежить на окремих партицях і утворює власні файлові системи (власне, саме для цього ми створювали і ті, й інші). І, отже, всі вони потребують монтування.9. Практика монтування

Цілям монтування служить команда mount, що виконується або в ході завантаження системи автоматично, або вручну, з командного рядка. Власне, у повному розумінні автоматично в будь-якому випадку монтується лише коренева файлова система. Не обов'язково лежить на диску - при старті з rescue CD або іншого страхового носія вона може розташовуватися на віртуальному диску в оперативній пам'яті. Однак процес монтування кореневої файлової системи настільки ж неминучий, як перемога соціалізму у світовому масштабі: також, як соціалізм, не перемігши у світовому масштабі, просто втрачає здатність до існування (що ми нещодавно і спостерігали), так і ОС без кореневої системи існувати не може. У Linux це викликає kernel panic mode — приблизно той стан, який впали наші вожді років 20 тому. Правда, вони виявилися міцнішими за Linux"а і оклималися досить швидко - так що досі нас reboot"ят (або reboot? - а ми міцнішаємо:)). Втім, до справи монтування, яку я спробую вам зараз уявити, це не стосується.

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

Отже, команда mount. Власне, це — ціле сімейство програм, кожна з якої покликана монтувати файлові системи певних типів — не тільки UFS, але й будь-який з FreeBSD, що підтримуються. Список таких дуже широкий - отримати про нього уявлення можна, переглянувши на цей предмет каталог / sbin: $ ls / sbin / mount *

що дасть нам у відповідь /sbin/mount /sbin/mount_msdosfs /sbin/mount_smbfs /sbin/mount_cd9660 /sbin/mount_nfs /sbin/mount_std /sbin/mount_devfs /sbin/mount_ntfs /sbin/mount_udf / sbin/mount_umapfs /sbin/mount_fdescfs /sbin/mount_nwfs /sbin/mount_unionfs /sbin/mount_linprocfs /sbin/mount_portalfs /sbin/mount_mfs /sbin/mount_procfs

Кожна команда з цього списку відповідає за окремий тип файлової системи, до яких ми повернемося надалі. А поки що помітимо тільки власне /sbin/mount, призначену для роботи з UFS та UFS2.

Викликана з командного рядка, вона вимагає двох аргументів - імені пристрою, що монтується, і точки монтування (тобто каталогу, в який повинна монтуватися файлова система, що лежить на ньому). Ім'я пристрою має позначати вже розмічену на існуючому BSD-слайсі патрицію із створеною на ній файловою системою UFS2 (UFS), наприклад $ mount /dev/ads0d /usr

змонтує файлову систему на вказаному розділі каталог /usr кореня файлового древа. Якщо файлова система на пристрої не створена або має тип, відмінний від 4.2BSD, піде повідомлення про помилку - вказівка ​​на incorrect super block: на відміну від однойменної утиліти Linux, сама по собі команда mount у FreeBSD розпізнавати тип файлової системи не вміє.

До точки монтування пред'являються такі вимоги: а) каталог з таким ім'ям повинен існувати до моменту монтування; б) бути по можливості порожнім. Перше обов'язково, друге ж не зовсім. Монтування в каталог з будь-якими файлами пройде безперешкодно (пам'ятається, в Linux недавно це викликало крах системи), але весь його вміст стане недоступним аж до розмонтування. І якщо файли, в ньому містяться, відіграють істотну роль для будь-якої підсистеми, це може викликати будь-які негативні наслідки. Наприклад, якщо вміст каталогу /tmp буде блокований монтуванням туди будь-якої файлової системи під час роботи віконної системи X, результатом буде швидше за все крах X-сервера. Добре, що при необхідності можна здійснити об'єднане монтування (див. нижче).

У зазначеній формі монтування виконається з деякими умовчальними характеристиками: файлова система буде доступна для читання/запису як т.зв. noasync (тому, у якому операції з метаданими здійснюються синхронно, а операції з даними — асинхронно). Змінити це положення можна за допомогою значень опції -o. Їх досить багато, проте практично головними на цьому етапі для нас будуть:

  • async - забезпечить повністю асинхронний режим (не дивлячись на грізні попередження в попередніх нотатках, я потім розповім про ситуацію, коли це може бути виправдано);
  • sync - Навпаки, включення повністю синхронного режиму (правда, не дуже уявляю, навіщо це практично потрібно);
  • noatime — дуже корисна опція, яка запобігає оновленню атрибуту часу останнього доступу до файлів, чим чимало сприяє продуктивності;
  • rdonly - монтує файлову систему в режимі тільки для читання (іноді це необхідно);
  • union - та сама опція, яка дозволяє виконати об'єднане монтування, при якому колишній вміст каталогу mount point залишається видимим; правда – з деякими обмеженнями – див. man (8) mount.

Є ще кілька значень опції -o, що забороняють розміщення на змонтованій файловій системі файлів певних різновидів, наприклад, здійсненних (-o noexec), файлів пристроїв (-o nodev) або файлів з т.зв. біт суїдності (-o nosuid), проте вони мають практичне значення в основному для адміністраторів серверів і служать цілям безпеки. На настільній машині звичайною формою монтування буде щось на зразок цієї: $ mount -o noatime /dev/ads0d /usr; $ mount -o noatime /dev/ads0e /var; $ mount -o noatime /dev/ads0f /home

Все сказане стосувалося лише монтування файлових систем FreeBSD. Однак на практиці часто виникає необхідність інкорпорації у її дерево каталогів файлових систем інших типів. Особливо часто це потрібно для ISO9660 (звичайна файлова система для всіх компакт-дисків, крім Macівських) і FATів різного роду. У цьому випадку відповідна нагода команда монтування повинна бути викликана явно, наприклад $ mount_cd9660 /dev/acd0 /cdrom

для монтування компакт-диску, або $ mount_msdosfs /dev/ad## /mnt

для FAT"а будь-якого роду (включаючи FAT32). Втім, зробити це можна і побічно, вказівкою команді mount опції -t тип_файлової_системи. Так, команда $ mount -t ext2fs /dev/ad## /mnt/linux

змонтує файлову систему Linux (якщо відповідна можливість включена до ядра). При цьому стандартний mount для BSD-розділів просто підмінюється командою /mount_ext2fs, покликаною монтувати розділи ext2fs (і ext3fs теж - але, звичайно, без будь-яких функцій журналування). Тобто форма $mount-t fstype...

буде повним еквівалентом команди $mount_fstype...

Усі операції з монтування файлових систем (у тому числі і на змінних носіях) у FreeBSD вимагають прав суперкористувача. У числі значень опції -o тут, на відміну від Linux-варіанту команди mount, немає параметра user, що дозволяє монтування звичайним користувачам. Щоправда, є кілька способів обійти це, але зараз говорити про них недоречно. Налаштування автоматичного монтування

Однак на практиці до ручного монтування вдаються тільки для файлових систем, що рідко використовуються. Всі принципово важливі для функціонування FreeBSD файлові системи монтуються автоматично при старті системи, а часто використовуються - в напівавтоматичному режимі.

Для автоматичного монтування програма mount запускається під час початкового завантаження з ініціалізаційних сценаріїв. Вона шукає свій конфігураційний файл - /etc/fstab, і монтує все, що в ньому виявить, за деякими (обумовленими нижче винятками).

Сам собою файл /etc/fstab генерується автоматично при установці FreeBSD, включаючи всі необхідні для забезпечення життєдіяльності файлові системи. Однак надалі він може керуватися вручну з метою внесення нових пристроїв для монтування або додаткових опцій для вже включених пристроїв.

Файл /etc/fstab — це простенька база даних у текстовому форматі (розподіл полів — пробілами або табуляцією), що включає такі поля:

  • Device — ім'я файлу пристрою, на якому розташована файлова система, аналогічно до першого аргументу команди mount при ручному її використанні;
  • Mountpoint - точка монтування (відповідає другому аргументу команди mount);
  • FStype - тип файлової системи, що вказується також, як значення опції -t;
  • Options - додаткові опції монтування, аналогічно значенням опції -o;
  • Dump – умови виконання резервного копіювання файлової системи утилітою утилітою dump;
  • Pass# - умови перевірки файлової системи утилітою fsck.

У свіжовстановленій FreeBSD /etc/fstab обов'язково включатиме наступні записи (приклад для 1-го слайсу Master-диска на 1-му IDE-каналі): # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1b none swap sw 0 0

Якщо наслідувати поради резонних людей (і замовчуванням sysinstall) і виділити зі складу кореня деякі гілки файлової системи, до перерахованих додадуться (при автоматичній розмітці слайсу через sysinstall) ще й записи на кшталт /dev/ad0s1d /var ufs rw 0 0 /dev/ad0 usr ufs rw 0 0 /dev/ad0s1f /tmp ufs rw 0 0

відповідальна за файлову систему із домашніми каталогами користувачів.

Очевидно, що в полі Options можна додати будь-які доступні (і розумні) значення опції -o (через кому, без пробілів), наприклад, noatime для всіх файлових систем, а для /tmp - ще й async, адже вміст цього каталогу не передбачається збереження після перезавантаження.

Сказане вище стосувалося файлових систем, монтованих при старті автоматично. Однак ніхто не заважає зробити в / etcfstab записи для систем, що підключаються час від часу - в цьому випадку їх можна буде монтувати за спрощеною схемою (саме це я і мав на увазі вище під напівавтоматичним режимом). Так, для CD-накопичувача можна додати рядок (насправді він автоматично з'являється при генерації файлу /etc/fstab) /dev/acd0 /cdrom cd9660 ro,noauto 0 0

в якій опції, як неважко здогадатися, наказують відмову від монтування при старті (noauto) і режим «тільки для читання» (ro). Після чого для монтування CD достатньо буде вказати тільки mount point – $ mount /cdrom

Аналогічні записи можна зробити для всіх змінних накопичувачів (Zip, USB-драйвів, навіть флоппі-дисків) та для не-BSD розділів (FAT або Ext2fs). До речі, монтувати файлові системи за прощеною схемою можна відразу після внесення змін до /etc/fstab, не чекаючи перезавантаження машини.

Усі файлові системи, що задіяні, перед вимиканням живлення або перезавантаженням машини в обов'язковому порядку повинні бути розмонтовані. При коректному завершенні роботи це здійснюється автоматично, у результаті кожна з доступних для запису файлових систем (вірніше, партиція, що її несе) отримує біт чистого розмонтування у своєму суперблоці.

Однак у ряді випадків (наприклад, при підключенні чи відключенні механізму Soft Updates або для перевірки на цілісність) виникає необхідність ручного розмонтування (і повторного монтування) файлових систем, для чого служить команда umount. Вона вимагає єдиного аргументу - вказівки точки монтування файлової системи, що «вилучається» з дерева каталогів, наприклад: $ umount /tmp

Одним рядком можна розмонтувати кілька файлових систем: $umount/usr/var/home

А можна - всі змонтовані файлові системи або всі файлові системи, перелічені у файлі /etc/fstab (крім кореневої), для чого будуть потрібні опції $ umount -A

або $ umount -a

відповідно. Є можливість розмонтування файлових систем певних типів шляхом вказівки значень опції -t. Так, команда $umount-t ufs

розмонтує тільки BSD-розділи, не торкнувшись CD і решти, що задіяно в системі.

Файлові системи в момент розмонтування не повинні використовуватися, тобто не повинно бути звернень до файлів, що на них знаходяться. Так, знаходження в якомусь каталозі файлової системи - достатня підстава для відмови в її розмонтуванні (з видачею повідомлення типу device busy), чому жодна з перерахованих вище команд і не зможе розмонтувати кореневу файлову систему. А ось зчитування файлу даних якоюсь програмою - не привід для відмови розмонтувати систему, що несе цей файл (адже при цьому в загальному випадку спілкування між файлом у пам'яті і файлом на диску відбувається тільки в момент запису змін.

Втім, можна розмонтувати і файлову систему, що використовується — для цього команду umount потрібно дати з опцією -f. Щоправда, це може призвести до помилок, тому без гострої необхідності краще до неї не вдаватися. І на кореневу файлову систему опція примусового розмонтування впливу не зробить. Масове монтування

Для продовження роботи після виконання низькорівневих операцій із файловими системами їх потрібно змонтувати назад. Це можна зробити не тільки без перезавантаження, але і без індивідуального нудного монтування. Достатньо вдатися до опції -a: $ mount -a

за допомогою якої будуть змонтовані всі файлові системи, для яких є записи /etc/fstab. При цьому буде зроблено спробу змонтувати і ті з них, які позначені прапором noauto. Для цього можна додатково визначити тип файлової системи. Тобто команда $mount-a-t ufs

змонтує тільки BSD-розділи, не роблячи замах на CD або флеш-накопичувачі. А можна, навпаки, виключити з процесу глобального монтування якісь із перелічених у /etc/fstab файлових систем, наприклад, непотрібні в даний момент FAT'и: $ mount -a -t nomsdosfs Преамбула замість укладання

До слова сказати, команда mount без опцій та аргументів (а в такій формі, на відміну від усіх розглянутих вище випадків, її може дати і звичайний користувач) виведе список змонтованих в даний момент файлових систем із зазначенням точки монтування, умов та режиму роботи. Наприклад, для машини, на якій пишуться ці рядки, висновок її виглядатиме так: /dev/ad0s1a on / (ufs, local, noatime, soft-updates) devfs on /dev (devfs, local) /dev/ccd0e on /var (ufs, local, noatime, soft-updates) /dev/ccd1e on /usr (ufs, local, noatime, soft-updates) /dev/ccd2e on /home (ufs, local, noatime, soft-updates) /dev/ md0 on /tmp (ufs, local, noatime, async)

Перший рядок виводу показує, що партиція /dev/ad0s1a змонтована у нас у кореневому каталозі, несе на собі файлову систему UFS (конкретно в даному випадку — UFS2, але у виведенні команди mount вони не відрізняються) із задіяним механізмом Soft Updates, є локальною ( тобто розташована на диску цієї машини - мережні диски також монтуються командою mount) і не піддається оновленню атрибута atime.

А ось далі йдуть рядки для пристроїв та файлових систем, про які не було мови у попередніх оповіданнях. Більше того, якщо ми подивимося на відповідний конфігурації готівки файл /etc/fstab: $ more /etc/fstab /dev/ad0s1b none swap sw 0 0 /dev/ar0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw, 1 /dev/ccd0e /var ufs rw,noatime 2 2 /dev/ccd1e /usr ufs rw,noatime 2 2 /dev/ccd2e /home ufs rw,noatime 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 dev/da0s1 /mnt/usb ext2fs rw,noauto,noatime 0 0 /dev/md0 /tmp mfs rw,noatime,async,-s32m 2 0

то побачимо, що одним із рядків виводу (devfs on /dev (devfs, local) взагалі немає відповідності серед його записів. Що це за пристрої та файлові системи?

Щодо пристроїв типу /dev/ccd0? скажу поки що, що це програмні RAID-масиви (докладніше про них буде говорити пізніше). А ось devfs і mfs — віртуальні файлові системи, про які безпосередньо в наступній замітці.

2021 wisemotors.ru. Як це працює. Залізо. Майнінг. Криптовалюта.