LINUX.ORG.RU

Проскакивала новсть, что btrfs уже стабильна. Я в этом не уверен.

 


0

2

Ядро 3.17.1 x86_64. Монтируем btrfs с опцией compress-force=lzo и пишем в 2-3 потока всего лишь на скорости гигабитной сетки. Через 10-30 минут (как повезёт), система наглухо виснет вот с таким выхлопом:


Call Trace:
Nov 3 03:21:49 DRIVE kernel: [ 859.630880] [<ffffffff817a3e05>] _raw_write_lock+0x25/0x30
Nov 3 03:21:49 DRIVE kernel: [ 859.630888] [<ffffffffc01be3a9>] btrfs_tree_lock+0xc9/0x1d0 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630891] [<ffffffff810b3eb0>] ? add_wait_queue+0x60/0x60
Nov 3 03:21:49 DRIVE kernel: [ 859.630896] [<ffffffffc015b92b>] btrfs_lock_root_node+0x3b/0x50 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630901] [<ffffffffc0160dd7>] btrfs_search_slot+0x787/0x880 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630907] [<ffffffffc0178048>] btrfs_lookup_file_extent+0x38/0x40 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630914] [<ffffffffc01983f1>] __btrfs_drop_extents+0x151/0xdf0 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630915] [<ffffffff8109da1c>] ? ttwu_do_wakeup+0x2c/0x100
Nov 3 03:21:49 DRIVE kernel: [ 859.630917] [<ffffffff811cd773>] ? kmem_cache_alloc+0x1b3/0x1f0
Nov 3 03:21:49 DRIVE kernel: [ 859.630922] [<ffffffffc015b3ba>] ? btrfs_alloc_path+0x1a/0x20 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630926] [<ffffffffc015b3ba>] ? btrfs_alloc_path+0x1a/0x20 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630932] [<ffffffffc018867b>] insert_reserved_file_extent.constprop.64+0xab/0x310 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630938] [<ffffffffc0185880>] ? start_transaction.part.35+0x80/0x530 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630944] [<ffffffffc018ee35>] btrfs_finish_ordered_io+0x475/0x580 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630951] [<ffffffffc01cd6d1>] ? end_compressed_bio_write+0x31/0xf0 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630957] [<ffffffffc018ef55>] finish_ordered_fn+0x15/0x20 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630964] [<ffffffffc01b49ae>] normal_work_helper+0x7e/0x1b0 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630971] [<ffffffffc01b4c52>] btrfs_endio_write_helper+0x12/0x20 [btrfs]
Nov 3 03:21:49 DRIVE kernel: [ 859.630972] [<ffffffff8108ce2e>] process_one_work+0x14e/0x460
Nov 3 03:21:49 DRIVE kernel: [ 859.630973] [<ffffffff8108d7ab>] worker_thread+0x11b/0x3f0
Nov 3 03:21:49 DRIVE kernel: [ 859.630975] [<ffffffff8108d690>] ? create_worker+0x1e0/0x1e0
Nov 3 03:21:49 DRIVE kernel: [ 859.630976] [<ffffffff810932b9>] kthread+0xc9/0xe0
Nov 3 03:21:49 DRIVE kernel: [ 859.630977] [<ffffffff810931f0>] ? flush_kthread_worker+0x90/0x90
Nov 3 03:21:49 DRIVE kernel: [ 859.630978] [<ffffffff817a46fc>] ret_from_fork+0x7c/0xb0
Nov 3 03:21:49 DRIVE kernel: [ 859.630979] [<ffffffff810931f0>] ? flush_kthread_worker+0x90/0x90
Nov 3 03:21:49 DRIVE kernel: [ 859.630980] Code: 90 8b 0a 84 c9 66 90 75 f6 89 ce 89 c8 83 ce 01 f0 0f b1 32 39 c8 75 e7 b9 ff 00 00 00 eb 0a 0f 1f 84 00 00 00 00 00 f3 90 8b 02 <83> f8 01 75 f7 f0 0f b1 0a 83
f8 01 75 ee eb b3 0f 1f 40 00 8b


Это просто сама стабильность.

★★★★★
Ответ на: комментарий от erzent

Но я не проверял как работает это, тк ничего за год не упало.

С одной стороны хорошо, что не упало, с другой интересно было бы попробовать ребилд массива btrfs.

King_Carlo ★★★★★
() автор топика
Ответ на: комментарий от reprimand

Не имей привычки бояться за других, лол. Пиши смело, я выдержу, будь насчёт этого покоен.

pedobear
()
Ответ на: комментарий от reprimand

Невменоз - это пытаться втиснуть ФС 21-го века в объём архаичных накопителей, игнорируя специально для таких случаев предназначенные опции.

pedobear
()
Ответ на: комментарий от King_Carlo

я честно признаюсь, всё практически делал что в btrfs что zfs особо не вникая, благо манов копи паст хватает. Мне нравится btrfs тем, что она позволяет отказываться от мемкешеда у программистов на рабочих станциях, а с ним ой как много проблем у них при разработке, btrfs значительно повышает работоспособность шар на самбе и в отличии от zfs поддерживает полностью acl.

erzent ☆☆
()
Последнее исправление: erzent (всего исправлений: 1)
Ответ на: комментарий от intelfx

Я уже говорил, что использую btrfs под системный раздел с его тоннами мелких файлов. Сколько раз ещё это повторить, чтобы дошло?

pedobear
()
Ответ на: комментарий от King_Carlo

Если делаешь rollback, то совершенно логично, что снапшоты свежее того на который орткатываемся не нужны.

что за бред?

maloi ★★★★★
()
Ответ на: комментарий от pedobear

А Шишкинские кривляния с 700-метровым разделом не выглядят по-детски?

А какое значение имеет размер партиции? Если бы он заполнил 100-гигабатник, то процент пущеного в туалет дискового пространства был бы тем же самым. Просто 100-гигабатник дольше бы заполнялся.

anonymous
()
Ответ на: комментарий от anonymous

Если бы он заполнил 100-гигабатник, то процент пущеного в туалет дискового пространства был бы тем же самым

Продемонстрируй это.

pedobear
()
Ответ на: комментарий от maloi

что за бред?

Если принято решение, не по пьянке, откатиться, то для чего нужны снапшоты свежее точки отката?
Если по пьянке, то предварительно сделай clone-promote последнему снапшоту и выдели его в новую ветку, главное вспомнить с утра, зачем ты это сделал.

King_Carlo ★★★★★
() автор топика
Последнее исправление: King_Carlo (всего исправлений: 1)
Ответ на: комментарий от erzent

Меня не интересует, что там у тебя. Меня интересуют проблемы, с которыми Я сталкиваюсь.

anonymous
()
Ответ на: комментарий от MikeDM

падает, на 5% при создании крупных снапшотов, например снапшота проекта в 4 тб, кол-во снапшотов не считал, снапшоты делались у файлопомойки 3 раза в сутки,инкрементальный снапшот, производительность если и падала, то очень не значительно, юзвери даже не замечали. Снапшоты рабочих станций аналогично.

erzent ☆☆
()
Ответ на: комментарий от King_Carlo

Если принято решение, не по пьянке, откатиться, то для чего нужны снапшоты свежее точки отката?

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

maloi ★★★★★
()
Ответ на: комментарий от MikeDM

поясню, у меня у всех работников было по 2 диска, один на котором работали и второй под снапшоты, снапшоты были 2 типов, те, что делались раз в неделю полностью и сохранялись, и ежедневные, которые делались каждый день инкрементально, то есть новые данные старые затирали. За год это понадобилось 10 раз, тк часто удаляли им нужные документы...

erzent ☆☆
()
Ответ на: комментарий от King_Carlo

ну и ещё из тех снепшотов можно повыдирать потом данные пользователей и перенести на рабочую систему.

maloi ★★★★★
()
Ответ на: комментарий от MikeDM

я цеплял стандартный для hdd, а для проверки файловой системы делали свой(по сути с питонщиком нашим рядом посидел, сказал что надо, он сделал на 50 строк кода.) и прицепил в заббикс.

erzent ☆☆
()
Ответ на: комментарий от maloi

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

Если у тебя такой иноплантеный workflow, делай клоны с ряда снапшотов и ищи баги, откатываться то зачем?

King_Carlo ★★★★★
() автор топика
Ответ на: комментарий от pedobear

Что-то оно на 399-ой тысяче файлов начало шкрябать диском и тормозить -))

Там был какой-то фикс от Мейсона, но вся проблема в том, что проблема не ушла: btrfs начинает расползаться и показывать «no space left on device» там, где у остальных файловых систем при том же сценарии еще полно свободного места на диске.

anonymous
()
Ответ на: комментарий от King_Carlo

зачем вообще нужен rollback, если никто в здравом уме его никогда не будет делать? чтобы «младший энтерпрайз админ» своими кривыми руками удалил важные данные из снепшотов?

maloi ★★★★★
()
Ответ на: комментарий от MikeDM

btrfs.fsck запускался, а потом он похитрому как то его отправлял записывать в базу данных мускуля, а результат хорошо или плохо был в комплексном экране для виртуалки.

erzent ☆☆
()
Ответ на: комментарий от erzent

Dolphin показывает без заметных глазу задержек. Другое дело, что началось такое царапание харда, что я занервничал и пришлось перезагружаться, потому что kill -9 не помогал.

Короче, окончания теста я не дождался, по вышеупомянутым причинам. Картина такова:

locus ~ # losetup /dev/loop0 /media/mix/btrfs-image 
locus ~ # mount /dev/loop0 /mnt/temp
locus ~ # ls /mnt/temp | wc -l
398056
locus ~ # btrfs filesystem df /mnt/temp
Data, single: total=8.00MiB, used=576.00KiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1006.00MiB, used=972.70MiB
Metadata, single: total=8.00MiB, used=0.00
GlobalReserve, single: total=32.00MiB, used=0.00

Что, впрочем, неудивительно, ибо файлы упаковывались в дерево. Сейчас повторю с max_inline

pedobear
()
Ответ на: комментарий от pedobear

Да, таки дефраг починили. Прогнал на двух разделах, никаких проблем. Пропишу автодефраг в fstab на том разделе, которого не жалко (вики говорит, что эта опция будет в дефолте, когда разработчики точно убедятся, что она не запускается чаще чем надо).

vurdalak ★★★★★
()
Ответ на: комментарий от erzent

Я не слежу за коммитами в ядро, поэтому был не в курсе.

vurdalak ★★★★★
()
Ответ на: комментарий от pedobear

я перед сном читал твоё сообщение и мне превиделось что ты устроил тэст на запись и при этом берёшь данные из /dev/null. Прости. Надо мне больше отдыхать.

snaf ★★★★★
()
Ответ на: комментарий от pedobear

Он упаковывает мелкие файлы в дерево.

Как выяснилось, не упаковывает. Упаковка мелких файлов в дереве - это совсем нетривиальная задача.

anonymous
()
Ответ на: комментарий от King_Carlo

я уверен, что такое поведение никак не следует из архитектуры, но тем не менее идиотизм в таком поведении есть.

maloi ★★★★★
()
Ответ на: комментарий от pedobear

А как в ZFS?

В ZFS сжатие поблочное. Сжался первый блок или нет не оказывает никакого влияния на сжатие последующих. Если блок сжимается плохо, например если блок в 4 КБ (8 секторов) не удалось сжать до 3,5 КБ (7 секторов) или менее - он хранится без компрессии.

Блоки из нулей, кстати, при включенном сжатии превращаются во вполне себе полноценные дырки, превращая файл в sparse.

anonymous
()

Эксперимент опять пришлось прервать, когда хард начал тарахтеть (жалко мне этого старичка -))

locus ~ # dd if=/dev/zero of=/media/mix/btrfs-image bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 9.74956 s, 220 MB/s
locus ~ # losetup /dev/loop0 /media/mix/btrfs-image
locus ~ # mkfs.btrfs /dev/loop0
Btrfs v3.16.1
See http://btrfs.wiki.kernel.org for more information.

Performing full device TRIM (2.00GiB) ...
Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
fs created label (null) on /dev/loop0
        nodesize 16384 leafsize 16384 sectorsize 4096 size 2.00GiB
locus ~ # mount -t btrfs -o noatime,max_inline=256 /dev/loop0 /mnt/temp
locus ~ # for i in $(seq 1000000); do dd if=/dev/zero of=/mnt/temp/file_$i bs=2048 count=1 &>/dev/null; done
^C
locus ~ # btrfs filesystem df /mnt/temp
Data, single: total=1.37GiB, used=1.37GiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=310.38MiB, used=260.67MiB
Metadata, single: total=8.00MiB, used=0.00
GlobalReserve, single: total=48.00MiB, used=0.00
locus ~ # ls /mnt/temp | wc -l
511678

На мой взгляд, всё норм.

pedobear
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.