LINUX.ORG.RU
ФорумTalks

Визуализатор фрагментации файлов на диске. С квадратиками


0

6

Я тут месяцев пять назад задавал вопрос про визуализатор фрагментации; такового не нашлось и я начал его пилить сам. Давно уже его не трогал, и вряд ли в ближайшее время буду, так что решил выложить, вдруг кому будет интересно: git://github.com/i-rinat/fragview.git

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

А, да, работает только с ФС, которые поддерживают FIEMAP, это вроде ext2/3/4 и btrfs. Патч, добавляющий FIEMAP для JFS есть тут.

Скрин: http://ompldr.org/vOWs0NQ

★★★★★

clang++ -g3 -ggdb3 -O2 -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/libdrm    -o graph.o -c graph.cpp
make: clang++: Команда не найдена
make: *** [graph.o] Ошибка 127

g++ уже не актуален?

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

Впрочем, c g++ собралось и шуршит винтом. Жду

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

Не совсем, размер квадратиков фиксирован в коде, из размеров окна считается сколько квадратиков влезает, а из количества квадратиков считается, сколько кластеров влезет в блок. Растягиваешь окно - карта становится более подробной. Как-то так.

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

И прокрутки в окне нет?
Я от всех этих визуализаторов хотел, чтоб я мог задать размер репрезентуемого блока в секторах диска сам. Пускай в каких-то пределах, скажем от размера кластера до там какой-то 2^кратной величины. Но я придумал бы зачем мне это надо.

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

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

В MyDefrag под виндой такое есть. Выглядит - так себе.

По идее, добавить такое совсем не сложно, но лень.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от rg-400

> А зачем смотреть на фрагментацию?

Нет объективных причин, просто мне интересно. Воочию увидел allocation groups.

i-rinat ★★★★★
() автор топика

Консольный вариант в виде bash script был бы интереснее. Благо hdparm --fibmap никто не отменял.

Murr ★★
()

Сделанно в стиле виндовс 98,олдовенько.Но класно же.Может чуть чуть доделать,а потом запилить например на ланчпад,и надеяться что кто-то поможет?Тестить я готов ,но быдлокодить-увы.

Ubuntu1104
()

Картинка заставила волноваться и разбудила какие-то древние инстинкты. Хорошая картинка.

abraziv_whiskey ★★★★★
()

> Патч, добавляющий FIEMAP для JFS есть тут

Судя по твоему блогу, у тебя и для reiserfs есть?

Вроде XFS тоже должна работать.

YAR ★★★★★
()

Не хочет собираться :(

In file included from filelistview.cpp:2:
./clusters.h:8:8: error: unknown type name '__u64'
inline __u64 minu64(__u64 a, __u64 b) {
       ^
./clusters.h:8:1: error: 'inline' can only appear on functions
inline __u64 minu64(__u64 a, __u64 b) {
^
./clusters.h:8:21: error: use of undeclared identifier '__u64'
inline __u64 minu64(__u64 a, __u64 b) {

И еще 100500 ошибок на ту же тему

YAR ★★★★★
()

> ext2/3/4 и btrfs

А нафига визуализировать фрагментацию, если для этих ФС нет нормального дефрага? Чота-там экскрементальное для ext4 не в счет.

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

> а потом запилить например на ланчпад

Не надо на эту помойку, к тому же оно уже на гитхабе, если ты не заметил

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

Оно не такое уж и эксрементальное и даже что-то дефрагментирует, правда не очень хорошо

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

>круто. Можно даже новостью оформить
Ну так. Переломный момент - линукс наконец-то готов для десктопа.

kernelpanic ★★★★★
()

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

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

> А что красное и синее означает? Если у меня почти весь раздел красным, это плохо?

— Blue is glue
— Red?
— Dead

(c) Mission Impossible IV

AP ★★★★★
()

In file included from /usr/include/linux/fs.h:10:
/usr/include/linux/ioctl.h:4:10: fatal error: 'asm/ioctl.h' file not found
#include <asm/ioctl.h>

Даже не помню, когда последний раз такие низкоуровневыше штуки сам собирал. Чего не хватает?

AP ★★★★★
()

Да, ещё момент. ИМХО, имеет смысл впилить эту функциональность в baobab — стандартную гномскую утилиту для визуализации занятого/свободного пространства. Получится полноценный аналитический инструмент для работы с дисками.

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

ну я так и думал, но fsck говорит что у меня 1% фрагментация, а в программе красных блоков примерно 60%

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

> ИМХО, имеет смысл впилить эту функциональность в baobab

Лучше в filelight :)

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

Это я тебе не как арчефил говорю, а как иногда сталкивающийся с ланчпадовскими базаром и, мать её, розеттой

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

> но linux-headers-generic установлен.

Я ошибся, это не заголовки ядра, в debian нужный пакет называется linux-libc-dev

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

Он тоже установлен :)

$ locate ioctl.h | grep usr | grep asm
/usr/include/asm-generic/ioctl.h
/usr/include/i386-linux-gnu/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/alpha/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/arm/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/avr32/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/blackfin/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/cris/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/frv/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/h8300/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/ia64/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/m32r/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/m68k/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/microblaze/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/mips/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/mn10300/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/parisc/include/asm/grfioctl.h
/usr/src/linux-headers-2.6.38-10/arch/parisc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/powerpc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/s390/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/score/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/sh/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/sparc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/tile/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/x86/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/arch/xtensa/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-10/include/asm-generic/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/alpha/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/arm/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/avr32/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/blackfin/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/cris/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/frv/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/h8300/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/ia64/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/m32r/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/m68k/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/microblaze/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/mips/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/mn10300/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/parisc/include/asm/grfioctl.h
/usr/src/linux-headers-2.6.38-8/arch/parisc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/powerpc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/s390/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/score/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/sh/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/sparc/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/tile/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/x86/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/arch/xtensa/include/asm/ioctl.h
/usr/src/linux-headers-2.6.38-8/include/asm-generic/ioctl.h

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

> Судя по твоему блогу, у тебя и для reiserfs есть?

Есть, просто по внешним ссылкам тут ходить не любят. Сразу же появилось бы что-то вроде «бложик свой пиарит».

Вроде XFS тоже должна работать.

Да, а ещё gfs2, nilfs2, ocfs2.

Не хочет собираться :(

linux-libc-dev (так оно в debian называется)

i-rinat ★★★★★
() автор топика

C++ только ради std::vector?

Чтобы добраться до мэйнстрима, надо стандартную структуру проекта замутить как минимум.

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

> C++ только ради std::vector?

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

Чтобы добраться до мэйнстрима, надо стандартную структуру проекта замутить как минимум.

Это поделка «на коленке», какой мейнстрим?

i-rinat ★★★★★
() автор топика

Хмм... Достойно уважения) Прикрути туда поддержку дефрагментации теперь.

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

> Неплохой бложик :)

да, надо бы туда патчи и положить

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от AP

Не в баобаб тогда уж, а в палимпсест. К баобабу оно мало отношения имеет (:

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