<!--
     The FreeBSD Russian Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/disks/chapter.sgml,v 1.5 2001/02/21 08:45:39 andy Exp $
     Original revision: 1.25
-->


<chapter id="disks">
  <title>Диски</title>

  <sect1 id="disks-synopsis">
    <title>Краткий обзор</title>

    <para>Эта глава посвящена использованию дисков, как физических, так и
      построенных на основе микросхем памяти и сетевых, в системе
      FreeBSD.</para>
  </sect1>

  <sect1 id="disks-bios-numbering">
    <title>Нумерация дисков в BIOS</title>

    <para>Вам необходимо изучить этот вопрос перед тем, как устанавливать и
      настраивать FreeBSD на вашей машине, особенно если у вас имеется
      несколько дисков.</para>

    <para>В случае PC под управлением DOS или других зависимых от BIOS
      операционных систем (WINxxx), BIOS может скрывать обычный порядок
      следования дисков, и операционная система не замечает этого.  Это
      позволяет пользователю загружаться с диска, отличного от так
      называемого <quote>основного первичного</quote>.	Это особенно удобно
      тем пользователям, которые находят, что самый простым и дешевым
      способом создания резервных копий является покупка второго винчестера,
      идентичного первому, и выполнение регулярных копий первого диска на
      второй при помощи программ Ghost или XCOPY.  В таком случае, если
      первый диск ломается, подвергается атаке вируса или портится из-за
      дефекта в операционной системе, он может быть легко восстановлен просто
      указанием BIOS логически поменять диски местами.	Это похоже на
      переключение кабелей на винчестерах, но без разборки корпуса.</para>

    <para>Более дорогие системы с контроллерами SCSI часто включают
      расширения BIOS, которые точно также позволяют изменить порядок
      следования до семи дисков SCSI.</para>

    <para>Пользователь, который привык пользоваться этой возможностью, может
      быть удивлен результатом попытки ею воспользоваться с FreeBSD.
      FreeBSD не использует BIOS и не знает о <quote>логическом
      переназначении дисков BIOS</quote>.  Это может привести к очень
      запутанной ситуации, особенно когда диски идентичны по физическим
      параметрам и к тому же являлись клонами друг друга.</para>

    <para>При работе с FreeBSD, всегда настраивайте BIOS на естественный
      порядок нумерации дисков до установки FreeBSD, и оставляйте эту
      настройку.  Если вам нужно поменять диски местами, делайте это, но
      самым сложным способом, открывая корпус машины и переключая кабели и
      перемычки.</para>

    <sidebar>
      <title>Пример из Удивительных приключений Билла и Фреда:</title>

      <para>Билл пожертвовал стареньким Wintel-компьютером под машину FreeBSD
	для Фреда.  Билл задал единственный винчестер SCSI как устройство
	SCSI номер ноль и установил на него FreeBSD.</para>

      <para>Фред начал работать с системой, однако после нескольких дней
	работы заметил, что старый диск SCSI сообщает о множестве программных
	ошибок, и сообщил об этом Биллу.</para>

      <para>Спустя еще несколько дней Билл, решив выделить некоторое время на
	решение этой проблемы, взял идентичный диск SCSI со "склада"
	винчестеров в кладовке.  Первичное сканирование поверхности
	показало нормальное функционирование, так что Билл устанавливает этот
	диск как устройство SCSI номер четыре, и выполняет копирование образа
	с диска номер ноль на диск с номером четыре.  Теперь, после того, как
	новый диск был установлен и начал нормально работать, Билл решает,
	что хорошо бы начать использовать его, поэтому он воспользовался
	возможность в SCSI BIOS изменить порядок следования дисков для
	загрузки системы с устройства SCSI номер четыре.  FreeBSD загружается
	и работает прекрасно.</para>

      <para>Фред продолжает свою работу еще несколько дней, и вскоре Билл и
	Фред решают, что пришло время для нового испытания -- обновления до
	новой версии FreeBSD.  Билл убрал диск SCSI номер ноль, потому что
	он был несколько поврежден, и заменил его другим идентичным диском со
	"склада".  Затем Билл установил новую версию FreeBSD на новый диск
	SCSI с номером ноль при помощи волшебных дискет Фреда с поддержкой
	FTP через Интернет.  Установка прошла нормально.</para>

      <para>Фред продолжает использовать новую версию FreeBSD несколько дней и
	решает, что она достаточно хороша для использования в инженерном
	отделе...  самое время скопировать всю его работу со старой версии.
	Так что Фред монтирует устройство SCSI номер четыре (самая последняя
	копия старой версии FreeBSD).  Фред с ужасом обнаруживает, что
	никаких следов его работы на диске SCSI номер четыре нет.</para>

      <para>Куда же исчезли данные?</para>

      <para>Когда Билл делал копию образа исходного диска SCSI номер ноль на
	диск SCSI номер четыре, диск номер четыре стал "новым клоном".	Когда
	Билл изменил порядок следования дисков в SCSI BIOS, чтобы загружаться
	с диска SCSI номер четыре, он обманул этим только самого себя.
	FreeBSD продолжала работать с диска SCSI номер ноль.  Выполнение
	подобных изменений в BIOS приведет к тому, что все или некоторые
	компоненты кода начальной загрузки будут браться с указанного диска
	BIOS, но когда очередь доходит до драйверов ядра FreeBSD, нумерация
	дисков BIOS игнорируется, и FreeBSD возвращается обратно к обычной
	схеме нумерации дисков.  В приведенном примере система продолжала
	работать с начальным диском SCSI номер ноль, и все данные Фреда
	оставались здесь, а не на устройстве SCSI номер четыре.  Тот факт,
	что система запускалась с диска SCSI номер четыре, был просто обманом
	человеческих ожиданий.</para>

      <para>Мы хотим отметить, что при этом феномене не был уничтожен или
	утерян ни один байт данных.  Старый диск SCSI номер ноль был забран
	из мусорки и вся работа Фреда была восстановлена (и теперь Билл
	знает, что он умеет считать до нуля).</para>

      <para>Хотя в этом примере использовались диски SCSI, общая идея
	применима и для устройств IDE.</para>
    </sidebar>
  </sect1>

  <sect1 id="disks-naming">
    <title>Именование дисков</title>

    <para>Физически диски существуют в двух разновидностях,
      <acronym>IDE</acronym> или <acronym>SCSI</acronym>; однако есть диски,
      работа с которыми выполняется RAID-контроллерами, представляющие собой
      микросхемы памяти и так далее.  Так как такие устройства ведут себя
      несколько иначе, они имеют собственные драйверы и им соответствуют
      другие устройства.</para>

    <table id="disk-naming-physical-table">
      <title>Соглашения по наименованию физических дисков</title>

      <tgroup cols="2">
      <thead>
	<row>
	  <entry>Тип устройства</entry>
	  <entry>Имя, соответствующее устройству</entry>
	</row>
      </thead>

      <tbody>
	<row>
	  <entry>Диски IDE</entry>
	  <entry><literal>ad</literal> в 4.0-RELEASE,
	    <literal>wd</literal> до 4.0-RELEASE.</entry>
	</row>

	<row>
	  <entry>Приводы IDE CDROM</entry>
	  <entry><literal>acd</literal>, начиная с 3.1-RELEASE,
	    <literal>wcd</literal> до 4.0-RELEASE.</entry>
	</row>

	<row>
	  <entry>Диски SCSI</entry>
	  <entry><literal>da</literal>, начиная с 3.0-RELEASE,
	    <literal>sd</literal> до 3.0-RELEASE.</entry>
	</row>

	<row>
	  <entry>Приводы SCSI CDROM</entry>
	  <entry><literal>cd</literal></entry>
	</row>

	<row>
	  <entry>Различные нестандартные приводы CDROM</entry>
	  <entry><literal>mcd</literal> для Mitsumi CD-ROM,
	    <literal>scd</literal> для Sony CD-ROM,
	    <literal>matcd</literal> для Matsushita/Panasonic CD-ROM
	  </entry>
	</row>

	<row>
	  <entry>Дисководы</entry>
	  <entry><literal>fd</literal></entry>
	</row>

	<row>
	  <entry>Ленточные устройства SCSI</entry>
	  <entry><literal>sa</literal>, начиная с 3.0-RELEASE,
	    <literal>st</literal> до 3.0-RELEASE.</entry>
	</row>

	<row>
	  <entry>Ленточные устройства IDE</entry>
	  <entry><literal>ast</literal>, начиная с 4.0-RELEASE,
	    <literal>wst</literal> до 4.0-RELEASE.</entry>
	</row>

	<row>
	  <entry>Флэш-диски</entry>
	  <entry><literal>fla</literal> для устройств флэш-памяти DiskOnChip,
	    начиная с 3.3-RELEASE.</entry>
	</row>

	<row>
	  <entry>Диски RAID</entry>
	  <entry><literal>myxd</literal> для Mylex и <literal>amrd</literal>
	    для AMI MegaRAID, <literal>idad</literal> для Compaq Smart RAID,
	    начиная с 4.0-RELEASE.  <literal>id</literal> от 3.2-RELEASE до
	    4.0-RELEASE.</entry>
	</row>
      </tbody>
      </tgroup>
    </table>

    <sect2>
      <title>Слайсы и разделы</title>

      <para>Физические диски обычно разбиты на <firstterm>слайсы</firstterm>,
	кроме случаев, когда они подготовлены в режиме <quote>dangerously
	dedicated</quote>.  Номер слайса следует за именем устройства и
	предваряется буквой <literal>s</literal>:
	<quote>da0<emphasis>s1</emphasis></quote>.</para>

      <para>Слайсы, физические диски, подготовленные для режима
	<quote>dangerously dedicated</quote>, и другие диски содержат
	<firstterm>разделы</firstterm>, которые обозначаются буквами от
	<literal>a</literal> до <literal>h</literal>.  Буква
	<literal>b</literal> зарезервирована для раздела подкачки, а
	<literal>c</literal> для особого раздела, равного по размеру
	полному слайсу или диску.  Это описано в <xref
	linkend="disks-adding" />.</para>
    </sect2>
  </sect1>

  <sect1 id="disks-mounting">
    <title>Монтирование и размонтирование файловых систем</title>

    <para>Файловую систему лучше всего рассматривать как дерево, корень
      которого, как обычно, находится в <filename>/</filename>.
      <filename>/dev</filename>, <filename>/usr</filename> и другие каталоги
      в корневом каталоге являются ветками, которые могут иметь собственные
      ветви, такие, как <filename>/usr/local</filename> и так далее.</para>

    <para>Есть несколько причин размещать некоторые из этих каталогов в
      раздельных файловых системах.  <filename>/var</filename> содержит
      журналы, очереди и различные типы временных файлов, поэтому может быть
      заполнена до отказа.  Заполнение корневой файловой системы
      нежелательно, так что отделение <filename>/var</filename> от
      <filename>/</filename> зачастую бывает весьма полезно.</para>

    <para>Другим общим соображением при размещении отдельных деревьев
      каталогов в других файловых системах является их размещение на
      отдельных физических дисках или отдельных виртуальных дисках, таких,
      как точки монтирования <link linkend="nfs">сетевой файловой
      системы</link> или привода CDROM.</para>

    <sect2 id="disks-fstab">
      <title>Файл fstab</title>

      <para>Во время <link linkend="boot">процесса загрузки</link> файловые
	системы, перечисленные в <filename>/etc/fstab</filename>, монтируются
	автоматически (если при них не указан флаг
	<option>noauto</option>).</para>

      <para>Файл <filename>/etc/fstab</filename> состоит из строк следующего
	формата:</para>

      <programlisting>
<replaceable>device</replaceable> <replaceable>/mount-point</replaceable> <replaceable>fstype</replaceable>	  <replaceable>options</replaceable>	  <replaceable>dumpfreq</replaceable>	  <replaceable>passno</replaceable>
      </programlisting>

      <para><literal>device</literal> являются именем устройства (которое
	должно существовать) вида, описанного выше в главе о <link
	linkend="disks-naming">соглашениях по именованию
	дисков</link>.</para>

      <para><literal>mount-point</literal> является каталогом (который должен
	существовать), в который будет смонтирована файловая система.</para>

      <para><literal>fstype</literal> является типом файловой системы для
	передачи в &man.mount.8;.  По умолчанию во FreeBSD файловая система
	имеет тип <literal>ufs</literal>.</para>

      <para>В качестве параметров <literal>options</literal> указывается
	<option>rw</option> для файловых систем, доступных по чтению-записи,
	или <option>ro</option> для файловых систем, доступных только для
	чтения, за которым следует любое количество других параметров, могущих
	быть нужными.  Часто используемым параметром является опция
	<option>noauto</option> для файловых систем, которые обычно
	не монтируются во время загрузки.  Другие параметры описаны на
	странице справочника по &man.mount.8;.</para>

      <para><literal>dumpfreq</literal> определяет количество дней для
	обязательного создания архивной копии файловой системы, а
	<literal>passno</literal> задает номер прохода, при котором
	файловая система была смонтирована во время процесса загрузки.</para>
    </sect2>

    <sect2 id="disks-mount">
      <title>Команда mount</title>

      <para>Команда &man.mount.8; является тем, что необходимо использовать
	для монтирования файловых систем.</para>

      <para>В ее самой простой форме она используется так:</para>

      <informalexample>
	<screen>
&prompt.root; <userinput>mount <replaceable>device</replaceable> <replaceable>mountpoint</replaceable></userinput>
	</screen>
      </informalexample>

      <para>Как отмечено на справочной странице по команде &man.mount.8;, она
	имеет массу параметров, но наиболее часто используются
	следующие:</para>

      <variablelist>
	<title>Параметры команды mount</title>

	<varlistentry>
	  <term><option>-a</option></term>

	  <listitem>
	    <para>Смонтировать все файловые системы, перечисленные в файле
	      <filename>/etc/fstab</filename>, с модификациями по параметру
	      <option>-t</option>, если он задан.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-d</option></term>

	  <listitem>
	    <para>Сделать все, кроме собственно монтирования файловой
	      системы.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-f</option></term>

	  <listitem>
	    <para>Принудительно смонтировать файловую систему.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-r</option></term>

	  <listitem>
	    <para>Смонтировать файловую систему в режиме только для
	      чтения.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-t</option>
	    <replaceable>fstype</replaceable></term>

	  <listitem>
	    <para>Смонтировать указанную файловую систему как файловую
	      систему указанного типа, или смонтировать файловые системы
	      только указанного типа, если задан параметр
	      <option>-a</option>.</para>

	    <para>По умолчанию используется тип файловой системы
	      <quote>ufs</quote>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-u</option></term>

	  <listitem>
	    <para>Обновить параметры монтирования файловой системы.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-v</option></term>

	  <listitem>
	    <para>Выдавать подробный журнал.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-w</option></term>

	  <listitem>
	    <para>Смонтировать файловую систему в режиме доступа как для
	      чтения, так и для записи.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <para>Опция <option>-o</option> принимает список разделенных запятыми
	параметров, включая следующее:</para>

      <variablelist>
	<varlistentry>
	  <term>nodev</term>

	  <listitem>
	    <para>Не обрабатывать специальные устройства в файловой системе.
	      Опция, полезная с точки зрения обеспечения безопасности.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>noexec</term>

	  <listitem>
	    <para>Запретить выполнение бинарных файлов на этой файловой
	      системе.	Опция, полезная с точки зрения обеспечения
	      безопасности.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>nosuid</term>

	  <listitem>
	    <para>Не обрабатывать флаги установки выполнения файлов с
	      привилегиями их владельцев и групп в этой файловой системе.
	      Опция, полезная с точки зрения обеспечения безопасности.</para>
	  </listitem>
	</varlistentry>
      </variablelist>
    </sect2>

    <sect2 id="disks-umount">
      <title>Команда umount</title>

      <para>Команда umount воспринимает в качестве параметра либо точку
	монтирования, либо имя устройства, либо параметры <option>-a</option>
	или <option>-A</option>.</para>

      <para>Все формы воспринимают параметр <option>-f</option> для
	принудительного размонтирования и <option>-v</option> для вывода
	подробного журнала.</para>

      <para>Флаги <option>-a</option> и <option>-A</option> используются для
	размонтирования всех смонтированных файловых систем, возможно с
	учетом типов файловых систем, перечисленных после
	<option>-t</option>.  Однако при использовании опции
	<option>-A</option> не будет предприниматься попытка размонтировать
	корневую файловую систему.</para>
    </sect2>
  </sect1>

  <sect1 id="disks-adding">
    <title>Добавление дисков</title>

    <para><emphasis>Изначальный текст предоставил &a.obrien; 26 апреля
      1998 года</emphasis></para>

    <para>Предположим, что мы хотим установить новый диск SCSI на машину,
      имеющую в данный момент только один диск.  Сначала выключим компьютер и
      установим диск в компьютер согласно инструкциям к компьютеру,
      контроллеру и от производителя диска.  Из-за большого разнообразия
      этих процедур их рассмотрение выходит за рамки этого документа..</para>

    <para>Войдите в систему как пользователь <username>root</username>.
      После того, как вы установили диск, просмотрите файл
      <filename>/var/run/dmesg.boot</filename>, чтобы убедиться, что новый
      диск был найден.	Продолжая наш пример, только что добавленный диск
      будет называться <filename>da1</filename> и мы хотим смонтировать его
      в каталог <filename>/1</filename> (если вы добавляете диск IDE, он
      будет называться <filename>wd1</filename> в системах, предшествующих
      4.0, и <filename>ad1</filename> в большинстве систем 4.X).</para>

    <para>Так как FreeBSD работает на IBM-PC совместимых компьютерах, она
      должна принимать во внимание разделы PC BIOS.  В этом заключается
      отличие от традиционных разделов BSD.  Диск PC может иметь до четырех
      записей разделов BIOS.  Если диск на самом деле будет использоваться
      исключительно под FreeBSD, вы можете использовать режим
      <emphasis>dedicated</emphasis>.  В противном случае FreeBSD будет
      располагаться в одном из разделов PC BIOS.  Во FreeBSD разделы PC BIOS
      называются <emphasis>слайсами</emphasis>, чтобы не путать их с
      традиционными разделами BSD.  Вы также можете использовать слайсы и с
      диском, предназначенным исключительно для FreeBSD, однако используемым
      в компьютере, на котором имеется дополнительная операционная система.
      Это нужно для того, чтобы не было путаницы с утилитой
      <command>fdisk</command> другой операционной системы.</para>

    <para>В случае слайсов диск будет добавлен как
      <filename>/dev/da1s1e</filename>.  Это интерпретируется следующим
      образом: диск SCSI, устройство номер 1 (второй диск SCSI), слайс 1
      (раздел PC BIOS 1), и раздел BSD <filename>e</filename>.	В случае
      использования в выделенном режиме диск будет добавлен просто как
      <filename>/dev/da1e</filename>.</para>

    <sect2>
      <title>Использование утилиты sysinstall</title>

      <para>Вы можете использовать простые меню утилиты
	<command>/stand/sysinstall</command> для разбиения на разделы и
	разметки нового диска.	Войдите как пользователь
	<username>root</username> или воспользуйтесь командой
	<command>su</command>.	Запустите команду
	<command>/stand/sysinstall</command> и войдите в меню
	<literal>Configure</literal>.  Внутри <literal>FreeBSD Configuration
	Menu</literal>, пролистайте и выберите пункт
	<literal>Partition</literal>.  После этого должен быть выдан список
	установленных в вашей системе дисков.  Если вы не увидите в списке
	<literal>da1</literal>, то вам нужно повторно проверить физическое
	подключение и посмотреть вывод команды <command>dmesg</command> в
	файле <filename>/var/run/dmesg.boot</filename>.</para>

      <para>Выберите <literal>da1</literal>, чтобы войти в <literal>Редактор
	разделов FDISK</literal>.  Выберите <literal>A</literal> для того,
	чтобы использовать под FreeBSD полностью весь диск.  Когда будет
	задан вопрос о том, хотите ли вы <quote>сохранить совместимость с
	другими возможными операционными системами в будущем</quote>,
	ответьте <literal>YES</literal>.  Запишите изменения на диск при
	помощи команды <command>W</command>.  А теперь выйдите из редактора
	FDISK при помощи команды <command>q</command>.	В этот момент вам
	будет задан вопрос о главной загрузочной записи.  Так как вы
	добавляете диск к уже работающей системе, выберите
	<literal>None</literal>.</para>

      <para>После этого войдите в меню <literal>Disk Label Editor</literal>.
	Здесь вы создадите традиционные разделы BSD.  На диске может быть
	до восьми разделов, имеющих метки a-h.	Некоторые из меток разделов
	имеют особый смысл.  Раздел <literal>a</literal> используется для
	размещения корневого раздела (<filename>/</filename>).	По этой
	причине только ваш системный диск (например, тот, с которого
	происходит загрузка), должен иметь раздел <literal>a</literal>.
	Раздел <literal>b</literal> используется под раздел подкачки, и вы
	можете иметь много дисков с разделами подкачки.  Раздел
	<literal>c</literal> используется для доступа ко всему диску в
	режиме эксклюзивного использования или ко всему слайсу FreeBSD при
	работе в режиме с использованием слайсов.  Остальные разделы имеют
	обычное предназначение.</para>

      <para>Редактор метки диска программы sysinstall использует раздел
	<literal>e</literal> для некорневого раздела и не для раздела
	подкачки.  Внутри редактора метки диска создайте отдельную файловую
	систему при помощи команды <command>C</command>.  Когда будет задан
	вопрос о том, будет ли это раздел с файловой системой (FS) или
	это будет раздел подкачки, выберите <literal>FS</literal> и укажите
	точку монтирования (например, <filename>/mnt</filename>).  При
	добавлении диска после установки системы, программа sysinstall не
	будет автоматически создавать записи в файле
	<filename>/etc/fstab</filename>, поэтому точка монтирования не так уж
	и важна.</para>

      <para>Теперь вы готовы записать новую метку на диск и создать на нем
	файловую систему.  Сделайте это, нажав клавишу <command>W</command>.
	Проигнорируйте ошибки от sysinstall о невозможности смонтировать
	новый раздел.  Полностью выйдите из редактора метки диска и из
	программы sysinstall.</para>

      <para>Последний шаг заключается в редактировании файла
	<filename>/etc/fstab</filename> и добавлении записи для вашего нового
	диска.</para>
    </sect2>

    <sect2>
      <title>Использовании утилит командной строки</title>

      <sect3>
	<title>Работа со слайсами</title>

        <para>Следующая настройка позволит вашему диску корректно работать с
          другими операционными системами, которые могут быть установлены на
          вашем компьютере, и не вызовет конфликта с утилитами fdisk других
          операционных систем.  Этот способ рекомендуется использовать для
          установок новых дисков.  Используйте <literal>выделенный</literal>
          режим если только у вас есть реальные причины делать это!</para>

        <screen>
&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
&prompt.root; <userinput>fdisk -BI da1</userinput> # Инициализируем новый диск.
&prompt.root; <userinput>disklabel -B -w -r da1s1 auto</userinput> # Размечаем его.
&prompt.root; <userinput>disklabel -e da1s1</userinput> # Теперь редактируем только что созданную метку диска и добавляем разделы.
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>newfs /dev/da1s1e</userinput> # Повторяем этот шаг для всех созданных разделов.
&prompt.root; <userinput>mount -t ufs /dev/da1s1e /1</userinput> # Монтируем раздел(ы)
&prompt.root; <userinput>vi /etc/fstab</userinput> # В конце концов добавляем соответствующую запись/записи в файл <filename>/etc/fstab</filename>.
        </screen>

        <para>Если у вас установлен диск IDE, подставьте
          <filename>ad</filename> вместо <filename>da</filename>.  На системах
          версий ранее 4.x используйте <filename>wd</filename>.</para>
      </sect3>

      <sect3>
	<title>Выделенный режим</title>

	<para>Если вы не будете использовать новый диск совместно с другой
	  операционной системой, то вы можете использовать режим
	  <literal>эксклюзивного</literal> использования.  Отметьте, что этот
	  режим может ввести в заблуждение операционные системы от Microsoft;
	  однако информацию они не разрушат.  А вот OS/2 от фирмы IBM будет
	  <quote>забирать себе</quote> любой раздел, который она найдет и не
	  сможет распознать.</para>

	<screen>
&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
&prompt.root; <userinput>disklabel -Brw da1 auto</userinput>
&prompt.root; <userinput>disklabel -e da1</userinput>				# create the `e' partition
&prompt.root; <userinput>newfs -d0 /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput>				# add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput>
	</screen>

	<para>Альтернативный метод заключается в следующем:</para>

	<screen>
&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 count=2</userinput>
&prompt.root; <userinput>disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin</userinput>
&prompt.root; <userinput>newfs /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput>					# add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput>
	</screen>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="disks-virtual">
    <title>Виртуальные диски: сетевые, файловые системы в памяти и на основе
      файлов
    Network, Memory, and File-Based Filesystems</title>

    <para>Кроме дисков, которые вы физически устанавливаете в ваш компьютер;
      дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и
      другие типы дисков - <firstterm>виртуальные диски</firstterm>.</para>

    <para>Сюда могут быть отнесены сетевые файловые системы, такие, как
      <link linkend="nfs">Network Filesystem</link> и Coda, а также файловые
      системы с организацией в памяти, такие, как <link
      linkend="disks-md">md</link> и файловые системы, созданные в файле с
      помощью <link linkend="disks-vnconfig">vnconfig</link>.</para>

    <sect2 id="disks-vnconfig">
      <title>vnconfig: файловая система в файле</title>

      <para>&man.vnconfig.8; конфигурирует и позволяет использовать дисковые
	устройства на основе псевдо-устройств vnode.
	<firstterm>vnode</firstterm> представляет собой файл и отвечает за
	работу с файлом.  Это означает, что &man.vnconfig.8; использует файлы
	для создания и работы с файловой системой.  Одним из возможных
	способов использования является монтирование образов дискет или
	образов компакт-дисков, сброшенных в файлы.</para>

      <para>Чтобы смонтировать имеющийся образ файловой системы:</para>

      <example>
	<title>Использование vnconfig для монтирования имеющегося образа
	  файловой системы</title>

	<screen>
&prompt.root; <userinput>vnconfig vn<replaceable>0</replaceable> <replaceable>diskimage</replaceable></userinput>
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput>
	</screen>
      </example>

      <para>Для создания нового образа файловой системы с помощью
	vnconfig:</para>

      <example>
	<title>Создание нового диска в файле с помощью vnconfig</title>

	<screen>
&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>newimage</replaceable> bs=1k count=<replaceable>5</replaceable>k</userinput>
5120+0 records in
5120+0 records out
&prompt.root; <userinput>vnconfig -s labels -c vn<replaceable>0</replaceable> <replaceable>newimage</replaceable></userinput>
&prompt.root; <userinput>disklabel -r -w vn<replaceable>0</replaceable> auto</userinput>
&prompt.root; <userinput>newfs vn<replaceable>0</replaceable>c</userinput>
Warning: 2048 sector(s) in last cylinder unallocated
/dev/rvn0c:	10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
	5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
 32
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem  1K-blocks	  Used	  Avail Capacity  Mounted on
/dev/vn0c	 4927	     1	   4532     0%	  /mnt
	</screen>
      </example>
    </sect2>

    <sect2 id="disks-md">
      <title>md: Файловая система в памяти</title>

      <para>md это простой и эффективный способ создания файловых систем в
	оперативной памяти.</para>

      <para>Просто возьмите файловую систему, которую вы приготовили при
	помощи, скажем, &man.vnconfig.8; и:</para>

      <example>
	<title>Диск md в памяти</title>

	<screen>
&prompt.root; <userinput>dd if=<replaceable>newimage</replaceable> of=/dev/md<replaceable>0</replaceable></userinput>
5120+0 records in
5120+0 records out
&prompt.root; <userinput>mount /dev/md<replaceable>0c</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem  1K-blocks	  Used	  Avail Capacity  Mounted on
/dev/md0c	 4927	     1	   4532     0%	  /mnt</screen>
      </example>
    </sect2>
  </sect1>

  <sect1 id="quotas">
    <title>Квотирование дискового пространства</title>

    <para>Квоты - это опциональная возможность операционной системы, которая
      позволяет ограничивать объем дискового пространства и/или количество
      файлов для конкретного пользователя или членов определенной группы
      в рамках одной файловой системы.	Чаще всего эта возможность
      используется в системах разделения времени, когда желательно ограничить
      количество ресурсов, которые может использовать один пользователь или
      группа пользователей.  Это позволит не допустить ситуации, когда
      один пользователь заполняет все доступное дисковое пространство.</para>

    <sect2>
      <title>Настройка вашей системы на использование дисковых квот</title>

      <para>Перед тем, как попытаться использовать дисковые квоты, необходимо
	убедиться, что квоты включены в вашем ядре.  Это делается добавлением
	следующей строки в конфигурационный файл вашего ядра:</para>

      <programlisting>
options QUOTA
      </programlisting>

      <para>В стандартном ядре <filename>GENERIC</filename> это по умолчанию
	не включено, так что для использования дисковых квот вам нужно будет
	настроить, откомпилировать и установить собственное ядро.
	Пожалуйста, обратитесь к разделу <link
	linkend="kernelconfig">Настройка ядра FreeBSD</link> за
	дополнительной информацией о настройке ядра.</para>

      <para>Затем вам потребуется включить квотирование дисков в файле
	<filename>/etc/rc.conf</filename>.  Это делается добавление такой
	строчки:</para>

      <programlisting>
enable_quotas=<quote>YES</quote>
      </programlisting>

      <para>Для более полного контроля над запуском квотирования имеется
	дополнительная переменная для настройки.  Как правило, при загрузке
	целостность квот каждой файловой системы проверяется программой
	<command>quotacheck</command>.	При работе программы
	<command>quotacheck</command> проверяется точное соответствие данных
	в базе данных квот данным в файловой системе.  Это весьма долгий
	процесс, что отражается на времени загрузки системы.  Если вам
	захочется пропустить этот шаг, то для этого предназначена специальная
	переменная:</para>

      <programlisting>
check_quotas=<quote>NO</quote>
      </programlisting>

      <para>Если вы работаете с FreeBSD версий до 3.2-RELEASE, то настройка
	делается проще, и она состоит только из одной переменной.  Задайте
	следующее в вашем файле <filename>/etc/rc.conf</filename>:</para>

      <programlisting>
check_quotas=<quote>YES</quote>
      </programlisting>

      <para>Наконец, вам потребуется отредактировать файл
	<filename>/etc/fstab</filename> для включения дисковых квот на
	уровне файловых систем.  Это то место, где вы можете включить квоты
	для пользователей, для групп или для обеих этих категорий для всех
	ваших файловых систем.</para>

      <para>Для включения пользовательских квот для файловой системы,
	добавьте параметр <literal>userquota</literal> в поле параметров
	файловой системы, на которой вы хотите включить квотирование, в файле
	<filename>/etc/fstab</filename>.  Например:</para>

      <programlisting>
/dev/da1s2g   /home    ufs rw,userquota 1 2
      </programlisting>

      <para>Подобным же образом для включения квотирования на уровне групп,
	воспользуйтесь параметром <literal>groupquota</literal> вместо
	ключевого слова <literal>userquota</literal>.  Чтобы включить
	квотирование как для пользователей, так и для групп, измените
	строчку следующим образом:</para>

      <programlisting>
/dev/da1s2g    /home	ufs rw,userquota,groupquota 1 2
      </programlisting>

      <para>По умолчанию файлы квот хранятся в корневом каталоге файловой
	системы в файлах с именами <filename>quota.user</filename> и
	<filename>quota.group</filename> соответственно для пользовательских
	и групповых квот.  Для получения подробной информации обратитесь к
	команде <command>man fstab</command>.  Хотя эта страница справочника
	утверждает, что вы можете указать другое местоположение файлов с
	квотами, этого делать не рекомендуется, потому что различные утилиты
	для работы с квотами не могут нормально работать в такой
	ситуации.</para>

      <para>На этом этапе вы должны перезагрузить вашу систему с новым ядром.
	Скрипт <filename>/etc/rc</filename> автоматически запустит
	соответствующие команды для создания начальных файлов для всех квот,
	которые вы создали в файле <filename>/etc/fstab</filename>, так что
	нет нужды вручную создавать никаких файлов квот нулевой длины.</para>

      <para>При нормальной работе вам не потребуется вручную запускать
	программы <command>quotacheck</command>, <command>quotaon</command>
	или <command>quotaoff</command>.  Однако вам нужно хотя бы прочесть
	страницы справочника просто чтобы ознакомиться с их функциями.</para>
    </sect2>

    <sect2>
      <title>Установка квот</title>

      <para>Как только вы настроили вашу систему на использование квот,
	проверьте, что они действительно были задействованы.  Простым
	способом сделать это является запуск такой команды:</para>

      <screen>
&prompt.root; <userinput>quota -v</userinput>
      </screen>

      <para>Вы должны увидеть однострочную информацию, отражающую
	использование диска и текущие ограничения для каждой файловой
	системы, на которой включено квотирование.</para>

      <para>Теперь вы действительно готовы задавать ограничения при помощи
	команды <command>edquota</command>.</para>

      <para>У вас есть несколько вариантов того, как приводить в действие
	ограничения по объему дискового пространства, который могут занимать
	пользователь или группа, а также по количеству файлов, которые они
	могут создать.	Вы можете ограничивать размещение ресурсов на основе
	объема дискового пространства (квотирование блоков), количества
	файлов (квотирование inode) или их комбинации.	Каждое из этих
	ограничений, в свою очередь, делится на две категории; мягкие и
	жесткие ограничения.</para>

      <para>Жесткое ограничение не может быть превышено.  Как только
	пользователь достиг своих ограничений, ресурсы соответствующей
	файловой системы ему больше выделяться не будут.  Например, если
	пользователь имеет жесткое ограничение в 500 блоков на файловой
	системе и в текущий момент он использует 490 блоков, то
	пользователь может получить дополнительно еще 10 блоков.  Попытка
	получить еще 11 блоков окончится неудачно.</para>

      <para>С другой стороны, мягкие ограничения могут быть превышены в
	течении некоторого периода времени.  Этот период времени также
	называют периодом отсрочки, который по умолчанию равен одной неделе.
	Если пользователь превышает свое мягкое ограничение в течении периода
	времени, превышающего отсрочку, то это мягкое ограничение становится
	жестким и последующее выделение ресурсов будет запрещено.  Когда
	пользователь вернется обратно к отметке, меньшей, чем мягкое
	ограничение, то период отсрочки будет сброшен.</para>

      <para>Далее приводится пример того, что вы можете наблюдать при
	запуске команды <command>edquota</command>.  Когда вызывается команда
	<command>edquota</command>, вы оказываетесь в редакторе, заданном
	переменной переменной окружения <envar>EDITOR</envar>, или в
	редакторе <command>vi</command>, если переменная
	<envar>EDITOR</envar> не задана, и можете редактировать квоты.</para>

      <screen>
&prompt.root; <userinput>edquota -u test</userinput>
      </screen>

      <programlisting>
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
	inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
	inodes in use: 0, limits (soft = 50, hard = 60)
      </programlisting>

      <para>Для каждой файловой системы, на которой включено квотирование,
	вы должны увидеть две строки.  В одной строке приведены ограничения
	на блоки, а в другой на количество inode.  Например, чтобы увеличить
	ограничения на количество блоков для пользователей с мягкого
	ограничения в 50 и жесткого ограничения в 75, на мягкое ограничение
	в 500 и жесткое ограничение в 600, измените:</para>

      <programlisting>
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
      </programlisting>

      <para>на:</para>

      <programlisting>
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
      </programlisting>

      <para>Новые ограничения вступят в силу после выхода из
	редактора.</para>

      <para>Иногда желательно установить ограничения квот на некоторый
	диапазон идентификаторов пользователей.  Это можно сделать при
	помощи параметра <option>-p</option> в команде
	<command>edquota</command>.  Во-первых, установите желаемое
	ограничение для пользователя, а затем запустите команду
	<command>edquota -p protouser startuid-enduid</command>.  Например,
	если пользователь <username>test</username> имеет желаемые
	ограничения, то для дублирования этих ограничений на пользователей с
	идентификаторами от 10000 до 19999 может быть использована такая
	команда:</para>

      <screen>
&prompt.root; <userinput>edquota -p test 10000-19999</userinput>
      </screen>

      <para>Обратитесь к <command>man edquota</command> за более подробной
	информацией.</para>
    </sect2>

    <sect2>
      <title>Проверка ограничений и использования диска</title>

      <para>Для проверки квот и использования дисков вы можете использовать
	команды <command>quota</command> или <command>repquota</command>.
	Команда <command>quota</command> может быть использована для проверки
	квот отдельных пользователей, групп, а также использования дисков.
	Только администратор системы может проверять квоты и использование
	диска другими пользователями и группами.  Команду
	<command>repquota</command> можно использовать для получения
	суммарной статистики всех квот и использования дисков для файловых
	систем с включенными квотами.</para>

      <para>Далее приведен пример вывода команды <command>quota -v</command>
	для пользователя, который имеет ограничения на двух файловых
	системах.</para>

      <programlisting>
Disk quotas for user test (uid 1002):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
	   /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75 	      0      50      60
      </programlisting>

      <para>В этом примере для файловой системы <filename>/usr</filename>
	пользователь превысил свое мягкое ограничение в 50 блоков на 15
	блоков и имеет 5 дней до истечения отсрочки.  Отметьте знак
	звездочки <literal>*</literal>, который указывает на превышение
	пользователем своего ограничения.</para>

      <para>Как правило, файловые системы, на которых пользователь не
	занимает дискового пространства, не показываются в выводе команды
	<command>quota</command>, даже если они ему выделена квота на
	этой файловой системе.	При использовании параметра
	<option>-v</option> эти файловые системы выводятся, как, например,
	файловая система <filename>/usr/var</filename> в примере выше.</para>
    </sect2>

    <sect2>
      <title>Квоты в NFS NFS</title>

      <para>Квоты определяются подсистемой квот на сервере NFS.  Даемон
	&man.rpc.rquotad.8; предоставляет информацию о квотах для программы
	&man.quota.1; на клиентах NFS, позволяя пользователям на этих машинах
	смотреть свою статистику о квотах.</para>

      <para>Включите <command>rpc.rquotad</command> в файле
	<filename>/etc/inetd.conf</filename> следующим образом:</para>

      <programlisting>
rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
      </programlisting>

      <para>Теперь перезапустите <command>inetd</command>:</para>

      <screen>
&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput>
      </screen>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
