LXF160:Установка нового диска
|
|
|
Учебник: Разбираемся с некогда простым добавлением жесткого диска
Содержание |
Установка нового диска
Неважно, собрались вы добавить 2-терабайтный колосс или крошечный SSD:Нейл Ботвик поможет сделать все правильно.
Когда-то добавить новый жесткий диск было просто: требовалось лишь подключить его к компьютеру и создать разделы любимым инструментом командной строки (fdisk, cfdisk) или графическим (Gparted). Если вы меняли системный жесткий диск, можно было загрузиться с дистрибутивного CD, и установщик системы выполнял разметку за вас. Теперь все стало несколько сложнее: с виду разные накопители, как выясняется, демонстрируют сходные проблемы.
Большие жесткие диски, порядка 2 ТБ, стали стоить вполне разумно, и вы можете захотеть просто воткнуть один такой в компьютер и начать им пользоваться – а в результате окажется, что производительность ниже, чем у вашего старого диска. Всему виной схема организации данных. Многие годы информация хранилась блоками по 512 байт (этот блок не связан с размером блока файловой системы). Диски становились больше, число блоков росло, и при 2 ТБ превысило максимальное значение, которое можно сохранить в 32-битном целом.
Тогда производители дисков перешли на 4-КБ блоки, в восемь раз больше; таким образом, проблема отложена до времен, когда один диск будет вмещать 16 ТБ. Это также позволило эффективнее хранить большие файлы, особенно с учетом того, что многие файловые системы, включая ext2/3/4, также используют блоки по 4 КБ. Это все звучит неплохо до тех пор, пока вы не осознаете, что жесткие диски вынуждены обеспечивать обратную совместимость с некой популярной ОС, притворяясь, что они по-прежнему оперируют блоками по 512 байт. Что в этом плохого? А то, что если вы начнете файловую систему с блока, номер которого не кратен 8 (скажем, 63, что издревле было значением по умолчанию в Linux), каждый 4-КБ блок файловой системы будет храниться в двух физических блоках на диске, и каждое его чтение или запись превратится фактически в две операции ввода-вывода, что крайне негативно скажется на производительности (по ряду причин, увеличение объема работы в два раза вызывает более чем двукратное падение скорости).
Твердотельные диски
Выравнивание блоков еще более важно на другом конце шкалы емкостей – в сегменте SSD-дисков. Они используют флэш-память, а не магнитный носитель, что дает ряд преимуществ, особенно для мобильных устройств (поэтому большинство твердотельных дисков имеют форм-фактор 2,5"). Отсутствие движущихся частей делает такие диски более тихими и ударопрочными, и у них более экономное энергопотребление. Но важнее то, что SSD-диски куда быстрее своих магнитных аналогов; фактически, они могут превзойти пропускную способность интерфейса SATA. Поэтому для достижения максимальной производительности наиболее продвинутые (и дорогие) SSD-диски подключаются через карты PCIe; но в нашей статье мы будем говорить о SATA-вариантах. Несмотря на использование флэш-памяти, SSD-диски имеют мало общего с USB-флэшками. SSD-диски используют технологию равномерного износа [wear-levelling], чтобы предотвратить быстрый выход из строя из-за постоянной записи на одно и то же место (например, в журнал файловой системы). Это налагает ограничения на разметку. Хотя размер блока может оставаться равным 512 байт, как и у магнитного диска аналогичной емкости, эти блоки группируются в так называемые блоки стирания [erase block]. Таким образом, затирание и перезапись памяти происходит более крупными кусками, и эффективность работы повышается.
Размер блока стирания может варьироваться (обычно между 128 КБ и 512 КБ). Любая схема разметки и файловая система, не выровненная по границам этих значений, будет испытывать те же проблемы с производительностью, что и на больших жестких дисках – если не хуже.
Выравнивание блоков
Итак, мы столкнулись с одной и той же проблемой и одним и тем же решением для двух дисков совершенно разных типов. Как обеспечить, чтобы разделы создавались в «правильных» местах? Можно подумать, что достаточно сделать размеры всех разделов кратными 4 КБ, но эта идея не сработает, поскольку первый раздел начинается с блока под номером 63 – это мнгоголетнее соглашение – т. е. на один блок раньше, чем вы хотели бы. Результат –проблемы с производительностью.
Если вы размечаете жесткий диск свежей версией fdisk, по умолчанию все разделы будут кратнымм 2048 секторам, независимо от их размера; при 512-байтных блоках это будет обозначать выравнивание по границе 1 МБ. Таким образом, будут удовлетворены требования и SSD, и больших жестких дисков. Если вы и впредь будете следить за тем, чтобы все разделы были выровнены таким образом, проблем не будет. Наилучший способ достичь этого – задавать размеры раздела в МБ (или ГБ), а не секторах – тогда fdisk сделает всю работу за вас. Если у вас старая версия fdisk, которая пытается начать с 63-го сектора, и вы по какой-то причине не можете обновить ее, начните раздел с блока 2048 и выбирайте размеры разделов кратными 1 МБ; это самое простое решение (более сложный вариант – задавать разные CHS в командной строке, указывая ключи -C, -h и -S при старте fdisk. Это тоже работает, но малейшая ошибка приведет к некорректному выравниванию). В любом случае, не связываетесь с cfdisk: ранее достойный, сейчас он не может обеспечить должную степень контроля над происходящим.
BIOS или GPT?
Есть и еще один способ: отказаться от таблицы разделов BIOS тридцатилетней давности. Помимо навязывания CHS-адресации, она создает ограничение в четыре первичных раздела. Его, конечно, можно обойти при помощи логических разделов, но это сработает, только если у вас еще нет четырех разделов, а на многих ноутбуках Windows и разделы восстановления занимают их все.
К тому же логические разделы остаются хаком – в таблице по-прежнему имеется четыре слота, а логические разделы ссылаются друг на друга. Это усложняет создание резервных копий таблицы разделов, к тому же повреждение в любом блоке, содержащем ссылку, сделает все последующие разделы нечитаемыми.
GPT (GUID Partition Table, таблица разделов на основе GUID-идентификаторов) приходит на замену таблице BIOS и может использоваться практически любым современным оборудованием. Инструменты для работы с GPT-дисками обычно включены в пакет gptfdisk. Сюда входят gdisk и cgdisk, заменяющие fdisk и cfdisk, соответственно. Parted (и его графические оболочки) уже поддерживает GPT – никакая новая программа не требуется. Программы работают в основном привычным образом, но автоматически выравнивают все по 2048 блокам, что позволяет избежать описанных выше проблем.
Наилучшей рекомендацией для сохранения обратной совместимости с существующими загрузчиками является создание специального загрузочного раздела в начале диска. Запустите gdisk от имени root, укажите имя своего диска и нажмите n для создания раздела. Значения номера раздела и стартового сектора можно оставить как по умолчанию (для чистого диска это 1 и 2048), а для конечного сектора введите +1 M (что означает 1 МБ от начала раздела). На вопрос о типе раздела введите EF02, чтобы создать загрузочный раздел BIOS. Разметьте остальные разделы стандартным обазом.
Процедура полностью аналогична fdisk, разве что вас не спрашивают, хотите вы создать логический или основной раздел. Другое отличие – тип раздела теперь указывается двухбайтовым кодом: так, для Linux-раздела это 8300, а не 83. Обратите внимание, что загрузочный раздел BIOS – не то же самое, что раздел /boot в Linux: здесь не содержится никаких файлов операционной системы. Это просто первый раздел жесткого диска, а «полезные» разделы начинаются с /dev/sda2.
Альтернативные инструменты
В примере выше мы использовали gdisk; cgdisk аналогичен, но использует текстовый ncurses-интерфейс в противовес командной строке gdisk. Есть также parted: он очень мощный и имеет параметр командной строки, включающий оптимальное выравнивание. Однако его интерфейс даже менее интуитивен, чем у fdisk. Есть и графические оболочки – например, популярный Gparted, а также инсталляторы большинства дистрибутивов; однако Gparted не предлагает способа управления выравниванием, так что его можно использовать на больших дисках и SSD, только если вы создаете GPT-разделы.
Если при установке на новый жесткий диск инсталлятор вашего дистрибутива предлагает использовать GPT – соглашайтесь; в противном случае вы можете решить предварительно разметить диск вручную. |
CHS или LBA?
На первых жестких дисках положение блока определялось номером «блина» (или головки), дорожки (цилиндра) на «блине» и сектора в цилиндре. Такая схема адресации известна как CHS (Cylinder, Head, Sector). На смену ей пришла схема LBA (Logical Block Addressing, Адресация логических блоков), в рамках которой номера блоков на диске составляют простую последовательность, начинающуюся с нуля и продолжающуюся до физической емкости диска.
Однако традиционные инструменты разметки, вроде fdisk, продолжают использовать CHS-адресацию. Вот, например, вывод fdisk -l на 2-ТБ диске:
% fdisk -l /dev/sde
Disk /dev/sde: 2000.4 GB,
2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes /512 bytes
Disk identifier: 0x0008f6db
Device Boot Start End Blocks Id System
/dev/sde1 2048 3907028991 1953513472 83 Linux
Здесь просматривается как CHS-адресация, так и то, что 2-ТБ диск использует 512-байтные блоки, хотя на сайте изготовителя сказано, что размер блока – 4 КБ.