Подготовка нового жесткого диска в Linux

Если вы купили новый жесткий диск, то мало того чтобы его подключить, нужно так же создать на нем файловую систему, разделить на разделы и примонтировать, конечно тем пользователям, которые давно администрируют линукс уже «не глядя» могут сделать подобное, но для новичков это целая наука. Я в данной статье попытался рассмотреть более понятно весь этот процесс.

Нахождение дисков в системе

Наша система видит все устройства как файлы, эти файлы-устройства находятся в каталоге /dev (по моим догадкам от слова device - устройство). Чтобы посмотреть диски напишем команду просмотра объектов в директории, с маской hd* или sd*

ls /dev/hd*

Пример:

indpavel@indserver:~$ ls /dev/hd*
/dev/hda  /dev/hda1  /dev/hda2  /dev/hda3  /dev/hda5  /dev/hdb

На данном примере хорошо видно что у меня 2 диска hda и hdb, так же система отобразила как отдельные устройства логические диски hda1 hda2 hda3 hda5 которые находятся на физическом диске hda

Linux видит сидиромы и жесткие диски IDE как устройство hd*#, где * - это буквенный идентификатор физического диска например a,b,c hda hdb hdc, а # это числоыой идентификатор логического диска, например hda1 hda2 hda3
SATA и Flash диски обычно видятся как sd*#

Этот вариант не самый прекрасный, гораздо красивее использовать утилиту fdisk
Вводим следующую команду

indpavel@indserver:~$ sudo fdisk -l
[sudo] password for indpavel:

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x490f70f5

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        2432    19535008+  83  Linux
/dev/hda2            2433        3040     4883760    5  Extended
/dev/hda3            3041        9729    53729392+  83  Linux
/dev/hda5            2433        3040     4883728+  82  Linux swap / Solaris

Disk /dev/hdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/hdb doesn't contain a valid partition table

то что находится ниже строки «Disk /dev/hda: 80.0 GB, 80026361856 bytes» относится к диску hda на 80 гигабайт
то что находится ниже строки «Disk /dev/hdb: 320.0 GB, 320072933376 bytes» относится к диску hdb на 320 гигабайт

Думаю понять все это не сложно, на данном листинге видно что первый диск разделен у меня на 4 раздела, а второй диск не разделен на диски, так же из строки «Disk /dev/hdb doesn't contain a valid partition table» мы видим что этот диск не имеет разделов, следовательно это наш целевой новый диск на 320 гигов

Создаем разделы

Разделы создаются все той же утилиткой fdisk для этого в параметрах надо указать какой диск нам нужен (физический)
из прошлого раздела статьи (Нахождение дисков) мы определили что наш новый диск увиделся системой как /dev/hdb,соответственно вводим команду fdisk /dev/hdb

indpavel@indserver:~$ sudo fdisk /dev/hdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9a6ea34c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


The number of cylinders for this disk is set to 38913.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):

Из листинга видим что для справки по командам надо нажать m

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):

Поясняю по русски что значат некоторые команды
a - установка метки *загрузочный* для раздела
d удаление раздела
m отображение данной справки
n добавить новый раздел
p отобразить таблицу разделов (посмотреть какие разделы на диске)
q выйти не сохраняя изменений
v проверить таблицу разделов
w сохранить изменения и выйти


Естественно для создания разделов команда n

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

Мастер спрашивает нас, какой раздел создать e - расширенный, p - основной

Основной раздел - обычный основной раздел, но в линуксе нельзя более 4х основных разделов
Расширенный раздел - такой же как и основной, только может содержать внутренние подразделы
Следовательно чтобы создать более 4х разделов на диске нужно чтобы был какой то из них расширенным и поделен на подразделы

в мастере где нас спросило какой раздел создавать выберем первичный (p)

p
Partition number (1-4):

Далее мастер спрашивает нас какой будет номер раздела (от этого будет зависеть какая цифра будет после hdb)
Создаем первый

Partition number (1-4): 1
First cylinder (1-38913, default 1):

Далее спрашивает какой первый цилиндр, указываем 1

First cylinder (1-38913, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-38913, default 38913):

Сейчас нам надо ввести конечный цилиндр раздела, но это делается так +<размер в мегабайтах>M или +<размер в килобайтах>K


Например +100000M означает что данный раздел будет размером в 100 тысяч мегабайт (около 100 гигабайт), вводим данную комбинацию

Last cylinder or +size or +sizeM or +sizeK (1-38913, default 38913): +100000M

Далее создадим еще расширенный раздел, на котором будет 2 подраздела, я уже не буду описывать каждый этап, просто сделаю комментарии в листинге


Command (m for help): n
//вводим команду "n" чтобы создать новый раздел
Command action
   e   extended
   p   primary partition (1-4)
e 
//нажимаем e, чтобы создать расширенный раздел
Partition number (1-4): 2
//указываем номер раздела (так как первый уже существует указываем 2)
First cylinder (12160-38913, default 12160):
//первый цилиндр раздела (в скобках указано значение которое вы можете указать,
// если нажать энтер то будет значение по умолчанию - 12160)
Using default value 12160
Last cylinder or +size or +sizeM or +sizeK (12160-38913, default 38913):
//конечный цилиндр, можно вводить +<сколько мегабайт>M, если нажать энтер, то по умолчанию выберется последний цилиндр, 
//т.е. раздел создастся от начала прошлого раздела до конца диска
Using default value 38913


Сейчас создаем на нашем расширенном разделе подразделы

Command (m for help): n
//опять команда n чтобы создать раздел
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
//нажимаем "l", чтобы создать логический диск
First cylinder (12160-38913, default 12160):
//первый цилиндр, по умолчанию первый возможный цилиндр расширенного раздела
Using default value 12160
Last cylinder or +size or +sizeM or +sizeK (12160-38913, default 38913): +100000M
//конечный цилиндр, указываем что размер этого подраздела 100000 мегабайт


Command (m for help): n
//опять создаем
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
//указываем что хотим логический
First cylinder (24319-38913, default 24319):
//первый возможный цилиндр этого раздела это следующий после прошлого, нам надо 
//его создать прямо за ним без отступа, делаем по умолчанию
Using default value 24319
Last cylinder or +size or +sizeM or +sizeK (24319-38913, default 38913):
//конечный, по умолчанию максимально возможный, т.е. до конца нашего расширенного раздела
Using default value 38913

Command (m for help): p
//команда p отобразит то что мы сделали
Disk /dev/hdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf9f57f5b

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       12159    97667136   83  Linux
/dev/hdb2           12160       38913   214901505    5  Extended
/dev/hdb5           12160       24318    97667136   83  Linux
/dev/hdb6           24319       38913   117234306   83  Linux

Сейчас мы видим то что создали 4 раздела, при чем тех разделов на которые мы что то будем сохранять 3, так как hdb2 это расширенный раздел, на него мы сохранять ни чего не сможем, но сможем сохранять на его подразделы

Чтобы сохранить изменения и выйти нажмите w

Форматирование

Сейчас на наших разделах нужно создать файловую систему, я лично предпочитаю ext3, она позволяет хранить большие файлы, а так же делает журнал, который хранит все действия перед их выполнением, и если например случайно вырубится электричество то потеря данных менее вероятна.
утилитка mkfs нам в этом поможет, чтобы отформатировать наш раздел hdb1 делаем команду

mkfs -t ext3 /dev/hdb1

А далее для наших двух логических подразделов (сам расширенный раздел не форматируем, как помните он у нас только для хранения подразделов)

mkfs -t ext3 /dev/hdb5
mkfs -t ext3 /dev/hdb6

Монтирование дисков

Мы создали три раздела один первичный и два логических /dev/hdb1
/dev/hdb5
/dev/hdb6
Например у нас hdb1 это раздел для музыки, hdb5 - раздел для видео, hdb6 - раздел для фотографий
Чтобы получить доступ к этим разделам, надо их примонтировать к какой-нибудь папке, естественно пустой, ибо все содержимое папки заменится содержимым примонтированного раздела.

Создадим такие папки, в которые будем монтировать, ну например в корне диска папки /music, /video и /photo

sudo mkdir /music /video /photo

Сейчас будем монтировать эти папки, в нашем случае примонтированные разделы должны автоматически монтироваться при загрузке системы

1.Открываем файл /etc/fstab

sudo nano /etc/fstab

2.Вписываем строчки в конец файла, более подробно о синтаксисе данного файла напишу ниже

/dev/hdb1       /music            ext3    defaults        0       0
/dev/hdb5       /video            ext3    defaults        0       0
/dev/hdb6       /photo            ext3    defaults        0       0

Жмем ctrl+o чтоб соxранить, а далее ctrl+x чтобы выйти
3.Монтируем разделы командой

mount -a

Дополнительно

Синтаксис файла /etc/fstab

В данном файле все просто, главное соблюдать синтаксис, если где то не там сделаете пробел или наоборот его забудите, то будет что то нехорошее
*1.* Файл состоит из строчек, разделенных знаком переноса, закомментированные строки начинаются со знака решетки (#)

2. Каждая строка сотоит из 6 сегментов, разделенных знаком пробела (или несколькими пробелами) или табуляцией (или несколькими табуляциями)
3. Внутри сегмента нельзя ставить пробелы или знаки табляции

Сегменты в этом файле слкдующие:
<что> <куда> <файловая система> <опции> <флаг резеррвного копирования> <флаг проверки>

Что

В этом сегменте указывается устройство, как мы помним все устройства отображаются в виде файлов в каталоге /dev
Так же может указываться идентификатор диска например UUID=45237t4ef35 или путь до ISO файла итд

Куда

В этом сегменте указывается папка в которой будет отображаться содержимое примонтируемого устройства

Опции

rw - монтировать на запись и чтение
ro - монтировать только на чтение
exec - разрешать выполнять бинарные файлы noexec - запретить выполнять бинарные файлы nls - указание кодировки файловой системы umask - права доступа к файловой системе

Флаг резервного копирования

Указывает нужно ли включать данный раздел в дамп при создании резервной копии (бекапа) Обычно 0-нет 1-да

Флаг проверки

У меня система проверяет с определённым периодом диски на ошибки при включении компьютера (начальной загрузке), дак вот именно эта проверка и контролируется данной опцией, тут тоже 0-не проверять, 1-проверять.
p.s.: я еще не совсем понял почему бывают флаги больше 1го, но скорей всего - это приоритет проверки

Источники информации

  • Денис Колисниченко «Серверное применение Linux»
  • UNIX справочник, изд. O'Railly
  • man fstab
  • man mount

Персональные настройки
Яндекс цитирования