Pull to refresh
  • by relevance
  • by date
  • by rating

Исходный код ядра Solaris 11

Open source *
Некоторое время назад корпорация Oracle закрыла исходники Solaris и прекратила присылать изменения в OpenSolaris. Такое решение вызвало недовольство многих разработчиков, в том числе некоторых сотрудников компании Oracle. Судя по всему, один из них нарушил корпоративную дисциплину и выложил в открытый доступ исходные коды ядра Solaris 11, так что разработчики открытого проекта OpenIndiana (форк OpenSolaris) могут посмотреть, какие изменения сделаны в ядре, обеспечить совместимость с файловой системой ZFS и т.д.

solaris11.tar.bz2

Правда, использовать фрагменты этого кода в своих проектах нельзя, пока Oracle официально не опубликует их под свободной лицензией CDDL. Кто знает, вдруг Oracle специально организовала эту «утечку», чтобы потом засудить организацию Illumos Foundation, которая занимается разработкой OpenIndiana.
Total votes 45: ↑38 and ↓7 +31
Views 2.8K
Comments 32

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

Open source *
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),
Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Views 28K
Comments 38

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

Open source *
В первой части я описал как организованы данные на 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, и соответствующий стракт с поинтерами на функции выглядит вот так:
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 11K
Comments 4

Как PVS-Studio может помочь в поиске уязвимостей?

PVS-Studio corporate blog Information Security *Open source *C++ *C *


Уязвимость в терминах компьютерной безопасности — недостаток в системе, позволяющий намеренно нарушить её целостность или вызвать неправильную работу. Как показывает практика, даже, казалось бы, незначительный баг может являться серьёзной уязвимостью. Уязвимостей можно избежать, используя различные методики валидации и верификации программного обеспечения, в том числе — статический анализ. О том, как с задачей поиска уязвимостей справляется PVS-Studio, и пойдёт речь.
Читать дальше →
Total votes 39: ↑33 and ↓6 +27
Views 6.3K
Comments 6

Oracle фактически ликвидирует Sun

Development Management *Project management *Community management *

Избегайте этой ловушки, не следует придавать антропоморфные черты Ларри Эллисону.
Брайэн Кантрилл


Похоже, что в Oracle приняли решение окончательно избавиться от трудовых ресурсов, составляющих костяк Sun Microsystems. Массовые увольнения затронули около 2500 сотрудников, работающих над операционной системой Solaris, платформой SPARC и системами хранения данных ZFS Storage Appliance.





Это не рядовая трансформация — оптимизация, а настоящая бойня. По мнению создателя системы динамической отладки Dtrace Брайэна Кантрилла (Bryan Cantrill) на сей раз нанесен непоправимый ущерб, в результате потери 90% производственных кадров подразделения Solaris, включая все руководство.

Читать дальше →
Total votes 61: ↑60 and ↓1 +59
Views 43K
Comments 83