Архив рубрики: FreeBSD

[openzfs] Ускоряем resilver/scrub/destroy

Если значения по умолчанию вам не очень подходят:

int zfs_top_maxinflight = 32;           /* maximum I/Os per top-level */
int zfs_resilver_delay = 2;             /* number of ticks to delay resilver */
int zfs_scrub_delay = 4;                /* number of ticks to delay scrub */
int zfs_scan_idle = 50;                 /* idle window in clock ticks */
int zfs_scan_min_time_ms = 1000;        /* min millisecs to scrub per txg */
int zfs_free_min_time_ms = 1000;        /* min millisecs to free per txg */
int zfs_resilver_min_time_ms = 3000;    /* min millisecs to resilver per txg */
int zfs_no_scrub_io = B_FALSE;          /* set to disable scrub i/o */
int zfs_no_scrub_prefetch = B_FALSE;    /* set to disable srub prefetching */

Читать далее

[FreeBSD] Добавить патч на постоянной основе

EXTRA_PATCHES в /etc/make.conf

.if ${.CURDIR:M*/emulators/open-vm-tools}
EXTRA_PATCHES=/path/to/vmware-guestd.in.patch
.endif

Если патчей много на разные порты, то можно недавно придуманный
EXTRA_PATCH_TREE использовать.

ПС. Совет не мой, увидел в рассылке

[FreeBSD] Установка нового ядра, если не хватает места

Предположим, вам достался старый сервер, у которого на корневом разделе доступного места всего 500 мб и 300 из них заняты. Нужно обновить ОС или пересобрать ядро? Ниже покажу как и где можно сэкономить место.

Читать далее

Гарантированный запуск единичной копии скрипта

Принцип ее работы прост: для каждого процесса она создает файл и вешает на него lock. Как только процесс завершается, лок пропадает. Лок также пропадает в случае внезапной смерти процесса, и нет необходимости проверять pid на существование или делать другие телодвижения. Если процесс запускается повторно, а лок-файл еще не освободился, работа скрипта прерывается и выдается сообщение в STDERR. Читать далее

[ZFS] Замена сбойного диска сбойным

Не знаю, проявляется ли это на новых версиях ZFS, но достаточно интересный хак. И так, ситуация следующая: при замене диска в пуле, в процесс перестройки, выпал заменяемый диск. Тогда пул навсегда замирает в состоянии DEGRADED. Как быть? Вот здесь подсмотрел хак. Приведу цитатой:

echo zfs_no_scrub_io/W0t1 | mdb -kw

После этого надо дать resilver закончиться (он пройдёт достаточно быстро), и «zpool offline» сбойное устройство.

Потом поменять параметр назад:

echo zfs_no_scrub_io/W0t0 | mdb -kw

и «zpool replace» его работающим диском.

Принцип работы хака: в треде, где идёт resilver, мы пропускаем собственно часть, которая пишет данные; resilver заканчивается (естественно, на битый диск мы ничего не пишем, так что ошибок на нём не будет, но и данных тоже).

Для FreeBSD использовать соответственно

# sysctl vfs.zfs.no_scrub_io=1

и после окончанию работ выставить в 0.