Лекция №17 - Жесткие диски в Linux
В этой лекции мы поговорим о таком важном элементе компьютера как жесткий диск. Посмотрим как выполняется деление жесткого диска на разделы, какие типы разделов бывают и какие команды Linux позволяют работать с разделами. Вы уже знаете, что жесткий диск это блочное устройство. Действительно на физическом уровне жесткий диск состоит из множества блоков. Все блоки фиксированного размера - 512 байт и называется такой блок - сектор. В самый первый сектор жесткого диска записана специальная запись, которая называется MBR - master boot record. О MBR мы уже говорили во второй лекции. Продублирую для наглядности рисунок отображающий структуру MBR.
Рисунок 1
Обратите внимание на подраздел MBR, который называется таблица разделов. Как видите под разделы в MBR выделено всего 64 байта, a так как для идентификации одного раздела необходимо 16 байт, то всего таких разделов может быть не более четырех. На каждом разделе могла быть размещена одна файловая система. Эта операция называлась форматированием раздела. До какого-то момента четырех разделов хватало, но с ростом объемов жесткого диска, появилась потребность в большем количестве разделов. Но их не может быть больше, так как изначально было заложено не более 4-х разделов. Из множества вариантов решения данной проблемы выбрали следующий. Придумали специальную файловую систему которую назвали Extended. Одному из разделов можно назначить такую файловую систему. Разделы которые описаны в таблице MBR называются первичными (или основными) разделами (primary partition). Однако раздел с файловой системой extended (расширенный) часто так и называют - расширенный раздел . В начале расширенного раздела была своя таблица разделов (можно сказать, что это было продолжение таблицы MBR). То есть расширенный раздел можно было в свою очередь делить на разделы, который стали называть логическими разделами. В отличии от статической таблицы разделов MBR, таблица разделов расширенного раздела является динамической и содержит столько записей о логических разделах сколько их существует на данный момент. Если создать 4 основных раздела на жестком диске, то вы не сможете создать пятый раздел. Если разделов нужно больше чем 4, то один из разделов обязательно должен быть extended, который в свою очередь сможет быть разделен на необходимое количество логических разделов.
В Windows системах есть такое понятие как активный раздел жесткого диска. Это раздел который содержит загрузчик Windows, и если вы установите Windows в раздел который не отмечен как активный (не установлен специальный флаг в таблице разделов), то операционная система не сможет загрузиться. В Linux этот флаг не имеет никакого значения и система будет загружаться даже если диск с загрузчиком не отмечен как активный.
Мы уже знаем, что жесткий диск и его разделы представлены в системе в виде файлов-устройств. Диски с интерфесом IDE обозначаются как hda, hdb, hdc или hdd. Если диск подключен к первому IDE разъему как master, то он будет определен как hda, если как slave, то hdb и т.д. Диски с интерфесом SCSI или SATA обозначаются как sda, sdb, sdc и т.д. Диски SATA обозначаются немного по другому чем IDE. Имя SATA диска не зависит от того к какому разъему SATA вы подключили диск. Например у вас есть шесть разъемов SATA (пронумеруем их от 0 до 5). Независимо от того к какому разъему подключить диск он будет называться sda. Если у вас в системе два и более диска SATA, то диск который подключен к разъему с наименьшим номером будет обозначен как sda, и далее по порядку (sdb, sdc и т.д.). Нужно учесть следующее. Если у вас единственный диск SATA был всегда подключен, например, ко второму разъему (и назывался sda), а затем вы подключили еще один диск к первому разъему, то теперь уже новый диск будет называться sda, а ваш старый диск будет называться sdb. Именно по этой причине, рекомендуется записывать разделы жесткого диска в файле /etc/fstab через их UUID.
Как же посмотреть какие у есть диски в системе? Есть несколько вариантов. Например воспользоваться информацией которую можно получить выполним команду dmesg. Команда dmesg выводит все сообщения ядра об аппаратных устройствах системы и об аппаратных изменениях в системе (событиях). Такие сообщения ядро начинает формировать с начала загрузки системы во время инициализации устройств. Если сообщений много и они не помещаются все на экран, то выполните команду dmesg | less, чтобы направить всю информацию в просмотрщик less. Ниже фрагмент вывода описывающий жесткий диск:
[ 1.637632] ata2.00: ATA-7: WDC WD2500KS-00MJB0, 02.01C03, max UDMA/133
[ 1.637635] ata2.00: 488397168 sectors, multi 16: LBA48
[ 1.638258] ata2.00: configured for UDMA/133
[ 1.652114] scsi 1:0:0:0: Direct-Access ATA WDC WD2500KS-00M 02.0 PQ: 0 ANSI: 5
[ 1.652228] sd 1:0:0:0: Attached scsi generic sg0 type 0
[ 1.652266] sd 1:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB)
[ 1.652306] sd 1:0:0:0: [sda] Write Protect is off
[ 1.652309] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.652331] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA
[ 1.652449] sda: sda1 sda2 sda3 sda4 < sda5
[ 1.689646] sda6 sda7 sda8 sda9 >
Видим, что у нас есть диск WDC WD2500KS-00M, что он разбит на четыре основных раздела - sda1, sda2, sda3 и sda4, который является расширенным разделом и в свою очередь разбит на логические разделы sda5, sda6, sda7, sda8, sda9.
Также посмотреть какие у нас есть жесткие диски можно, выполнив команду ls -l /dev/[h,s]d?:
igor@ubuntu:~/linux$ ls -l /dev/[s,h]d?
brw-rw—- 1 root disk 8, 0 2009-11-18 22:58 /dev/sda
brw-rw—- 1 root disk 8, 16 2009-11-18 22:58 /dev/sdb
Еще одна команда - fdisk с ключом -l. Выполнятся должна от имени администратора и показывать следующую информацию:
igor@ubuntu:~$ sudo fdisk -l
Диск /dev/sda: 250.1 ГБ, 250059350016 байт
255 heads, 63 sectors/track, 30401 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd4b146b8
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 2304 18506848+ 7 HPFS/NTFS
/dev/sda2 2305 2472 1349460 e W95 FAT16 (LBA)
/dev/sda3 2473 10263 62581207+ 7 HPFS/NTFS
/dev/sda4 10264 30401 161758485 f W95 расшир. (LBA)
/dev/sda5 10264 12826 20587266 83 Linux
/dev/sda6 12827 12947 971901 82 Linux своп / Solaris
/dev/sda7 12948 18184 42066171 7 HPFS/NTFS
/dev/sda8 18185 27967 78581916 7 HPFS/NTFS
/dev/sda9 27968 30401 19551073+ 7 HPFS/NTFS
Диск /dev/sdb: 40.0 ГБ, 40020664320 байт
255 heads, 63 sectors/track, 4865 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0xb292b292
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 1 4660 37431418+ 83 Linux
/dev/sdb2 4661 4865 1646662+ 5 Расширенный
/dev/sdb5 4661 4850 1526143+ 82 Linux своп / Solaris
/dev/sdb6 4851 4865 120456 83 Linux
Как видите мы получаем информацию о диске, о его разделах и о файловой системе содержащейся на каждом разделе. Команда fdisk предназначена для управления таблицей разделов жесткого диска. Другими словами эта команда позволяет выполнить разметку диска - разбить его на разделы и назначить файловые системы. Этой команде посвящена следующая лекция.
Евгений:
Спасибо! Тема раскрыта. Удачи
Ответить
23 декабря 2010, 10:30Elbar:
Также посмотреть какие у нас есть жесткие диски можно, выполнив команду ls -l /dev/[h,s]d?
видимо у вас опечатка, вместо [h,s]d? должна быть [s,h]?d
Ответить
Igorka Reply:
декабря 6, 2014 at 12:38
“должна быть [s,h]?d” Если написать так как вы предлагаете, то мы получим маску которая выбирает слово из трех символов, начинающееся с символа s или h, за которым следует любой символ, после которого идет символ d. Таким образом мы получим содержимое каталога /dev/snd, например.
А в чем опечатка? У вас не работает команда
?
Ответить
Elbar Reply:
декабря 6, 2014 at 15:38
да :)
Ответить
Elbar:
Cпасибо за конспекты Игорка…Очень признателен вам!
Ответить
Igorka Reply:
декабря 6, 2014 at 12:40
И вам спасибо за комментарий. Приятно, что после стольких лет, лекции все еще кому-то интересны. :) Успехов в обучении!
Ответить