Описание достаточно длинное, прошу набраться и терпения.
Есть сервер freebsd 10.2
Код: Выделить всё
uname -a
FreeBSD teo.что-то-там.loc 10.2-RELEASE-p12 FreeBSD 10.2-RELEASE-p12 #0: Fri Feb 5 21:58:32 MSK 2016
demis@teo.что-то-там.loc:/usr/obj/usr/src/sys/TEO amd64
На нем достаточно внушительная рабочая файлокопилка на zfs.
часть вывода df -H
Код: Выделить всё
Filesystem Size Used Avail Capacity Mounted on
hdd/usr/wf 6,6T 4,1T 2,5T 62% /hdd/usr/wf
Код: Выделить всё
zpool status hdd
pool: hdd
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://illumos.org/msg/ZFS-8000-8A
scan: scrub repaired 0 in 17h34m with 3451 errors on Mon Feb 8 13:52:13 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
logs
ada0p5 ONLINE 0 0 0
cache
ada0p6 ONLINE 0 0 0
errors: 3452 data errors, use '-v' for a list
И вроде никак не мешало и не мешает. В онлайне эти файлы есть и доступны.
Но речь не про них.
Собственно проблема: сервер с некоторого момента стал самопроизвольно перезагружаться.
Эмпирическим путем (почти случайным) выявлено:
1. При удалении некоторых папок созданными пользователями происходит kernel panic с естественной перезагрузкой.
2. Вне зависимости от того запущена самба или нет попытка работы с этой папкой под рутом под ssh приводит к kernel panic с естественной
перезагрузкой.
команда ls на папку работает.
команда getfacl на папку работает.
команда setfacl на папку - кернел-паник, перезагрузка.
команда rm -r на папку - кернел-паник, перезагрузка.
В папке можно создать файл и удалить все нормально.
В папке можно создать подпапку и в ней файл и удалить все нормально.
3. на папке немного странные права:
Код: Выделить всё
d---------+ 3 anna domain users 3 10 дек 10:32 01-Проект
d---------+ 2 anna domain users 2 8 фев 21:46 02-Текст
Скрабинг делался, но ни к чему не привел, все осталось как есть.
Есть некоторая преамбула.
Но прошу не запутаться.
И опять-же не факт, что именно из-за этих действий все ломается.
Всего на сервере 7 дисков, 2 в зеркале системные ufs2, 5 под хранилище zfs.
Работает все на железе супермикры (Model:SYS-6026T-6RF+, MB:X8DTU-6F+, RAM 24Гб DDR3, и два XEON'а).
Изначально в некотором прошлом все начало работать на bsd 8.4.
Было повышение версий до 9.0, до 9.1, до 9.2, до 9.3 по мере прекращения их поддержки.
Повышение делаю обычно примерно за год до окончания поддержки.
Повышение до 9.3 было 02.10.2015
И тут спустя два месяца, а именно 10.12.2015, посетил зверек с голубым мехом.
Сотрудница передвигала папки и сервер пропал в сети.
Консоль показывала, что как только запускается модуль zfs.ko сразу ребут.
И так бескончно по кругу.
Проверка памяти мемтестом86, железа, винчестеров, очень долго, но все - ОК.
Пока суть да дело, отвезли весь сервер в ремонт на поиски источников проблем,
где заодно обновили прошивку для контроллера винчестеров (чип LSI2108 встроенный в мать).
Не сразу (контора реально стояла почти две недели) был найден пост на форуме freebsd.
Суть сводилась к тому, что в 9.3 что-то там поломали и теперь при больших объемах удаления файлов вылетает кернел-паник.
Решение на форуме было только одно - апгрейд до 10.2, т.к. только в ней это дело пофиксили.
https://forums.freebsd.org/threads/kern ... etc.51470/
Ну, апгрейд, так апгрейд. Проапргрейдился, починил zfs, действительно все вроде заработало.
Приходит ко мне та-же сотрудница, перепиши мол данные по работе с ноута на сервер.
Посмотрел примерно 350Гб, по сетке долго, вытащил винчестер,
воткнул в сервер через USB-докстанцию (несколько лет ей пользуюсь проблем с ней не наблюдал),
поставил на копирование.
Примерно на 175Гб копирования сервер перезагрузился... Вот блин.
Ну ладно, fsck -yn, загрузка, докопировал остальное, вроде тоже без проблем.
А дальше, спустя какое-то время она пытается разнести (как выяснилось)
скопированную информацию по другим папкам - кернел-паник, ребут.
Мать - перемать...
Дальше больше, стал проявляться этот эффект у других сотрудников.
Причем реакцию перезагрузки по delete папки тоже поймал не сразу.
Оно как-то выборочно, но не определить, из-за чего именно.
И сначала я грешил на самбу, подтянул ее (обновил т.е.).
Ничего не поменялось, лучше не стало.
И тут я и обнаружил эту странность:
самба-то выключена, а я делаю в ssh или в консоли rm -r /zfs/path/to/my/foder
И снова кернел-паник, ребут.
Код: Выделить всё
kgdb /usr/obj/usr/src/sys/TEO/kernel.debug /var/crash/vmcore.9
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: 270
cpuid = 10
...
(kgdb) backtrace
#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=0xfffff801e0450ac8, spa=0xfffff80090d97000, bp=0xfffffe001baf1980, done=0xffffffff81c3a2d0
<dbuf_read_done>,
private=0xfffff80415d81000, priority=ZIO_PRIORITY_SYNC_READ, zio_flags=-828757968, arc_flags=0xfffffe06788adfe4,
zb=0xffffffff81c3a2d0)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1551
#8 0xffffffff81c3669c in dbuf_read (db=0xfffff80415d81000, 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=0xfffff800439fd380, tag=0x0, dbp=0xfffff802bfab57a8)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
#10 0xffffffff81c70dd7 in sa_attr_op (hdl=0xfffff802bfab5780, bulk=0xfffffe06788ae148, 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=0xfffff802bfab5780, 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 0xffffffff81cd4af1 in zfs_freebsd_setattr (ap=<value optimized out>) at
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:3323
#13 0xffffffff80ed35e1 in VOP_SETATTR_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:799
#14 0xffffffff80a0baf9 in setfown (td=<value optimized out>, cred=0xfffff80090e2e900, vp=0xfffff804320e71d8, uid=<value optimized out>,
gid=<value optimized out>)
at vnode_if.h:335
#15 0xffffffff80a0bcdf in kern_fchownat (td=0xfffff80173c1d000, fd=<value optimized out>, path=<value optimized out>, pathseg=<value optimized
out>, uid=10001, gid=0,
flag=<value optimized out>) at /usr/src/sys/kern/vfs_syscalls.c:3008
#16 0xffffffff80a0bbd4 in sys_fchownat (td=<value optimized out>, uap=<value optimized out>) at /usr/src/sys/kern/vfs_syscalls.c:2980
#17 0xffffffff80dab337 in amd64_syscall (td=0xfffff80173c1d000, traced=0) at subr_syscall.c:134
#18 0xffffffff80d90a1b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396
#19 0x000000080088db8a in ?? ()
Previous frame inner to this frame (corrupt stack?)
Current language: auto; currently minimal
Код: Выделить всё
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: 270
cpuid = 15
...
(kgdb) backtrace
#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=0xfffff8006fa74ac8, spa=0xfffff8006f65b000, bp=0xfffffe000a053980, done=0xffffffff81c3a2d0
<dbuf_read_done>,
private=0xfffff8022e1539a0, priority=ZIO_PRIORITY_SYNC_READ, zio_flags=1155296192, arc_flags=0xfffffe019d6bffe4,
zb=0xffffffff81c3a2d0)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1551
#8 0xffffffff81c3669c in dbuf_read (db=0xfffff8022e1539a0, 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=0xfffff8019fee9620, tag=0x0, dbp=0xfffff8022e0b1118)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
#10 0xffffffff81c70dd7 in sa_attr_op (hdl=0xfffff8022e0b10f0, bulk=0xfffffe019d6c0148, 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=0xfffff8022e0b10f0, 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 0xffffffff81cd4af1 in zfs_freebsd_setattr (ap=<value optimized out>) at
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:3323
#13 0xffffffff80ed35e1 in VOP_SETATTR_APV (vop=<value optimized out>, a=<value optimized out>) at vnode_if.c:799
#14 0xffffffff80a0baf9 in setfown (td=<value optimized out>, cred=0xfffff8019f0ba900, vp=0xfffff8019fe81ce8, uid=<value optimized out>,
gid=<value optimized out>)
at vnode_if.h:335
#15 0xffffffff80a0bcdf in kern_fchownat (td=0xfffff8006f46c940, fd=<value optimized out>, path=<value optimized out>, pathseg=<value optimized
out>, uid=10001, gid=0,
flag=<value optimized out>) at /usr/src/sys/kern/vfs_syscalls.c:3008
#16 0xffffffff80a0bbd4 in sys_fchownat (td=<value optimized out>, uap=<value optimized out>) at /usr/src/sys/kern/vfs_syscalls.c:2980
#17 0xffffffff80dab337 in amd64_syscall (td=0xfffff8006f46c940, traced=0) at subr_syscall.c:134
#18 0xffffffff80d90a1b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396
#19 0x000000080088db8a in ?? ()
Previous frame inner to this frame (corrupt stack?)
Current language: auto; currently minimal
Код: Выделить всё
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: 270
cpuid = 5
...
(kgdb) backtrace
#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=0xfffff8006f7a2000, spa=0xfffff8006f6c7000, bp=0xfffffe0019256980, done=0xffffffff81c3a2d0
<dbuf_read_done>,
private=0xfffff802d908e380, priority=ZIO_PRIORITY_SYNC_READ, zio_flags=-1445655811, arc_flags=0xfffffe019d8a7344,
zb=0xffffffff81c3a2d0)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1551
#8 0xffffffff81c3669c in dbuf_read (db=0xfffff802d908e380, 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=0xfffff802d94d2460, tag=0x0, dbp=0xfffff802d94c7168)
at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
#10 0xffffffff81c70dd7 in sa_attr_op (hdl=0xfffff802d94c7140, bulk=0xfffffe019d8a74a8, 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=0xfffff802d94c7140, 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=0xfffff802d94d8b80) 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=0xfffff802d94f71d8) at vnode_if.h:830
#16 0xffffffff80a02cb9 in vrecycle (vp=0xfffff802d94f71d8) 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=0xfffff802d94f71d8, td=0xfffff801156df4a0) at vnode_if.h:807
#20 0xffffffff80a019e2 in vputx (vp=0xfffff802d94f71d8, func=2) at /usr/src/sys/kern/vfs_subr.c:2306
#21 0xffffffff80a1007e in vn_close (vp=0xfffff802d94f71d8, flags=<value optimized out>, file_cred=0xfffff801affb0b00, td=0xfffff801156df4a0)
at /usr/src/sys/kern/vfs_vnops.c:435
#22 0xffffffff80a0eeb8 in vn_closefile (fp=0xfffff8006f593730, td=0xfffff801156df4a0) at /usr/src/sys/kern/vfs_vnops.c:1566
#23 0xffffffff809140d9 in _fdrop (fp=0xfffff8006f593730, td=0x0) at file.h:343
#24 0xffffffff8091697e in closef (fp=<value optimized out>, td=<value optimized out>) at /usr/src/sys/kern/kern_descrip.c:2338
#25 0xffffffff80914488 in closefp (fdp=0xfffff80086a2e800, fd=<value optimized out>, fp=0xfffff8006f593730, td=0xfffff801156df4a0,
holdleaders=<value optimized out>)
at /usr/src/sys/kern/kern_descrip.c:1194
#26 0xffffffff80dab337 in amd64_syscall (td=0xfffff801156df4a0, traced=0) at subr_syscall.c:134
#27 0xffffffff80d90a1b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396
#28 0x00000008055aaf9a in ?? ()
Previous frame inner to this frame (corrupt stack?)
Current language: auto; currently minimal
(т.е. /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c)
есть VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
Стал смотреть
Код: Выделить всё
sysctl -a|grep vm.kmem
vm.kmem_map_free: 24286150656
vm.kmem_map_size: 764858368
vm.kmem_size_scale: 1
vm.kmem_size_max: 1319413950874
vm.kmem_size_min: 0
vm.kmem_zmax: 65536
vm.kmem_size: 25051009024
sysctl -a|grep vfs.zfs.arc_max
vfs.zfs.arc_max: 8589934592
sysctl -a | grep vfs.zfs.vdev.cache.size
vfs.zfs.vdev.cache.size: 838860800
(0.78125 Гб)
sysctl -a | grep vm.kmem_size_max
vm.kmem_size_max: 1319413950874
(Это-же 1.228Гб)
vm.kmem_size_max="4000M"
Кроме дикого торможения вплоть до заморозки системы ни к чему не приводит.
Убрал нафиг.
Что делать дальше не понимаю...
Возвращаемся к вопросу: подскажите в какую сторону посмотреть?
Много букав получилось, сорри.
Но так просто и не опишешь.
С уважением,
Demis.