UNИX, весна 2008, 04 семинар (от 30 мая)

Материал из eSyr's wiki.

Версия от 02:25, 1 ноября 2009; ESyr01 (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

[править] Системы хранения данных

[править] Введение

С чего вдруг лектор рассказывает про такие вещи…

ГК: Давай мы сделаем маленькое объявление, я тут вижу много разного народу, некоторые знакомые лица, некоторые — нет. Что такое UNИX: эта аббревиатура имеет отношение к некоторому плавающему собранию людей, непрерывно обновляемому. Я так думаю, что некоторые из здесь присутствующих просто не знают о существовании этого мероприятия по причине того, что последние года два оно не проводилось вообще: последний семинар был ровно два года назад из тех, что проводились давно. Задача очень простая — делиться информацией в режиме реального времени. Я сказал, что сообщество плавающее, одно время я был активным инициатором этого безобразия, потом работа меня съела и появились студенты ответственные, которые взяли на себя всю организационную часть. Это уже третье публичное сборище. Я не знаю, сколько мы выдержим стиль две недели летом, следите за объявлениями. Поскольку, вопрос о том, что означает эта аббревиатура, обсуждался на ЛОРе, повторяться я не буду.

Дело в том, что мы, то есть ЛВК — бюджетная организация, и как это бывает, внезапно под новый год сказали, что есть полтора миллиона рублей, и их надо срочно потратить. Поскольку списка, чего надо, не было, решили, что места мало и пользователи любят хранить всякую мультимедию, в итоге возникла потребность во внешнем хранилище. Поэтому пришлось окунуться в то, что такое СХД, конкретно SAN, и очень много было вопросов, потому что господа, которые при ..., у них немножко другая терминология, а нас интересовали больше всякие разные технические вещи, как оно работает и как его использовать в той инфраструктуре, которую мы себе видели. Поэтому пришлось покопаться. Некоторое время назад лектор делал доклад на ЛВКшном студенческом семинаре о том, что он узнал, а это такая, изменённая версия, без совсем простых вещей, но, тем не менее, версия того доклада.

  • ГК: Будет упомянут какой-то конкретный сервер хранения данных, который был за полтора миллиона куплен?
  • GQ: Да.
  • ГК: Это факультетский?
  • GQ: Нет, на факультете гораздо более навороченный, у нас всё попроще.
  • ivlad: Какой именно?
  • GQ: А вот я не помню, по-моему 20 + гейт(?)
  • ГК: Короче, Володь, у нас есть администратор этого безобразия, боюсь, он скажет ещё меньше

[править] Содержание

Попытаемся разобраться, для чего это надо, зачем хранить данные, откуда всё это взялось. Для начала несколько простых вещей, которые, тем не менее необходимы:

  • Что такое RAID
  • Что такое управление логическими томами (LVM)
  • Про СХД, какие они бывают, какие там интерфейсы, протоколы используются, как всё это выглядит. В частности, расскажу, как мы это используем

[править] Данные

Понятно, что данных много, они всё время растут, их надо где-то хранить, при чём хранить надо так, чтобы они были доступну было из разны мест. При этом, мы не можем сразу решить, какой необходим объём дискового хранилища: сейчас нужен терабайт, через год надо будет два терабайта, сразу покупать 2 терабайта бессмысленно и дорого, поэтому возникает задача масштабирования, в итоге всё упирается в вопрос денег — мы не сразу можем приобрести большое хранилище. Помимо этого, требуется, чтобы данные хранились надёжно, безопасно, и чтобы всем этим можно было как-то управлять так, чтобы это не было чёрной магией. Для решения этих задач используют специализированные системы, которые занимаются как раз тем, что хранят данные, и дальше есть всевозможные потребители этих данных, которые их по-разному используют.

  • ГК: Децентрализация чего: пользования или хранения?
  • GQ: В принципе, возникает децентрализация и потребителей, и хранилищ

Отдельно отметим пункт с надёжностью, поскольку данные имеют очень высокую стоимость: это могут быть финансовые данные, данные по проектам, которые выполняются для того дяди, и если всё накроется, будет очень грустно.

  • ГК: Вопрос по третьему слайду: вот это всё требования? Особенно последнее (сложность управления)?
  • GQ: Нет, это различные аспекты, на которые нам приходится обращать внимание, почсему, собственно, у нас возникают такие специализированные системы, системы хранения данных
  • ГК: Тогда вопрос — сложность управления чем?
  • GQ: Сложность управления всей этой инфраструктурой, где есть потребители жанных, есть хранилища данных…
  • ГК: Про данные я понимаю, про задачи децентрализации хранения и потребеления я понимаю. А вот… чем управления? Нечем управлять: просто свалка и всё, зачем ей управлять?
  • GQ: Как только возникает децентрализация, есть сервер к которому подключен жёсткий диск, есть другие сервера, которые хотят использовать эти данные, которые хранятся централизованно на этом сервере. Сразу возникает вопрос, как этим управлять: как управлять правами доступа, как настраивать этот доступ… Поэтому, одна из задач создания специализированных СХД — решение этого вопроса, то есть снижение сложности управления такими…
  • ivlad: Можно считать, что это проблемы до того, как специализированную СХД купили: объём данных рос, сложность управления росла...
  • ГК: Да, в таой постановке я понимаю

[править] Отказоустойчивость

По поводу отказоустойчивости надо отдельно остановиться. Собственно, она делится на две основные задачи:

  • Сохранность данных, то есть, чтобы наши данные, которые где-то хранятся, вдруг никуда не исчезли, не получилось так, что мы их потеряли
  • Обеспечение доступности. Если есть какая-то система, которая эти данные как-то хранит, то возникает желание, чтобы эта система была доступна всегда. Если у нас, например, 10 серверов, которые используют эти данные, чтобы не было какого-то слабого звена
    • ГК: Проблема в другом — проблема не в том, чтобы случайно выключится какой-то сервер, который потом не отдаст данные, хотя это тоже. Проблема в том, чтобы данные были доступны в режимное время, при том, что 180 потоков уже идут. То есть, есть неки график потребления…
    • ivlad, GQ: Нет.
    • ГК: А в чём?
    • ivlad: Проблема в том, что данные, как таковые, целостные, а доступа к ним по какой-то причине нет
    • GQ: Например, сгорел порт на сервере, к которому подключена СХД. Сервер есть, данные есть, доступа к ним нет
    • Юрий: Вопрос по поводу отказоустойчивости, возможно, необходимо разделить постановку. Есть вопросы, связанные с отказом оборудования, это нештатные ситуации. И здесь вопрос отказоустойчивости — обеспечить максимально возможный доступ к данным за какое-то разумное время. В частности, система бэкапов может быть тоже системой обеспечения отказоустойчивости.
    • ivlad: Нет. Бэкапы обеспечивают сохранность данных.
    • Юрий: Ну, скажем, так, не средства бэкапа, а средства восстановления данных из бэкапа
    • GQ: Система восстановления данных из бэкапов позволяет…
    • Юрий: Я хотел бы разделить два вида отказов: отказ, связанный с нештатной ситуации работы оборудования и ПО, и есть отказы вида штатной работы: когда всё есть, все программы работают, а вот доступа к данным нет
    • GQ: Можно, всё-таки конкретизирую. У нас есть в лаборатории люди, которые занимаются отказоустойчивостью. На самом деле, с точки зрения теории, есть понятие неисправности — это когда что-то где-то не работает. Неисправность может приводить к ошибке. Ошибка — обнаруженная неисправность, которую система обнаружила. А отказ — такая ошибка, которую мы никак не можем предотвратить или исправить, которая приводит к тому, что система перестаёт выполнять те требования, которые на неё наложены. Собственно, отказ, это когда система перестаёт работать.
    • Юрий: Так вот, дублирование узлов, избыточность и так далее — к какому виду избыточности это относится? Дублирование узлов используется, когда целиком узлы дублируются, это обеспечение доступности. А избыточность обычно для задач сохранности данных.

При этом избыточность может применяться на разных уровнях.

[править] RAID

В базовом случае, когда речь идёт именно о самих накопителях, на которых хранятся данные — использование технологии RAID. Что такое RAID, все знают, подробно про это объяснять не надо.

  • JBOD (Just Bunch Of Disks). Есть просто много дисков, разных размеров, а надо одно большое пространство, мы все вместе объединяем и получается один виртуальный диск большого размера
    • ivlad: Ты как-то подменяешь понятие, как мне кажется. JBOD это полка с дисками, которая не несёт в себе никакого интеллекта. Если есть 14 дисков, они как 14 дисков видны хосту. В отличие от более полноценной системы RAID, когда эти 14 дисков видны как-то по-другому, и над ними появляется какая-то логика
    • GQ: Значит, мы в терминологии немного расходимся, то, что я читал, там всё-таки JBOD это…
    • ivlad: Если объединяем все диски в один поток, то это конкатенация, concat. Solaris Disk Suite мы презренно отметаем сейчас.
Понятно, что объединять много дисков последовательно неинтересно, потому что когда данные читаются, они читаются последовательно, и всё читается с одного диска
  • Но дисков много, их можно читать параллельно. Тогда и придумали RAID 0, когда диски делятся на страйпы, и подряд идущие данные лежат часть на одном, часть на другом, на третьем, и так далее. Это к обеспечению отказоустойчивости никак не относится, поскольку избыточности там нет никакой. Избыточность появляется дальше.
  • Полное зеркалирование всех данных. Это RAID 1.
  • Дальше начали применять коды Хэмминга (RAID 2). Когда есть несколько дисков, можно данные так распределить, чтобы избыточность образовалась.
  • Сейчас наиболее используемые RAID 5—6, где данные блоками распределены между несколькими дисками
    • ivlad: Все знают, что такое RAID? Кто не знает?
    • Из зала: Я не знаю, что такое RAID 5 и RAID 6. Всю свою несознательную жизнь я использовал 0+1.
      Человек из зала, использующий RAID 0+1
      Человек из зала, использующий RAID 0+1
    • ivlad: Замечательно. На самом деле не факт, что она несознательная…
    • ГК: А то есть мнение, что «raid» это «набег» (отсылка к одной из лекций ГК, где к нему после лекций подошли с распечаткой переведённой PROMT'ом документации по установке Rad Hat, в которой упоминание RAID было переведона именно таким образом)
    • GQ: Понятно, что самый тупой способ хранить данные на нескольких дисках так, чтобы была устойчивость: первый байт записываем на первый диск, второй на второй, третий на третий, а на четвёртый XOR этих байт. Так работает RAID 3, если не ошибаюсь. Но это неэффективно, поскольку всё равно обмены с дисками идут блоками, поэтому решили, что хранить надо блоками, и этот XOR хранить для блока. И использовали один диск, на котором хранили контрольные суммы. Это RAID 4. Это опять же не очень эффективно, поскольку диск с контрольными суммами получается bottleneck'ом, следственно, все операции завязаны на этот диск. Поэтому придумали распределить эту контрольную сумму по всем дискам, то есть в начале для первой группы блоков она на n-ном диске, для второй — на n−1-ом, и так далее. В случае, если один из дисков выходит из строя, у нас всегда есть вся информация, чтобы все данные восстановить. Это называется RAID 5. Объединять можно любое количество дисков, больше или равное двум. В случае двух это mirror. RAID 6 это то же самое, только для каждой группы блоков два взаимодополняющих блока с чётностью. Соответственно, если два диска выходят из строя, то их также можно восстановить.
    • ivlad: Это ты тоже из Википедии взял?
    • GQ: Да.
    • ivlad: Тогда там фигня написана. Дело в том, что в шестом RAID parity считаются по-разному.
    • GQ: Ну да, два взаимодополняющих.
    • ivlad: Взаимонезависимых. Они ортогональны.
    • GQ: P и Q — они разные. Суммарный объём получается в одном случае (n−1)×(объём диска) (понятно, что диски должны быть одинаковые), и (n−2)×(объём диска). Собственно говоря, как я недавно обнаружил, в современном Linux RAID 5 и RAID 6 удачно масштабируются, то есть можно добавить ещё один диск, сказать «измени-ка мне RAID 5, чтобы он был не из 4 диско, а из 5»
    • ГК: Он будет долго мучиться…
    • GQ: Да, он будет долго мучиться, двое суток, а потом объём увеличится.
    • ivlad: У 4-го RAID есть небольшое достоинство, когда к нему диски добавляешь: дело в том, что по умолчанию у четвёртого RAID при добавлении нового диска считается, что он заполнен нулями. Поскольку контрольная сумма плюс ноль есть контрольная сумма, то общая контрольная сумма у тебя не изменяется, и ничего делать не надо, и это есть большой бонус.

[править] Комбинирование уровней RAID

Соответственно, уровни можно замечательно комбинировать. Классический пример: можно построить страйп, и поверх страйпа пустить зеркало, а можно построить зеркало, а поверх зеркала пустить страйп. Все понимают, какой из вариантов более отказоустойчивый? Есть люди, которые не могут ответить?

  • ГК: Нет, ты расскажи, расскажи

В случае, если вылетает два диска подряд, какая вероятность, что данные накроются?

  • ivlad: Почему у меня должны вылетить два диска подряд? Давай с начала разберёмся с ситуацией с одним диском.
  • GQ: Нет, если вылетает один диск, то всё замечательно. От одного диска…
  • ivlad: Когда вылетает один диск, на самом деле, всё не замечательно. Мы можем разобрать эти две ситуации: со страйпом над зеркалами и зеркалом над страйпами. И посмотри, пожалуйста, внимательно. Если у тебя вылетает в первом случае один диск, то у тебя целиком выходит из строя весь нулевой RAID, и это значит, что весь дисковый ввод-вывод у тебя упадёт на вторую половину зеркала, первую половина зеркала у тебя ... целиком. Если у тебя у тебя страйп над миррорами, то у тебя отвалился только один маленький миррор, и всё остальное дисковое I/O во всех остальных случаях у тебя будет размазано по паре
  • GQ: Ввод-вывод да, но в любом случае, я из того, что данные накроются. В одном случае, по-моему, 1/6, в другом — 1/12
  • ГК(?): Я думаю, это зависит от количества дисков…
  • GQ: В случае 4 дисков. На самом деле, если вышел из строя этот диск (один из дисков в RAID 0+1), и после этого второй какой-то диск выходит из строя. Если выйдет из строя этот диск (Второй диск в том же страйпе), то данные сможем вытащить, а если этот или этот (диски из другой половины зеркала) — уже нет, кроме как руками попытаться объединить оставшиеся диски, если вдруг получится.
  • ГК: Потому что мы не знаем, симметричны они или нет.
  • GQ: А в данном случае (RAID 10) вылетает вот этот диск (один из дисков), а после этого может вылетить этот или этот (диски в другом зеркале), и у нас всё останется, а если вылетит этот, тогда уже кирдык.
  • Из зала: Так это же то же самое…
  • GQ: Нет, здесь (RAID 0+1) если вылетел один диск, то вероятность, что мы потеряем данные 2/3
  • ГК: Просто из картинки это не следует…
Владимир Иванов рассказывает про разницу между RAID 0+1 и RAID 10
Владимир Иванов рассказывает про разницу между RAID 0+1 и RAID 10
  • ivlad: Если у тебя здесь (RAID 0+1) вылетел вот этот диск, то в RAID у тебя отвалилась эта половина зеркала целиком. Если у тебя дальше вылетел один из этих дисков (в другой половине зеркала), то у тебя отвалилось уже всё, вторая половина зеркала отвалилась, всё умерло. А вот в этой ситуации (RAID 10), если у тебя отвалился вот этот диск, то RAID 0 целиком продолжает работать, единственное что у тебя отвалилась половина зеркала, но второй диск отдаёт все свои данные. Если в этом случае отвалится любой из этих двух (в другом зеркале), то оно будет продолжать работать, а если отвалится этот (второй диск зеркала), то не будет. На деле, проблемная ситуация состоит в чём: диски делают одни и те же производители, диски в дисковые системы идут из одной партии, наблюдение за их отказами — это вещь нетривиальная. Есть некая статистика у дисковых вендоров, которая очень закрытая, она говорит о том, что диски выходят из строя одновременно, пачками. Поэтому, скорее всего, в этой ситуации выйдет из строя этот вот этот диск (второй диск зеркала). Потому что... ну, потому что тебе вообще не повезло.


Таким образом можно не только 0+1 и 1+0 объединять, но и 5+0, 1+0+0, и так далее. В случае, если вышел из строя один из дисков, возникает проблема как можно быстрее выйдет один диск, вдруг второй выйдет из строя. Так как на человека надеяться небезопасно, то для этого придумали добавлять hot spare диски, на которых ничего не хранится, и если один из дисков в RAID выходит из строя, то диск hot spare встаёт на его место.

[править] MultiPath

Это один аспект отказоустойчивости, тот, который относится к сохранности данных, а есть ещё задача обеспечения доступности. В современных системах хранения данных для этого используется технология, которая называется MultiPath. Вот у нас есть некоторый ящик с дисками, и он подключен к серверу. Вот он подключён при помощи какого-то провода, и какие-то порты ввода/вывода на этом ящике, на этом сервере. Соответственно, это узлы, которые могут выйти из строя. Во-первых, ящик можно подключить двумя проводами, тогда, если вылетает один из портов или уборщица задевает шваброй один из проводов, то всё равно они остаются соединены. И для того, чтобы это не требовало ручных изменений и настройки, существует подсистема MultiPath, которая для нашего сервера делает вид, что у нас один канал данных, а под ней же лежат эти два канала, которые, во-первых, в случае выхода одного из строя можно использовать другой, во-вторых, если у нас слабое место по скорости эти каналы, то можно и нагрузку раскидывать по ним. В частности, мы это тоже используем.

[править] RAID-контроллеры

Ещё один, совсем коротко, про RAID-контроллеры

  • ximaera: Тут коротко не получится [1]
    Антон Гавриченков (ximaera)
    Антон Гавриченков (ximaera)
  • GQ: Ну, если возникнет флейм, замечательно

Сначала контроллеры были аппаратные, такие платы, которые делали вид, что к ним подключён одни диск, а на самом деле дисков было подключено несколько, и они сами как-то все синхронизации выполняли. Платы стоят дорого, особенно, когда они производятся не на потоке, а только для дорогих серверов. Поэтому придумали, почему бы программно, на уровне системы не эмулировать то же самое. И придумали программный RAID. Понятно, что он будет требовать ресурсы нашего сервера, ЦП будет задействоваться, будет, возможно, работать медленно, из-за того, что там пока вычислитель общего назначения это посчитает, плюс ему самому приходиться распараллеливать обмены по нескольким дискам. Но, тем неменее, зато это более-менее замечательно работает. И не так давно, лет 5 назад… t Ну, хорошо, может и десять. Стало очень популярно в недорогие материнские платы встраивать нечто, что производитель гордо называл аппаратным RAID'ом, но на самом деле это не является аппаратным RAID'ом, это нечто, способное работать как RAID на этапе загрузки, на этапе BIOS, а когда загружается операционная система, там реально драйверами реализуется все эти функции, то есть ничем в лучшую сторону это от программного RAID не отличается. Зато это отличается в худшую сторону. Когда у нас программный RAID, если вышла из строя железка, к которой подключены диски, мы можем подключить их к любой другой железке, нам же нужен физический доступ только до независимых дисков, дальше оно уже само. В случае же, если вышел из строя аппаратный RAID…

  • ГК: …а вы ещё по глупости скачали под Linux и установили несвободный драйвер…

Да, в случае, если вышел из строя аппаратный RAID, то мы можем столкнуться с тем, что нужно купить точно такой же адаптер, чтобы получить доступ до наших данных, а точно такой же адаптер стоит больших денег, давно не продаётся, потому что давно вышло новое поколение, его надо заказывать из Штатов и ждать две недели и так далее.

  • Юрий: Стоп, а здесь можно пояснить?
  • GQ: Можно.
  • Юрий: Значит, эта железка нужна на этапе собственно загрузки BIOS'а…
  • ГК: Нет-нет, это не про fake-RAID…
  • GQ: Это вообще про аппаратный RAID
  • Юрий: А, тогда я тоже ошибся.

Поэтому с честными RAID тоже надо подумать, надо ли оно…

  • Юрий: На самом деле, точно такой же контроллер нужен только для RAID 5, 6 ну и 4 ещё. Потому для 3, 1 и 0 проблемы нет.
  • GQ: Для 1 — да, вот для 0…
  • ivlad(?): Достаточно знать, сколько байт…
  • GQ: Это вопрос масштаьируемый…
  • Юрий: Значит, вопрос в следующем — ... это делается просто элементарно, потому что 0, что 1 RAID, там никто не заморачивается, в отличие там, допустим, от 5. И обычная команда dd делает, всё, что нужно…
  • ГК: Единственная задача — определить, каким образом происходило разбиение на страйпы, а это уже сам устанавливаешь при создании массива
  • Юрий: На самом деле, это достаточно легко происходит, необязательно даже это знать, потому что сама файловая система, она имеет достаточно чёткое определение начальных блоков. И … понять, в какой последовательности они лежать, проблемы не представляет.

Понятно, что аппаратный RAID быстрее…

  • ivlad: На порядки, я бы даже сказал

На самом деле, у fake-RAID есть один маленький плюс — если одновременно на машине Windows и Linux, то это позволит иметь доступ до дисков этого RAID'a одновременно и из Windows и из Linux, если есть нормальные драйвера под Linux. Это у fake-RAID есть такой маленький плюс

  • ГК: Не понял. А в чём разница?
  • В СХД есть обычно свои средства

У рейд 5 есть большой недостаток --- для записи 1 байта приходится прочитать два блока, чтобы вычислить блок чётности.

  • ivlad: Для записи требуется:
R(D), R(P)
P - D
D_n + P
W(P), W(D_n)

Если надо прочитать D_1 + D_2

D_1 + D_2
W(D_1) W(D_2) W(P)

Важно понимать патторны работы с дисками при проектировании RAID 5. Общий рецепт такой: потокавая запись очень быстрая, если full-/// stripe, который может делаться или очень большим кэшем, или операционная система видит, что длинная операция записи, отключает кэш и все операции сразу идут на бэкенд-петлю. В случае же RAID 10 нужно синхронизировать ... . ...

Ещё на умных, хороших аппаратный рейдах есть собственный кэш, собственная память для того, чтобы подобрать правильную посл. записи на диск. Во-вторых, там есть замечательное свойство, что после того, как данные сохранили в кэш, можно сказать ОС, что данные сохранены. В этом случае может быть проблема, что делать, если питание отрубится. Обычно, для этого есть батарейка, которая позволяет сохранить кэш..

[править] LVM

  • Не можем спланировать, сколько потребуется места через 3 года
  • Хотим home 300ГБ, а у нас два диска по 200
  • Или сначала был один диск, а потом появился второй

Для этого всего исп такую вещь, как LVM. У нас есть физ. устройства, например, два диска по 200, разбили их на 100+100 и 200, над ними указываем группы томов: sda1 и sda2+sdb1, над группами можно создать виртуальные тома.

  • Юрий: а зачем выделять группы?

Дальше уже выделяем root/usr/var

  • ГК: я ничего не понял про то, где тут масштабируемость. Из проблемы понятно, как решается
  • GQ: изначально выделяется по 5 гигабайт, потом увеличить тома можно, и оно изменит размер online
  • ivlad: И это фрагментируется?
  • GQ: да, возникает проблема фрагментации
  • ...

Далее, если купили терабайт и хотим выкинуть два по 200, то подключаем терабайт, говорим мигрировать, и отключаем старые

Логические тома

  • Физ. том
  • Группа лог. томов
  • Лог. том

Свойства

  • Snapshot. Хотим получим копию логического тома, чтобы он был консистентен по времени. Для этого создаётся снэпшот (на самом деле, никакого копирования не происходит, заводится метаинформация). Если что-то пишем, то сохраняем и то, и то.
  • Юрий: ...
  • ivlad: ...
  • ivlad: ещё более интересная ситуация, когда надо сделать снэпшот сырого диска. Производители ... публикуют интерфейсы, которые позволяют делать снэпшот тейблспейса, и оракл дальше пишет в лог(?) ... но это решение на уровне приложения

[править] СХД

  • DAS --- direct attached storage --- ящик с дисками. Хранилище, которое подкл. непосредственно. DAS работает по принципу одного потребителя данных, и в случае децентрализации потребителя этого недостаточно для решения этого придумали
  • NAS --- ящик, к которому подключаются по сети и работает с ним
  • SAN --- Storage Area Network

DAS

  • Работают по стандартным интерфейсам
  • Предст. либо RAW диски, либо иногда RAID, но это всё просто

NAS

  • Стандартные помойки, которые подключаются по HTTP, FTP, NFS...
    • ГК: а это только файл-ориентированные доступ?
    • Да.

SAN

  • Даёт доступ до блочного пространства (блочная семантика) и ничто не запрещает нам иметь доступ одновременно к одному блочному устройству с нескольких потребителей
  • В качестве физического интерфейса используется либо Ethernet либо IP, самое быстрое и вкусное это Fibre Channel
    • iSCSI --- инкапсуляции SCSI команд в IP сети
    • FC --- high-end --- специальная технология для построения сетей с высокой пропускной способностью и низк. латент. В первую очередь FC исп в СХД. Обычно используется оптоволокно, но можно и медь. В качестве протокола используется FCP --- инкапсуляция низк. протокола SCSI. При этом в принципе можно использовать различные топологии: точка-точка, каждый с каждым, switched fabric --- топология, когда есть несколько устройств, которые называются Fibre Channel Switch, они как-то соединены, мы подключаем потребителя и поставщика данных к этой сети, и как-то по этой сети до этих данных можно достучаться, там достаточно интересные способы маршрутизации, и с избыточностью там всё хорошо; ещё одна топология --- кольцо с арбитром.
    • ivlad: фабрика устроена достаточно сложно, там свои алгоритмы маршрутизации, всё это очень интересно..

[править] Подключение СХД

Следующий вопрос, как система подкл. к потреб. Если у нас инкапс. SCSI over IP, то можно прогр. решение организовать, в принципе, для SCSI исп. карточки, которые наз. host bus adapteer. В системе они видны как контроллеры, а диски, которые доступны с SAN, видны как разные SCSI-диски.

При помощи линка подключили енд-поинт, но он сгорел. поэтому, одного подкл. недостаточно, и можно делать неск., но чем больше, тем дороже. Staragea предст. вирт диск, и он доступенн со всех трёх адаптеров как неоке устр-во, ... и диск доступен тремя разными путями.

[править] Типы дисков, исп. в СХД

  • В NAS/DAS --- IDE-SCSI-SATA-SAS
  • В SAN исп. в дешёвых SATA, в подороже либо SAS, либо FC, они работают по FCP
    • Из зала: есть ещё FATA --- ATA, к которому присобачен FC

[править] Пример СХД

Та хрень, которая у нас в итоге применяется, это EMC Clarion AX150 (но под брендом Aquarius) с двумя процессорами и И/П

В итоге выглядит это вот так вот:

  • ivlad: в случае отказа может выйти из строя вся фабрика, поэтому делают две фабрики, но здесь вырожденный случай.

Крутится это на виндах ...

Процессорам в итоге видны 8 томов, которые объединены линуксовым MP, у EMC есть свои драйвера, но вот ...

  • ivlad: для чего на самом деле покупаются подобные системы

PowerPath: умеет гонять служебные данные (пинг) по неактивному пути, для проверки, можно на него переключиться или нет.

В любом случае, использоывать ядерный модуль мы не могли, потому что Debian, а не RHEL/SLES/CentOS, и кроме того, использовался Xen.

Эти самые FC-свичи это не совсем тупая вещь, в случае, когда 1 сервер, 1 хранилище, нет необходимости кому-то что-то запрещать, но когда есть несколько серверов и хранилищ, то нужно делать нечто аналогичное VLAN, в FC это называется зонинг. И несмотря на то, что инженеры говорили, что втыкаешь --- всё работает, то через свичи не работало. Оказалось, что зонинг включён по умолчанию, и он блокировал всё.

[править] Enterprise-решения

Понятно, что можно поставить писюк, поставить харды, и всё настроить. Но в этом случае нужно всё настраивать руками, тут необзодимо добиваться произв, и так далее.

Вопросы:

  • Балансировка --- осущ. dev. mapper ---
    • ivlad: ... В системах нач. уровня только так и делается, в более крутых системах может осущ дин. нагрузка, ...

ivlad:

Речь в итоге идёт о деньгах. Домашние решения против вендорских. Понятно, что вендорские будут дороже. Но люди, которые их покупают, полагаются, вот на что:

  • Всё завязывается на людей. Если человек собрал решение, то на него всё завязывается, в случае с вендором это перекладывается на вендора.
  • GQ: Говорят, что диски, которые в кларионах, тестируются неск. дней в гермокамерах
  • ivlad: так и есть, потому они таких денег и стоят
  • GQ: и они несовместимы с другими...
  • ivlad: да, и это понятно,почему. Как минимум, нои отформатированы под 520, а не 512 байт. ... В итоге, тут нет ни одной критичной точки, во вторых, ошибки обнаруживаются до того, как они станут критичными.

Symmetrix: там всего по много и всё симметрично.

Есть фронтэнд процессоыр (до 16), етсь кэши (по 256G), есть бэкенды (до 16),

Каждый диск обслуживается как минимум двусмя процессорами. В таком случае балансировка сделается более эффективной. Тут можно играться с QoS.

Потоковая запись происходит совсем по-разному. Кларион, когда видит, что поток, он ничего не пишет в кэш, он сразу пишет на диск. Если дисков много, то такую операцию выгодно делать. А в случае симметрикса, топология такова, что кэш пробить нельзя, и работать он всё равно будет работать черз кэш. И вопросы произв. не то, чтобы оченнь сложные, но очень много тонких моментов. Нужно подобрать такой паттерн, чтобы забить 256Г кэша, то будет скорость работы с дисками. Если писать только на опр. диски

Префетч: бывет выгодно прочитать вместе с 3 блоком 4,5,6,7 и 8. Прочитав в кэш, мы натыкаемся на баланс, мы с одной стороны забиваем кэш и замедл. запись, но с другой стороны ускоряем чтение, если угодали.

Поэтому от адм. стораджа требуется внимание к тому, какие паттерны в его системе.

В симметриксе есть специальная тулза для performance monitoring. В Симметриксе он даже может автоматически решить задачу по некоторым метрикам так, чтобы произв. повысилась. В кларионе эта задача ложится на администратора.

  • Вопрос: вы сказали про рейд 5 из 15 дисков, там что, действительно 14+1?
  • ivlad: да
  • Но это понижает надёжность
  • Да, здесь вопрос в балансе

...

Вообще гворя, все конструкции по поводу постр. дисков, постр. рейдов...

Если вернутьтся от 5 рейда до 6, то в 6 считаются две чексуммы --- одна поперёк, вторая диагонально. Пример на 5 дисках:

Что здесь хорошо: чёткость размазана и всё работает при выходе из строя двух дисков.

Как работает parity в RAID5: P = d1 xor d2.

Когда К6 стал актуален --- когда диски стали настолько большие, что вероятность вылета второго диска во время ребилда стала актуальной.

Распространённая ситуация на тот момент: интерфейс хоста --- для FC на тот момент 1Гбит, будем считать что это 100МБайт. Если надо ребилднуть 100-гиговый диск, то 1000 секунд, если учеть реальную эффективность, то это порядка 1/8 суток. Плюс реальная нагрузка бегает...

В кларионах диск ребилдится сутки. Кларион может поставить приоритет на процесс ребилда.

Вообще говоря, избыточность может быть любой, m+n, что позволяет пережить m отказов. Но по скорости он сосёт, псокольку уже дя R6 нужно собирать квадрат, и при случайной записи надо собрать квадрат, и скорость проседает, что можно решать кэшом. Но большие кэши это техн. сложно.

Компания NetApp предложила следующее: давайте делтаь случайную запись, но писать на диск последовательно. Что мы получили: мы получили запись быструю (потому что пишем только full-... stripe) и это очень хорошо. Но возникает проблема фрагментации. Мало того, что надо делать мэппинг, но понятно, что ни о какм префетче можно не говорить, всё врея надо перепозиц. головку. Решение тут только одно --- делать периодич. дефрагментацию. Решение делать дефр. online эта такая инж. задача, вполне себе решаемая. Теоретически эта задача разрешимая, практически её пока не решили. Есть офлайновая дефрагментация.

Поэтому среди unix-гиков он очень популярен. У него хорошаяреализация nfs, он быстрее писюка. С другой стороны, у него гламурная командная строчка, и он выгядит довольно прикольно. Из success-story --- Я.Деньги по слухам работают на них.

У R6 есть разные подсчёты второй parity.

  • Вопрос: про SSD
    • Уже сейчас можно купить Symmetrix с SSD
    • Плюсы и минусы SSD: операции записи ползут.
    • Надо правильно понимать, где они нужны: если позиционирование игрвет роль, то оно актуально, там будет большой прирост. Там, где делаешь потоковую запись, то тут смысла нет.
    • В чём отличия при исп.: не сбрасывают кэш, поск. отсут. статистика по отказам

Паттерн работы с БД: записи накапливаются в лог потом оно

Тюнить работу с дисками можно вечно, как PS1 в баше.


UNИX, весна 2008


Лекции

01 02 03 04 05 06 07 08 09 10 11 12 13 14


Календарь

Февраль
13 20 27
Март
05 12 19 26
Апрель
02 09 16 23 30
Май
07 14
Семинары

01 02 03 04 05 06 07


Календарь

Март
21
Апрель
04
Май
16 30
Июль
11 18
Август
15


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы