Ниже будут перечислены используемые параметры для тюнинга ZFS.
Категорія: Solaris
Запрет удаления файлов в Solaris
Вот такая нехитрая задача возникающая перед администраторами: писать можно, удалять нельзя и всё это ограничение применить только к конкретному пользователю. Решается она просто: через ACL. Причём нужно иметь ввиду, что бы запретить удаление, нужно явно это указать (если у пользователя отсутствуют явные запреты, то он всё равно сможет их “нарушить”).
Стандартные права выглядят так: rwxpdDaARWcCos, где буквы dD означают разрешение на удаление (d – удаление файла, D – удаление файла или папки внутри директории).
Предположим, вам надо запустить сервис не от root’a и при этом, создать файл (например, сокет или pid) в системной папке /var/run от этого юзера. Правильный Solaris-way следующий:
Создаём группу
# svccfg -s svc:/network/test1234 addpg method_context framework
Выставляем необходимого юзера и группу
# svccfg -s svc:/network/test1234 setprop 'method_context/user = astring: "webservd"'
# svccfg -s svc:/network/test1234 setprop 'method_context/group = astring: "webservd"'
Не знаю, проявляется ли это на новых версиях 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.
Solaris verbose boot process
По умолчанию, Solaris при загрузке очень краток: 3 строки и хватит. Что бы “разговорить” его (по аналогии, как это в Linux/FreeBSD) можно пойти 2-мя путями: править grub или “true Solaris-way“. О втором методе ниже:
# /usr/sbin/svccfg -s system/svc/restarter:default
svc:/system/svc/restarter:default> addpg options application
svc:/system/svc/restarter:default> setprop options/logging = astring: verbose
svc:/system/svc/restarter:default> exit
После этого можно перегружаться и проверять: будет выводится каждая загруженная служба.
FreeBSD
$ sockstat
Solaris
$ netstat -u
Linux
$ lsof -i
OpenBSD
$ fstat
Перенос зоны с помощью archiveadm
В 11.2 появился новый инструмент для переноса зон – archiveadm. Теперь не нужно создавать отдельно конфигурацию зоны, сжимать файлы – всё делается автоматически.
1) Создание архива.
# archiveadm create --exclude-media -z archived-zone /path/to/archive.uar
После этого можно переносить архив на другую машину.
IPFilter
map net0 10.10.10.0/24 -> 192.168.0.2/24 round-robin
map net0 10.10.10.0/24 -> 192.168.0.3 round-robin
Iptables
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0/24
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254
Linux
# strings –a /proc/<pid_of_the_process>/environ
FreeBSD
# procstat -e <pid_of_the_process>
Solaris
# pargs -e <pid_of_the_process>
FAQ по pkg (solaris)
pkg CVE
Начиная с SRU 11.2.5.X.X доступен поиск по базе CVE. Подробнее можно прочесть здесь. Так же можно проверить, исправлен ли нужный баг:
$ pkg search -f ':set:com.oracle.service.bugid:7146824' INDEX ACTION VALUE PACKAGE com.oracle.service.bugid set 7146824 pkg:/library/security/openssl@1.0.0.7-0.175.0.5.0.3.0