Що означає прапор кріплення "бар'єр" у Linux?


20

Посібник для опції кріплення «бар’єр»:

бар'єр = 0 / бар'єр = 1

Це вимикає / дозволяє використовувати бар'єри для запису в jbd code.barrier = 0 відключає, barrier = 1 активує (за замовчуванням). Для цього також потрібен стек IO, який може підтримувати бар'єри, і якщо jbd отримає помилку в записі бар'єру, він знову відключить бар'єри з попередженням. Перешкоди для запису забезпечують належне впорядкування на диску дискових комісій, роблячи кеши для запису на диски безпечними у використанні, за певну штрафну ефективність. Якщо ваші диски так чи інакше захищені акумулятором, відключення бар'єрів може безпечно підвищити продуктивність.

Але я не знаю, що означає речення " належне упорядкування журналу на диску ".

Припустимо, нормальне замовлення - журнал 1, дані 1; журнал 2, дані 2.
Який із наведених нижче результатів впорядкування відбудеться, якщо я встановлю barrier=0?

  1. журнал 2, дані 2; журнал 1, дані 1;
  2. дані 1, журнал 1; дані 2, журнал 2.


1
Якщо ви читаєте про файлові системи журналів, то зрозумієте, що важливо спочатку написати журнал, а потім виконати журнал, записуючи реальні дані на диск. Шлагбаум забезпечує, що журнал пишеться перед його виконанням. Інакше журнал нам марний.
ctrl-alt-delor

@richard Під час використання прапора "nobarrier" у жорсткому рейді BBWC, диск не міг забезпечити запис журналу до того, як його дані будуть виконані, чи ця умова не має значення?
leafonsword

Я не знаю достатньо, щоб знати, чи це має значення. Я думаю, що в гіршому випадку це так само погано, як жоден журнал, але те, що я прочитав, не здається таким поганим, проте я не можу розрізнити тонкощі. У мене є barrier=1, і це працює досить швидко для мене. Якщо ви не робите справжньої важкої справи, я б залишив це. У вас є оперативні буфери, тому речі будуть виписані, коли це можливо, без уповільнення роботи програм. І дуже мало затримок із записом на диск. Якщо ви хочете побачити, наскільки оперативні буфери прискорюють роботу, додайте синхронізацію = 1 у свій домашній каталог та спробуйте використати вашу систему протягом дня чи двох.
ctrl-alt-delor

Відповіді:


15

Більшість сучасних файлових систем - це журнальні файлові системи, що означає, що вони відслідковують зміни, які ще не були записані на диск у внутрішній структурі даних, що називається журналом. У разі аварії цей журнал буде повторно відтворений, щоб переконатися, що всі записи виконані успішно, запобігаючи пошкодженню файлів.

Коли насправді виписують дані на диск, кеш запису повторно замовляє записи, щоб спробувати максимізувати пропускну здатність, але він повинен переконатися, що фактичні дані файлу записуються на диск перед метаданими, щоб переконатися, що у випадку аварії У цьому випадку метадані не застаріли з даними.

Проблема полягає в тому, що багато дисків мають власні кеші, які також можуть переупорядкувати записи. Деякі файлові системи будуть вважати , що це станеться , і змусять диск , щоб очистити кеш в певних точках , щоб запобігти цьому, і називаються write barriers, наприклад , в ext4, і Linux в цілому.

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


1

З цієї статті LWN :

Перш ніж писати запис журналу [журналу], код файлової системи повинен бути абсолютно впевнений, що вся інформація про транзакцію внесла його до журналу. Просто робити записи в належному порядку недостатньо; сучасні накопичувачі підтримують великі внутрішні кеші і переробляють операції для кращої продуктивності. Отже, файлова система повинна чітко доручити диску отримати всі дані журналу на носій, перш ніж записати запис про фіксацію; якщо запис про фіксацію буде написаний першим, журнал може бути пошкоджений. Підсистема вводу / виводу блоку ядра робить цю можливість доступною через використання бар'єрів; по суті, бар'єр забороняє писати будь-які блоки після бар'єру, поки всі блоки, написані до бар'єру, не будуть передані медіа. Використовуючи бар'єри,

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