Як я перевіряю, чи всі записи на мій жорсткий диск вирівнюються до 4-х секторів?


9

Я використовую Linux з 4 жорсткими дисками, які використовують 4k сектори. Між моєю файловою системою та необробленими пристроями є кілька шарів: Диски> Linux Raid 5> dm-crypt> LVM.

Кожен знайдений нами ресурс пояснював, як налаштувати кожен шар, щоб гарантувати, що записи над цим шаром будуть вирівняні до межі сектора 4k. Однак я не знайшов нічого, що пояснює, як перевірити, що записи, зроблені на жорсткі диски, насправді відбуваються за межами 4k.

Мені не цікаво переглядати свою установку, щоб використовувати логіку, щоб визначити, чи правильно вона вирівняна. Я хочу вивчити, що насправді відбувається, коли записи робляться на диск.

Як я можу ввійти або переглянути адреси та розміри записів, які робляться на моїх жорстких дисках, щоб я міг перевірити їх правильність вирівнювання?

Відповіді:


2

Я задавав собі те саме питання певний час тому і просто робив наступне:

Написав разом із оболонкою кілька разів досить незвичну рядок у файл (щось на кшталт "WackaWacka"). Потім просто пошукав шістнадцятковим дампам (використано od ) фактичний вміст диска та перевіряв, чи зберігається перша поява рядка точно на початку блоку 4k.

Підказка: Не використовуйте редактор - він може створювати тимчасові файли, про які ви не знаєте, які також можуть містити рядки. Зробіть це так:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile

Отже .sh_history може містити рядок пошуку, але не 5 разів поспіль ;-)

А потім просто пошукайте:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'

Що ж, найкраще робити на досить порожньому диску, щоб уникнути прокрутки через гігабайти даних ;-)


1
Оскільки dm-crypt є одним із шарів у моєму стеку, цього рішення недостатньо, оскільки ці символи не будуть записані на диск.
Брайан Пеллін

Це погано. Єдине інше рішення, про яке я міг придумати, - це змінити чітко один блок 4k у файлі та перевірити, чи змінився лише вміст одного фізичного блоку на диску (або якщо це вплинуло два послідовних блоки) - і це буде працювати лише у випадку, якщо дані не стискаються шаром шифрування. Тим не менш, потрібно знати, на якому дисковому блоці зберігається файл і пошук будь-яких змін може бути складним на великих дисках.
ktf

2

Напишіть блок 4k і подивіться, скільки даних читається / записується iostat(стовпці "Blk_read" "Blk_wrtn"). Якщо дані не вирівняні, записування спровокує зчитування спочатку і спричинить більше 4 к записів.

Вам потрібно буде бути обережним, щоб не вимірювати жодних оновлень метаданих, хоча ... або просто заглушити їх, зробивши 1000s 4k пише .... Тому переконайтеся, що більше нічого не сканує диски чи тримає відкриті файли (я думаю, це lsofбуло б достатньо?), потім відкрийте новий файл, зачекайте, запустіть iostat, запишіть у файл 4k, синхронізуйте запис (або просто зачекайте деякий час?), а потім перевірте iostatще раз.

Це, здається, дає для мене розумний результат:

iostat  -d /dev/hdb3
dd if=/dev/urandom of=/mount/path/ofhdb3/tmptest bs=4k count=10000 conv=fdatasync
iostat  -d /dev/hdb3

Зауважте iostat, що чоловіча сторінка претендує на звіт у 512 байтових блоках, і я бачу, що було записано трохи більше 80000 додаткових блоків, і жодного блоку не було прочитано. Якщо вирівнювання вимкнено, ви побачите аналогічну кількість прочитаних (оскільки для того, щоб написати неправильно вирівняний 4k, потрібно прочитати два впливові блоки, вимкнути їх та записати їх назад). Насправді, єдиною причиною вирівнювання є важливо уникати таких зчитувань (так це дійсно те, що ви хочете шукати: чи читається тригер робочого навантаження запису?)


Чи знаєте ви, чи іостат повідомляє про кількість прочитаних / записів, які ОС робить на блоковому пристрої, чи це число базується на повідомленні накопичувача, скільки блоків він прочитав і записав?
Брайан Пеллін

Я підозрюю, що це від абстракції пристрою блоку ОС, а не безпосередньо з диска, але точно не знаю. Я також не впевнений, чи буде це "вище" або "нижче" шару dm-crypt.
PT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.