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


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

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

У меня работает, а проблемы одминов шерифа не волнуют.

Позиция понятна, на твоём локалхосте можно использовать любую бажную ФС, всё равно ценность данных стремится к нулю. Для меня данные важны, поэтому я выбираю адекватное, надёжное решение.

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

Сжатие не жрёт современый процессор

Опять враньё. Святой дух работает, вместо процессора.

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

Мне вруны не интересны.

Где я соврал?

Опять враньё. Святой дух работает, вместо процессора.

3-5% от одного ядра. Жалко? И ты это, полегче, тебя заклинило на лжи, которой нет, это пранойя называтся.

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

блжад. Компрессия есть. Только она включается для каждого файла по отдельности. За то потом файлы становятся сжатыми, и читаются как обычные. Ну можно в crontab засунуть поиск новых и не сжатых файлов.

Ещё раз: я считаю, что это не нужно. В смысле В ПРИНЦИПЕ не нужно.

PS: и да, в этой твоей btrfs, как очевидно из этого треда, сжатие тоже через жопу сделано.

emulek
()

я так вскользь прочитал дисскуссию.. и думаю вот что! а давайте ещё...

...покритикуем du за то что оно показывает НЕкорректно суммарный размер каталога — даже в ситуации БЕЗ сжатия.

вот листинг:

[regular-user@localhost ~]$ cd ~/Desktop/
[regular-user@localhost Desktop]$ mkdir -v test_directory
mkdir: created directory ‘test_directory’
[regular-user@localhost Desktop]$ cp --reflink=auto -v '/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv' test_directory/cap-1.mkv
‘/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv’ -> ‘test_directory/cap-1.mkv’
[regular-user@localhost Desktop]$ cp --reflink=auto -v '/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv' test_directory/cap-2.mkv
‘/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv’ -> ‘test_directory/cap-2.mkv’
[regular-user@localhost Desktop]$ cp --reflink=auto -v '/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv' test_directory/cap-3.mkv
‘/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv’ -> ‘test_directory/cap-3.mkv’
[regular-user@localhost Desktop]$ cp --reflink=auto -v '/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv' test_directory/cap-4.mkv
‘/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv’ -> ‘test_directory/cap-4.mkv’
[regular-user@localhost Desktop]$ cp --reflink=auto -v '/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv' test_directory/cap-5.mkv
‘/home/regular-user/Videos/films/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv)/Captain America - The Winter Soldier [BDRip-720p] (www.kinokopilka.tv).mkv’ -> ‘test_directory/cap-5.mkv’
[regular-user@localhost Desktop]$ # ВНИМАНИЕ!
[regular-user@localhost Desktop]$ ls -al --si test_directory/
total 28G
drwxr-xr-x 1 regular-user regular-user   90 Nov  3 15:19 .
drwxr-xr-x 1 regular-user regular-user   50 Nov  3 15:19 ..
-rw-r--r-- 1 regular-user regular-user 5.5G Nov  3 15:19 cap-1.mkv
-rw-r--r-- 1 regular-user regular-user 5.5G Nov  3 15:19 cap-2.mkv
-rw-r--r-- 1 regular-user regular-user 5.5G Nov  3 15:19 cap-3.mkv
-rw-r--r-- 1 regular-user regular-user 5.5G Nov  3 15:19 cap-4.mkv
-rw-r--r-- 1 regular-user regular-user 5.5G Nov  3 15:19 cap-5.mkv
[regular-user@localhost Desktop]$ du --si test_directory/
28G	test_directory/
[regular-user@localhost Desktop]$ du --apparent-size --si test_directory/
28G	test_directory/
[regular-user@localhost Desktop]$ 

то есть утилита du показала что этот каталог занимает АЖ 28 гигобайт, хотя на самом деле он не занимает ни столько (ну или на крайний случай гигов 5 :))

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от pedobear

А для кинопомойки или музыкальной коллекции это только бессмысленная трата проца и памяти на попытки сжать несжимаемое.

ну вот, видишь? Теперь ты понимаешь, почему в EXT4 сжатие непрозрачное, а только вручную, и только разжатие прозрачное, да и то в mainline никто его не спешит костылить?

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

Компрессия есть. Только она включается для каждого файла по отдельности

Тебе уже несколько раз рылом по ману проелозили, что в Ext4 нет никакого сжатия, ни на уровне ФС, ни через chattr, никакого. Почему ты такой даун?

в этой твоей btrfs, как очевидно из этого треда, сжатие тоже через жопу сделано

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

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

3-5% от одного ядра

При каком потоке данных? Ты тоже поумерь свой пыл, все у тебя на zfs так шоколадно... и сжатие без просадки рессурсов, а банальный gzip сделаешь и все упирается в CPU даже на скоростях простого hdd

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

Как хорошо, что я не одмин, лол.

То есть ты считаешь, что когда на твоём, моём и вооон того парня локалхостах btrfs кладёт систему это нормально и должно настораживать только админов? ))

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

Дело в том, что btrfs за год использования ни разу не клала мне систему и даже более мелких неудобств не доставляла. И я такой далеко не один. А проблемы шлимазлов, как было уже сказано, шерифа не волнуют, хехе.

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

Это почему?

потому что gz и не задумывался как прозрачный формат. Его только сквозь специальные фильтры читают, вроде zless.

Напротив, внутри ФС файлы _могут_ быть сжаты, но это проблемы ФС на самом деле. Ей виднее.

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

При каком потоке данных?

Ну скажем при 100Мб/сек, на сраном Xeon E3-1270V3.

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

Почему упоминание zfs так тебя раздражает?

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

Для меня данные важны, поэтому я выбираю адекватное, надёжное решение

если ты ЯКОБЫ стремишься выбирать надёжные решения — то скажи, когда ты разберёшься в чём истинная причина kernel-panic на компьютере с btrfs (который на твоей стороне)...

...то ты сообщишь нам о причине, или стыдливо промолчишь? :)

[подсказываю сразу: низкая вероятность что причина в именно btrfs.. вероятнее причина в том что ты что-то затюнинговал]

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

низкая вероятность что причина в именно btrfs.. вероятнее причина в том что ты что-то затюнинговал

Никакого тюнинга, всё сток.

King_Carlo ★★★★★
() автор топика

то есть утилита du показала что этот каталог занимает АЖ 28 гигобайт

всё верно, так оно и есть. Учи матчасть. Также как с хардлинками, файл у тебя существует в двух местах сразу. Т.е. здесь 28Гб, и там 28Гб. Это ОДНИ И ТЕ ЖЕ гигабайты. Почему должна быть дискриминация, и занимать место должен старый каталог-источник? Если ты источник удалишь, у тебя не станет на 28Гб больше места.

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

Никакого тюнинга, всё сток.

а как ты тогда скопипастил kernel-panic из экрана?

прям вот мышкой выделил и скопировал? :-)

а не виртуалка ли у тебя там какая? :-)

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

Пруф давай.

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

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

а как ты тогда скопипастил kernel-panic из экрана?

Резетом перезагрузил комп и, не поверишь, залез в /var/log/syslog ))

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

В Ext4 нет никакого сжатия. Точка.

ой, да и хрен с тобой. Если ты не можешь осилить коротенький текст по ссылке, то разве это моя проблема? Жри свой любимый кактус дальше, я не против.

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

всё верно, так оно и есть. Учи матчасть.

хорошо.. давай так.

продолжая эти действия — но не для 5 файлов, а для 500 файлов — какое значение мне покажет du ?

2800 гигобайт?

но у меня накопитель всего лишь четвердь гигобайта :-)

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

У тебя проц мб мощный, у меня с ssd только замедление

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

Резетом перезагрузил комп и, не поверишь, залез в /var/log/syslog ))

почему тогда у тебя разделалась одна длинная строчка на две разные строчки (в середине лога)?

вроде не должна была разделиться.

а вот если бы ты с экрана скопипастил (виртуального), то разделилась бы, да.. :-D

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

Ну вот скажи, для чего тебе знать размер файла до сжатия? Размер файла в ФС понятно зачем — чтобы видеть, кто занял место и что можно удалить.

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

В Ext4 нет никакого сжатия. Точка

Есть есть, не надо тут. Товарищ верно говорит, что собственно возможность сжатия в самой ФС предусмотрена (ещё со времён ext2). То, что она не реализована в ванильном ядре - это отдельный вопрос (просто никому не нужно).

no-such-file ★★★★★
()
Ответ на: комментарий от vurdalak

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

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

no-such-file ★★★★★
()
Ответ на: комментарий от user_id_68054

почему тогда у тебя разделалась одна длинная строчка на две разные строчки (в середине лога)?

Потому что терминал был открыт не на весь экран.

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

2800 гигобайт?

но у меня накопитель

а если у тебя гараж маленький, и там одна машина и две двери, то ты же не удивляешься, что в каждой двери одна машина, дверей две, а машина у тебя всё равно одна?

emulek
()
Ответ на: комментарий от no-such-file

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

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

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

Сделай вот так:

# cat /proc/1/maps

Это называется «отображение файла в память» и для работы ему разумеется нужен несжатый размер.

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

> почему тогда у тебя разделалась одна длинная строчка на две разные строчки (в середине лога)?

Потому что терминал был открыт не на весь экран.

что же ты меня постоянно пытаешься обмануть! :-) :-D

[Screencast from 03-11-14 15:54:34.webm]

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

Ты его читаешь бит в бит без преобразований форматов?

Да, а что?

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

А может не преобразовываться. И скажи на милость, а для того чтобы данные преобразовать, не нужно ли их сначала куда-то положить в ОЗУ? Бит в бит.

Собственно я файл как таковой не читаю, я делаю mmap.

Пример очевидно надуман

Твой пример конечно надуман.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

И скажи на милость, а для того чтобы данные преобразовать, не нужно ли их сначала куда-то положить в ОЗУ?

Нет, не нужно. Более того, для работы с файлом не обязательно его целиком читать. Можно читать и сразу преобразовывать ту часть, с которой работаешь, например как делают видеоплееры. Им нет никакого смысла сначала грузить десяток гигабайт в память, потом целиком их распаковывать на 5 десятков гигабайт, и с ними работать.

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

а если у тебя гараж маленький, и там одна машина и две двери, то ты же не удивляешься, что в каждой двери одна машина, дверей две, а машина у тебя всё равно одна?

не очень понял аналогию.. я конечно подумаю ещё :) ... но...

распиши сразу поконкретней:

имеется ввиду двери от машины, или гаражные двери?

и если двери от машины — то включая ту машину что уже в гараже или дверь помимой той машины (дополнительные) ?

а от du я просто ожидаю: "скажи, du, сколько в целом занимает этот каталог? ЧТО?! 2800 гигобай?!"

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

а хм.. кажется понимаю — ты имеешь ввиду что двери взаимозаменяемые?

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

Пруфы покажи

Пруфы чего, что в ext2/3/4 предусмотрено сжатие на лету? Ок, смотрим /usr/src/linux/fs/ext4/ext4.h

...

/*
 * Inode flags
 */

...

#define EXT4_COMPR_FL                   0x00000004 /* Compress file */

...

/* Reserved for compression usage... */
#define EXT4_DIRTY_FL                   0x00000100
#define EXT4_COMPRBLK_FL                0x00000200 /* One or more compressed clusters */
#define EXT4_NOCOMPR_FL                 0x00000400 /* Don't compress */
#define EXT4_ECOMPR_FL                  0x00000800 /* Compression error */
/* End compression flags --- maybe not all used */

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