Яка найкраща файлова система Linux для MySQL (InnoDB)?


48

Я намагався шукати орієнтир у виконанні різних файлових систем з MySQL InnoDB, але не зміг знайти жодного.

Моя завантаженість бази даних - це типовий веб-OLTP, близько 90%, 10% - 10%. Випадковий IO.

Серед популярних файлових систем, таких як ext3, ext4, xfs, jfs, Reiserfs, Reiser4 тощо, яка з них, на вашу думку, є найкращою для MySQL?

Відповіді:


44

Скільки ви цінуєте дані?

Серйозно, кожна файлова система має свої компроміси. Перш ніж я пішов набагато далі, я великий фанат обох XFS та Reiser, хоча часто запускаю Ext3. Отже, тут немає справжньої упередженості файлової системи, просто повідомляючи вас ...

Якщо файлова система для вас трохи більше, ніж контейнер, виконайте найкращі часи доступу.

Якщо дані мають будь-яке значуще значення, ви хочете уникати XFS. Чому? Тому що, якщо він не зможе відновити частину файлу, який перебуває в журналі, він зведе нанівець блоки та зробить дані неможливими для відновлення. Ця проблема виправлена ​​в Linux Kernel 2.6.22 .

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

Ext3 - "повільний", "у мене є 32 000 файлів, і потрібен час, щоб знайти їх усі ls", як і раніше. Якщо ви будете мати тисячі маленьких тимчасових столів скрізь, вас чекатиме трохи горя. Новіші версії тепер включають опцію індексу, яка різко скорочує обхід каталогів, але це все ще може бути болючим.

Я ніколи не використовував JFS. Я можу лише зауважити, що кожен огляд його, який я коли-небудь читав, був чимось за принципом "твердого, але не найшвидшого хлопця в блоці". Це може заслужити розслідування.

Досить мінусів, давайте розглянемо плюси:

XFS:

  • крики з величезними файлами, швидкий час відновлення
  • дуже швидкий пошук у каталозі
  • Примітиви для заморожування та розморожування файлової системи для демпінгу

ReiserFS:

  • Вкрай оптимальний доступ до невеликих файлів
  • Пакує кілька невеликих файлів в одні і ті ж блоки, зберігаючи простір файлової системи
  • швидке одужання, суперники XFS час відновлення

Ext3:

  • Перевірений і справжній, на основі добре перевіреного коду Ext2
  • Дуже багато інструментів для роботи з ним
  • Можна відновити як Ext2 в крайній частині для відновлення
  • Може бути як скороченим, так і розширеним (інші файлові системи можна розширювати лише)
  • Найновіші версії можна розширити "наживо" (якщо ви такі сміливі)

Отже, бачите, у кожного є свої примхи. Питання в тому, що для вас найменш химерне?


29
Випуск файлів XFS NULLed було виправлено понад 3 роки тому. xfs.org/index.php/…
Ryan Bair

5
Хоча це правда, що я не маю весь час у світі, щоб не відставати від змін розвитку ядра (крім роботи та сім'ї), але, безумовно, правда, що там є скрипкі старі розгортання, які потребують оновлення. Однак я підключу +1, щоб вказати, що виправлення було зроблено.
Avery Payne

13

Можливо, варто також зазначити, що ви можете запустити InnoDB без файлової системи та покращити продуктивність без накладних витрат файлової системи. Я не впевнений, що рекомендував би його, але раніше користувався без проблем.

Сирі пристрої InnoDB

Крім того, якщо ви працюєте на 90% читання та 10% записів, якщо вам не потрібна транзакційна здатність InnoDB, ви можете розглянути можливість перенесення до MyISAM для кращої продуктивності читання.


6
-1 за пропозицію перейти на MyISAM для кращої продуктивності читання. Має стільки інших недоліків і недоліків. Натомість InnoDB слід правильно налаштувати. +1 для пропозиції InnoDB-on-raw-device.
gertvdijk

5
Я стою за своє твердження, у MyISAM є недоліки, але є багато хорошого. MyISAM все ще є начальником для завантаження читання.
Xorlev

11

Відповіді тут серйозно застаріли і потребують оновлення, оскільки це відображається в результатах Google.

Для виробничих середовищ, XFS. Кожного разу. XFS розташований у черні та не блокує. Переконайтеся, що у виробництві InnoDB використовуються такі змінні для сучасної (2011/2012) бази даних MySQL:

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

Не використовуйте EXT3 або навіть EXT4. Одного разу туди потрапить BTRFS.

EXT3, а можливо і EXT4, блокується на рівні inode, не розумно!

Джерела: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/en/index.html - Розуміння Сайта Пачева внутрішніх справ MySQL - https://www.facebook.com/note.php? note_id = 10150210901610933 - http://oss.sgi.com/projects/xfs/training/ - Деякі набори гойдалок, проб і помилок.

EDIT: оновлення. Здається, EXT4 працює дуже добре, як на середину 2013 року! BTRFS все ще не є найкращим варіантом. І RHEL цілком може зробити XFS новою файловою системою за замовчуванням. Знову ж, НЕ використовуйте EXT3.


Згідно з тестом Вадима Ткаченка , EXT4 забезпечує 20% пропускну здатність через XFS, якщо використовується MySQL 5.5 з InnoDB. Вадим пропонує використовувати опцію 'dioread_nolock' EXT4 там, де вона доступна (хоча він не використовував її з тестом).
caligari

Чому блокування на рівні inode погано?
jpaugh

інші відповіді застаріли … зараз,: 5 років потому…
кайзер

Google "конфіденція блокування inode" для проблем із блокуванням inode.
старий

9

Коротка версія полягає в тому, що найближча до рекомендації, яку я бачив, як MySQL робив файлові системи, - це XFS, однак ext3 також має бути нормальним, ext4 обіцяє гарне вдосконалення, але воно все ще не зовсім стабільне, хоча воно повинно бути до початку кінець року.

Якщо ви використовуєте файлові системи кластерів CXFS, OCFS2 і GFS, все має бути нормально.

Я настійно застережую проти будь-яких похідних Reiser, і JFS, хоча колись добре було здебільшого побито XFS та ext4, які обидва більш широко розгорнуті.


6

Це, ймовірно, не має великого значення. Виберіть те, що ваш дистрибутив використовує за замовчуванням, за умови, що це достатньо.

Витратьте свої зусилля на налаштування інших речей - отримайте достатню кількість оперативної пам’яті - отримайте рейдовий контролер, який не смокче, - і виправте кульгаве (додаткове) використання програми в базі даних (зверніть увагу: це головний винуватець у більшості випадків, коли цього ще не було було зроблено).

Однак уважно подумайте, файлова система, на яку ви поклали свій mysql tmpdir; це вплине на продуктивність, зокрема запити, які роблять файлові файли на основі диска (детальніше див. EXPLAIN).

Я думаю, що тут дуже зручна файлова система, яка підтримує відкладений розподіл, оскільки ви можете уникнути IO повністю для короткочасних файлів, коли є достатній об’єм, щоб зберегти їх у кеші. Наприклад, XFS взагалі не турбує запис файлів, які видаляються та закриваються до того, як вони будуть виділені.

Звичайно, розміщення tmpdir на tmpfs є привабливим з точки зору продуктивності, але призводить до ризику виснаження простору та виникнення запитів, які в іншому випадку мали б успіх (хоча і з тимчасовими файлами диска), не зможуть.


5

Я не знаходжу жодних останніх статей з еталонними "збитками" на MySQL, що працюють на різних файлових системах. Враховуючи навантаження, яку ви описуєте, я сумніваюся, що фрагментація на рівні файлів буде великою проблемою. Без офіційного орієнтиру я не можу сказати нічого, що слід сприймати як авторитетне, але моя кишка говорить про те, що кожна файлова система, яку ви згадали вище, виконуватиметься приблизно в одному і тому ж баловому просторі (тобто все в тому ж порядку за номерами продуктивності) .

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

І все-таки було б цікаво провести збірку продуктивності з усіма цими файловими системами. (У мене менше ентузіазму до MySQL, але я не збираюся його брати. Бенчмаркінг Postgres, OTOH, може бути цікавим ...)


1
Тебе також є копія stackoverflow.com/questions/1021854/… з деякими посиланнями, які можуть вас зацікавити
nik

3

IMHO, варто звернути увагу на FS, доступні для Linux:

XFS (низька швидкість читання), яка, як відомо, відрізняється від системних ресурсів і швидкою з великими файлами, але поганою для обробки багатьох невеликих файлів.

ReiserFS (низька швидкість запису) не дуже добрий на системних ресурсах, але дуже добре працює з великою кількістю невеликих файлів.

EXT3 перебуває між ними, виконуючи прийнятне для всіх полів (причина, по якій його вважали FS Linux за замовчуванням ).

Я ще не використовував EXT4 не ReiserFS4, але я оглянув деякі орієнтири, і, здається, ReiserFS має найкращу ефективність, коли мова йде про швидкість читання, яка, як ви сказали, є найбільш важливою для вас.

Погляньте на це: ReserFS4 X Ext4 X Ext3

Я б рекомендував Ext3 для його стабільності, безпеки та зрілості, але якщо швидкість читання - це найважливіше для вас, вам слід розглянути ReiserFS.

Пам’ятайте, що вам слід також врахувати використання процесора, стабільність, безпеку тощо перед тим, як вибрати FS.

І звичайно, зробити пілотне тестування, тестування та порівняльний аналіз у вашому конкретному середовищі - це завжди найкращий спосіб сказати, що буде найкраще працювати для вас.

PS: Я б розмістив більше орієнтирів, але я не можу розмістити більше ніж одне посилання.

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