MiniHowTo: FreeBSD монтирование дисков. FreeBSD: Автомонтирование файловых систем NFS и SMBFS с помощью AMD Монтирование usb дисков в freebsd 11




Главная > Операционные системы > UNIX > BSD > FreeBSD

Добавить жесткий диск в FreeBSD за 5 минут

Часто обращаю внимание на то, что простые вопросы чаще всего мало освещены в интернете. Наверное, это потому, что все гуру уверены, что никто никогда не задаст таких глупых вопросов, ведь это знает каждый. Но моя практика показала, что именно такие мелкие простые вопросы самые частые не только у новичков, а и у серьезных администраторов, которым просто не приходилось иметь с этим дела. Даже серьезные администраторы не делают это каждый день, а, чтобы не забыть, ведут некую шпаргалку для себя, никому в этом не признаваясь. Давайте все исправим. Сейчас Вы узнаете, как за 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 Материал взят с сайта:

Часто обращаю внимание на то, что простые вопросы чаще всего мало освещены в интернете. Наверное, это потому, что все гуру уверены, что никто никогда не задаст таких глупых вопросов, ведь это знает каждый. Но моя практика показала, что именно такие мелкие простые вопросы самые частые не только у новичков, а и у серьезных администраторов, которым просто не приходилось иметь с этим дела. Даже серьезные администраторы не делают это каждый день, а, чтобы не забыть, ведут некую шпаргалку для себя, никому в этом не признаваясь. Давайте все исправим. Сейчас Вы узнаете, как за 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

На этом настройка завершена.

Их нужно смонтировать, а когда все необходимые действия будут выполнены — размонтировать. Обычно для монтирования / размонтирования используются команды 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 \\\/\\\/user@smbserver/share1 ${fs}"; share2 type:=program;fs:=${autodir}/${path};mount:="/sbin/mount mount -t smbfs \\\/\\\/user@smbserver/share2 ${fs}";

Указанные правила заставят amd монтировать общие папки к точке монтирования ${autodir} (переменная ${autodir} содержит имя альтернативной папки) командами /sbin/mount -t smbfs //user@smbserver/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 //user@smbserver/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.

от