Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-10 15:40:33

Demis писал(а): И меня клинит, вроде как звучит как prefetch_disable.
тут как раз все просто
0 - prefetch включен
1 - prefetch выключен
Demis писал(а): Да блин косяк, я его вчера вечером только заметил.
а покажи тогда loader.conf и sysctl.conf
интересно чего ты там "натюнил"

Отправлено спустя 59 секунд:
Demis писал(а): Сегодня утром перед перезагрузкой shutdown -r now сделал rehash, так на всякий случай.
а rehash зачем?

Отправлено спустя 3 минуты 49 секунд:
Demis писал(а): Дело в том, что по ссылке https://www.freebsd.org/doc/handbook/zfs-advanced.html
а нафига ты вообще полез в тюнинг?
обнаружил узкие места в работе системы или сразу на всякий случай?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-10 16:13:30

Neus писал(а): сделал rehash, так на всякий случай
И вот ведь еще какой момент, в субботу 2016-02-06, я вообще все loader sysctl (а rc.conf упрощал до минимума) переименовывал, специально посмотреть не вмешиватся-ли они.
Результат тот-же.
Neus писал(а): а нафига ты вообще полез в тюнинг?
Хороший вопрос, ответ: не знаю.
Скорее всего (судя по месту где я нашел в конфиге и совсем НЕ в моем привычном разделе по zfs) когда изначально сервер создавался и я ему устраивал стресс тесты (чтобы понимать в будущем как решать проблемы) оный так и остался как апокриф...
А конфиги-то естественно перенес, и вроде как перепроверял...
Ну т.е. в любом случае я его проморгал.
Еще добавлю, что когда по стрес тестированию все сделал, система была полностью переустановлена.
Винчестры ВСЕ т.е. и системные, и хранилища затерты с помощью

Код: Выделить всё

gdisk 1 /diskwipe /dod
Из нортоновского комплекта 2003 года выпуска. Ну паранойя, блин...
Конфиги: sed '/ *#/d; /^ *$/d' /etc/sysctl.conf

Код: Выделить всё

security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.link.ether.inet.max_age=1200
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc3390=1
net.inet.tcp.rfc3042=1
net.inet.tcp.sack.enable=1
net.inet.udp.maxdgram=57344
net.inet.raw.maxdgram=53248
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.tcp.msl=15000
net.inet.icmp.icmplim=100
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.ip.fw.one_pass=0
net.inet6.ip6.v6only=0
net.inet6.ip6.accept_rtadv=0
net.inet6.ip6.auto_linklocal=0
kern.maxfiles=204800
kern.maxfilesperproc=200000
vfs.vmiodirenable=1
dev.igb.0.rx_processing_limit=4096
dev.igb.1.rx_processing_limit=4096
net.graph.maxdgram=8388608
net.graph.recvspace=8388608
net.route.netisr_maxqlen=4096
kern.ipc.nmbclusters=4194304
kern.ipc.maxsockbuf=83886080
net.inet.ip.dummynet.pipe_slot_limit=1000
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fastforwarding=1
net.inet.ip.intr_queue_maxlen=10240
net.inet.tcp.recvspace=262144
net.inet.tcp.sendspace=262144
net.inet.tcp.mssdflt=1452
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=65535
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
net.inet.tcp.delayed_ack=0
kern.ipc.somaxconn=8192
net.inet.ip.portrange.randomized=0
net.inet.tcp.nolocaltimewait=1
vfs.zfs.l2arc_noprefetch=0
sed '/ *#/d; /^ *$/d' /boot/loader.conf

Код: Выделить всё

debug.acpi.max_tasks="128"
net.inet6.ip6.rfc6204w3="0"
net.inet6.ip6.v6only="0"
net.inet6.ip6.no_radr="1"
net.inet6.ip6.accept_rtadv="0"
net.inet6.ip6.auto_linklocal="0"
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
net.isr.defaultqlimit=4096
net.link.ifqmaxlen=10240
if_lagg_load="YES"
hw.igb.num_queues=3
aio_load="yes"
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=131072
vfs.ufs.dirhash_maxmem=16777216
ichsmb_load="YES"
ipmi_load="YES"
vfs.zfs.min_auto_ashift=12
vm.kmem_size="7920M"
vm.kmem_size_max="7920M"
vfs.zfs.arc_max="960M"
vfs.zfs.vdev.cache.size="120M"

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-10 19:39:19

Мда…
Вот смотри какую фигню я вижу:
1. Ты ограничил размер ARC, при этом юзаешь L2ARC, а его метаданные хранятся как раз в ARC, возможно поэтому zfs-stat и показал что он disable.
2. Для какого workload понадобилось включить prefetch в L2ARC? Профит от L2 есть при random read, при sequence read ну разве что при раздаче видеопотоков и то если скорость чтения с этого девайса >> скорости чтения со всех дисков пула, например, скорость ссд 500 мб/с, а суммарная скорость чтения с raidz2 из 8 сата будет в районе 150х6=900 мб/с (надо будет проверить это утверждение из гайда по zfs).
3. Убери последние 4 тюна из loader.conf, там же было написано - для i386 ;)

А почему num_queues 3, вроде бы их 4 должно быть, не?

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-10 21:12:21

Neus писал(а): при этом юзаешь L2ARC
А мой вопрос "Какого при всем написаном про мой L2ARC в диагностике пишется "L2ARC is disabled" ???" на первой странице?
(Блин не знаю как ссылку на другу станицу сделать).
Как-же я его юзаю если zfs-stats -DL

Код: Выделить всё


------------------------------------------------------------------------
ZFS Subsystem Report                            Wed Feb 10 19:59:07 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV Cache Summary:                             12.76m
        Hit Ratio:                      57.83%  7.38m
        Miss Ratio:                     33.98%  4.34m
        Delegations:                    8.20%   1.05m

------------------------------------------------------------------------
Neus писал(а): раздаче видеопотоков
Нет видео редко, но есть.
Однако есть файлы например tif'ы размером в 500Мб, 1Гб, 2Гб, 3Гб и т.д.
С ними народ работает по сетке через самбу.
Этот самый простой пример.
Соответственно, применялось, проверялось и гонялось, то что народ рекомендовал в сети по увеличению скорости отдачи в сетку.
Под это настраивалось все, включая сетевой стек. Т.е. например свичи все работают на MTU9000, компы тоже.
Сетевой адаптер на сервере тоже (обратил внимание почему он у меня lagg0?
Demis писал(а): if_lagg_load="YES"
)

Код: Выделить всё

igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
        options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
        ether 00:25:90:57:a5:48
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
igb1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
        options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
        ether 00:25:90:57:a5:48
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
        options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
        ether 00:25:90:57:a5:48
        nd6 options=9<PERFORMNUD,IFDISABLED>
        media: Ethernet autoselect
        status: active
        laggproto lacp lagghash l2,l3,l4
        laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
И оба порта воткнуты в 1Гбитный свич от киски.
Neus писал(а): num_queues 3
Под эту-же тему, если я правильно помню, то были вылеты под нагрузкой, и где-то нарыл что надо уменьшить.
Уменьшил до трех проблемы прекратились.
Это все пройденный этап на стадии стресс тестов.
Neus писал(а): там же было написано - для i386
Опять-же вот тут мой вопрос непонимания.
Объясню в чем:
1. Мне известно из дампа (выкладывал ранее), что

Код: Выделить всё

#0 0xffffffff8099b170 at kdb_backtrace+0x60
#1 0xffffffff8095ed26 at vpanic+0x126
#2 0xffffffff8095ebf3 at panic+0x43
#3 0xffffffff81e0322f at assfail3+0x2f
#4 0xffffffff81ca9d40 at zio_buf_alloc+0x50
#5 0xffffffff81c2b9f8 at arc_get_data_buf+0x358
#6 0xffffffff81c2e20a at arc_read+0x1ea
#7 0xffffffff81c3669c at dbuf_read+0x6ac
#8 0xffffffff81c3d8bf at dmu_spill_hold_existing+0xbf
#9 0xffffffff81c70dd7 at sa_attr_op+0x167
#10 0xffffffff81c72ffb at sa_lookup+0x4b
#11 0xffffffff81cbc82a at zfs_rmnode+0x2ba
#12 0xffffffff81cda58e at zfs_freebsd_reclaim+0x4e
#13 0xffffffff80ed4a67 at VOP_RECLAIM_APV+0xa7
#14 0xffffffff80a02824 at vgonel+0x1b4
#15 0xffffffff80a02cb9 at vrecycle+0x59
#16 0xffffffff81cda52d at zfs_freebsd_inactive+0xd
#17 0xffffffff80ed4957 at VOP_INACTIVE_APV+0xa7
и

Код: Выделить всё

#0  doadump (textdump=<value optimized out>) at pcpu.h:219
#1  0xffffffff8095e982 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:451
#2  0xffffffff8095ed65 in vpanic (fmt=<value optimized out>, ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:758
#3  0xffffffff8095ebf3 in panic (fmt=0x0) at /usr/src/sys/kern/kern_shutdown.c:687
#4  0xffffffff81e0322f in assfail3 (a=<value optimized out>, lv=<value optimized out>, op=<value optimized out>, rv=<value optimized out>, f=<value optimized out>,
    l=<value optimized out>) at /usr/src/sys/modules/opensolaris/../../cddl/compat/opensolaris/kern/opensolaris_cmn_err.c:91
#5  0xffffffff81ca9d40 in zio_buf_alloc (size=0) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c:270
#6  0xffffffff81c2b9f8 in arc_get_data_buf (buf=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:2898
#7  0xffffffff81c2e20a in arc_read (pio=0xfffff8000f77bac8, spa=0xfffff8000f645000, bp=0xfffffe001747b980, done=0xffffffff81c3a2d0 <dbuf_read_done>,
    private=0xfffff801ec6a92a0, priority=ZIO_PRIORITY_SYNC_READ, zio_flags=1119243402, arc_flags=0xfffffe02924043c4, zb=0xffffffff81c3a2d0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1551
#8  0xffffffff81c3669c in dbuf_read (db=0xfffff801ec6a92a0, zio=0x0, flags=6) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c:573
#9  0xffffffff81c3d8bf in dmu_spill_hold_existing (bonus=0xfffff801ecb771c0, tag=0x0, dbp=0xfffff801ecb729d8)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
#10 0xffffffff81c70dd7 in sa_attr_op (hdl=0xfffff801ecb729b0, bulk=0xfffffe0292404528, count=1, data_op=SA_LOOKUP, tx=0x0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c:310
#11 0xffffffff81c72ffb in sa_lookup (hdl=0xfffff801ecb729b0, attr=<value optimized out>, buf=<value optimized out>, buflen=<value optimized out>)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c:1441
#12 0xffffffff81cbc82a in zfs_rmnode (zp=0xfffff801ecb8ba10) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c:633
#13 0xffffffff81cda58e in zfs_freebsd_reclaim (ap=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:6569
#14 0xffffffff80ed4a67 in VOP_RECLAIM_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:2019
#15 0xffffffff80a02824 in vgonel (vp=0xfffff801ecb8e1d8) at vnode_if.h:830
#16 0xffffffff80a02cb9 in vrecycle (vp=0xfffff801ecb8e1d8) at /usr/src/sys/kern/vfs_subr.c:2703
#17 0xffffffff81cda52d in zfs_freebsd_inactive (ap=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:6540
#18 0xffffffff80ed4957 in VOP_INACTIVE_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:1953
#19 0xffffffff80a015f2 in vinactive (vp=0xfffff801ecb8e1d8, td=0xfffff800561ad000) at vnode_if.h:807
#20 0xffffffff80a019e2 in vputx (vp=0xfffff801ecb8e1d8, func=2) at /usr/src/sys/kern/vfs_subr.c:2306
#21 0xffffffff80a0a28e in kern_rmdirat (td=<value optimized out>, fd=<value optimized out>, path=<value optimized out>, pathseg=<value optimized out>)
    at /usr/src/sys/kern/vfs_syscalls.c:3842
#22 0xffffffff80dab337 in amd64_syscall (td=0xfffff800561ad000, traced=0) at subr_syscall.c:134
#23 0xffffffff80d90a1b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396
#24 0x00000008008914ea in ?? ()
(это правда кусок сегодняшнего дампа, но погоды не меняет)
есть какая-то проблема с

Код: Выделить всё

#5  0xffffffff81ca9d40 in zio_buf_alloc (size=0) 

почему функция получает зеро?
2. Я писал что есть "странности", т.к. цитирую

Код: Выделить всё

vm.kmem_size="7920M"
vm.kmem_size_max="7920M"
vfs.zfs.arc_max="960M"
vfs.zfs.vdev.cache.size="120M"
и вторая цитата:

Код: Выделить всё

после установки параметров в /boot/loader.conf сегодня,
что 
Код: Выделить всё

sysctl vm.kmem_size_max
vm.kmem_size_max: 8304721920

т.е. 7.734375 гигабайт
Что вроде как правильнее чем было ранее:

Код: Выделить всё

sysctl vm.kmem_size_max
vm.kmem_size_max: 1319413950874

т.е. 1228.799997712 гигабайт
3. Исходя из дампа и настроек для i386, а так-же НЕПОНЯТНЫХ мне 1228.799997712 гигабайт я и оставил этот параметр.
Ну если буфер адресуется на некий участок памяти, а такого адреса нет и в помине...
Ни физически, ни логически.
5. Пока думаю лучше не убирать, это недолго сделать.

А вот еще что я нарыл по поводу моего долбанного буфера zio_buf_alloc , правда об этом пишет народ кто юзает zfs на линуксе
https://github.com/zfsonlinux/zfs/issues/2932
в первом-же посте между кусками багтрейсов видим глазами ссылку "4a7480a"
https://github.com/zfsonlinux/zfs/commi ... 8bf734dc10
А там написано:

Код: Выделить всё

The general strategy used by ZFS to verify that blocks are is to
checksum everything.  This has the advantage of being extremely
robust and generically applicable regardless of the contents of
the block.  If a blocks checksum is valid then its contents are
trusted by the higher layers.

This system works exceptionally well as long bad data is never
written with a valid checksum.  However, if this does somehow
occur due to a software bug or a memory bit-flip on a non-ECC
system it may result in kernel panic.

One such place where this could occur is if somehow the logical
size stored in a block pointer exceeds the maximum block size.
This will result in an attempt to allocate a buffer greater than
the maximum block size causing a system panic.

To prevent this from happening the arc_read() function has been
updated to detect this specific case.  If a block pointer with an
invalid logical size is passed it will treat the block as if it
contained a checksum error.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #2678
Интересно, думаю, дочитываю первую ссылку до конца,
натыкаюсь на https://github.com/zfsonlinux/spl/issues/390
вижу фразы в текстах, о битых атрибутах.
У меня ведь тоже так-же, думаю.
Посмотреть я их могу, а изменить нет (правда только на некоторых файлах).
Возвращаюсь на https://github.com/zfsonlinux/zfs/commi ... 8bf734dc10
Читаю код изменений, лезу посмотреть у себя, а там...
Циферьки номеров строк поставил, т.к. оные поменялись.

Код: Выделить всё

ee /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
107
-arc_buf_t *arc_buf_alloc(spa_t *spa, int size, void *tag,
    arc_buf_contents_t type);
+arc_buf_t *arc_buf_alloc(spa_t *spa, uint64_t size, void *tag,
     arc_buf_contents_t type);

109
-arc_buf_t *arc_loan_buf(spa_t *spa, int size);
+arc_buf_t *arc_loan_buf(spa_t *spa, uint64_t size);

114
-int arc_buf_size(arc_buf_t *buf);
+

1531
-arc_buf_alloc(spa_t *spa, int size, void *tag, arc_buf_contents_t type)
+arc_buf_alloc(spa_t *spa, uint64_t size, void *tag, arc_buf_contents_t type)

1536
-ASSERT3U(size, >, 0);
+VERIFY3U(size, <=, SPA_MAXBLOCKSIZE);

1569
-arc_loan_buf(spa_t *spa, int size)
+arc_loan_buf(spa_t *spa, uint64_t size)

1961
-int
+uint64_t

3383
 		enum zio_compress b_compress = ZIO_COMPRESS_OFF;
 		uint64_t b_asize = 0;
 
+		/* Gracefully handle a damaged logical block size. */
+		if (size > SPA_MAXBLOCKSIZE) {
+			rc = ECKSUM;
+			goto out;
+		}
+
ee /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
а еще проразил такой момент в дампе

Код: Выделить всё

netstat: invalid address (0x0)
24582/16422/41004 mbufs in use (current/cache/total)
18446744073709551607/12919/12910/4194304 mbuf clusters in use (current/cache/total/max)
0/12912 mbuf+clusters out of packet secondary zone in use (current/cache)
0/28/28/253440 4k (page size) jumbo clusters in use (current/cache/total/max)
24570/42/24612/225279 9k jumbo clusters in use (current/cache/total/max)
0/0/0/168960 16k jumbo clusters in use (current/cache/total/max)
227257K/30433K/257691K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
число "18446744073709551607" впечатлило
вот как это выглядит на работающей машине:

Код: Выделить всё

24595/9335/33930 mbufs in use (current/cache/total)
0/3596/3596/4194304 mbuf clusters in use (current/cache/total/max)
0/3289 mbuf+clusters out of packet secondary zone in use (current/cache)
0/45/45/253440 4k (page size) jumbo clusters in use (current/cache/total/max)
24570/301/24871/75093 9k jumbo clusters in use (current/cache/total/max)
0/0/0/42240 16k jumbo clusters in use (current/cache/total/max)
227278K/12414K/239693K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
И тут я призадумася, блин я ведь точно этот код от Brian Behlendorf <behlendorf1@llnl.gov> не первый раз читаю...
Кажется я это уже один раз правил...
А при переустановке забыл, надо поднимать записи (хотя записал я это или нет не помню)...
Уф. Устал.

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-11 0:33:34

Решил посмотреть чем наши старшие братья занимаются и вот что обнаружил,
Есть разница в кодах, как раз в тех участках о чем народ по линуксу писал...
https://svnweb.freebsd.org/base/releng/ ... iew=markup

Код: Выделить всё

1531 	arc_buf_alloc(spa_t *spa, int size, void *tag, arc_buf_contents_t type)
1536 	        ASSERT3U(size, >, 0);
1569 	arc_loan_buf(spa_t *spa, int size)
3382 	                enum zio_compress b_compress = ZIO_COMPRESS_OFF;
3383 	                uint64_t b_asize = 0;
и (что называется, почувствуйте разницу)
https://svnweb.freebsd.org/base/stable/ ... iew=markup

Код: Выделить всё

2029 	arc_buf_alloc(spa_t *spa, int32_t size, void *tag, arc_buf_contents_t type)
2034 	        ASSERT3U(size, >, 0);
2073 	arc_loan_buf(spa_t *spa, int size)
4390 	                enum zio_compress b_compress = ZIO_COMPRESS_OFF;
4391 	                int32_t b_asize = 0;
Это я только кусочки привел, но они как раз те, о чем мной писалось.
И в 10 стабл оное вошло только в 03.10.2015
по https://svnweb.freebsd.org/base/stable/ ... h?view=log
есть описалово

Код: Выделить всё

Rewrite the ZFS prefetch code to detect only forward, sequential
streams.

The following kstats have been added:

    kstat.zfs.misc.arcstats.sync_wait_for_async

        How many sync reads have waited for async read
        to complete. (less is better)

    kstat.zfs.misc.arcstats.demand_hit_predictive_prefetch

        How many demand read didn't have to wait for I/O
        because of predictive prefetch.  (more is better)

zfetch kstats have been similified to hits, misses, and max_streams,
with max_streams representing times when we were not able to create
new stream because we already have the maximum number of sequences
for a file.

The sysctl variable/loader tunable vfs.zfs.zfetch.block_cap have been
replaced by vfs.zfs.zfetch.max_distance, which controls maximum bytes
to prefetch per stream.

illumos/illumos-gate@cf6106c8a0d6598b045811f9650d66e07eb332af

Illumos ZFS issues:

    5987 zfs prefetch code needs work
    https://www.illumos.org/issues/5987
или например такое:

Код: Выделить всё

Modified Sat Oct 3 07:27:58 2015 UTC (4 months, 1 week ago) by mav
File length: 5904 byte(s)
Diff to previous 277586

MFC r286570: 5408 managing ZFS cache devices requires lots of RAM
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Don Brady <dev.fs.zfs@gmail.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Approved by: Garrett D'Amore <garrett@damore.org>
Author: Chris Williamson <Chris.Williamson@delphix.com>

illumos/illumos-gate@89c86e32293a30cdd7af530c38b2073fee01411c

Currently, every buffer cached in the L2ARC is accompanied by a 240-byte
header in memory, leading to very high memory consumption when using very
large cache devices. These changes significantly reduce this overhead.

Currently:

L1-only header = 176 bytes
L1 + L2 or L2-only header = 176 bytes + 32 byte checksum + 32 byte l2hdr
    = 240 bytes

Memory-optimized:

L1-only header = 176 bytes
L1 + L2 header = 176 bytes + 32 byte checksum = 208 bytes
L2-only header = 96 bytes + 32 byte checksum = 128 bytes

So overall:

          Trunk  Optimized
        +-----------------+
L1-only | 176 B  | 176 B  | (same)
        +-----------------+
L1 & L2 | 240 B  | 208 B  | (saved 32 bytes)
        +-----------------+
L2-only | 240 B  | 128 B  | (saved 116 bytes)
        +-----------------+

For an average blocksize of 8KB, this means that for the L2ARC, the ratio
of metadata to data has gone down from about 2.92% to 1.56%.  For a
'storage optimized' EC2 instance with 1600GB of SSD and 60GB of RAM, this
means that we expect a completely full L2ARC to use (1600 GB * 0.0156) /
60GB = 41% of the available memory, down from 78%.

Relnotes:	yes
Там вообще интересно почитать...
Видимо придется срочно на стабл переползать...

Отправлено спустя 7 минут 48 секунд:
И еще полезно почитать.
Картинка как как повязан код zio.c
http://people.freebsd.org/~gibbs/zfs_do ... io_8c.html
И там-же описание как работают функции в zio
Ну это так, для общего развития.

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-11 9:47:13

Demis писал(а): А мой вопрос "Какого при всем написаном про мой L2ARC в диагностике пишется "L2ARC is disabled" ???" на первой странице?
а хрен его знает почему система его отключила.
у меня например написала VDEV Cache disabled
вот, 12 часов гонял iometer-ом iSCSCI lun 3 TB на FreeNAS, паттерном: 100% random 50%read/50%write 4k blocksize

Код: Выделить всё

# arc_summary.py
System Memory:

        4.96%   384.55  MiB Active,     2.66%   206.49  MiB Inact
        67.71%  5.13    GiB Wired,      0.38%   29.33   MiB Cache
        24.27%  1.84    GiB Free,       0.02%   1.19    MiB Gap

        Real Installed:                         8.00    GiB
        Real Available:                 98.31%  7.86    GiB
        Real Managed:                   96.27%  7.57    GiB

        Logical Total:                          8.00    GiB
        Logical Used:                   74.15%  5.93    GiB
        Logical Free:                   25.85%  2.07    GiB

Kernel Memory:                                  456.42  MiB
        Data:                           94.89%  433.11  MiB
        Text:                           5.11%   23.32   MiB

Kernel Memory Map:                              7.57    GiB
        Size:                           37.81%  2.86    GiB
        Free:                           62.19%  4.71    GiB
                                                                Page:  1
------------------------------------------------------------------------

ARC Summary: (HEALTHY)
        Storage pool Version:                   5000
        Filesystem Version:                     5
        Memory Throttle Count:                  0

ARC Misc:
        Deleted:                                16.67m
        Recycle Misses:                         644.23k
        Mutex Misses:                           512
        Evict Skips:                            512

ARC Size:                               40.73%  2.68    GiB
        Target Size: (Adaptive)         100.00% 6.57    GiB
        Min Size (Hard Limit):          12.50%  841.16  MiB
        Max Size (High Water):          8:1     6.57    GiB

ARC Size Breakdown:
        Recently Used Cache Size:       73.76%  4.85    GiB
        Frequently Used Cache Size:     26.24%  1.72    GiB

ARC Hash Breakdown:
        Elements Max:                           4.80m
        Elements Current:               100.00% 4.80m
        Collisions:                             20.16m
        Chain Max:                              19
        Chains:                                 987.40k
                                                                Page:  2
------------------------------------------------------------------------

ARC Total accesses:                                     28.99m
        Cache Hit Ratio:                46.42%  13.46m
        Cache Miss Ratio:               53.58%  15.53m
        Actual Hit Ratio:               46.39%  13.45m

        Data Demand Efficiency:         92.87%  1.37m
        Data Prefetch Efficiency:       0.41%   3.70k

        CACHE HITS BY CACHE LIST:
          Most Recently Used:           21.24%  2.86m
          Most Frequently Used:         78.70%  10.59m
          Most Recently Used Ghost:     12.81%  1.72m
          Most Frequently Used Ghost:   10.56%  1.42m

        CACHE HITS BY DATA TYPE:
          Demand Data:                  9.45%   1.27m
          Prefetch Data:                0.00%   15
          Demand Metadata:              90.49%  12.18m
          Prefetch Metadata:            0.06%   8.57k

        CACHE MISSES BY DATA TYPE:
          Demand Data:                  0.63%   97.53k
          Prefetch Data:                0.02%   3.69k
          Demand Metadata:              99.33%  15.43m
          Prefetch Metadata:            0.02%   2.83k
                                                                Page:  3
------------------------------------------------------------------------

L2 ARC Summary: (HEALTHY)
        Passed Headroom:                        2.89m
        Tried Lock Failures:                    15.81k
        IO In Progress:                         0
        Low Memory Aborts:                      0
        Free on Write:                          20.93k
        Writes While Full:                      3.50k
        R/W Clashes:                            482
        Bad Checksums:                          0
        IO Errors:                              0
        SPA Mismatch:                           105.33m

L2 ARC Size: (Adaptive)                         72.29   GiB
        Header Size:                    1.37%   1016.29 MiB

L2 ARC Evicts:
        Lock Retries:                           0
        Upon Reading:                           0

L2 ARC Breakdown:                               15.48m
        Hit Ratio:                      97.53%  15.10m
        Miss Ratio:                     2.47%   382.30k
        Feeds:                                  56.12k

L2 ARC Buffer:
        Bytes Scanned:                          11.39   TiB
        Buffer Iterations:                      56.12k
        List Iterations:                        3.47m
        NULL List Iterations:                   102.59k

L2 ARC Writes:
        Writes Sent:                    100.00% 54.36k
                                                                Page:  4
------------------------------------------------------------------------
обрати внимание на:

Код: Выделить всё

L2 ARC Size: (Adaptive)                         72.29   GiB
        Header Size:                    1.37%   1016.29 MiB
вроде как вот этот Header Size сидит как раз в ARC.
о! надо у себя ограничить ARC и посмотреть что будет с L2

Код: Выделить всё

ZFS Tunable (sysctl):
        kern.maxusers                           839
        vm.kmem_size                            8129863680
        vm.kmem_size_scale                      1
        vm.kmem_size_min                        0
        vm.kmem_size_max                        1319413950874
в loader.conf vm.kmem_* не прописано, это дефолт
цифира 1319413950874 это виртуальная память а не физическая, адресное пространство x64 огого, смысл ее занижать?
это я к тому что подсистема vm сама себя хорошо тюнит, зачем вмешиваться :)
--
offtop: я на винде всяким "тюнингом" маялся по-молодости, пока не прочитал Windows Internals, Марка Русиновича. :)
--
а к сетевым тюнингам вопросов нет :)
что касается этой функции с нулевым размером:
как я понял у тебя какой-то косяк в метаданных на пуле, из за чего и возвращается нулевой размер.
не думаю что это из за кода что ты привел - загрузи с флешки последнюю версию SmartOS, импортни пулл, почитай файлы - думаю будет тоже самое.
про zfs on linux ваще не напоминай, там с ней бяда-бяда..
ставил proxmox последний потестить виртуалки на zvol, так эта зараза выдала кернел-паник при копировании iso, ваще писец..
Demis писал(а): Видимо придется срочно на стабл переползать...
подожди, скоро 10.3 релизнется ;)

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-11 11:53:20

Neus писал(а): а хрен его знает почему система его отключила
У меня есть подозрение на
Demis писал(а): vfs.zfs.l2arc_noprefetch=0
Надо будет проверить.
Neus писал(а): виртуальная память а не физическая
Да я-то это вроде как понимаю. Тем более что по большому счету память у нас вся виртуальная.
И насколько я помню проблема первых 512kb до сих пор не решена, хотя уже эра х64 машин.
Да трюком всяких напридумали и в софт, и в бивосы натолкали.
Что мы теперь и не думаем об этом, т.е. вроде как проблемы и невидно.
Мои рассуждения просты как белый лист:
Память в моем понимании не важно какая она (физика-ли, логика-ли, виртуалка-ли, и т.д.)
она должна адресоваться. Т.е. гипотетически берем весь RAM плюсуем ВСЕ пространство винчестеров (ну т.е. все доступное место куда может записаться некий файл). Помещаем туда этот самый файл размером RAM+ALL_HDD. Т.е. ячейки памяти все заняты, записаны, уплотнены и т.д. И куда тогда второй такой файл записать???
Вроде как некуда, а число
Neus писал(а): 1319413950874
говорит что есть.
Как Станиславский говорил - не верю!
Будь он трижды виртуальным, чтобы обратиться к ячейке памяти по адресу он должен существовать.
Поэтому я и написал, что пока оставлю, ну т.е. до выяснения причин проблем с зосей.
Neus писал(а): Марк
Мозг, его утилитами пользуюсь лет пятнадцать минимум, а хорошие мозги на дороге не валяются. Не даром его в m$ пригласили несколько лет назад. Практически каждая из его набора шедевр.
Neus писал(а): тебя какой-то косяк в метаданных на пуле
Сложно сказать однозначно, думаю что все-таки проблема ближе к тому о чем народ пишет.
Ведь у меня не отрабатываю штатные утилиты. И об этомже на тех форумах пишут, и разбор делают, и пальцем тыкают...
Есть свежая инфо, я вчера запустил просто повторно zpool scrub hdd , почувствуйте разницу:

Код: Выделить всё

zpool status hdd
  pool: hdd
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(7) for details.
  scan: scrub repaired 0 in 14h57m with 0 errors on Thu Feb 11 03:35:43 2016
config:

        NAME         STATE     READ WRITE CKSUM
        hdd          ONLINE       0     0     0
          raidz2-0   ONLINE       0     0     0
            mfid1p1  ONLINE       0     0     0
            mfid2p1  ONLINE       0     0     0
            mfid3p1  ONLINE       0     0     0
            mfid4p1  ONLINE       0     0     0
            mfid5p1  ONLINE       0     0     0

errors: No known data errors
Я НЕ ДЕЛАЛ zpool clear !!!
Просто тупо еще раз отскрабил.
Повторюсь, думаю проблема не в самом пуле как таковом, он работает и живет, проблема где-то в другом.
Ну т.е. "обвязка" пула исправна и "фунциклирует".
Единственное, я сейчас не могу проверить вылеты.
Народ работает (под топором, мол эти папки ни-ни-ни!!!).
Если вылет будет по их причине сообщу, а так только вечером смоделирую...
Neus писал(а): скоро 10.3 релизнется
Нифига себе скоро!!! 22 марта https://www.freebsd.org/releases/10.3R/schedule.html

Код: Выделить всё

RELEASE builds begin 	18 March 2016 	- 	10.3-RELEASE builds begin.
RELEASE announcement 	22 March 2016 	- 	10.3-RELEASE press release.
На субботу уже себе мир стабла собрал пока generic хочу попробовать.
Просто за вечер мне не сделать.

Отправлено спустя 2 минуты 49 секунд:
Demis писал(а): 512kb
Блин совсем спятил, наверное 640kb...

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение snorlov » 2016-02-11 12:48:11

А я в тот раз и не додумался еще раз scrub запустить, правда у меня 9.1 стояла... Ну раз ошибки ушли, может не стоит суетиться и дождаться релиза 10.3, заодно и понаблюдать будут падения или нет...

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-11 13:17:48

Demis писал(а): У меня есть подозрение на
Demis писал(а):
Источник цитаты vfs.zfs.l2arc_noprefetch=0

Надо будет проверить.
неа

Код: Выделить всё

# sysctl vfs.zfs.l2arc_noprefetch
vfs.zfs.l2arc_noprefetch: 0
# sysctl vfs.zfs.arc_max
vfs.zfs.arc_max: 536870912 (512М)
йоу! ваще прикол! (ARC Size: 122.92% 629.33 MiB)

Код: Выделить всё

ARC Size:                               122.92% 629.33  MiB
        Target Size: (Adaptive)         100.00% 512.00  MiB
        Min Size (Hard Limit):          47.32%  242.29  MiB
        Max Size (High Water):          2:1     512.00  MiB
        
L2 ARC Size: (Adaptive)                         31.10   GiB
        Header Size:                    1.41%   448.21  MiB
        
не отключает, как видишь...

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-11 16:38:00

Demis писал(а): Память в моем понимании не важно какая она (физика-ли, логика-ли, виртуалка-ли, и т.д.)
она должна адресоваться. Т.е. гипотетически берем весь RAM плюсуем ВСЕ пространство винчестеров (ну т.е. все доступное

место куда может записаться некий файл). Помещаем туда этот самый файл размером RAM+ALL_HDD. Т.е. ячейки памяти все заняты,

записаны, уплотнены и т.д. И куда тогда второй такой файл записать???
Вроде как некуда, а число
Neus писал(а):
Источник цитаты 1319413950874
говорит что есть.
давай не будем углубляться в модели памяти :)
если ты откроешь файл в режиме mmap то примерно как ты описал и будет - система будет отображать этот файл в виртуальную

память, а виртуальную в физическую, если этот файл будет размером 2ТВ, то 2ТВ она выжрет из виртуальной памяти и будет

частями отображать её в физическую, если конечно у тебя не 4ТВ RAM тогда может и весь в кэш всосать и отобразить сразу в

физику ))))

Код: Выделить всё

# sysctl -d vm.kmem_size_max
vm.kmem_size_max: Maximum size of kernel memory
kmem используется помимо прочего и для отображения в виртуальную память mmap файлов, а ты ограничил ее 8гигами - вдруг не

хватит ;)
ладно, давай завязывать оффтопик с оптимизацией..

я честно говоря не вчитывался в ссылки, если ты думаешь что проблема в разном коде функций, возьми SmartOS да поделай

операции на этом пуле что приводят к факапу.. тама все-таки свежее код чем в фряхе.

кстати
Demis писал(а): status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(7) for details
а почему пулл не апгрейдил?
у тебя все эти фичи не активны так?

Код: Выделить всё

# zpool get all test
NAME  PROPERTY                       VALUE                          SOURCE
test  feature@async_destroy          enabled                        local
test  feature@empty_bpobj            active                         local
test  feature@lz4_compress           active                         local
test  feature@multi_vdev_crash_dump  enabled                        local
test  feature@spacemap_histogram     active                         local
test  feature@enabled_txg            active                         local
test  feature@hole_birth             active                         local
test  feature@extensible_dataset     enabled                        local
test  feature@embedded_data          active                         local
test  feature@bookmarks              enabled                        local
test  feature@filesystem_limits      enabled                        local
test  feature@large_blocks           enabled                        local

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-11 17:03:23

Neus писал(а): давай не будем углубляться в модели памяти
Согласен.
Neus писал(а): почему пулл не апгрейдил
Пока выжидаю, сейчас 28-ая.
Настораживают несколько моментов:
1. Не смогу поднять массив на машинке в стороне (в случае серьезных проблем с железом),
т.к. без ее апгрейда пул будет теперь недоступен.
2. Какие-то терки по поводу лицензионности кода и фич в версиях выше 28-ой.
Мои фишки попроще:

Код: Выделить всё

NAME  PROPERTY                       VALUE                          SOURCE
hdd   feature@async_destroy          enabled                        local
hdd   feature@empty_bpobj            active                         local
hdd   feature@lz4_compress           active                         local
hdd   feature@multi_vdev_crash_dump  disabled                       local
hdd   feature@spacemap_histogram     disabled                       local
hdd   feature@enabled_txg            disabled                       local
hdd   feature@hole_birth             disabled                       local
hdd   feature@extensible_dataset     disabled                       local
hdd   feature@embedded_data          disabled                       local
hdd   feature@bookmarks              disabled                       local
hdd   feature@filesystem_limits      disabled                       local
hdd   feature@large_blocks           disabled                       local

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-11 18:57:31

Пункт 1 не понял почему не сможешь?
Щас везде кроме оригинала в солярке версия пула одинаковая.
ARC Summary: (HEALTHY)
Storage pool Version: 5000
Filesystem Version: 5
Список что я привёл, это с корзины где я мучал проксмокс с zfs, т.е. изначально он был создан на линуксе.
Потом я ставил туда фрю 10.2, затем freenas9.3, потом omnios-{lts,stable,bloody}, и снова щас фринас мучаю. Просто выключал девайс, вставлял флешку с другой ОС и импорт пула.
Пункт 2 - кто с кем трёт?

Отправлено спустя 3 минуты 20 секунд:
Аа… что-то туплю, понял - у тебя сторонний девайс со старой ОС :)

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-11 22:16:12

Neus писал(а): vfs.zfs.l2arc_noprefetch=0
Про этот префеч все-таки надо разобрться, вроде-как когда 0, то л2 выключен.

Причем есть фишка, выключать в /boot/loader.conf , т.е. перезагрузка обязательно.
И пуле тоже управляется, правда там включено по дефолту.
Поэтому надо сначала тюнить /boot/loader.conf для обоих кешей, перегрузиться, потом с пулом играться

У меня так и получается

Код: Выделить всё

sysctl kstat.zfs.misc.arcstats.size
kstat.zfs.misc.arcstats.size: 454604432   - это 0.4233833700418 Гб
sysctl -a|grep vfs.zfs.arc_meta_used  - у меня вообще нет такого
sysctl -a | grep vfs.zfs.arc_meta
vfs.zfs.arc_meta_limit: 251658240
л1

Код: Выделить всё

# zfs get primarycache hdd
NAME  PROPERTY      VALUE         SOURCE
hdd   primarycache  metadata      local
# zfs get primarycache hdd/usr
NAME     PROPERTY      VALUE         SOURCE
hdd/usr  primarycache  metadata      local
# zfs get primarycache hdd/usr/wf
NAME        PROPERTY      VALUE         SOURCE
hdd/usr/wf  primarycache  metadata      local
л2

Код: Выделить всё

zfs get secondarycache hdd
NAME  PROPERTY        VALUE           SOURCE
hdd   secondarycache  all             default
# sysctl vfs.zfs.l2arc_noprefetch
vfs.zfs.l2arc_noprefetch: 0
# zfs get secondarycache hdd/usr
NAME     PROPERTY        VALUE           SOURCE
hdd/usr  secondarycache  all             default
# zfs get secondarycache hdd/usr/wf
NAME        PROPERTY        VALUE           SOURCE
hdd/usr/wf  secondarycache  all             default
Причем видишь, хоть у меня на пуле включено, но параметр в лоадере приоритетнее.
И по факту мой л2 выключен.

пруф до просветленияhttps://unixzen.ru/%D1%82%D1%8E%D0%BD%D ... 0-freebsd/

Код: Выделить всё

Отобразить ваш текущий ARC исползования метаданных и предел метаданных (в байтах), запустите:
# sysctl vfs.zfs.arc_meta_used 
# sysctl vfs.zfs.arc_meta_limit 
По умолчанию, ARC включен на всех наборах данных. Если у вас был опыт проблем с производительностью по причине 

полного и неэффективного ARC вы можете решить отключить ARC или предел кэша только метаданных на 

некритичных наборах данных:

# zfs set primarycache=[all|metadata|none] dataset 
Для отображения аптайма и реального времени активности ARC и эффективности, пожалуйста обратитесь к разделу 

этой статьи zfs-stats и zfs-mon
И там-же

Код: Выделить всё

L2arc_noprefetch определяют настройку в 0 по умолчанию. Это отключает кэширование последовательного чтения. 

Включение этих настроек (значение 1) в большинстве случаев улучшает производительность L2ARC, например для 

потокового видео или веб серфинга больших файлов.
# sysctl vfs.zfs.l2arc_noprefetch=1 

По умолчанию, L2ARC включен для всех наборов данных. Вы можете отключить L2ARC или пределы его для 

кэширования только метаданных как за набор данных настройки:

# zfs set secondarycache=[all|metadata|none] dataset 
Для отображения uptime и реального времени активности L2ARC и эффективности, пожалуйста обратитесь к разделам 

статьи zfs-stats и zfs-mon.
Нужно в твоем случае все заново перепроверить.
Где-то закавыка.

Отправлено спустя 14 минут 25 секунд:
Так, по моей исходной проблеме.
Докладываю: эффект сохранился.
Значит, все-таки, придется в субботу колдовать.

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-12 0:49:52

Простите мой могучий и великий: Oh, shit! WTF tuning?! :%

Не помню где читал развёрнутую правильную трактовку этого параметра от разработчика, т.е. "Из первых рук". Но вот нашёл на другом сайте тоже самое:
vfs.zfs.l2arc_noprefetch
This controls if the zfs prefetcher (zfetch) should read data from the l2 arc when prefetching. It does not control if prefetched data is cached into l2. It only controls if the prefetcher uses the l2 arc to read from.
Теперь про wtf tuning :)
Ты вообще молодец, мало того что уменьшил кэш в оперативке до гига так ещё и на всех датасетах пула включил кэширование только метаданных. Я не знал что в этом случае система отключает л2, но это вполне логично.
А параметры кэширования работают так:
если на датасете отключить л1, то л2 для этого датасета тоже выключится несмотря на то что в в параметрах стоит all.
А если на л1 включить metadata, то л2 похоже тоже отключается, тк смысла кэшировать метаданные в нем нету.

А по самой проблеме - хз, вариант один - проверить как будет на другой оси, но только не линукс :)

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-12 2:12:02

По кешу еще ссылку интересную нарыл она явно оракловская, но открывается по ip и с сертификатом от аваста.
https://137.254.16.27/brendan/entry/test
Картинки оттуда:
ИзображениеИзображениеИзображение
И схемка познавательная по работе обоих кешей.
Вот что он (Brendan Gregg) пишет

Код: Выделить всё

If anyone is interested, I wrote a summary of L2ARC internals as a block comment in usr/src/uts/common/fs/zfs/arc.c, which is also surrounded by the actual implementation code. The block comment is below (see the source for the latest version), and is an excellent reference for how it really works:

Код: Выделить всё

/\*
 \* Level 2 ARC
 \*
 \* The level 2 ARC (L2ARC) is a cache layer in-between main memory and disk.
 \* It uses dedicated storage devices to hold cached data, which are populated
 \* using large infrequent writes.  The main role of this cache is to boost
 \* the performance of random read workloads.  The intended L2ARC devices
 \* include short-stroked disks, solid state disks, and other media with
 \* substantially faster read latency than disk.
 \*
 \*                 +-----------------------+
 \*                 |         ARC           |
 \*                 +-----------------------+
 \*                    |         \^     \^
 \*                    |         |     |
 \*      l2arc_feed_thread()    arc_read()
 \*                    |         |     |
 \*                    |  l2arc read   |
 \*                    V         |     |
 \*               +---------------+    |
 \*               |     L2ARC     |    | 
 \*               +---------------+    |
 \*                   |    \^           |
 \*          l2arc_write() |           |
 \*                   |    |           |
 \*                   V    |           |
 \*                 +-------+      +-------+
 \*                 | vdev  |      | vdev  |
 \*                 | cache |      | cache |
 \*                 +-------+      +-------+
 \*                 +=========+     .-----.
 \*                 :  L2ARC  :    |-_____-|
 \*                 : devices :    | Disks |
 \*                 +=========+    `-_____-'
 \*
 \* Read requests are satisfied from the following sources, in order:
 \*
 \*      1) ARC
 \*      2) vdev cache of L2ARC devices
 \*      3) L2ARC devices
 \*      4) vdev cache of disks
 \*      5) disks
 \*
 \* Some L2ARC device types exhibit extremely slow write performance.
 \* To accommodate for this there are some significant differences between
 \* the L2ARC and traditional cache design:
 \*
 \* 1. There is no eviction path from the ARC to the L2ARC.  Evictions from
 \* the ARC behave as usual, freeing buffers and placing headers on ghost
 \* lists.  The ARC does not send buffers to the L2ARC during eviction as
 \* this would add inflated write latencies for all ARC memory pressure.
 \*
 \* 2. The L2ARC attempts to cache data from the ARC before it is evicted.
 \* It does this by periodically scanning buffers from the eviction-end of
 \* the MFU and MRU ARC lists, copying them to the L2ARC devices if they are
 \* not already there.  It scans until a headroom of buffers is satisfied,
 \* which itself is a buffer for ARC eviction.  The thread that does this is
 \* l2arc_feed_thread(), illustrated below; example sizes are included to
 \* provide a better sense of ratio than this diagram:
 \*
 \*             head -->                        tail
 \*              +---------------------+----------+
 \*      ARC_mfu |:::::#:::::::::::::::|o#o###o###|-->.   # already on L2ARC
 \*              +---------------------+----------+   |   o L2ARC eligible
 \*      ARC_mru |:#:::::::::::::::::::|#o#ooo####|-->|   : ARC buffer
 \*              +---------------------+----------+   |
 \*                   15.9 Gbytes      \^ 32 Mbytes    |
 \*                                 headroom          |
 \*                                            l2arc_feed_thread()
 \*                                                   |

 \*                       l2arc write hand <--[oooo]--'
 \*                               |           8 Mbyte
 \*                               |          write max
 \*                               V
 \*                +==============================+
 \*      L2ARC dev |####|#|###|###|    |####| ... |
 \*                +==============================+
 \*                           32 Gbytes
 \*
 \* 3. If an ARC buffer is copied to the L2ARC but then hit instead of
 \* evicted, then the L2ARC has cached a buffer much sooner than it probably
 \* needed to, potentially wasting L2ARC device bandwidth and storage.  It is
 \* safe to say that this is an uncommon case, since buffers at the end of
 \* the ARC lists have moved there due to inactivity.
 \*
 \* 4. If the ARC evicts faster than the L2ARC can maintain a headroom,
 \* then the L2ARC simply misses copying some buffers.  This serves as a
 \* pressure valve to prevent heavy read workloads from both stalling the ARC
 \* with waits and clogging the L2ARC with writes.  This also helps prevent
 \* the potential for the L2ARC to churn if it attempts to cache content too
 \* quickly, such as during backups of the entire pool.
 \*
 \* 5. After system boot and before the ARC has filled main memory, there are
 \* no evictions from the ARC and so the tails of the ARC_mfu and ARC_mru
 \* lists can remain mostly static.  Instead of searching from tail of these
 \* lists as pictured, the l2arc_feed_thread() will search from the list heads
 \* for eligible buffers, greatly increasing its chance of finding them.
 \*
 \* The L2ARC device write speed is also boosted during this time so that
 \* the L2ARC warms up faster.  Since there have been no ARC evictions yet,
 \* there are no L2ARC reads, and no fear of degrading read performance
 \* through increased writes.
 \*
 \* 6. Writes to the L2ARC devices are grouped and sent in-sequence, so that
 \* the vdev queue can aggregate them into larger and fewer writes.  Each
 \* device is written to in a rotor fashion, sweeping writes through
 \* available space then repeating.
 \*
 \* 7. The L2ARC does not store dirty content.  It never needs to flush
 \* write buffers back to disk based storage.
 \*
 \* 8. If an ARC buffer is written (and dirtied) which also exists in the
 \* L2ARC, the now stale L2ARC buffer is immediately dropped.
 \*
 \* The performance of the L2ARC can be tweaked by a number of tunables, which
 \* may be necessary for different workloads:
 \*
 \*      l2arc_write_max         max write bytes per interval
 \*      l2arc_write_boost       extra write bytes during device warmup
 \*      l2arc_noprefetch        skip caching prefetched buffers
 \*      l2arc_headroom          number of max device writes to precache
 \*      l2arc_feed_secs         seconds between L2ARC writing
 \*
 \* Tunables may be removed or added as future performance improvements are
 \* integrated, and also may become zpool properties.
 \*/
Причем там тексты даны интересные, как это пощупать в диагностике. С примерами.
О, нарыл, как это открывается по другому:
https://blogs.oracle.com/brendan/entry/test
Он поменял работу, теперь его блог по этому адресуhttp://dtrace.org/blogs/brendan/

Код: Выделить всё


Sunday Oct 24, 2010


G'Day and Goodbye 

By brendan on Oct 24, 2010

In 2006 I received a phone call from Bryan Cantrill of Sun Microsystems, inviting me to join a new team, Fishworks. In four years I've learned and accomplished a lot, and worked with many talented people. We achieved our goal, shipped an amazing product, and made an ambitious dream a reality. It's been a privilege to be part of it, and to be able to contribute and innovate in many different areas along the way.
And now, a different and exciting job awaits. My last day here is Oct 25, ending a brief and busy four years at Sun and then Oracle. Good luck, and thanks. My work blog will move to dtrace.org/blogs/brendan.

Brendan 
Но зосю не бросил:

Код: Выделить всё

16. ZFS … up to 100x
Description: Semi-regular spikes in I/O latency on an SSD postgres server.

Analysis: The customer reported multi-second I/O latency for a server with flash memory-based solid state disks (SSDs). Since this SSD type was new in production, it was feared that there may be a new drive or firmware problem causing high latency. ZFS latency counters, measured at the VFS interface, confirmed that I/O latency was dismal, sometimes reaching 10 seconds for I/O. The DTrace-based iosnoop tool (DTraceToolkit) was used to trace at the block device level, however, no seriously slow I/O was observed from the SSDs. I plotted the iosnoop traces using R for evidence of queueing behind TXG flushes, but they didn’t support that theory either. 

This was difficult to investigate since the slow I/O was intermittent, sometimes only occurring once per hour. Instead of a typical interactive investigation, I developed various ways to log activity from DTrace and kstats, so that clues for the issue could be examined afterwards from the logs. This included capturing which processes were executed using execsnoop, and dumping ZFS metrics from kstat, including arcstats. This showed that various maintenance processes were executing during the hour, and, the ZFS ARC, which was around 210 Gbytes, would sometimes drop by around 6 Gbytes. Having worked performance issues with shrinking ARCs before, I developed a DTrace script to trace ARC reaping along with process execution, and found that it was a match with a cp(1) command. This was part of the maintenance task, which was copying a 30 Gbyte file, hitting the ARC limit and triggering an ARC shrink. Shrinking involves holding ARC hash locks, which can cause latency, especially when shrinking 6 Gbytes worth of buffers. The zfs:zfs_arc_shrink_shift tunable was adjusted to reduce the shrink size, which also made them more frequent. The worst-case I/O improved from 10s to 100ms.
Ну это так, для проф.формы, чтобы легче найти потом было.

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-12 8:57:22

о! вот где надо было искать - в исходниках :)
я читал похожее, но без картинок - по смыслу тоже самое все.
Demis писал(а): l2arc_noprefetch        skip caching prefetched buffers
вот теперь совсем понятно - этот параметр (когда установлен в 1) с одной стороны запрещает л2 кэшировать то, что считывает zprefetch, с другой - запрещает zprefetch читать из л2 :)
а вот это уже интересно:
# uname -a
FreeBSD freenas.local 9.3-RELEASE-p31 FreeBSD 9.3-RELEASE-p31 #0 r288272+33bb475: Wed Feb 3 02:19:35 PST 2016 root@build3.ixsystems.com:/tank/home/stable-builds/FN/objs/os-base/amd64/tank/home/stable-builds/FN/FreeBSD/src/sys/FREENAS.amd64 amd64
# zfs get -r all test | grep cache
test primarycache all default
test secondarycache all default
test/iscsi-test primarycache all default
test/iscsi-test secondarycache all default

L2 ARC Summary: (HEALTHY)
# zfs get -r all test | grep cache
test primarycache metadata local
test secondarycache all default
test/iscsi-test primarycache metadata local
test/iscsi-test secondarycache all default

ARC Summary: (HEALTHY)
# zfs get -r all test | grep cache
test primarycache none local
test secondarycache all default
test/iscsi-test primarycache none local
test/iscsi-test secondarycache all default

L2 ARC Summary: (HEALTHY)
# zfs get -r all test | grep cache
test primarycache none local
test secondarycache none local
test/iscsi-test primarycache none local
test/iscsi-test secondarycache none local

L2 ARC Summary: (HEALTHY)
L2 ARC Buffer:
Bytes Scanned: 61.88 GiB
L2 ARC Writes:
Writes Sent: 100.00% 82
на всем пуле весь кэш выключен, тем не менее л2 не disabled, и не понятно кто там что сканирует и что пишет.
может у тебя с этим ssd какая-то проблема?

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-12 9:37:15

Neus писал(а): может у тебя с этим ssd какая-то проблема
Сложно сказать однозначно.
Но ведь логически он сейчас отключен от пула на время поиска источника проблемы.
Demis писал(а): hdd ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
mfid1p1 ONLINE 0 0 0
mfid2p1 ONLINE 0 0 0
mfid3p1 ONLINE 0 0 0
mfid4p1 ONLINE 0 0 0
mfid5p1 ONLINE 0 0 0
Посмотрел сайт иллюмуса, там есть контакты и вроде с русскими фамилиями, но как-то боязно им писать.
Куда им до наших проблем. А по англицки описать грамотно свою проблему не потяну. Пытаюсь понять как это сделать. На фришном багтреке зарегился, пол ночи провел в поисках, мало-ли было такое. Ничего не нашел. Были похожие случаи, но не совсем мои. И пофикшены в 2010-2011 годах. Т.е. давно в коде. Да и они просят привести пример как это смоделировать, а я не могу привести такую модель, т.к. все возникает спонтанно. Папки-то создаются нормально. А в какой момент у них косяк возникает мне не отловить. Тем более, что чудеса "права" на мой взглям это просто косвенный момент, а не причина.

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-12 18:35:54

Немного оффтопика, почитал тут ветку для начинающих и подумал...
Как ты думаешь им это понравится если они будут знать во что(???) они лезут?
Хотя текста меньше чем в Онегине, да и я не Пушкин...

Код: Выделить всё

Эпиграф от одного пенсионера:
У нас в летном училище висел плакат
"Отличный пилот это тот, кто кто использует отличное мышление,
избегая ситуаций когда требуется отличное умение"

Как он прав, даже в нашей области...

Вообще подумал и понял, что новичкам окунаться в наш мир непросто.
И сам такой-же, есть и остаюсь (всего знать невозможно).
Хоть сейчас и Интернет на каждой кухне.
А количество информации в нем, ну море, и ошибочной или устаревшей тоже.
И как разобраться "что делать"?
Да еще и не всегда возможно перескочить с платформы на платформу сходу.
Приходится обновляться сначала на промежуточный вариант.
Т.е. возникают этапы.
Да и с этим Unknown modifier 't'
Тоже так-же.

После некоторого общения с системами пришлось выработать для себя некоторые правила.
Теперь мы помним, что у нас во freebsd поменялась архитектура обновлений в 2014 году.
Прежде чем выполнять сначала вдумчиво читаем до конца.
Вообще это полезно, читать. А до конца - вдвойне вкусней.
Если что-то неясно легче поискать пока еще все работает.

Исходная дока для джедаев:
ee /usr/src/Makefile
где после 70-ой строки есть текст:
#  1.  `cd /usr/src'       (or to the directory containing your source tree).
#  2.  `make buildworld'
#  3.  `make buildkernel KERNCONF=YOUR_KERNEL_HERE'     (default is GENERIC).
#  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE'   (default is GENERIC).
#       [steps 3. & 4. can be combined by using the "kernel" target]
#  5.  `reboot'        (in single user mode: boot -s from the loader prompt).
#  6.  `mergemaster -p'
#  7.  `make installworld'
#  8.  `mergemaster'            (you may wish to use -i, along with -U or -F).
#  9.  `make delete-old'
# 10.  `reboot'
# 11.  `make delete-old-libs' (in case no 3rd party program uses them anymore)

Это хорошо делать на "столе" или в виртуалке, или в курилке рассказывать как все круто.
Но у нас есть некая рабочая система, и нам надо как-то ее подтянуть.
Да еще чтоб работала потом годами.

Вообще мой путь (он скорее самурайский и точно знаю - не всем по вкусу, но мне время дороже) примерно такой:
Перво наперво проверяем:
sysctl kern.securelevel
kern.securelevel: -1
Если -1, то переходим к "Чистим obj".
Если отличается идем в 
ee /etc/rc.conf
Комментарим его, вот блин админ умный попался.
ЭТОТ ПАРАМЕТР В СИСТЕМЕ ПРИМЕНИТЬСЯ ТОЛЬКО ПРИ ПЕРЕЗАГРУЗКЕ.
Обычно все просто, но если это так , то лучше сразу посмотреть еще и файл
ee /etc/fstab
ЕСЛИ ТАМ ЕСТЬ ТАКАЯ СТРОКА:
/dev/ad4s1e             /tmp            ufs     rw              2       2
Т.е. ищем /tmp и смотрим тип rw.
Если строки нет, то не паримся, если есть и там написано другое (не rw), правим сохраняем.
Делаем df -H
Смотрим на "Mounted on" где есть рут, т.е. палочка "/"
Смотрим сколько места свободно в ней по "Avail" (ну или по "Capacity" в процентах).
Если 150 метров, то может и не хватить.
Что делать?
Посмотреть два каталога
ls -aGl /root (l - маленькая англ. "л") - если есть что-то крупное, временно перенести в каталог пользователя.
ls -aGl /boot - если есть каталоги kernel.old, kernel.old2 или что-то подобное, поступаем так-же.
Как размер посмотреть?
ls -aGl /boot/kernel.old | head -n 1
total 231284
если посмотреть ee /root/.cshrc
setenv  BLOCKSIZE       K
То становится понятным, что число 231284 это 231284К или 231М
Место почистили, далее...
ТЕПЕРЬ ПЕРЕЗАГРУЖАЕМСЯ.

Продолжаем
Чистим /usr/obj
cd /usr/obj
chflags -R noschg *
rm -rf *
ls должен показать 0
cd /usr/src
make cleandir  # хендбук рекомендует выполнять эту команду дважды (!)
make cleandir  # хендбук рекомендует выполнять эту команду дважды (!)
Прочитаем ниже текст поста если хотим сохранить конфиг ядра.

грохаем все в /usr/src
cd /usr/src
rm -r *
rm -r .svn
ls должен показать 0

svn co svn://svn.freebsd.org/base/stable/9 /usr/src
or
svn co svn://svn.freebsd.org/base/stable/10 /usr/src
Соль перец по вкусу...
Если хотим что-то другое, то идем через браузер на http://svn.freebsd.org/
далее "SVN ViewVC browser"
далее "base"
И выбираем что хочется. 
Для releng просто помним что его надо накатывать на уже установленный release, тогда не будет сюрпризов.
Соответственно поправляем
svn co svn://svn.freebsd.org/base/stable/9 /usr/src
как хотим.
svn co svn://svn.freebsd.org/base/stable/10 /usr/src

Когда закончится svn:
Если ядер 4 и больше задач на ближайшие часы нет, 
то запускаем компиляцию на всех ядрах (ключ -jX - X число количества потоков, но мы учимся и лучше пока не 

использовать, 
-s - меньше информации для вывода на консоль)
cd /usr/src/
make -s buildworld
Будет долго
make -s buildkernel
Будет быстрее чем предыдущий пункт
make installkernel

При обновлении платформы (например с 9.1 до 10.1) кернел собираем БЕЗ конфига!
Просто поверьте, не тратьте время (выполнять с конфигом конечно можно, но исправлять в пригодное состояние 

бывает дольше в несколько раз, просто помним об этом).

shutdown -r now 
(опять-же мой путь, ладно не буду больше повторяться)
Идем ножками к серверу.

При загрузке нужно выбрать не первый пункт, а по-моему 3 в девятке (блин не помню)
Просто посмотреть глазами, пункт где есть "режим консоли" (фраза моя, т.е. не из классики).
Т.е. просто включаем голову и смотрим по смыслу.
А смысл есть во многих вещах.
Дело в том, что меню при загрузке несколько раз поменялось.
Как определить что мы в правильный пункт меню попали?
Первый - не наш на этом этапе всегда.
Второй - или все с ACPI тоже.
Последний - перезагрузка тоже.
Из оставшихся пробуем проверить так:
 нажали циферку (допустим 4) смотрим на загрузку.
Если сервер грузится и пробежали настройки сетевых интерфейсов, то - не угадали.
Рестарт, пробуем другой пункт.
Наш нужный пункт будет тот, который дал значек #
т.е. возможность работать в коммандной строке.
Отступление. Если система настроена правильно, то вход к этой строке будет тоже через рутовый пароль.
Если пароль не верен, то энтера система загрузится дальше как ни в чем небывало, но не в том режиме, что нам 

нужен.
Ввели правильный пароль, гуд.
Появится строка про чего-то там (типа /bin/sh), просто энтер.
У себя в инструкции я написал так:
#***********************************************************************
# Boot mode select
#
#Press 4 key for FreeBSD 8
#Press 6 key, 1 key for FreeBSD 9
#Press 6 key, 1 key for FreeBSD 10
#pass (вводим пароль рута)
#***********************************************************************

Хорошо что дальше?

Ну мы знаем? Что файловая система у нас вообще в порядке?
Вообще мы этим должны были гораздо раньше озаботиться.
fsck -fy
Бывает надо так (особенно на старых релизах, а там еще и клавиши привычные не работают):
/sbin/fsck -fy

Вернемся к нашим вопросам.
mount -u /
mount -a
бывает 
/sbin/mount -u /
/sbin/mount -a
swapon -a
бывает
/sbin/swapon -a
теперь делаем su
Пароля не должно спросить.
Но заработает наше окружение.
cd /usr/src
mergemaster -p (кажется он чего-то спрашивает, не помню зараза, пальцы уже автоматом делают, вроде просто 

соглашаемся, типа два каких-то момента, вроде про master.passwd и еще чего-то). Когда закончит:
make installworld
make delete-old (рекомендовано по хенд-буку, но иногда сильно мешает, именно при переходах с версии на версию, 

вообще вопрос дисскуссионен 50|50)
У себя в инструкции я написал себе так:
#***********************************************************************
# ЭТО ОЧЕНЬ ВАЖНЫЙ МОМЕНТ !!!
---make delete-old---       НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
---make delete-old-libs---  НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
#***********************************************************************

ОБЯЗАТЕЛЬНАЯ процедура ПОСЛЕ установки мира
mergemaster (теперь без параметров, вручную и долго). 
Авто замену на мой самурайский взгляд лучше не делать...
На авто замену можно согласиться, только если имеем копию всех конфигов 
и они желательно на другой машинке (так Вам быстрее будет).

Важно понимать, что конфиги - это не только файлы с окончанием .conf
Но как объяснить на ЧТО смотреть в mergemaster'e если делаем сами и хотим контролировать?
Предупреждаю сразу, я перед этой процедурой иду сначала подышать свежим воздухом, 
она не для слабонервных и самая долго-нудная.

Т.к. на каждый системный файл будет задаваться вопрос, а что с ним сделать?

mergemaster
Цитирую откуда-то из Интернет:
   Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с теми которые 

предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом. Первой 

строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком "-" 

помечаются строки, которые утилита собирается удалить, а "+" - которые будут добавлены.
   В конце предлагаются следующие варианты:
   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый;
   m - сравнить построчно старый и предлагаемый вариант;
   v - посмотреть отличия в файлах снова.
   Чаще всего можно жать i, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте 

внимательны. Например, у меня установлен exim, а mergemaster предложил вернуть файл /etc/mail/mailer.conf в 

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

предлагаемого. При нажатии на "Enter" выводятся возможные варианты последующих действий:
   l - использовать вариант слевой стороны;
   r - использовать вариант справой стороны;
   и т.д.
   В моем случае, чтобы оставить старые настройки жмем "l". После того как сравнение кончилось, предлагаются 

следующие варианты:
   i - установить получившийся файл;
   r - повторить сравнение снова;
   v - просмотреть получивщийся файл.
   Возможен также вариант, когда с новой версией системы появляются новые файлы, которых до этого не было. В 

таком случае предлагается только 2 варианта:
   d - удалить предлагаемый вариант и оставить старый;
   i - установить предлагаемый вариант, удалив старый.
   И в таком же духе сравниваются все файлы.
Конец цитаты

ВАЖНО НЕ ЗАПУТАТЬСЯ КАК РАБОТАЮТ ЭТИ БУКОВКИ!
Логика, как-бы наоборот, программа танцует ОТ НОВОЙ версии, а не от того, что установлено в системе.
Поэтому d (клавиша буквы "d") удаляет НОВЫЙ вариант, т.е. старый остнется неизменным.
Поэтому i (клавиша буквы "i") установит новый вариант.
Поэтому v (клавиша буквы "v") перечитает файл сначала.
PageUP PageDOWN переход по тексту вверх, вниз.
Пока не дошел до самого низа, не даст выбора.
Самый длинный попадавшийся в ручном режиме это файл сертификатов (кстати о них отдельный разговор).
Там надо раз 50 наверное PageDOWN жать.
Либо сразу END, т.е. переход в конец.

Я тут придерживаюсь такого порядка:
Практически на все я жму END, глаза уперты в одну точку где путь к файлу и его имя, потом i .
Такие пути как /etc/mtree там и глазеть нечего (END,i,END,i,END,i,END,i ...)
ВСЕГДА ОБРАЩАЮ ВНИМАНИЕ НА КЛЮЧЕВЫЕ ФАЙЛЫ!
Например в моем случае:
/etc/ntp.conf
/etc/auth.conf
/etc/login.conf (написать про cap_mkdb /etc/login.conf)
/etc/syslog.conf
/etc/newsyslog.conf
/etc/group
/etc/master.passwd
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/mail/freebsd.mc (у меня вся почта на сендмайле, поэтому ВСЕГДА есть бекап этого файла, изменения я вношу 

именно в него апосля и построчно, что не есть правильно, но мне так удобнее. ДЛЯ других почтовых систем не знаю, 

лучше выяснить это до обновления).
/etc/mail/access
/etc/mail/aliases
/root/.cshrc

При обновлении других папок, /bin /sbin и т.д. тоже END,i,END,i,END,i,END,i ...
НЕ БОИМСЯ ЕСЛИ ПРОПУСТИМ ФАЙЛ!
Хрен с ним.
Лучше тогда повторно запустить mergemaster и пробежать все снова.
При этом уже обновленные файлы автоматом пропустятся (ну где в хенд-буке это написано?).
Т.е. получится быстрее.
В конце будет еще два вопроса, тоже блин подзабыл, вроде надо положительно ответить.
Но естественно смотреть, а чего это он от меня хочет.

Система в режиме обновления развернута к Вам самым нежным местом 
и полностью доверяет Вашим желаниям и хотелкам. 
И убить ее запросто можно.

Итогом должна стать опять коммандная строка.
#
Ну что? Получили?
reboot
Грузимся теперь как обычно (не вмешиваясь), смотрим ошибочки.
Когда загрузится, можно на клаве нажать ScrollLock и полистать весь листинг загрузки.
PageUP PageDOWN соответственно вверх, вниз.
Потом не забываем выключить взад ScrollLock

Дальше входим в систему, читаем 
ee /var/log/messages на предмет свежих ошибок.

Ошибки найдены, устранены, 
если какие-то порты в /etc/rc.conf есть, то лучше их остановить, закоментировать.
Сначала вычитываем, останавливаем, комментируем.
Если есть какой-то тяжелый типа hylafax то его стопорнуть и перегрузиться.

Теперь можно порты апгрейдить.
Когда мы обновили мир, многие порты "отваливаются".
Некоторые вообще исчезли как класс, некоторые включены прямо в ядро и поэтому их тоже небудет в списке портов.
Для начала запоминаем - ПЕРВОНАЧАЛЬНО НИЧЕГО НЕ ДЕИНСТАЛЛИРУЕМ!

Пример проблемы при обновлении:
не собираются порты из-за ошибки неизвестного архиватора.

===>  Found saved configuration for python26-2.6.8_4
===> Fetching all distfiles required by python26-2.6.8_5 for building
===>  Extracting for python26-2.6.8_5
=> SHA256 Checksum OK for python/Python-2.6.8.tar.xz.
===>   python26-2.6.8_5 depends on file: /usr/local/bin/xz - found
tar: Unrecognized archive format: Inappropriate file type or format
tar: Error exit delayed from previous errors.
*** Error code 1

Stop in /usr/ports/lang/python26.
*** Error code 1

Решение:
находим spawn.h (где угодно на серверах или в Интернете, FBSD8,FBSD9,SVN,reposit etc.)

размещаем в /usr/include

cp spawn.h /usr/include
cd /usr/ports/archivers/libarchive && make install clean
ln -sf /usr/local/bin/bsdtar /usr/bin/tar
ln -sf /usr/local/bin/bsdtar /usr/bin/bsdtar
rehash
ee /usr/local/etc/pkgtools.conf
  HOLD_PKGS = [
    'bsdpan-*',
    'squid-3.1.*',
  ]

вообще в нем всего 118 строк:
ee /usr/include/spawn.h

/*-
 * Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD: release/9.1.0/include/spawn.h 179873 2008-06-19 07:30:32Z ed $
 */

#ifndef _SPAWN_H_
#define _SPAWN_H_

#include <sys/cdefs.h>
#include <sys/_types.h>
#include <sys/_sigset.h>

#ifndef _MODE_T_DECLARED
typedef __mode_t        mode_t;
#define _MODE_T_DECLARED
#endif

#ifndef _PID_T_DECLARED
typedef __pid_t         pid_t;
#define _PID_T_DECLARED
#endif

#ifndef _SIGSET_T_DECLARED
#define _SIGSET_T_DECLARED
typedef __sigset_t      sigset_t;
#endif

struct sched_param;

typedef struct __posix_spawnattr                *posix_spawnattr_t;
typedef struct __posix_spawn_file_actions       *posix_spawn_file_actions_t;

#define POSIX_SPAWN_RESETIDS            0x01
#define POSIX_SPAWN_SETPGROUP           0x02
#define POSIX_SPAWN_SETSCHEDPARAM       0x04
#define POSIX_SPAWN_SETSCHEDULER        0x08
#define POSIX_SPAWN_SETSIGDEF           0x10
#define POSIX_SPAWN_SETSIGMASK          0x20

__BEGIN_DECLS
/*
 * Spawn routines
 *
 * XXX both arrays should be __restrict, but this does not work when GCC
 * is invoked with -std=c99.
 */
int posix_spawn(pid_t * __restrict, const char * __restrict,
    const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
    char * const [], char * const []);
int posix_spawnp(pid_t * __restrict, const char * __restrict,
    const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
    char * const [], char * const []);

/*
 * File descriptor actions
 */
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);

int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t * __restrict,
    int, const char * __restrict, int, mode_t);
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);

/*
 * Spawn attributes
 */
int posix_spawnattr_init(posix_spawnattr_t *);
int posix_spawnattr_destroy(posix_spawnattr_t *);

int posix_spawnattr_getflags(const posix_spawnattr_t * __restrict,
    short * __restrict);
int posix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict,
    pid_t * __restrict);
int posix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict,
    struct sched_param * __restrict);
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict,
    int * __restrict);
int posix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict,
    sigset_t * __restrict);
int posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict,
    sigset_t * __restrict sigmask);

int posix_spawnattr_setflags(posix_spawnattr_t *, short);
int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
int posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict,
    const struct sched_param * __restrict);
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict,
    const sigset_t * __restrict);
int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict,
    const sigset_t * __restrict);
__END_DECLS

#endif /* !_SPAWN_H_ */

Если у нас нет диска, но есть Интернет, то все нужное можно взять отсюда:
# cd /tmp
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/doc.txz
# наш минимум исходники (сорцы, sources) и база портов (это не сами порты, но вся необходимая нам структура 

каталога /usr/ports)
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/src.txz
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/9.2-RELEASE/ports.txz
#
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/10.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE/base.txz
---# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/9.3-RELEASE/base.txz
Для других версий аналогично, предварительно можно взять фар настроить фтп в нем и погулять по каталогам.
Если фара нет, используем встроенный ftp
ftp ftp.freebsd.org 21
Name (ftp.freebsd.org:ИмяЗаменим):anonymous
Password:123@ - по факту любой, но заканчивается на @
Дальше ls и cd
ls ентер
-rw-r--r--    1 ftp      ftp          5430 Jul 19  2014 favicon.ico
-rw-r--r--    1 ftp      ftp           660 Nov 02 07:14 index.html
drwxr-xr-x    3 ftp      ftp             3 Jul 19  2014 pub
cd pub
и т.д.
пока не доберемся до нужного пути (соблюдать размер букв).
Если работаем в терминале putty, то вставляем "cd /pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE".
Правой клавишей мыши, просто клик (ну ясен перец, что перед этим надо было Ctrl+C сделать на этом тексте).

Когда добрались и видим нужный нам файл, меняем путь КУДА это скачивать
lcd /tmp
Выставляем режим
binary ентер
И делаем
get src.txz
get ports.txz
Когда скачается, выйти так 
quit

# cd /tmp
# tar zxvf base.txz
fetch ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
Или с дистрибутивного диска по пути
D:\USR\FREEBSD_DIST
файлы взять и скопировать любым доступным способом в /tmp
base.txz
doc.txz
games.txz
kernel.txz
manifest
ports.txz
src.txz

# tar zxvf src.txz
ЕСЛИ НЕРАСПАКОВЫВАЕТСЯ, а мы уверены что файл скачался весь и без ошибок (как это проверить ниже)
Значит лучше файл перенести на обычный комп открыть его в 7-zip и выдернуть вложенный src.tar
Этот самый тар вернуть назад на сервер в /tmp
# tar xvf src.tar
Хоть через сетку, хоть черз диск, хоть через флешку.
Кстати, о диске...
Для новичков будет сюрпризом, после перезагрузки со ВСТАВЛЕННЫМ диском, кнопочка ject на сервере не работает.
А почему?

ls /dev/cd*
crw-r-----  1 root  operator  0x96 10 фев 09:19 /dev/cd0
mount /dev/cd0 /mnt/cd
mount -t cd9660 /dev/cd0 /mnt/cd
umount /mnt/cd
Теперь диск выплюнется по кнопочке.

И кстати, о флешке...
Как-же с ней работать в нашей системе?
Для начала простой вариант, флешка на FAT32, так будет проще.
Когда мы вставили ее в сервер, по экрану чего-то там пробежало и все, чего дальше-то?
Все просто ее надо примаунтить.
На экране в пробежавших строчках смотрим на их начало, будет что-то вроде
da0: ... чего-то там далее (но может быть и другое da1 или еще что-то)
Нам важно, ЧТО мы увидели в начале строки до двоеточия.
Теперь смотрим, как увидела система.
ls /dev/d*
crw-r-----  1 root  operator  0xc1 11 фев 19:57 /dev/da0
crw-r-----  1 root  operator  0xc9 11 фев 19:57 /dev/da0s1

О, замечательно!
Наша флешка определилась (если не определилась отдельный разговор) и видит раздел.
Это da0s1 (для этого примера) и на него опираемся.

Для монтирования есть классический каталог /mnt , но это не принципиально, он может быть любой.
mount_msdosfs -L ru_RU.KOI8-R -D CP866 /dev/da0s1 /mnt

Я например для себя сделал несколько каталогов в нем
mkdir /mnt/flash1
mkdir /mnt/flash2
mkdir /mnt/flash3
mount_msdosfs -L ru_RU.KOI8-R -D CP866 /dev/da0s1 /mnt/flash1

Мы-же хотим иногда русские имена файлов видеть?
Для этого параметры -L ru_RU.KOI8-R -D CP866
-L считай в локали, т.е. как в сервере, -D считай как на носителе, т.е. на флешке.

Теперь флешка будет доступна, так посмотрим на нее
ls /mnt/flash1
ls /mnt/flash
total 709812
drwxr-xr-x  1 root  wheel       4096 14 дек 16:33 .Spotlight-V100
drwxr-xr-x  1 root  wheel       4096 14 дек 07:29 FTP
drwxr-xr-x  1 root  wheel       4096  7 янв 04:13 Squid
НЕ ЗАБЫВАЕМ, ЧТО ФЛЕШКУ НЕ НАДО ВЫДЕРГИВАТЬ!!!
Сначала ее надо отмаунтить.
umount /mnt
или для меня
umount /mnt/flash1

Если отмаунтилась, можно выдергивать, если нет, то смотрим какие файлы открывали, м.б. что-то держит.
Мы-же можем из нескольких окон с ней работать...

Итак все закрыли, все в порядке umount /mnt , ТЕПЕРЬ ВЫДЕРГИВАЕМ.
Если совсем никак не получается, то если это не было изменено при сборке ядра 
и если нам позволяет ситуация - просто перегружаем сервер.

Дело в том, что простая комбинация Ctrl+Alt+Del позволяет его безобидно перезагрузиться.
(Это кстати иногда позволяет сделать перезагрузку кому-то со стороны без пароля)
Соответственно при перезагрузке, пока биос светится, выдергиваем флешку.

А еще вспомнилась такая история , совсем банальная:
Устанавливаю, на СТАРЫЙ, исправно работавший много лет (буквально накануне под Виндовз) компутер, любимую 

систему. Перезагружаюсь, а на экране абракадабра и даже не грузится, т.е. (кажется) до первого окна не доходит 

(подзабыл уже).
Ну ни в какую. Ставлю виндовз, все нормально, грузится. Вот блин.
Опять ставлю любимую, перезагрузка, абракадабра.
Ну как так может быть?
Много кофе перепил, пока пришла мысль, а что там с биосом?
Полез на сайт производителя материской платы, нашел обновку биоса.
Перепрошил. Вуаля!
Сервак только, что посылавший меня далеко и надолго, загрузился и нормально заработал.
Как такие фокусы объяснить новичку?
А еще железки бывают такие старые, что даже с флешки не грузятся!
Пришлось найти переносной USB-дискетник v.1.2, да еще чтобы виделся на любом железе.
Т.к. можно попасть на такой, что будет видеться через раз.
А бывает железо такое старое, что у него даже USB нет.
Но есть ком-порт, как объяснить, что через него можно сделать все?
Что вообще-то, только так раньше и делали. Да и вообще сетей небыло. 
И только благодаря юниксу они появились...

Однако ПОКА мы учимся у нас всегда есть вопросы которые мы пока не знаем, т.к. еще учимся...
Перед обновлением старой или еще неизвестной нам системы смотрим:
1. uname -a
FreeBSD teo.чего-то-там.loc 10.2-RELEASE-p12 FreeBSD 10.2-RELEASE-p12 #0: Fri Feb  5 21:58:32 MSK 2016     

usr@teo.чего-то-там.loc:/usr/obj/usr/src/sys/TEO  amd64

Из нее мы видим и чирикаем в блокнот (если из putty работаем) три момента: 
а) версию - 10.2-RELEASE-p12
б) конфиг - /usr/obj/usr/src/sys/TEO
в) платформу - amd64
г) интернет есть и работает
д) сохранить в сторонку старые конфиги
/etc/fstab
/etc/rc.conf
/etc/ntp.conf
/etc/auth.conf
/etc/login.conf (написать про cap_mkdb /etc/login.conf)
/etc/syslog.conf
/etc/newsyslog.conf
/etc/group
/etc/master.passwd
/etc/sysctl.conf (ЕСЛИ ЕСТЬ)
/etc/firewall.conf (ИЛИ его аналог, посмотреть можно в /etc/rc.conf там обычно пишется)
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/mail/* (лучше все, потом можно с этим разобраться)
/root/.cshrc
/boot/loader.conf (ЕСЛИ ЕСТЬ)
/boot/zfs/zpool.cache (ЕСЛИ ЕСТЬ)
Затарить в сторонку весь /usr/local/etc
tar -czf archive-usr-local-etc-2016-02-11.tgz.gz /usr/local/etc/*
Вообще я написал себе отдельный скрипт (исходя из того софта, что у меня установлено) 
который это все собирает и складывает в сторонку.

В подпункте "а" мы узнаем текущую установленную версию, записываем.
В подпункте "б" либо будет написано GENERIC либо что-то другое, записываем.
В подпункте "в" либо будет написано i386 либо amd64, либо что-то другое, записываем.
Нам этого достаточно. Далее в примерах я буду опираться на эти данные.
И вообще поразумевается что с файловой системой все в порядке (в монпольном режиме из консоли fsck -fy )

2. Если GENERIC или /usr/src/ вообще пуст (бывает и такое) пропускаем п.3

3. Исходя из полученной информации мы уже можем построить план как мы будем начинать обновляться,
т.е. ЕСЛИ не GENERIC, посмотрим есть-ли конфиг? Для приведенного выше случая это надо посмотреть так:
ls /usr/src/sys/amd64/conf
Если НЕ GENERIC, то копируем в каккую-то свою локальную папку:
cp /usr/src/sys/amd64/conf /usr/home/vasya/conf-2016-02-11-1
Которую предварительно создаем:
mkdir /usr/home/vasya/conf-2016-02-11-1

4. Если GENERIC, можно применить 
freebsd-update fetch && freebsd-update install && reboot
Должно хватить, но может потянуть проблемы.

5. Поэтому просто приведу инструкцию, пример как я обновлялся:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html

kern.conftxt - позволяет посмотреть содержимое файла конфигурации для
текущей сборки ядра; 

Обновление версии релиза FreeBSD
Версия до момента обновления была 7.4-STABLE после 8.4-STABLE

uname -a
FreeBSD wind.что-то-там.loc 7.4-STABLE FreeBSD 7.4-STABLE #0 r253391: Tue Jul 16 20:23:14 GMT-4 2013     

usr@wind.что-то-там.loc:/usr/obj/usr/src/sys/WIND  i386

Поехали:

Там где я поставил три минуса - не делаем, переходим к следующему шагу.

 1. Сохраняем старые конфиги, если нужно что-то еще определяем сами и сохраняем в отдельное место тоже.

cd /usr/home/${user}/auto
sh prepare.sh
---cp /usr/src/sys/i386/conf/MYKERNEL /usr/home/${user}/MYKERNEL-2013-07-18
---uname -a > /usr/home/${user}/MYKERNEL-vers-old.txt
---uname -a > /usr/home/${user}/`uname -i`-vers-old-`date +%Y-%m-%d_%H-%M-%S`.txt
uname -a > /usr/home/${user}/`uname -i`-`uname -m`-vers-old-`date +%Y-%m-%d_%H-%M-%S`.txt
cp /usr/src/sys/`uname -m`/conf/`uname -i` /usr/home/${user}/`uname -i`-`uname -m`-vers-old-`date 

+%Y-%m-%d_%H-%M-%S`.txt
ls /usr/src/sys/`uname -m`/conf

 2. Удаляем ВСЕ старые сорцы
cd /usr/obj && chflags -R noschg *
cd /usr/obj && chflags -R noschg *
rm -rf * && ls
cd /usr/src && make cleandir
cd /usr/src && make cleandir
Да, команду make cleandir действительно нужно выполнять дважды.

cd /usr/src && ls
rm -r /usr/src/* && ls
Если есть каталог .svn , удаляем его...
rm -r /usr/src/.svn

 3.  Скачиваем с svn исходники 8.4 ветки
Да, да уже так и только так, про csup нужно забыть, хотя он в системе есть и работает.
Важно понимать и помнить про csup:
а) разработчики все переориентированы на кодинг под svn
б) совместное использование svn и csup ведет к коллизиям кода, т.е. несоберется ничего (либо будет кривое).
Качаем (наш выбор на ветке stable):
---svn co svn://svn.freebsd.org/base/stable/8/ /usr/src
svn co svn://svn.freebsd.org/base/stable/8/ /usr/src
svn: Command not found.
	ЕСЛИ ОШИБКА на SVN, то поищем его:
	pkg_version -v|grep subversion
итак порта нет в системе...
Обновляем файлы портов
	portsnap fetch
	portsnap update (в первый раз сделать portsnap extract, в последующие update)
Ставим порт subversion
	cd /usr/ports/devel/subversion && make config
ниже показаны только использованные ключи
	make config
		[x] BDB (м.б. не ставить тогда и sqlite не потянет за собой??)
		[x] DOCS
		[x] FREEBSD_TEMPLATE
		[x] NLS
		[x] P4_STYLE_MARKERS
		[-] SERF (???веб админка, в топку)
		[x] STATIC
	make install
	Потянул sqlite 3.7.17_1
		[x] EXTENSION
		[x] FTS3 
		[x] METADATA 
		[x] SECURE_DELETE
		[x] THREADSAFE
		[x] UNLOCK_NOTIFY 
		[x] URI
	Потянул arp-1.4.8.1.5.2
		[x] THREADS
		[x] IPV6
		[x] DEVRANDOM
		[x] BDB
		[x] GDBM
		[x] SSL
	Потянул gdbm-1.10
		[x] NLS
rehash && pkg_version -v|grep subversion
	subversion-1.8.0_2                  =   up-to-date with port

проверим на всякий случай секцию HOLD_PKGS в 
ee /usr/local/etc/pkgtools.conf
---или
---cat /usr/local/etc/pkgtools.conf 

ПРОДОЛЖАЕМ:
cd /usr/src && svn co svn://svn.freebsd.org/base/stable/8/ /usr/src

Проверить загруженную версию можно здесь:
ee /usr/src/sys/conf/newvers.sh
или
head -n 42 /usr/src/sys/conf/newvers.sh
или
---head -n 42 /usr/src/sys/conf/newvers.sh | grep REVISION=&&head -n 42 /usr/src/sys/conf/newvers.sh | grep BRANCH=
head -n 42 /usr/src/sys/conf/newvers.sh | grep REVISION=\" && head -n 42 /usr/src/sys/conf/newvers.sh | grep BRANCH=\"

REVISION="8.4"
BRANCH="STABLE"

###########################################################
#   УБЕДИЛИСЬ что старый конфиг сохранен куда-нибудь...   #
###########################################################
ls /usr/home/${user}/`uname -i`*.txt

 4. Собираем мир
cd /usr/src
make buildworld

 5. Настраиваем !ЗАНОВО! конфигурационный файл ядра 
Т.к. старый конфиг будет давать кучу ошибок,
поэтому сохраняем генерик с новым именем.
Копируем GENERIC в MYKERNEL и его правим под те опции, что были в старом:

---cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/MYKERNEL
---cp /usr/src/sys/`uname -m`/conf/`uname -i` /usr/src/sys/`uname -m`/conf/`uname -i`-`uname -m`-vers-old-`date 

+%Y-%m-%d_%H-%M-%S`
ls /usr/src/sys/`uname -m`/conf/
cp /usr/src/sys/`uname -m`/conf/GENERIC /usr/src/sys/`uname -m`/conf/`uname -i`
ls /usr/src/sys/`uname -m`/conf/
Сверяем со старым и редактируем:
ee /usr/src/sys/`uname -m`/conf/`uname -i`
открываем во второй сессии:
ls /usr/home/${user}/`uname -i`*
ee /usr/home/${user}/MYKERNEL-i386-vers-old-2013-07-18_..-..-..
ЕЩЕ РАЗ перепроверяем внесенные изменения.
И ЕЩЕ РАЗ перепроверяем внесенные изменения.

 6. Собираем наше ядро
---make buildkernel KERNCONF=MYKERNEL
make buildkernel KERNCONF=`uname -i`

Дождались окончания сборки.

=================================================================
Здесь момент для паузы, т.к. хотим это делать руками
и необязательно сегодня.
Но все таки отправим себе напоминалку, чтоб не забыть о собранном мире и ядре.
Ясен перец что ниже это одна строка.
echo "Напоминаю, что make buildworld и make buildkernel KERNCONF=`uname -i` сервера `/bin/hostname` собраны\!\!\! И 

ждут инсталяции из single-mode!"| mail -s "ALERT ready to install WORLD on $USER@`/bin/hostname`" $user
=================================================================

В день когда мы принимаем решение все ставить, продолжаем так:

 7. Устанавливаем наше новособранное ядро
cd /usr/src
make installkernel KERNCONF=`uname -i`
для случая когда машинка изначально имеет отличающееся имя кернела, то используем необходимое:
make installkernel KERNCONF=MYKERNEL

 8. Перезагружаемся в single-mode и если система нормально загрузилась смотрим все ли в порядке.
shutdown -r now
Press 4 key for FreeBSD 8
Press 6 key, 1 key for FreeBSD 9
pass (вводим пароль рута)
/sbin/mount -u /
/sbin/mount -a
/sbin/swapon -a
su
cd /usr/src

 9. Подготовка перед установкой мира
mergemaster -p

10. Установка мира
make installworld
#***********************************************************************
# ЭТО ОЧЕНЬ ВАЖНЫЙ МОМЕНТ !!!
---make delete-old---       НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
---make delete-old-libs---  НЕ ДЕЛАЕМ, т.к. у нас есть старые порты!!!
#***********************************************************************

11. Обязательная процедура после установки мира
mergemaster (вручную и долго). Авто замену лучше не делать...

12. Перезагружаем систему и надеемся что все будет хорошо
reboot

13. После удачной загрузки пересобираем порты
===================================================================
Задача обновить порты.
-portupgrade не работает - гад!
-и сам не пересобирается.
-P.S. применил FORCE_PKG_REGISTER=YES для пересборки портов
-P.S. env FORCE_PKG_REGISTER=YES portupgrade -afrR
-/usr/sbin/pkg_info -Ea
-=====================
-Указано в последовательности сверху вниз.
-По мере возникновения ошибок.
-Спустился до последнего (libiconv).
-И пошел в обратную сторону - снизу вверх.
-Методом:
-make clean && make install FORCE_PKG_REGISTER=YES
-Все поставилось!
-Окончательная пересборка портов:
-cd /usr/src
-env FORCE_PKG_REGISTER=YES portupgrade -afrR
-=====================
uname -a
FreeBSD wind.что-то-там.loc 8.4-STABLE FreeBSD 8.4-STABLE #0 r253450: Fri Jul 19 10:15:11 MSK 2013     

usr@wind.что-то-там.loc:/usr/obj/usr/src/sys/WIND  i386

cd /usr/ports
---svn co svn://svn.FreeBSD.org/ports/head /usr/ports
---svn update

---ЕСЛИ выдало что-то вроде:
--->Checked out revision 323340.
--->Tree conflict on 'Keywords'
--->   > local dir unversioned, incoming dir add upon update
--->Select: (p) postpone, (r) resolved, (q) quit resolution, (h) help: q
---то делаем как написано строкой ниже.

---ПРИ ПОВТОРНОМ обновлении может потребоваться грохнуть 
---/usr/src/.svn (мир, система) или соответственно /usr/ports/.svn (порты)
---В этой папке хранится база обновления.
cd /usr/ports
rm -r /usr/ports/*
ls /usr/ports
rm -r .svn
rm .portsnap.INDEX
ls /usr/ports
total 0 - должен быть ноль!!!
Если не 0 , то удаляем что там еще осталось...
И все качаем заново.

svn co svn://svn.FreeBSD.org/ports/head /usr/ports
svn update

---Пока не выяснил насколько это смертельно для системы...
---Вроде все хорошо с системой...

!!!ПЕРЕСОБИРАЕМ ВСЕ ПОРТЫ в новой системе!!!
!Но первым пересоберем сам portupgrade!
cd /usr/ports/ports-mgmt/portupgrade
make deinstall
---make config (там в нем всего одна позиция про документацию)
make reinstall
rehash

Теперь пересоберем все остальное:
############## ############## ############## ##############
НО! Обнаружен трабл, сначала нужно грохнуть порт xz...
>$ cat /usr/ports/archivers/xz/Makefile или
>$ cat /usr/ports/archivers/xz/Makefile|grep DEPRECATED
>DEPRECATED=     Available in base distribution for all supported releases 
>$ cd /usr/ports/archivers/xz/
>$ make deinstall 
Т.к. из-за него не пересобираются:
lang/php5б, textproc/libxslt, devel/p5-Locale-gettext и м.б. что-то еще.
А сам порт xz ныне уже deprecated, т.к. встроен в систему 8.4!!!
Решение проблемы:
cd /usr/ports/archivers/xz
make deinstall
############## ############## ############## ##############
На одной машине нужно было перед всем этим перл пересобрать...
cd /usr/ports/lang/perl5.14
make deinstall
make deinstall (именно два раза)
make config ( по вкусу)
make reinstall
rehash
############## ############## ############## ##############

cd /usr/ports
env FORCE_PKG_REGISTER=YES portupgrade -afrR

Проверяем базу портов:
pkgdb -F

Фиксим, поправляем, устраняем все проблемы.
Помогает в поиске проблем:
http://www.freebsd.org/cgi/man.cgi?query=pkg_libchk&manpath=ports&sektion=1
cd /usr/ports/sysutils/bsdadminscripts
make install
pkg_libchk
portmaster --check-depends
pkgdb -F

Обновляем базу портов:
pkgdb -u

14. И наконец, после удачной перезагрузки, чистим систему от старых файлов и библиотек
cd /usr/src
make BATCH_DELETE_OLD_FILES=YES delete-old delete-old-libs

ПЕРЕСОБИРАЕМ sendmail
ls /etc/mail/*.sh
cd /etc/mail
sh cl_mail_master.sh (или нечто подобное)

15. И снова перезагружаем систему. 
Это чтобы сразу убедиться, что именно перестанет работать после чистки 
старых библиотек.
reboot

Проверяем ошибки софта на экране, в логах...
spammasassin и т.д.
racoon2
c-icap
squid

В FreeBSD 8 и последующих версиях именование последовательных портов изменено:
с ttyd0 на ttyu0
Идем в ee /etc/ttys и правим...
А то у нас модем не увидится...

Соответственно поправляем hylafax через:

/usr/local/etc/rc.d/hylafax stop
faxaddmodem

Serial port that modem is connected to []? ttyu0

Ok, time to setup a configuration file for the modem.  The manual
page config(5F) may be useful during this process.  Also be aware
that at any time you can safely interrupt this procedure.

Reading scheduler config file /var/spool/hylafax/etc/config.

No existing configuration, let's do this from scratch.

Country code [7]?
Area code [812]?
Phone number of fax modem [+1.999.555.1212]? 7.812.333.33.33
Local identification string (for TSI/CIG) ["NothingSetup"]?
Long distance dialing prefix [1]? 9
International dialing prefix [011]? 8
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?
Tracing during normal server operation [1]?
Tracing during send and receive sessions [11]?
Protection mode for received facsimile [0600]?
Protection mode for session logs [0600]?
Protection mode for ttyu0 [0600]?
Rings to wait before answering [1]?
Modem speaker volume [off]?
Command line arguments to getty program ["-h %l dx_%s"]?
Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]?
Pathname of Caller-ID access control list file (relative to /var/spool/hylafax) [""]?
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
Tag line format string ["From %%l|%c|Page %%P of %%T"]?
Time before purging a stale UUCP lock file (secs) [30]?
Hold UUCP lockfile during inbound data calls [Yes]?
Hold UUCP lockfile during inbound voice calls [Yes]?
Percent good lines to accept during copy quality checking [95]? 85
Max consecutive bad lines to accept during copy quality checking [5]? 15
Max number of pages to accept in a received facsimile [25]? 65
Syslog facility name for ServerTracing messages [daemon]?
Set UID to 0 to manipulate CLOCAL [""]?
Use available priority job scheduling mechanism [""]?

Your facsimile phone number (7.812.640.16.47) does not agree with your
country code (7) or area code (812).  The number
should be a fully qualified international dialing number of the form:

    +7 812 <local phone number>

Spaces, hyphens, and periods can be included for legibility.  For example,

    +7.812.555.1212

is a possible phone number (using your country and area codes).

The non-default server configuration parameters are:

CountryCode:            7
AreaCode:               812
FAXNumber:              7.812.640.16.47
LongDistancePrefix:     9
InternationalPrefix:    8
DialStringRules:        etc/dialrules
SessionTracing:         11
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        "NothingSetup"
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l|%c|Page %%P of %%T"
PercentGoodLines:       85
MaxConsecutiveBadLines: 15
MaxRecvPages:           65

Are these ok [yes]? yes
и т.д.
/usr/local/etc/rc.d/hylafax start
но лучше shutdown -r now

16. Система обновленна. 

/usr/local/bin/faxmail (USES POSSIBLY INSECURE FUNCTIONS: mktemp)
/usr/local/sbin/faxwatch
/usr/local/bin/sendfax (USES POSSIBLY INSECURE FUNCTIONS: mktemp)
/usr/local/bin/faxstat


============================================================================

При обновлении до Freebsd 9.1 , вы можете столкнуться с такой вот ошибкой. Читаем /usr/src/UPDATING

ERROR: Required auditdistd user is missing, see /usr/src/UPDATING.
*** [installcheck_UGID] Error code 1

Stop in /usr/src.
*** [installkernel] Error code 1

Stop in /usr/src.
[MNIHKLOM] /usr/src#

Решение: добавляем юзера 
pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin

и снова запускаем make buildkernel KERNCONF=ИМЯ_ЯДРА && make installkernel KERNCONF=ИМЯ_ЯДРА

При выполнении: 
# make installkernel

Получаем следующую ошибку: 
ERROR: Required auditdistd user is missing, see /usr/src/UPDATING.
*** [installcheck_UGID] Error code 1

Stop in /usr/src.
*** [installkernel] Error code 1


Для устранения ошибки необходимо добавить в систему пользователя auditdistd: 
# pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
   pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
   pw useradd -n hast -g hast -c "HAST unprivileged user" -d /var/empty -s /usr/sbin/nologin

Так выглядит в оригинале:
auditdistd:*:78:77::0:0:Auditdistd unprivileged user:/var/empty:/usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin

http://www.freebsd.org/doc/handbook/svn-mirrors.html
Name Protocols Location SSL fingerprint 
svn0.us-west.FreeBSD.org svn, http, https USA, California SHA1 

1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61 
svn0.us-east.FreeBSD.org svn, http, https, rsync USA, New Jersey SHA1 

1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61 
svn0.eu.FreeBSD.org svn, http, https, rsync Europe, UK SHA1 

39:B0:53:35:CE:60:C7:BB:00:54:96:96:71:10:94:BB:CE:1C:07:A7 

HTTPS is the preferred protocol, providing protection against another computer pretending to be the FreeBSD mirror 

(commonly known as a "man in the middle" attack) or otherwise trying to send bad content to the end user.

On the first connection to an HTTPS mirror, the user will be asked to verify the server fingerprint:

Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: svnmir.ysv.FreeBSD.org
 - Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
 - Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
 - Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently?Compare the fingerprint shown to those listed in the table above. If the 

fingerprint matches, the server security certificate can be accepted temporarily or permanently. A temporary certificate will 

expire after a single session with the server, and the verification step will be repeated on the next connection. Accepting the 

certificate permanently will store the authentication credentials in ~/.subversion/auth/ and the user will not be asked to verify the 

fingerprint again until the certificate expires.

ee /usr/ports/UPDATING
find dbd

20131217:
  AFFECTS: users of databases/ruby-bdb or ports-mgmt/portupgrade and databases/db5 or databases/db6
  AUTHOR: mandree@FreeBSD.org

  databases/db5 and databases/db6 have recently been updated to fix
  bugs. This changed their patchlevel version.

  However, ruby-bdb used to break during the db[56] upgrade due to a bug
  described in <http://www.freebsd.org/cgi/query-pr.cgi?pr=184921>.

  THEREFORE, YOU MUST MANUALLY UPGRADE databases/ruby-bdb INDIVIDUALLY
  TO 0.6.6_2 OR NEWER WHEN USING portupgrade AGAINST databases/db[56]
  PORTS. To achieve that, type:

  # portupgrade databases/ruby-bdb
  or
  # portmaster -x 'db*' databases/ruby-bdb

  before proceeding with other upgrades.

  Should you have corrupted the portupgrade databases, or if ruby-bdb
  refuses to work with the upgraded db* port with errors such as "DB
  needs compatible versions of libdb & db.h", then rebuild the ruby-bdb
  port manually, and fix the portupgrade databases:

  # make -C /usr/ports/databases/ruby-bdb all deinstall install clean
  # pkgdb -fu
  # portupgrade -f db5 db6

  This should return portupgrade to normal operation.


#EOF

Так вот, возвращаясь Unknown modifier 't',
Если мы все сделали правильно, то проблемы больше небудет.


Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-12 23:27:11

Neus писал(а): на GENERIC проблема проявляется?
Докладываю. uname -a

Код: Выделить всё

FreeBSD teo.чего-то-там.loc 10.3-BETA1 FreeBSD 10.3-BETA1 #0: Thu Feb 11 09:17:11 MSK 2016     demis@teo.чего-то-там.loc:/usr/obj/usr/src/sys/GENERIC  amd64
Когда сорцы тянул уже явно народ над кодом работал.
Ну ничего, сервак в общем и целом работает (как железка).
Но блин засада, эффект зоси сохранился...
Все тоже-самое. Что описывалось ранее.
Буду откатываться наверное назад...
Кстати, бут меню опять поменялось...

Отправлено спустя 40 минут 2 секунды:
Дамп от 10.3 беты

Код: Выделить всё

kgdb kernel.symbols /var/crash/vmcore.3
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...

Unread portion of the kernel message buffer:
panic: solaris assert: c < (1ULL << 24) >> 9 (0x7fffffffffffff < 0x8000), file: /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c, line: 273
cpuid = 13
KDB: stack backtrace:
#0 0xffffffff8098f000 at kdb_backtrace+0x60
#1 0xffffffff80951d06 at vpanic+0x126
#2 0xffffffff80951bd3 at panic+0x43
#3 0xffffffff81e0022f at assfail3+0x2f
#4 0xffffffff81cacc70 at zio_buf_alloc+0x50
#5 0xffffffff81c2b8f2 at arc_get_data_buf+0x262
#6 0xffffffff81c2b657 at arc_buf_alloc+0xc7
#7 0xffffffff81c2d601 at arc_read+0x1c1
#8 0xffffffff81c36ce9 at dbuf_read+0x6b9
#9 0xffffffff81c3e415 at dmu_spill_hold_existing+0xc5
#10 0xffffffff81c73707 at sa_attr_op+0x167
#11 0xffffffff81c75972 at sa_lookup+0x52
#12 0xffffffff81cbf8da at zfs_rmnode+0x2ba
#13 0xffffffff81cdd75e at zfs_freebsd_reclaim+0x4e
#14 0xffffffff80e81c27 at VOP_RECLAIM_APV+0xa7
#15 0xffffffff809f9581 at vgonel+0x221
#16 0xffffffff809f9a19 at vrecycle+0x59
#17 0xffffffff81cdd6fd at zfs_freebsd_inactive+0xd
Uptime: 11m11s
Dumping 1368 out of 24542 MB:..2%..11%..22%..31%..41%..51%..61%..71%..81%..91%

Reading symbols from /boot/kernel/if_lagg.ko.symbols...done.
Loaded symbols for /boot/kernel/if_lagg.ko.symbols
Reading symbols from /boot/kernel/aio.ko.symbols...done.
Loaded symbols for /boot/kernel/aio.ko.symbols
Reading symbols from /boot/kernel/ichsmb.ko.symbols...done.
Loaded symbols for /boot/kernel/ichsmb.ko.symbols
Reading symbols from /boot/kernel/smbus.ko.symbols...done.
Loaded symbols for /boot/kernel/smbus.ko.symbols
Reading symbols from /boot/kernel/ipmi.ko.symbols...done.
Loaded symbols for /boot/kernel/ipmi.ko.symbols
Reading symbols from /boot/kernel/zfs.ko.symbols...done.
Loaded symbols for /boot/kernel/zfs.ko.symbols
Reading symbols from /boot/kernel/opensolaris.ko.symbols...done.
Loaded symbols for /boot/kernel/opensolaris.ko.symbols
Reading symbols from /boot/kernel/ums.ko.symbols...done.
Loaded symbols for /boot/kernel/ums.ko.symbols
Reading symbols from /boot/kernel/ipfw.ko.symbols...done.
Loaded symbols for /boot/kernel/ipfw.ko.symbols
#0  doadump (textdump=<value optimized out>) at pcpu.h:219
219     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) bt
#0  doadump (textdump=<value optimized out>) at pcpu.h:219
#1  0xffffffff80951962 in kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:486
#2  0xffffffff80951d45 in vpanic (fmt=<value optimized out>, ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:889
#3  0xffffffff80951bd3 in panic (fmt=0x0) at /usr/src/sys/kern/kern_shutdown.c:818
#4  0xffffffff81e0022f in assfail3 (a=<value optimized out>, lv=<value optimized out>, op=<value optimized out>, rv=<value optimized out>, f=<value optimized out>,
    l=<value optimized out>) at /usr/src/sys/modules/opensolaris/../../cddl/compat/opensolaris/kern/opensolaris_cmn_err.c:91
#5  0xffffffff81cacc70 in zio_buf_alloc (size=0) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c:273
#6  0xffffffff81c2b8f2 in arc_get_data_buf (buf=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:3880
#7  0xffffffff81c2b657 in arc_buf_alloc (spa=<value optimized out>, size=<value optimized out>, tag=0x0, type=<value optimized out>)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:2057
#8  0xffffffff81c2d601 in arc_read (pio=0xfffff8000fad03b0, spa=0xfffff8000f63d000, bp=0xfffffe000e509980, done=0xffffffff81c3aed0 <dbuf_read_done>, private=0xfffff8000fdd6360,
    priority=ZIO_PRIORITY_SYNC_READ, zio_flags=-2117882160, arc_flags=0xfffffe02925483c4, zb=0xfffff8000fdd6360)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:4397
#9  0xffffffff81c36ce9 in dbuf_read (db=0xfffff8000fdd6360, zio=0x0, flags=<value optimized out>)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c:682
#10 0xffffffff81c3e415 in dmu_spill_hold_existing (bonus=0xfffff8001f312438, tag=0x0, dbp=0xfffff80062d4e7d0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
#11 0xffffffff81c73707 in sa_attr_op (hdl=0xfffff80062d4e770, bulk=0xfffffe0292548528, count=1, data_op=SA_LOOKUP, tx=0x0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c:305
#12 0xffffffff81c75972 in sa_lookup (hdl=0xfffff80062d4e770, attr=<value optimized out>, buf=<value optimized out>, buflen=<value optimized out>)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c:1443
#13 0xffffffff81cbf8da in zfs_rmnode (zp=0xfffff80062d4c8a0) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c:633
#14 0xffffffff81cdd75e in zfs_freebsd_reclaim (ap=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:6619
#15 0xffffffff80e81c27 in VOP_RECLAIM_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:2019
#16 0xffffffff809f9581 in vgonel (vp=0xfffff8000f1beb10) at vnode_if.h:830
#17 0xffffffff809f9a19 in vrecycle (vp=0xfffff8000f1beb10) at /usr/src/sys/kern/vfs_subr.c:2951
#18 0xffffffff81cdd6fd in zfs_freebsd_inactive (ap=<value optimized out>) at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:6590
#19 0xffffffff80e81b17 in VOP_INACTIVE_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:1953
#20 0xffffffff809f8322 in vinactive (vp=0xfffff8000f1beb10, td=0xfffff8000f9f34b0) at vnode_if.h:807
#21 0xffffffff809f8712 in vputx (vp=0xfffff8000f1beb10, func=2) at /usr/src/sys/kern/vfs_subr.c:2547
#22 0xffffffff80a0137e in kern_rmdirat (td=<value optimized out>, fd=<value optimized out>, path=<value optimized out>, pathseg=<value optimized out>)
    at /usr/src/sys/kern/vfs_syscalls.c:3964
#23 0xffffffff80d574bf in amd64_syscall (td=0xfffff8000f9f34b0, traced=0) at subr_syscall.c:141
#24 0xffffffff80d3c72b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396
#25 0x000000080089458a in ?? ()
Previous frame inner to this frame (corrupt stack?)
Current language:  auto; currently minimal
Отправлено спустя 19 минут 8 секунд:
Отключил оба конфига (/etc/sysctl.conf и /boot/loader.conf)

Код: Выделить всё

zfs-stats -DL

------------------------------------------------------------------------
ZFS Subsystem Report                            Fri Feb 12 23:21:38 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV cache is disabled

------------------------------------------------------------------------

Отправлено спустя 2 минуты 51 секунду:
Отключил оба конфига (/etc/sysctl.conf и /boot/loader.conf)

Код: Выделить всё

zfs-stats -DL

------------------------------------------------------------------------
ZFS Subsystem Report                            Fri Feb 12 23:21:38 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV cache is disabled

------------------------------------------------------------------------

И полный для наглядности:

Код: Выделить всё

zfs-stats -a

------------------------------------------------------------------------
ZFS Subsystem Report                            Fri Feb 12 23:24:42 2016
------------------------------------------------------------------------

System Information:

        Kernel Version:                         1002509 (osreldate)
        Hardware Platform:                      amd64
        Processor Architecture:                 amd64

        ZFS Storage pool Version:               5000
        ZFS Filesystem Version:                 5

FreeBSD 10.3-BETA1 #0: Thu Feb 11 09:17:11 MSK 2016 demis
23:24  up 14 mins, 1 user, load averages: 0,29 0,19 0,18

------------------------------------------------------------------------

System Memory:

        0.18%   42.64   MiB Active,     0.13%   31.24   MiB Inact
        2.67%   637.00  MiB Wired,      0.00%   40.00   KiB Cache
        97.02%  22.64   GiB Free,       0.00%   0 Gap

        Real Installed:                         24.00   GiB
        Real Available:                 99.87%  23.97   GiB
        Real Managed:                   97.34%  23.33   GiB

        Logical Total:                          24.00   GiB
        Logical Used:                   5.55%   1.33    GiB
        Logical Free:                   94.45%  22.67   GiB

Kernel Memory:                                  219.49  MiB
        Data:                           88.25%  193.70  MiB
        Text:                           11.75%  25.79   MiB

Kernel Memory Map:                              23.33   GiB
        Size:                           0.70%   166.98  MiB
        Free:                           99.30%  23.17   GiB

------------------------------------------------------------------------

ARC Summary: (HEALTHY)
        Memory Throttle Count:                  0

ARC Misc:
        Deleted:                                9
        Recycle Misses:                         0
        Mutex Misses:                           0
        Evict Skips:                            3

ARC Size:                               0.02%   4.79    MiB
        Target Size: (Adaptive)         100.00% 22.33   GiB
        Min Size (Hard Limit):          12.50%  2.79    GiB
        Max Size (High Water):          8:1     22.33   GiB

ARC Size Breakdown:
        Recently Used Cache Size:       50.00%  11.17   GiB
        Frequently Used Cache Size:     50.00%  11.17   GiB

ARC Hash Breakdown:
        Elements Max:                           476
        Elements Current:               100.00% 476
        Collisions:                             0
        Chain Max:                              0
        Chains:                                 0

------------------------------------------------------------------------

ARC Efficiency:                                 13.28k
        Cache Hit Ratio:                96.36%  12.80k
        Cache Miss Ratio:               3.64%   484
        Actual Hit Ratio:               95.16%  12.64k

        Data Demand Efficiency:         100.00% 0

        CACHE HITS BY CACHE LIST:
          Anonymously Used:             1.24%   159
          Most Recently Used:           9.29%   1.19k
          Most Frequently Used:         89.47%  11.45k
          Most Recently Used Ghost:     0.00%   0
          Most Frequently Used Ghost:   0.00%   0

        CACHE HITS BY DATA TYPE:
          Demand Data:                  0.00%   0
          Prefetch Data:                0.00%   0
          Demand Metadata:              98.76%  12.64k
          Prefetch Metadata:            1.24%   159

        CACHE MISSES BY DATA TYPE:
          Demand Data:                  0.00%   0
          Prefetch Data:                0.00%   0
          Demand Metadata:              59.30%  287
          Prefetch Metadata:            40.70%  197

------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

File-Level Prefetch: (HEALTHY)

DMU Efficiency:                                 10.96k
        Hit Ratio:                      1.76%   193
        Miss Ratio:                     98.24%  10.77k

        Colinear:                               0
          Hit Ratio:                    100.00% 0
          Miss Ratio:                   100.00% 0

        Stride:                                 0
          Hit Ratio:                    100.00% 0
          Miss Ratio:                   100.00% 0

DMU Misc:
        Reclaim:                                0
          Successes:                    100.00% 0
          Failures:                     100.00% 0

        Streams:                                0
          +Resets:                      100.00% 0
          -Resets:                      100.00% 0
          Bogus:                                0

------------------------------------------------------------------------

VDEV cache is disabled

------------------------------------------------------------------------

ZFS Tunables (sysctl):
        kern.maxusers                           1869
        vm.kmem_size                            25051688960
        vm.kmem_size_scale                      1
        vm.kmem_size_min                        0
        vm.kmem_size_max                        1319413950874
        vfs.zfs.trim.max_interval               1
        vfs.zfs.trim.timeout                    30
        vfs.zfs.trim.txg_delay                  32
        vfs.zfs.trim.enabled                    1
        vfs.zfs.vol.unmap_enabled               1
        vfs.zfs.vol.mode                        1
        vfs.zfs.version.zpl                     5
        vfs.zfs.version.spa                     5000
        vfs.zfs.version.acl                     1
        vfs.zfs.version.ioctl                   5
        vfs.zfs.debug                           0
        vfs.zfs.super_owner                     0
        vfs.zfs.sync_pass_rewrite               2
        vfs.zfs.sync_pass_dont_compress         5
        vfs.zfs.sync_pass_deferred_free         2
        vfs.zfs.zio.exclude_metadata            0
        vfs.zfs.zio.use_uma                     1
        vfs.zfs.cache_flush_disable             0
        vfs.zfs.zil_replay_disable              0
        vfs.zfs.min_auto_ashift                 9
        vfs.zfs.max_auto_ashift                 13
        vfs.zfs.vdev.trim_max_pending           10000
        vfs.zfs.vdev.bio_delete_disable         0
        vfs.zfs.vdev.bio_flush_disable          0
        vfs.zfs.vdev.write_gap_limit            4096
        vfs.zfs.vdev.read_gap_limit             32768
        vfs.zfs.vdev.aggregation_limit          131072
        vfs.zfs.vdev.trim_max_active            64
        vfs.zfs.vdev.trim_min_active            1
        vfs.zfs.vdev.scrub_max_active           2
        vfs.zfs.vdev.scrub_min_active           1
        vfs.zfs.vdev.async_write_max_active     10
        vfs.zfs.vdev.async_write_min_active     1
        vfs.zfs.vdev.async_read_max_active      3
        vfs.zfs.vdev.async_read_min_active      1
        vfs.zfs.vdev.sync_write_max_active      10
        vfs.zfs.vdev.sync_write_min_active      10
        vfs.zfs.vdev.sync_read_max_active       10
        vfs.zfs.vdev.sync_read_min_active       10
        vfs.zfs.vdev.max_active                 1000
        vfs.zfs.vdev.async_write_active_max_dirty_percent60
        vfs.zfs.vdev.async_write_active_min_dirty_percent30
        vfs.zfs.vdev.mirror.non_rotating_seek_inc1
        vfs.zfs.vdev.mirror.non_rotating_inc    0
        vfs.zfs.vdev.mirror.rotating_seek_offset1048576
        vfs.zfs.vdev.mirror.rotating_seek_inc   5
        vfs.zfs.vdev.mirror.rotating_inc        0
        vfs.zfs.vdev.trim_on_init               1
        vfs.zfs.vdev.cache.bshift               16
        vfs.zfs.vdev.cache.size                 0
        vfs.zfs.vdev.cache.max                  16384
        vfs.zfs.vdev.metaslabs_per_vdev         200
        vfs.zfs.txg.timeout                     5
        vfs.zfs.space_map_blksz                 4096
        vfs.zfs.spa_slop_shift                  5
        vfs.zfs.spa_asize_inflation             24
        vfs.zfs.deadman_enabled                 1
        vfs.zfs.deadman_checktime_ms            5000
        vfs.zfs.deadman_synctime_ms             1000000
        vfs.zfs.recover                         0
        vfs.zfs.spa_load_verify_data            1
        vfs.zfs.spa_load_verify_metadata        1
        vfs.zfs.spa_load_verify_maxinflight     10000
        vfs.zfs.check_hostid                    1
        vfs.zfs.mg_fragmentation_threshold      85
        vfs.zfs.mg_noalloc_threshold            0
        vfs.zfs.condense_pct                    200
        vfs.zfs.metaslab.bias_enabled           1
        vfs.zfs.metaslab.lba_weighting_enabled  1
        vfs.zfs.metaslab.fragmentation_factor_enabled1
        vfs.zfs.metaslab.preload_enabled        1
        vfs.zfs.metaslab.preload_limit          3
        vfs.zfs.metaslab.unload_delay           8
        vfs.zfs.metaslab.load_pct               50
        vfs.zfs.metaslab.min_alloc_size         33554432
        vfs.zfs.metaslab.df_free_pct            4
        vfs.zfs.metaslab.df_alloc_threshold     131072
        vfs.zfs.metaslab.debug_unload           0
        vfs.zfs.metaslab.debug_load             0
        vfs.zfs.metaslab.fragmentation_threshold70
        vfs.zfs.metaslab.gang_bang              16777217
        vfs.zfs.free_bpobj_enabled              1
        vfs.zfs.free_max_blocks                 -1
        vfs.zfs.no_scrub_prefetch               0
        vfs.zfs.no_scrub_io                     0
        vfs.zfs.resilver_min_time_ms            3000
        vfs.zfs.free_min_time_ms                1000
        vfs.zfs.scan_min_time_ms                1000
        vfs.zfs.scan_idle                       50
        vfs.zfs.scrub_delay                     4
        vfs.zfs.resilver_delay                  2
        vfs.zfs.top_maxinflight                 32
        vfs.zfs.zfetch.array_rd_sz              1048576
        vfs.zfs.zfetch.max_distance             8388608
        vfs.zfs.zfetch.min_sec_reap             2
        vfs.zfs.zfetch.max_streams              8
        vfs.zfs.prefetch_disable                0
        vfs.zfs.delay_scale                     500000
        vfs.zfs.delay_min_dirty_percent         60
        vfs.zfs.dirty_data_sync                 67108864
        vfs.zfs.dirty_data_max_percent          10
        vfs.zfs.dirty_data_max_max              4294967296
        vfs.zfs.dirty_data_max                  2573525811
        vfs.zfs.max_recordsize                  1048576
        vfs.zfs.mdcomp_disable                  0
        vfs.zfs.nopwrite_enabled                1
        vfs.zfs.dedup.prefetch                  1
        vfs.zfs.l2c_only_size                   0
        vfs.zfs.mfu_ghost_data_lsize            0
        vfs.zfs.mfu_ghost_metadata_lsize        0
        vfs.zfs.mfu_ghost_size                  0
        vfs.zfs.mfu_data_lsize                  0
        vfs.zfs.mfu_metadata_lsize              106496
        vfs.zfs.mfu_size                        194560
        vfs.zfs.mru_ghost_data_lsize            0
        vfs.zfs.mru_ghost_metadata_lsize        0
        vfs.zfs.mru_ghost_size                  0
        vfs.zfs.mru_data_lsize                  0
        vfs.zfs.mru_metadata_lsize              1630208
        vfs.zfs.mru_size                        4237312
        vfs.zfs.anon_data_lsize                 0
        vfs.zfs.anon_metadata_lsize             0
        vfs.zfs.anon_size                       16384
        vfs.zfs.l2arc_norw                      1
        vfs.zfs.l2arc_feed_again                1
        vfs.zfs.l2arc_noprefetch                1
        vfs.zfs.l2arc_feed_min_ms               200
        vfs.zfs.l2arc_feed_secs                 1
        vfs.zfs.l2arc_headroom                  2
        vfs.zfs.l2arc_write_boost               8388608
        vfs.zfs.l2arc_write_max                 8388608
        vfs.zfs.arc_meta_limit                  5994486784
        vfs.zfs.arc_free_target                 42449
        vfs.zfs.arc_shrink_shift                7
        vfs.zfs.arc_average_blocksize           8192
        vfs.zfs.arc_min                         2997243392
        vfs.zfs.arc_max                         23977947136

------------------------------------------------------------------------
По памяти расклад такой sysctl -a|grep vm.kmem :

Код: Выделить всё

vm.kmem_map_free: 24876498944
vm.kmem_map_size: 175190016
vm.kmem_size_scale: 1
vm.kmem_size_max: 1319413950874
vm.kmem_size_min: 0
vm.kmem_zmax: 65536
vm.kmem_size: 25051688960

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-14 0:31:19

Neus писал(а): о! вот где надо было искать - в исходниках
Обнаружил такую вещь, если в /etc/loader.conf не указано, vdev работать НЕ БУДЕТ!!!
Т.е. будет disabled как ни крути...

Код: Выделить всё

=========================================
2016-02-13 18-34-28 Get sysctl -a | grep prefetch...
vfs.zfs.no_scrub_prefetch: 0
vfs.zfs.prefetch_disable: 0
vfs.zfs.dedup.prefetch: 1
vfs.zfs.l2arc_noprefetch: 1
kstat.zfs.misc.arcstats.prefetch_metadata_misses: 188
kstat.zfs.misc.arcstats.prefetch_metadata_hits: 119
kstat.zfs.misc.arcstats.prefetch_data_misses: 0
kstat.zfs.misc.arcstats.prefetch_data_hits: 0
=========================================
2016-02-13 18-34-28 Get zfs-stats -DL...

------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Feb 13 18:34:29 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV cache is disabled

------------------------------------------------------------------------
второй пример

Код: Выделить всё

=========================================
2016-02-13 19-09-03 Get sysctl -a | grep prefetch...
vfs.zfs.no_scrub_prefetch: 0
vfs.zfs.prefetch_disable: 0
vfs.zfs.dedup.prefetch: 1
vfs.zfs.l2arc_noprefetch: 0
kstat.zfs.misc.arcstats.prefetch_metadata_misses: 192
kstat.zfs.misc.arcstats.prefetch_metadata_hits: 113
kstat.zfs.misc.arcstats.prefetch_data_misses: 0
kstat.zfs.misc.arcstats.prefetch_data_hits: 0
=========================================
2016-02-13 19-09-03 Get cat /boot/loader.conf | grep -v '^#' | grep -v '^;' | sed '/^$/d'
vm.kmem_size="7920M"
vm.kmem_size_max="7920M"
vfs.zfs.arc_max="960M"
vfs.zfs.vdev.cache.size="120M"
=========================================
2016-02-13 19-09-03 Get zfs-stats -DL...

------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Feb 13 19:09:03 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV Cache Summary:                             2.05k
        Hit Ratio:                      13.60%  279
        Miss Ratio:                     21.98%  451
        Delegations:                    64.42%  1.32k

------------------------------------------------------------------------
И это-же подтверждает исходник кода
https://svnweb.freebsd.org/base/releng/ ... iew=markup

Код: Выделить всё

#ifdef _KERNEL 
4293         if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", &zfs_prefetch_disable)) 
4294                 prefetch_tunable_set = 1; 
4295  
4296 #ifdef __i386__ 
4297         if (prefetch_tunable_set == 0) { 
4298                 printf("ZFS NOTICE: Prefetch is disabled by default on i386 " 
4299                     "-- to enable,\n"); 
4300                 printf("            add \"vfs.zfs.prefetch_disable=0\" " 
4301                     "to /boot/loader.conf.\n"); 
4302                 zfs_prefetch_disable = 1; 
4303         } 
4304 #else 
4305         if ((((uint64_t)physmem * PAGESIZE) < (1ULL << 32)) && 
4306             prefetch_tunable_set == 0) { 
4307                 printf("ZFS NOTICE: Prefetch is disabled by default if less " 
4308                     "than 4GB of RAM is present;\n" 
4309                     "            to enable, add \"vfs.zfs.prefetch_disable=0\" " 
4310                     "to /boot/loader.conf.\n"); 
4311                 zfs_prefetch_disable = 1; 
4312         } 
4313 #endif 
4314         /* Warn about ZFS memory and address space requirements. */ 
4315         if (((uint64_t)physmem * PAGESIZE) < (256 + 128 + 64) * (1 << 20)) { 
4316                 printf("ZFS WARNING: Recommended minimum RAM size is 512MB; " 
4317                     "expect unstable behavior.\n"); 
4318         } 
4319         if (kmem_size() < 512 * (1 << 20)) { 
4320                 printf("ZFS WARNING: Recommended minimum kmem_size is 512MB; " 
4321                     "expect unstable behavior.\n"); 
4322                 printf("             Consider tuning vm.kmem_size and " 
4323                     "vm.kmem_size_max\n"); 
4324                 printf("             in /boot/loader.conf.\n"); 
4325         } 
4326 #endif 
4327 } 
Откатился, я...
Но что делать???
Я понимаю, что снять данные и перезалить это можно сделать, но лучше попинать старших товарищей.
Ну не дело-же по пустякам в корку вываливаться! А?
Это-ж явная бага... И близжайшем мартовском релизе она не решена...
А Brendon-то и в иллюмусе поработал до 2013 года, оказывается...

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-14 21:02:25

Что-то я не понял каким параметром ты включил VDEV Cache.
Кусок кода этот проверяет размер памяти и архитектуру на предмет - а не отключить ли глобально префетч, там не про l2arc.

А пробовал прогнать пул zdb?

Код: Выделить всё

zdb -cc -AAA poolname
ПС
Эпиграф порадовал, распечатал и повесил на стену :)

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-15 14:19:57

Neus писал(а): Что-то я не понял каким параметром ты включил VDEV Cache.
Все просто если есть
Demis писал(а): vm.kmem_size="7920M"
vm.kmem_size_max="7920M"
vfs.zfs.arc_max="960M"
vfs.zfs.vdev.cache.size="120M"
То vdev активируется.
Если нет таких строчек в
Demis писал(а): /etc/loader.conf
, то нет.
И все тут.
Приглядись внимательно.
А что такое
Neus писал(а): zdb -cc -AAA poolname
, точнее что оное сделает?

Отправлено спустя 13 минут 43 секунды:
Точне, т.е. нагляднее так:

Код: Выделить всё

=========================================
2016-02-15 13-27-22 Get sysctl -a|grep vm.kmem...
vm.kmem_map_free: 6857297920
vm.kmem_map_size: 1447424000
vm.kmem_size_scale: 1
vm.kmem_size_max: 8304721920
vm.kmem_size_min: 0
vm.kmem_zmax: 65536
vm.kmem_size: 8304721920
=========================================
2016-02-15 13-27-22 Get kldstat vmstat -m mem usage
TEXT=27846475, 26,5565 MB
DATA=284241920, 271,074 MB
TOTAL=312088395, 297,631 MB
=========================================
2016-02-15 13-27-22 Get zpool status hdd...
  pool: hdd
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(7) for details.
  scan: scrub repaired 0 in 14h57m with 0 errors on Thu Feb 11 03:35:43 2016
config:

        NAME         STATE     READ WRITE CKSUM
        hdd          ONLINE       0     0     0
          raidz2-0   ONLINE       0     0     0
            mfid1p1  ONLINE       0     0     0
            mfid2p1  ONLINE       0     0     0
            mfid3p1  ONLINE       0     0     0
            mfid4p1  ONLINE       0     0     0
            mfid5p1  ONLINE       0     0     0

errors: No known data errors
=========================================
2016-02-15 13-27-22 Get sysctl -a | grep prefetch...
vfs.zfs.no_scrub_prefetch: 0
vfs.zfs.prefetch_disable: 0
vfs.zfs.dedup.prefetch: 1
vfs.zfs.l2arc_noprefetch: 0
kstat.zfs.misc.arcstats.prefetch_metadata_misses: 975218
kstat.zfs.misc.arcstats.prefetch_metadata_hits: 5090966
kstat.zfs.misc.arcstats.prefetch_data_misses: 0
kstat.zfs.misc.arcstats.prefetch_data_hits: 0
=========================================
2016-02-15 13-27-22 Get cat /etc/sysctl.conf | grep -v '^#' | grep -v '^;' | sed '/^$/d'
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.link.ether.inet.max_age=1200
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc3390=1
net.inet.tcp.rfc3042=1
net.inet.tcp.sack.enable=1
net.inet.udp.maxdgram=57344
net.inet.raw.maxdgram=53248
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.tcp.msl=15000
net.inet.icmp.icmplim=100
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.ip.fw.one_pass=0
net.inet6.ip6.v6only=0
net.inet6.ip6.accept_rtadv=0
net.inet6.ip6.auto_linklocal=0
kern.maxfiles=204800
kern.maxfilesperproc=200000
vfs.vmiodirenable=1
dev.igb.0.rx_processing_limit=4096
dev.igb.1.rx_processing_limit=4096
net.graph.maxdgram=8388608
net.graph.recvspace=8388608
net.route.netisr_maxqlen=4096
kern.ipc.nmbclusters=4194304
kern.ipc.maxsockbuf=83886080
net.inet.ip.dummynet.pipe_slot_limit=1000
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fastforwarding=1
net.inet.ip.intr_queue_maxlen=10240
net.inet.tcp.recvspace=262144
net.inet.tcp.sendspace=262144
net.inet.tcp.mssdflt=1452
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=65535
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
net.inet.tcp.delayed_ack=0
kern.ipc.somaxconn=8192
net.inet.ip.portrange.randomized=0
net.inet.tcp.nolocaltimewait=1
vfs.zfs.l2arc_noprefetch=0
=========================================
2016-02-15 13-27-22 Get cat /boot/loader.conf | grep -v '^#' | grep -v '^;' | sed '/^$/d'
debug.acpi.max_tasks="128"
net.inet6.ip6.rfc6204w3="0"
net.inet6.ip6.v6only="0"
net.inet6.ip6.no_radr="1"
net.inet6.ip6.accept_rtadv="0"
net.inet6.ip6.auto_linklocal="0"
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
net.isr.defaultqlimit=4096
net.link.ifqmaxlen=10240
if_lagg_load="YES"
hw.igb.num_queues=3
aio_load="yes"
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=131072
vfs.ufs.dirhash_maxmem=16777216
ichsmb_load="YES"
ipmi_load="YES"
vfs.zfs.min_auto_ashift=12
vm.kmem_size="7920M"
vm.kmem_size_max="7920M"
vfs.zfs.arc_max="960M"
vfs.zfs.vdev.cache.size="120M"
=========================================
2016-02-15 13-27-22 Get zfs-stats -DL...

------------------------------------------------------------------------
ZFS Subsystem Report                            Mon Feb 15 13:27:22 2016
------------------------------------------------------------------------

L2ARC is disabled

------------------------------------------------------------------------

VDEV Cache Summary:                             4.74m
        Hit Ratio:                      57.49%  2.73m
        Miss Ratio:                     38.65%  1.83m
        Delegations:                    3.86%   183.11k

------------------------------------------------------------------------
Отправлено спустя 40 минут 42 секунды:
Demis писал(а): точнее что оное сделает?
Почитал ман, вроде все прояснилось.
Запустил у себя и выпал в осадок:

Код: Выделить всё

zdb -cc -AAA hdd

Traversing all blocks to verify checksums and verify nothing leaked ...

loading space map for vdev 0 of 1, metaslab 108 of 109 ...
 740M completed (   0MB/s) estimated time remaining: 3431hr 01min 27sec
Это-же четыре месяца...
А если кернел-паник за это время прибежит от пользователя, то ведь сначала нужно будет?

Отправлено спустя 8 минут 13 секунд:
Neus писал(а): повесил на стену
Аналогично, за спиной на стенке уже несколько лет висит, рядом с багой.

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-15 14:34:54

уже понял, этот vfs.zfs.vdev.cache.size, по-дефолту =0
у FreeNAS есть фича autotune, вот глянь картинку, это на 8 гигах памяти, vfs.zfs.vdev.cache.size я добавил, может и не надо его было
autotune.png
zdb -cc -AAA чекает контрольные суммы всех блоков данных и метаданных с выключенными asstert и кернел паник:) глянь мануал.
твой трейс ничем не отличается от предыдущих - при аллокации блока передается размер 0,
если верить тексту ссылки которую я приводил, такого быть не должно, там грешат на битовую ошибку, но у тебя ECC
мистика...

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Demis » 2016-02-15 16:28:46

Neus писал(а): vfs.zfs.vdev.cache.size я добавил
Все правильно, только размером нужно посчитать (это как-бы опционально), к коде встречалась минимальная цифиря то-ли 12М, то-ли 16М.
Ну и без рестарта не активируется.

Отправлено спустя 12 минут 6 секунд:
Demis писал(а): рядом с багой
Я имел ввиду Грейс Хоппер...

Отправлено спустя 1 час 30 минут 49 секунд:
О, пруф по поводу
Neus писал(а): vfs.zfs.vdev.cache.size
Смотрим http://www.freebsd.org/doc/handbook/zfs-advanced.html и видим:

Код: Выделить всё

•vfs.zfs.vdev.cache.size - A preallocated amount of memory reserved as a cache for each device in the pool. The total amount of memory used will be this value multiplied by the number of devices. This value can only be adjusted at boot time, and is set in /boot/loader.conf.

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

Странная проблема с zfs и samba 4.2, хотя в самбе-ли дело?

Непрочитанное сообщение Neus » 2016-02-15 19:04:33

А надо ли, этож тоже кэш в памяти как и arc. и не просто так наверное отключён разрабами по дефолту.
Кстати, я тут снова вкатил freenas на корзину, сваял там raidz, 4 винта по 4 гига, она такто 16 поддерживает но лень щас собирать, ssd жаль нету под лог и кеш, но думаю и так пойдёт, если чо флешка есть усб 3.0 на 32 га.
Залил на него 180 гигов виндового барахла в виде дистров и прочего хлама.
Завтра натравлю на него видеопотоки чтобы побольше забить места забить.
Опиши юзкейс своего массива подробнее, хочу смоделировать проблему, так как есть задумка поднять на ней фрю или солярку вместо онбоард барахла на линуксе.
Есс там нету так что вдруг получится, заодно и пойму есть ли смысл без ЕСС юзать zfs.
Там линь встроенный после обновления прошивки стал поддерживать btrfs вдобавок к нормальной xfs.
Тоже cow fs, но дрянь редкостная, натравил на неё по icsci iometer, так эта зараза колом встала, отвалилось все, ssh, iscsi, samba, nfs.
Подключил клаву с моником- в консоли чисто, на три кнопки не реагирует никак, только хард ресет.
А xfs на ней легко переваривает 64 потока одновременных на запись.

Отправлено спустя 8 минут 44 секунды:
Фича автонастройки странная на freenas, там нет l2arc, а она все рано его параметры оттюнила … нахрена спрашивается.