Pull to refresh
37
0
Kirill @gatech

User

Send message

Как работает ZFS — часть 2: metaslab

Reading time6 min
Views11K
В первой части я описал как организованы данные на vdev в ZFS. Вторая часть описывает как работает алгоритм выбора собственно места, куда запись будет идти в данный момент.

Здесь я немного усложню задачу — в первой части был описан только один vdev; здесь их у нас будет несколько, поскольку алгоритм должен выбрать и vdev, куда мы будем писать блок данных, и metaslab внутри vdev'a. В продакшн системе может быть несколько десятков vdev, и правильно распределить данные по ним критично — перебалансировать их мы уже не сможем без копирования всех данных. Цель правильного алгоритма — распараллелить данные так, чтобы на каждом девайсе их было примерно одинаковое количество, выровнять неравномерное заполнение, но и не перегрузить один из девайсов (это будет тормозить запись на весь пул).

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c1t6d0    ONLINE       0     0     0
          c1t5d0    ONLINE       0     0     0


Для начала, важное замечание: ZFS рассчитан на то, что все девайсы в пуле имеют одинаковый размер. Иначе, например если добавить 2Тб диск в пул из 1Тб дисков, на 2Тб диске в результате окажется в два раза больше данных, и он начнёт влиять на суммарный IOPs системы — алгоритм аллокатора учитывает процент заполнения, а не количество данных в байтах.

На данный момент в ZFS есть четыре алгоритма аллокатора. Переменная zfs_metaslab_ops содержит поинтер на структуру space_map_ops_t, в которой есть поинтеры на семь функций, которые использует каждый конкретный алгоритм. Например, в Illumos используется алгоритм metaslab_df, и соответствующий стракт с поинтерами на функции выглядит вот так:
Читать дальше →

Как работает ZFS — часть 1: vdev

Reading time3 min
Views33K
Vdev, или Virtual Device — это базовая единица, на которой строится массив данных ZFS (zpool). Для работы ZFS необходим как минимум один vdev — виртуальное устройство, которое позволяет случайный доступ к информации на уровне блоков.

Обычно, в качестве таких блоков используются целые диски или iScsi/FC LUNы (raw-disk vdev), но можно также использовать разделы дисков или файлы. Целые диски предпочтительнее, так как для них ZFS использует onboard write cache, в результате чего производительность записи может значительно улучшиться. Я пока не буду объяснять разницу между logical vdev и leaf vdev — это топик для отдельной статьи про то как работает RaidzN и zfs mirror.
src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/fs/zfs/vdev_disk.c#314
if (vd->vdev_wholedisk == 1) 
{
	int wce = 1;
	/*
	 * If we own the whole disk, try to enable disk write caching.
	 * We ignore errors because it's OK if we can't do it.
	 */
	(void) ldi_ioctl(dvd->vd_lh, DKIOCSETWCE, (intptr_t)&wce, FKIOCTL, kcred, NULL);
}

В описании структуры виртуального устройства можно посмотреть какие параметры используются для чего, но я не собираюсь давать объяснение каждому — цель статьи — описание собственно того как ZFS хранит и пишет данные.

Каждый vdev разделен на логические разделы (metaslab),
Читать дальше →

Корпоративная CMS на .NET — какие варианты?

Reading time2 min
Views3.5K
Есть идея переделать наш корпоративный сайт, чтобы он шёл в ногу со временем. Основная идея — что-то вроде внутреннего блога, который можно редактировать только из нашей внутренней сети, но доступного в read-only из интернета.

В связи с этим, доступ пользователей должен контролироваться Active Directory, и быть незаметным для пользователей — так что использовать придётся Mixed Mode Windows Authentication; в Интернет должна идти версия в которой вообще нет проверки или возможности залогиниться, и в которой не отображаются комментарии, только топики. Такой вот корпоративный Хабр.

Главная проблема...

Карманные компьютеры: где прогресс?

Reading time2 min
Views1K
Сегодня задумался над вопросом: Что вообще происходит с рынком карманных компьютеров? Ведь за последние 4 года ситуация практически не изменилась. Palm Tungsten T3 вышел в Октябре 2003, 4 с половиной года назад. Ещё раньше, в Апреле 2003, вышел Palm Tungsten C который, за исключением экрана меньшего размера, был даже лучше, потому что имел встроенный WiFi. В Августе 2004 года HP выпустил iPaq hx4700 — до сих пор, по моему мнению, один из лучших КПК — именно его я купил прошлым летом, когда мой Palm помер смертью храбрых после того как я забыл его на багажнике машины.

Так вот, качественно за 4 (или даже 5) лет не изменилось ничего, и это
огорчает

Information

Rating
Does not participate
Location
США
Date of birth
Registered
Activity