SSD: ещё раз о выравнивании

Алексей Федорчук

Вопрос стал достоянием истории, почему соответствующий материал отправляется на её свалку.

О необходимости выравнивания границ разделов (aligning) при разметке SSD-накопителей заговорили сразу же по их появлении в доступном для широких трудящихся масс виде, то есть года два назад. Ибо процедура эта должна была способствовать как повышению быстродействия файловых операций, так и долговечности самого устройства. Однако как именно это надо делать — оставалось не вполне ясным, ибо на сайтах производителей твердотельных носителей необходимой информации, как правило, не был (в скобках заметим — не густо с ней и по сей день).

Тем не менее, скоро в сети стали появляться результаты эмпирических исследований этого вопроса — здесь в первую очередь следует упомянуть статью Теодора Тсо (Theodore Ts’o) Aligning filesystems to an SSD’s erase block size (к сожалению, оригинал последнее время недоступен, но имеется русский перевод). Кроме того, сведения о выравнивании можно было найти также на сайте Сергея Богомолова.

Однако практическая применимость этих работ была ограничена: во-первых, в них рассматривались SDD первого поколения, во-вторых, в первую голову, один их конкретный представитель, Intel X25-M. А, как я уже сказал, информацию по более иным моделям, в частности, самую в этом деле важную, о величине блока стирания (erase block), получить было затруднительно — для разных накопителей мне попадались величины в 64, 128, 256 Кбайт и даже 512 Кбайт, впрочем, без ссылок на источники информации.

Тем не менее, обзаведясь своим первым SSD (Corsair Nova, описан здесь), и обнаружив весьма ощутимое падение быстродействия при удалении большого количества мелких файлов, я, по совету резонных людей (в первую очередь ZED’а), я занялся выравниванием разделов в точности по заветам Великого Ленина Теодора Тсо. И в итоге получил ощутимый прирост скорости для такого рода операций.

Однако время шло, поколения SD сменялось, контроллеры их «умнели’, а операционные системы и дисковые утилиты приспосабливались к новым реалиям. И поневоле возникал вопрос — а нужно ли выравнивание в современных условиях? Он встал передо мной в полный рост несколько дней назад, когда мне наконец привезли SSD Corsair  Force Series 3, описанный здесь. Проведя несколько сеансов гоношения и яшкания, я никакой новой информации не обнаружил: всё сводилось либо к пересказу рекомендаций Тсо, либо к применению их к собственным реалиям, либо вопрос этот просто замалчивался. А в FAQ’е по SSD на сайте производителя своего устройства было открытым текстом сказано, что никаких манипуляций с BIOS или ОС при работе с моделями этого поколения не требуется.

Тем не менее, глаза, казалось бы, говорили обратное: и GParted из Fedora, и утилита разметки диска с LiveCD PCLinuxOS упорно намеревались разбивать мой SSD по традиционной DOS’овской схеме, начиная 1-й раздел с 63-го сектора. В то же время во всех сетевых источниках для SSD рекомендуется, чтобы раздел начинался с сектора, кратного 8 — и интуитивные соображения это подтверждают.

Не найдя однозначного ответа в сетевых материалах, я обратился  к добрейшей даме — тёте Мане. А именно, к тому разделу из её бессмертных трудов, где говорилось о древней, но вечно живой утилите fdisk. И оказалось, что если она будет запущена в режиме nondos и с использованием секторов, а не цилиндров, то всё должно устроиться само собой.

Более того, дальнейшей раскуривание man’а показало, что в современных версиях fdisk по умолчанию именно так и запускается — без флага совместимости с DOS и с секторами вместо цилиндров (до сих пор я как-то не обращал на это внимания). Если же это почему-то не случилось, то это можно задать принудительно:

# fdisk -cu /dev/sd?

Или переключиться в режим nondos и на сектора уже из запущенного fdisk — посредством команд c и u, соответственно.

И теперь — о чудо! — при создании первого же раздела fdisk по умолчанию предлагает начать его с сектора 2048, что, как легко подсчитать, кратно 8. Аналогично и все последующие разделы (а я их создал ещё два) также начинались с числа, кратного восьми. В результате чего моя схема разметки приняла такой вид:

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1            2048     1026047      512000   83  Linux
/dev/sdc2         1026048    21997567    10485760   83  Linux
/dev/sdc3        21997568   234441647   106222040   83  Linux

Теперь на размеченный таким образом SSD оставалось только установить систему, прняв существующее разбиение (установщик PCLinuxOS такую возможность допускает).

P.S. Разумеется, Беня Лёша знает за облаву более прецизионный метод выравнивая, посредством перевода fdisk‘а в режим эксперта и выравнивании границ разделов вручную, но для начала я решил ограничиться малой кровью на чужой земле. Тем более, повторяю, размер блока стирания моего устройства, был мне неизвестен, а именно его величина лежит в основе всех «выравнительных» расчётов.

Ну а что из всего этого получилось — надеюсь рассказать в ближайшее время.

SSD: ещё раз о выравнивании: 4 комментария

  1. Буду ждать результатов. Я сижу уже больше года на KINGSTON SNV425S264GB и только сейчас взглянул, где же начало — оказалось,
    Диск /dev/sda: 64.0 ГБ, 64023257088 байт
    255 heads, 63 sectors/track, 7783 cylinders, всего 125045424 секторов
    Units = секторы of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000701b6

    Устр-во Загр Начало Конец Блоки Id Система
    /dev/sda1 * 2048 125044735 62521344 83 Linux

    так что у меня «оно само» :)

  2. Я тоже выравнивал разделы на своём OCZ «Onyx» OCZSSD2-1ONX32G с контроллером Indilinx Amigos.
    Делал разделы кратным 8, вначале использовал btrfs, но из-за её сырости (дело было давно), пока отказался.
    Сейчас использую ext4 с параметрами как для этой ФС, так и для операционной системы Ubuntu.
    Можно хорошо ускорить систему в целом.
    http://vasilisc.com/ssd_ubuntu

  3. Ребята подскажите как выровнять раздел под SSD на Mac? Файловая система mac os x extended journaled в википедии написано она делает 512 байт сектора а для SSD нужно 4k, раздел создавался и форматировался под 10.6 и потом она обновлялась до 10.6.8 включил трим — snow leo для моего бука самое то.
    SSD Crucial m4 512 к Sata 2. Хочу сделать выравнивание так как вычитал оно ускоряет все операции 4к — тоесть работу и загрузку ОС и программ — у меня сейчас скорость 4k по xbench 11 мб/с а есть ссд с 25-30 мб/с (на этом доже так должно было быть но сата 2 и такая совместимость контроллера с материнской платой + функции энерго сбережения так как ноут но ничего с этим поделать не могу кроме как выровнять тем самым попробовать повысить скорость 4k как это сделать? Нашел ipartishn на каком то английском форуме парень с помошью нее все выровнял но как это потворить я не разобрался подскажите пожалуйста

Обсуждение закрыто.