О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!)

Автор: unDEFER Дата: 06.01.2005 21:50 Помню, задавались где-то вопросы о [де]фрагментации в Linux.
Помню, что на них отвечали, что ext2fs не подвержена фрагментации, что дефрагментаторов нет, и говорили о сомнительности пользы дефрагментации.

Просто не так давно (когда я знакомился с Knoppix) я вдруг решил набрать defrag и.. опа, а есть такая утилита.
Интресно что она делает подумал я, 'man defrag' и что я вижу:

---
DEFRAG(Поражён DEFRAG(Поражён

NAME
{e|e2|m|x}defrag - defragment file systems.

SYNOPSIS
edefrag | e2defrag | mdefrag | xdefrag [ -Vdnrsv ] [ -b bad-inode ] [
-i inode-priority-file ] [ -p pool-size ] /dev/name

DESCRIPTION
Mdefrag will reorganise data on a minix file system partition in order
to improve the file system's performance. Edefrag is the equivalent
program for the old extended file system. E2defrag in its turn is
designed for the second extended file system (versions 0.3 onwards).
And the xdefrag program will operate on Xia FS filesystems.
[..................................]
[........пропущено.................]
[..................................]
Version 0.73pjm1 30 Apr 2001 DEFRAG(Поражён
---
Т.е. утилита-то всё-таки есть!
А вот ещё интересная утилита из пакета defrag:

---
FRAG(Поражён Linux Programmer's Manual FRAG(Поражён

NAME
frag - simple fragmentation checker

SYNOPSIS
/sbin/frag [ -l ] [ -s [ -s ]] filename ...

DESCRIPTION
frag will report the file system fragmentation on a specified filename.
If the filename is a directory, frag will recursively descend the
directory.
[..................................]
[........пропущено.................]
[..................................]
Linux 1.00 26 May 1994 FRAG(Поражён
---
Не сказать что утилита только что появилась, правда?
Решил проверить свой домашний каталог (ext3fs)

---
# frag ~
[..................................]
[........пропущено.................]
[..................................]
summary:
1% file fragmentation (2491 of 175106 files contain fragments)
33% block fragmentation (627542 of 1851290 blocks are in fragments)
0% overall fragmentation (3742 fragments out of 1851290 blocks)
Average inter-fragment gap length = 32624
А вот результаты для fat32


# frag /mnt/Games
[..................................]
[........пропущено.................]
[..................................]
summary:
2% file fragmentation (735 of 29700 files contain fragments)
42% block fragmentation (4490078 of 10562435 blocks are in fragments)
0% overall fragmentation (2766 fragments out of 10562435 blocks)
Average inter-fragment gap length = 78137
---
Не сказать что намного хуже..
Вот такие результаты. Что скажите?
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 06.01.2005 22:23Bircoph Ну, с фатом вам просто повезло, вот когда там за 15%
завалит... У меня, например, ext3 уже почти год, в течении
которого я как только её не мучал, в т.ч. ресайзил, мувил,
оставлял свободными 50 метров... Итого, фрагментация файлов
1% - ну и нафиг тратить время на дефрагментацию?
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 06.01.2005 22:45unDEFER Вот ещё два вывода.
1) Корневой раздел (ext3fs)
---
# find -mount -type f | xargs frag
[ПРОПУЩЕНО]
summary:
1% file fragmentation (7 of 411 files contain fragments)
5% block fragmentation (313 of 6097 blocks are in fragments)
0% overall fragmentation (8 fragments out of 6097 blocks)
Average inter-fragment gap length = 3586
---

2) Ещё один fat32 раздел
---
# frag /mnt/Distributives/
[ПРОПУЩЕНО]
summary:
1% file fragmentation (399 of 20601 files contain fragments)
9% block fragmentation (1068200 of 11031615 blocks are in fragments)
0% overall fragmentation (929 fragments out of 11031615 blocks)
Average inter-fragment gap length = 158606
---

А вы можете дать какие-то реальные выводы в подтверждение своих слов?
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 02:54unDEFER Ну, всё. Приготовьтесь стать свидетелями жесточайшего эксперимента над файловыми системами, который вы только когда либо видели Улыбка
Итак, написал я скрипт (FileCreator):
---
#!/bin/bash
PART_FOR_DELETE=5
FREE_LIMIT=5120

q=`ls -1 "$1/file"* | awk -- '{gsub(/file/,"";-); print}' | sort -n | tail -n 1`
[ $q ] || q=0

random_size()
{
FREE=`df -PB 1024 "$1" | sed -n 2p | awk -- '{print \$4}'`
RS=$[$FREE*$RANDOM/32767+1]
}

random_file()
{
LINES=`ls -1 "$1/file"* | awk -- 'END { print NR }'`
LINE=$[$LINES*$RANDOM/32767+1]
RF=`ls -1 "$1/file"* | awk -- "NR==$LINE { gsub(/$1/,\"\";-); print \\\$0 }"`
}

random_number_of_files()
{
LINES=`ls -1 "$1/file"* | awk -- 'END { print NR }'`
RNF=$[$LINES*$RANDOM/32767/$PART_FOR_DELETE+1]
}

for (( ; ; )); do
random_size $1
if (( $[$FREE < $FREE_LIMIT] )); then
random_number_of_files $1
echo -en "\rDelete $RNF Files (Total Files - $LINES) "
for (( f=1; f<=$RNF; f++ )); do
random_file $1
for (( i=1; i<=$#; i++ )); do
rm "${!i}/$RF"
done
done
LINES=$[$LINES-$RNF]
else
q=$[$q+1]
echo -en "\rFile #$q, Size=${RS}KB (Total Files - $LINES) "
for (( i=1; i<=$#; i++ )); do
dd if=/dev/zero of="${!i}/file$q" bs=1024 count=$RS 2>/dev/null
done
fi
done
---

У меня было 580 Мб свободного места и я решил протестировать 5 файловых систем (по 100 Мб): vfat, ext2fs, reiserfs, udf, xfs.
Итак, сначала я создал пять файлов по 100 Мб:
---
[undefer@unDECOMP FS]$ dd if=/dev/zero of=vfat bs=1024 count=102400
102400+0 входных записей
102400+0 выходных записей
104857600 bytes transferred in 0,915410 seconds (114547145 bytes/sec)
[undefer@unDECOMP FS]$ dd if=/dev/zero of=ext2fs bs=1024 count=102400
102400+0 входных записей
102400+0 выходных записей
104857600 bytes transferred in 1,056631 seconds (99237681 bytes/sec)
[undefer@unDECOMP FS]$ dd if=/dev/zero of=reiserfs bs=1024 count=102400
102400+0 входных записей
102400+0 выходных записей
104857600 bytes transferred in 1,268716 seconds (82648596 bytes/sec)
[undefer@unDECOMP FS]$ dd if=/dev/zero of=udf bs=1024 count=102400
102400+0 входных записей
102400+0 выходных записей
104857600 bytes transferred in 1,169672 seconds (89647005 bytes/sec)
[undefer@unDECOMP FS]$ dd if=/dev/zero of=xfs bs=1024 count=102400
102400+0 входных записей
102400+0 выходных записей
104857600 bytes transferred in 1,220041 seconds (85945969 bytes/sec)
---

Отформатировал их:
---
[undefer@unDECOMP FS]$ /sbin/mkfs -t vfat vfat
mkfs.vfat 2.10 (22 Sep 2003)

[undefer@unDECOMP FS]$ /sbin/mkfs -t ext2 ext2fs
mke2fs 1.34 (25-Jul-2003)
ext2fs is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

[undefer@unDECOMP FS]$ /sbin/mkfs -t reiserfs -f reiserfs
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
SuSE (www.suse.com) pays for continuing work on journaling for version 3, paid
for much of the previous version 3 work, and is paying for Chris and Jeff to do
V3 maintenance. Reiserfs integration in their distro is consistently solid, and
they were key to our becoming widely used.

Jeremy Fitzhardinge wrote the teahash.c code for V3. Colin Plumb also
contributed to that.


reiserfs is not a block special device
Continue (y/n):y
Guessing about desired format.. Kernel 2.6.10 is running.
Format 3.6 with standard journal
Count of blocks on the device: 25600
Number of blocks consumed by mkreiserfs formatting process: 8212
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: dd5147a6-a21e-4635-ab8e-7baf062351e5
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on reiserfs.

[undefer@unDECOMP FS]$ mkudffs udf
start=0, blocks=16, type=RESERVED
start=16, blocks=3, type=VRS
start=19, blocks=237, type=USPACE
start=256, blocks=1, type=ANCHOR
start=257, blocks=16, type=PVDS
start=273, blocks=1, type=LVID
start=274, blocks=50669, type=PSPACE
start=50943, blocks=1, type=ANCHOR
start=50944, blocks=239, type=USPACE
start=51183, blocks=16, type=RVDS
start=51199, blocks=1, type=ANCHOR

[undefer@unDECOMP FS]$ /sbin/mkfs -t xfs -f xfs
meta-data=xfs isize=256 agcount=6, agsize=4096 blks
= sectsz=512
data = bsize=4096 blocks=24576, imaxpct=25
= sunit=0 swidth=0 blks, unwritten=1
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=1200, version=1
= sectsz=512 sunit=0 blks
realtime =none extsz=65536 blocks=0, rtextents=0
---

Создал точки монтирования:
---
[undefer@unDECOMP FS]$ mkdir EXT2FS REISERFS UDF VFAT XFS
---

Далее сделал su и примонтировал их все:
---
[root@unDECOMP FS]# mount -o loop,umask=000 -t vfat vfat VFAT
[root@unDECOMP FS]# mount -o loop -t ext2 ext2fs EXT2FS/
[root@unDECOMP FS]# mount -o loop -t reiserfs reiserfs REISERFS/
[root@unDECOMP FS]# mount -o loop -t udf udf UDF/
[root@unDECOMP FS]# mount -o loop -t xfs xfs XFS/
---

Поправил права:
---
[root@unDECOMP FS]# chown -R undefer:undefer EXT2FS/ REISERFS/ UDF/ XFS/
---

Вышел из под рута и решил проверить:
---
[undefer@unDECOMP FS]$ df -h
Файловая система Разм Исп Дост Исп% смонтирована на
/home/undefer/bin/FS/vfat
100M 0 100M 0% /home/undefer/bin/FS/VFAT
/home/undefer/bin/FS/ext2fs
97M 13K 92M 1% /home/undefer/bin/FS/EXT2FS
/home/undefer/bin/FS/reiserfs
100M 33M 68M 33% /home/undefer/bin/FS/REISERFS
/home/undefer/bin/FS/udf
99M 16K 99M 1% /home/undefer/bin/FS/UDF
/home/undefer/bin/FS/xfs
92M 112K 92M 1% /home/undefer/bin/FS/XFS
---

Так как reiserfs оказалось слишком маленькой в сравнении с другими было решено увеличить её на 32Мб (до 135168 Кб)
Так теперь df-h давал о ней показания:
---
/home/undefer/bin/FS/reiserfs
132M 33M 100M 25% /home/undefer/bin/FS/REISERFS
---

и начал наконец-то испытание (ext2fs дана первым аргументом, как самая малая):
---
[undefer@unDECOMP FS]$ FileCreator EXT2FS REISERFS UDF VFAT XFS
ls: EXT2FS/file*: No such file or directory
File #52, Size=14012KB (Total Files - 10)
---
После создания 52 файлов мы решили проверить что у нас получилось:
---
[root@unDECOMP FS]# /usr/sbin/frag VFAT/
reading VFAT/
0% VFAT/file49 (7136 block(s), 7136 used, 2 fragment(s), largest 5269)
0% VFAT/file51 (1574 block(s), 1574 used, 1 fragment(s), largest 1574)
0% VFAT/file29 (8065 block(s), 8065 used, 3 fragment(s), largest 4573)
0% VFAT/file45 (8205 block(s), 8205 used, 2 fragment(s), largest 4105)
0% VFAT/file26 (1054 block(s), 1054 used, 1 fragment(s), largest 1054)
0% VFAT/file47 (3492 block(s), 3492 used, 2 fragment(s), largest 1836)
0% VFAT/file50 (3277 block(s), 3277 used, 1 fragment(s), largest 3277)
0% VFAT/file44 (6862 block(s), 6862 used, 3 fragment(s), largest 4549)
0% VFAT/file41 (3382 block(s), 3382 used, 1 fragment(s), largest 3382)
0% VFAT/file4 (11429 block(s), 11429 used, 1 fragment(s), largest 11429)
0% VFAT/file24 (3019 block(s), 3019 used, 1 fragment(s), largest 3019)
0% VFAT/file34 (9110 block(s), 9110 used, 3 fragment(s), largest 4485)
0% VFAT/file46 (11238 block(s), 11238 used, 1 fragment(s), largest 11238)

summary:
46% file fragmentation (6 of 13 files contain fragments)
23% block fragmentation (18053 of 77843 blocks are in fragments)
0% overall fragmentation (9 fragments out of 77843 blocks)
Average inter-fragment gap length = 35805


# /usr/sbin/frag EXT2FS/
reading EXT2FS/
0% EXT2FS/file52 (14012 block(s), 14012 used, 29 fragment(s), largest 513)
0% EXT2FS/file49 (7136 block(s), 7136 used, 15 fragment(s), largest 513)
0% EXT2FS/file51 (1574 block(s), 1574 used, 4 fragment(s), largest 513)
0% EXT2FS/file29 (8065 block(s), 8065 used, 17 fragment(s), largest 513)
0% EXT2FS/file45 (8205 block(s), 8205 used, 18 fragment(s), largest 513)
0% EXT2FS/file26 (1054 block(s), 1054 used, 4 fragment(s), largest 489)
0% EXT2FS/file47 (3492 block(s), 3492 used, 8 fragment(s), largest 513)
0% EXT2FS/file50 (3277 block(s), 3277 used, 8 fragment(s), largest 513)
0% EXT2FS/file44 (6862 block(s), 6862 used, 16 fragment(s), largest 513)
0% EXT2FS/file41 (3382 block(s), 3382 used, 8 fragment(s), largest 513)
0% EXT2FS/file4 (11429 block(s), 11429 used, 24 fragment(s), largest 513)
0% EXT2FS/file24 (3019 block(s), 3019 used, 7 fragment(s), largest 513)
0% EXT2FS/file34 (9110 block(s), 9110 used, 20 fragment(s), largest 513)
0% EXT2FS/file46 (11238 block(s), 11238 used, 23 fragment(s), largest 513)
reading EXT2FS/lost+found

summary:
100% file fragmentation (14 of 14 files contain fragments)
92% block fragmentation (84697 of 91855 blocks are in fragments)
0% overall fragmentation (187 fragments out of 91855 blocks)
Average inter-fragment gap length = 1126


[root@unDECOMP FS]# /usr/sbin/frag REISERFS/
reading REISERFS/
0% REISERFS/file52 (14012 block(s), 3503 used, 4 fragment(s), largest 1454)
0% REISERFS/file51 (1574 block(s), 394 used, 1 fragment(s), largest 394)
0% REISERFS/file50 (3277 block(s), 820 used, 1 fragment(s), largest 820)
0% REISERFS/file49 (7136 block(s), 1784 used, 4 fragment(s), largest 658)
0% REISERFS/file47 (3492 block(s), 873 used, 2 fragment(s), largest 741)
0% REISERFS/file46 (11238 block(s), 2810 used, 4 fragment(s), largest 1439)
0% REISERFS/file45 (8205 block(s), 2052 used, 5 fragment(s), largest 527)
0% REISERFS/file44 (6862 block(s), 1716 used, 2 fragment(s), largest 1156)
0% REISERFS/file41 (3382 block(s), 846 used, 1 fragment(s), largest 846)
0% REISERFS/file34 (9110 block(s), 2278 used, 4 fragment(s), largest 876)
0% REISERFS/file29 (8065 block(s), 2017 used, 4 fragment(s), largest 1106)
0% REISERFS/file26 (1054 block(s), 264 used, 1 fragment(s), largest 264)
0% REISERFS/file24 (3019 block(s), 755 used, 1 fragment(s), largest 755)
0% REISERFS/file4 (11429 block(s), 2858 used, 1 fragment(s), largest 2858)

summary:
57% file fragmentation (8 of 14 files contain fragments)
39% block fragmentation (9076 of 22970 blocks are in fragments)
0% overall fragmentation (21 fragments out of 22970 blocks)
Average inter-fragment gap length = 2437


[root@unDECOMP FS]# /usr/sbin/frag UDF/
reading UDF/
0% UDF/file52 (8897 block(s), 4449 used, 2 fragment(s), largest 2300)
0% UDF/file49 (7136 block(s), 3568 used, 3 fragment(s), largest 1734)
0% UDF/file51 (1574 block(s), 787 used, 2 fragment(s), largest 695)
0% UDF/file50 (3277 block(s), 1639 used, 2 fragment(s), largest 1159)
0% UDF/file26 (1054 block(s), 527 used, 1 fragment(s), largest 527)
0% UDF/file29 (8065 block(s), 4033 used, 2 fragment(s), largest 2363)
0% UDF/file45 (8205 block(s), 4103 used, 4 fragment(s), largest 1975)
0% UDF/file47 (3492 block(s), 1746 used, 1 fragment(s), largest 1746)
0% UDF/file44 (6862 block(s), 3431 used, 4 fragment(s), largest 1515)
0% UDF/file41 (3382 block(s), 1691 used, 2 fragment(s), largest 1111)
0% UDF/file34 (9110 block(s), 4555 used, 4 fragment(s), largest 2147)
0% UDF/file46 (11238 block(s), 5619 used, 1 fragment(s), largest 5619)
0% UDF/file24 (3019 block(s), 1510 used, 2 fragment(s), largest 1090)
0% UDF/file4 (11429 block(s), 5715 used, 1 fragment(s), largest 5715)
reading UDF/lost+found

summary:
71% file fragmentation (10 of 14 files contain fragments)
31% block fragmentation (13677 of 43373 blocks are in fragments)
0% overall fragmentation (17 fragments out of 43373 blocks)
Average inter-fragment gap length = 3200


[root@unDECOMP FS]# /usr/sbin/frag XFS/
reading XFS/
0% XFS/file51 (1574 block(s), 394 used, 2 fragment(s), largest 209)
0% XFS/file50 (3277 block(s), 820 used, 1 fragment(s), largest 820)
0% XFS/file49 (7136 block(s), 1784 used, 4 fragment(s), largest 638)
0% XFS/file47 (3492 block(s), 873 used, 2 fragment(s), largest 497)
0% XFS/file46 (11238 block(s), 2810 used, 1 fragment(s), largest 2810)
0% XFS/file45 (8205 block(s), 2052 used, 7 fragment(s), largest 475)
0% XFS/file44 (6862 block(s), 1716 used, 4 fragment(s), largest 609)
0% XFS/file41 (3382 block(s), 846 used, 2 fragment(s), largest 446)
0% XFS/file34 (9110 block(s), 2278 used, 3 fragment(s), largest 1334)
0% XFS/file29 (8065 block(s), 2017 used, 2 fragment(s), largest 1825)
0% XFS/file26 (1054 block(s), 264 used, 1 fragment(s), largest 264)
0% XFS/file24 (3019 block(s), 755 used, 3 fragment(s), largest 513)
0% XFS/file4 (11429 block(s), 2858 used, 4 fragment(s), largest 2091)

summary:
76% file fragmentation (10 of 13 files contain fragments)
35% block fragmentation (6936 of 19467 blocks are in fragments)
0% overall fragmentation (23 fragments out of 19467 blocks)
Average inter-fragment gap length = 3998
---

Кратко это выглядит так:
---
File Block Overall
EXT2FS 100% 92% 187/91855
XFS 76% 35% 23/19467
UDF 71% 31% 17/43373
REISERFS 57% 39% 21/22970
VFAT 46% 23% 9/77843
---

То есть VFAT оказывается наименее фрагментируемой!!
А EXT2FS наиболее!

Что ж! Продолжим эксперимент:
---
[undefer@unDECOMP FS]$ FileCreator EXT2FS REISERFS UDF VFAT XFS
Delete 3 Files (Total Files - 14) rm: &#206;&#197;&#215;&#207;&#218;&#205;&#207;&#214;&#206;&#207; &#213;&#196;&#193;&#204;&#201;&#212;&#216; `VFAT//file52': No such file or directory
rm: невозможно удалить `XFS//file52': No such file or directory
File #302, Size=3814KB (Total Files - 10)
---

302 файла - я подумал, достаточно!

---
[root@unDECOMP FS]# /usr/sbin/frag EXT2FS/
reading EXT2FS/
0% EXT2FS/file276 (4661 block(s), 4661 used, 12 fragment(s), largest 513)
0% EXT2FS/file302 (3814 block(s), 3814 used, 8 fragment(s), largest 513)
0% EXT2FS/file279 (1071 block(s), 1071 used, 3 fragment(s), largest 513)
0% EXT2FS/file294 (5526 block(s), 5526 used, 13 fragment(s), largest 513)
0% EXT2FS/file292 (974 block(s), 974 used, 3 fragment(s), largest 446)
0% EXT2FS/file297 (5841 block(s), 5841 used, 14 fragment(s), largest 513)
0% EXT2FS/file282 (9113 block(s), 9113 used, 19 fragment(s), largest 513)
0% EXT2FS/file290 (5781 block(s), 5781 used, 13 fragment(s), largest 513)
0% EXT2FS/file301 (8440 block(s), 8440 used, 18 fragment(s), largest 513)
0% EXT2FS/file300 (18563 block(s), 18563 used, 40 fragment(s), largest 513)
0% EXT2FS/file277 (112 block(s), 112 used, 1 fragment(s), largest 112)
0% EXT2FS/file298 (5072 block(s), 5072 used, 11 fragment(s), largest 513)
0% EXT2FS/file281 (8497 block(s), 8497 used, 18 fragment(s), largest 513)
0% EXT2FS/file296 (12002 block(s), 12002 used, 27 fragment(s), largest 513)
reading EXT2FS/lost+found

summary:
92% file fragmentation (13 of 14 files contain fragments)
92% block fragmentation (82753 of 89467 blocks are in fragments)
0% overall fragmentation (186 fragments out of 89467 blocks)
Average inter-fragment gap length = 933


[root@unDECOMP FS]# /usr/sbin/frag XFS/
reading XFS/
0% XFS/file302 (1337 block(s), 335 used, 2 fragment(s), largest 269)
0% XFS/file301 (8440 block(s), 2110 used, 5 fragment(s), largest 953)
0% XFS/file300 (18563 block(s), 4641 used, 7 fragment(s), largest 1025)
0% XFS/file298 (5072 block(s), 1268 used, 1 fragment(s), largest 1268)
0% XFS/file297 (5841 block(s), 1461 used, 5 fragment(s), largest 390)
0% XFS/file296 (12002 block(s), 3001 used, 7 fragment(s), largest 769)
0% XFS/file294 (5526 block(s), 1382 used, 5 fragment(s), largest 380)
0% XFS/file292 (974 block(s), 244 used, 1 fragment(s), largest 244)
0% XFS/file290 (5781 block(s), 1446 used, 5 fragment(s), largest 407)
0% XFS/file282 (9113 block(s), 2279 used, 4 fragment(s), largest 865)
0% XFS/file281 (8497 block(s), 2125 used, 1 fragment(s), largest 2125)
0% XFS/file279 (1071 block(s), 268 used, 1 fragment(s), largest 268)
0% XFS/file277 (112 block(s), 28 used, 1 fragment(s), largest 28)
0% XFS/file276 (4661 block(s), 1166 used, 5 fragment(s), largest 434)

summary:
64% file fragmentation (9 of 14 files contain fragments)
56% block fragmentation (12329 of 21754 blocks are in fragments)
0% overall fragmentation (36 fragments out of 21754 blocks)
Average inter-fragment gap length = 3729


[root@unDECOMP FS]# /usr/sbin/frag UDF/
reading UDF/
0% UDF/file276 (4661 block(s), 2331 used, 2 fragment(s), largest 1561)
0% UDF/file302 (3814 block(s), 1907 used, 4 fragment(s), largest 868)
0% UDF/file279 (1071 block(s), 536 used, 2 fragment(s), largest 480)
0% UDF/file294 (5526 block(s), 2763 used, 4 fragment(s), largest 790)
0% UDF/file292 (974 block(s), 487 used, 1 fragment(s), largest 487)
0% UDF/file297 (5841 block(s), 2921 used, 4 fragment(s), largest 1697)
0% UDF/file282 (9113 block(s), 4557 used, 1 fragment(s), largest 4557)
0% UDF/file290 (5781 block(s), 2891 used, 3 fragment(s), largest 2597)
0% UDF/file301 (8440 block(s), 4220 used, 4 fragment(s), largest 2668)
0% UDF/file300 (18563 block(s), 9282 used, 6 fragment(s), largest 3377)
0% UDF/file277 (112 block(s), 56 used, 1 fragment(s), largest 56)
0% UDF/file298 (5072 block(s), 2536 used, 1 fragment(s), largest 2536)
0% UDF/file281 (8497 block(s), 4249 used, 4 fragment(s), largest 1937)
0% UDF/file296 (12002 block(s), 6001 used, 4 fragment(s), largest 2742)
reading UDF/lost+found

summary:
71% file fragmentation (10 of 14 files contain fragments)
41% block fragmentation (18384 of 44737 blocks are in fragments)
0% overall fragmentation (27 fragments out of 44737 blocks)
Average inter-fragment gap length = 2622


[root@unDECOMP FS]# /usr/sbin/frag REISERFS/
reading REISERFS/
0% REISERFS/file302 (3814 block(s), 954 used, 3 fragment(s), largest 574)
0% REISERFS/file301 (8440 block(s), 2110 used, 6 fragment(s), largest 922)
0% REISERFS/file300 (18563 block(s), 4641 used, 6 fragment(s), largest 1780)
0% REISERFS/file298 (5072 block(s), 1268 used, 4 fragment(s), largest 460)
0% REISERFS/file297 (5841 block(s), 1461 used, 4 fragment(s), largest 833)
0% REISERFS/file296 (12002 block(s), 3001 used, 7 fragment(s), largest 799)
0% REISERFS/file294 (5526 block(s), 1382 used, 3 fragment(s), largest 725)
0% REISERFS/file292 (974 block(s), 244 used, 1 fragment(s), largest 244)
0% REISERFS/file290 (5781 block(s), 1446 used, 4 fragment(s), largest 625)
0% REISERFS/file282 (9113 block(s), 2279 used, 6 fragment(s), largest 901)
0% REISERFS/file281 (8497 block(s), 2125 used, 3 fragment(s), largest 905)
0% REISERFS/file279 (1071 block(s), 268 used, 1 fragment(s), largest 268)
0% REISERFS/file277 (112 block(s), 28 used, 1 fragment(s), largest 28)
0% REISERFS/file276 (4661 block(s), 1166 used, 2 fragment(s), largest 719)

summary:
78% file fragmentation (11 of 14 files contain fragments)
56% block fragmentation (12590 of 22373 blocks are in fragments)
0% overall fragmentation (37 fragments out of 22373 blocks)
Average inter-fragment gap length = 1317

[root@unDECOMP FS]# /usr/sbin/frag VFAT/
reading VFAT/
0% VFAT/file276 (4661 block(s), 4661 used, 1 fragment(s), largest 4661)
0% VFAT/file302 (3814 block(s), 3814 used, 2 fragment(s), largest 2142)
0% VFAT/file279 (1071 block(s), 1071 used, 1 fragment(s), largest 1071)
0% VFAT/file294 (5526 block(s), 5526 used, 1 fragment(s), largest 5526)
0% VFAT/file292 (974 block(s), 974 used, 1 fragment(s), largest 974)
0% VFAT/file297 (5841 block(s), 5841 used, 2 fragment(s), largest 5537)
0% VFAT/file282 (9113 block(s), 9113 used, 7 fragment(s), largest 2609)
0% VFAT/file290 (5781 block(s), 5781 used, 4 fragment(s), largest 2433)
0% VFAT/file301 (8440 block(s), 8440 used, 5 fragment(s), largest 3801)
0% VFAT/file300 (18563 block(s), 18563 used, 1 fragment(s), largest 18563)
0% VFAT/file277 (112 block(s), 112 used, 1 fragment(s), largest 112)
0% VFAT/file298 (5072 block(s), 5072 used, 2 fragment(s), largest 2761)
0% VFAT/file281 (8497 block(s), 8497 used, 3 fragment(s), largest 6517)
0% VFAT/file296 (12002 block(s), 12002 used, 5 fragment(s), largest 3869)

summary:
57% file fragmentation (8 of 14 files contain fragments)
32% block fragmentation (28891 of 89467 blocks are in fragments)
0% overall fragmentation (22 fragments out of 89467 blocks)
Average inter-fragment gap length = 28218

---

Кратко:
---
File Block Overall
EXT2FS 92% 92% 186/89467
XFS 64% 56% 36/21754
UDF 71% 41% 27/44737
REISERFS 78% 56% 37/22373
VFAT 57% 32% 22/89467
---

XFS,UDF и REISERFS явно перемешались, но EXT2FS и VFAT сохранили свои позиции.

Вот так. Конечно, тест не совершенен, но результаты его таковы. Вы можете изменить FileCreator (например, будет полезно в random_size() поставить делитель, чтоб файлы были не такие большие) подравнять размеры файловых систем вначале (а то ведь EXT2FS там как раз оказалась самой маленькой), увеличить размер файловых систем вообще (у меня просто не было столько места) и провести этот тест ещё раз.
Я буду только рад, если вы получите противоположные результаты ;-)
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 12:10unDEFER Всё же я решил ещё раз поэкспериментировать. Скрипт чуть-чуть поправил:
---
#!/bin/bash
PART_FOR_DELETE=5
FREE_LIMIT=1024

q=$1
shift
TO=$1
shift

random_size()
{
FREE=`df -PB 1024 "$1" | sed -n 2p | awk -- '{print \$4}'`
RS=$[$FREE*$RANDOM/32767/2+1]
}

random_file()
{
LINES=`ls -1 "$1/file"* | awk -- 'END { print NR }'`
LINE=$[$LINES*$RANDOM/32767+1]
RF=`ls -1 "$1/file"* | awk -- "NR==$LINE { gsub(/$1/,\"\";-); print \\\$0 }"`
}

random_number_of_files()
{
LINES=`ls -1 "$1/file"* | awk -- 'END { print NR }'`
RNF=$[$LINES*$RANDOM/32767/$PART_FOR_DELETE+1]
}

for (( ; ; )); do
random_size $1
if (( $[$FREE < $FREE_LIMIT] )); then
random_number_of_files $1
echo -en "\rDelete $RNF Files (Total Files - $LINES) "
for (( f=1; f<=$RNF; f++ )); do
random_file $1
for (( i=1; i<=$#; i++ )); do
rm "${!i}/$RF"
done
done
LINES=$[$LINES-$RNF]
else
q=$[$q+1]
echo -en "\rFile #$q, Size=${RS}KB (Total Files - $LINES) "
for (( i=1; i<=$#; i++ )); do
dd if=/dev/zero of="${!i}/file$q" bs=1024 count=$RS 2>/dev/null
done
LINES=$[$LINES+1]
fi
(( $[q >= TO] )) && exit 0
done
---

Выровнял размеры файловых систем:
---
[undefer@unDECOMP FS]$ dd if=/dev/zero of=vfat bs=1024 count=102400
[undefer@unDECOMP FS]$ dd if=/dev/zero of=ext2fs bs=1024 count=111288
[undefer@unDECOMP FS]$ dd if=/dev/zero of=reiserfs bs=1024 count=135034
[undefer@unDECOMP FS]$ dd if=/dev/zero of=udf bs=1024 count=103260
[undefer@unDECOMP FS]$ dd if=/dev/zero of=xfs bs=1024 count=119980
---

Так что теперь:
---
[undefer@unDECOMP FS]$ df -h
Файловая система Разм Исп Дост Исп% смонтирована на
/home/undefer/bin/FS/vfat
100M 0 100M 0% /home/undefer/bin/FS/VFAT
/home/undefer/bin/FS/ext2fs
106M 13K 100M 1% /home/undefer/bin/FS/EXT2FS
/home/undefer/bin/FS/reiserfs
132M 33M 100M 25% /home/undefer/bin/FS/REISERFS
/home/undefer/bin/FS/udf
100M 16K 100M 1% /home/undefer/bin/FS/UDF
/home/undefer/bin/FS/xfs
108M 128K 108M 1% /home/undefer/bin/FS/XFS
---

Пробуем:
---
[undefer@unDECOMP FS]$ FileCreator 0 50 REISERFS EXT2FS UDF VFAT XFS
File #50, Size=106KB (Total Files - 28)
---

---
[root@unDECOMP FS]# /usr/sbin/frag VFAT
[ПРОПУЩЕНО]
summary:
11% file fragmentation (4 of 34 files contain fragments)
2% block fragmentation (2663 of 100617 blocks are in fragments)
0% overall fragmentation (6 fragments out of 100617 blocks)
Average inter-fragment gap length = 36877

[root@unDECOMP FS]# /usr/sbin/frag EXT2FS/
[ПРОПУЩЕНО]
summary:
73% file fragmentation (25 of 34 files contain fragments)
87% block fragmentation (88179 of 100617 blocks are in fragments)
0% overall fragmentation (201 fragments out of 100617 blocks)
Average inter-fragment gap length = 817

[root@unDECOMP FS]# /usr/sbin/frag REISERFS/
[ПРОПУЩЕНО]
summary:
20% file fragmentation (7 of 34 files contain fragments)
1% block fragmentation (399 of 25168 blocks are in fragments)
0% overall fragmentation (7 fragments out of 25168 blocks)
Average inter-fragment gap length = 4386

[root@unDECOMP FS]# /usr/sbin/frag UDF/
[ПРОПУЩЕНО]
summary:
17% file fragmentation (6 of 34 files contain fragments)
3% block fragmentation (1693 of 50317 blocks are in fragments)
0% overall fragmentation (6 fragments out of 50317 blocks)
Average inter-fragment gap length = 4950

[root@unDECOMP FS]# /usr/sbin/frag XFS/
summary:
14% file fragmentation (5 of 34 files contain fragments)
31% block fragmentation (7900 of 25168 blocks are in fragments)
0% overall fragmentation (7 fragments out of 25168 blocks)
Average inter-fragment gap length = 5875
---

---
File Block Overall
EXT2FS 73% 87% 201/100617
XFS 14% 31% 7/25168
UDF 17% 3% 6/50317
REISERFS 20% 1% 7/25168
VFAT 11% 2% 6/100617
---

Далее:
---
[undefer@unDECOMP FS]$ FileCreator 50 1000 REISERFS EXT2FS UDF VFAT XFS
File #1000, Size=727KB (Total Files - 72)
---
---
[root@unDECOMP FS]# /usr/sbin/frag VFAT
[ПРОПУЩЕНО]
summary:
59% file fragmentation (46 of 77 files contain fragments)
42% block fragmentation (42189 of 98694 blocks are in fragments)
0% overall fragmentation (110 fragments out of 98694 blocks)
Average inter-fragment gap length = 6336

[root@unDECOMP FS]# /usr/sbin/frag EXT2FS/
[ПРОПУЩЕНО]
summary:
81% file fragmentation (63 of 77 files contain fragments)
73% block fragmentation (72148 of 98694 blocks are in fragments)
0% overall fragmentation (246 fragments out of 98694 blocks)
Average inter-fragment gap length = 1890

[root@unDECOMP FS]# /usr/sbin/frag REISERFS
[ПРОПУЩЕНО]
summary:
81% file fragmentation (63 of 77 files contain fragments)
41% block fragmentation (10205 of 24700 blocks are in fragments)
0% overall fragmentation (100 fragments out of 24700 blocks)
Average inter-fragment gap length = 406

[root@unDECOMP FS]# /usr/sbin/frag UDF/
[ПРОПУЩЕНО]
summary:
84% file fragmentation (65 of 77 files contain fragments)
50% block fragmentation (24695 of 49363 blocks are in fragments)
0% overall fragmentation (125 fragments out of 49363 blocks)
Average inter-fragment gap length = 1194

[root@unDECOMP FS]# /usr/sbin/frag XFS/
[ПРОПУЩЕНО]
summary:
33% file fragmentation (26 of 77 files contain fragments)
21% block fragmentation (5372 of 24700 blocks are in fragments)
0% overall fragmentation (36 fragments out of 24700 blocks)
Average inter-fragment gap length = 5408
---

Кратко:
---
File Block Overall
EXT2FS 81% 73% 246/98694
XFS 33% 21% 36/24700
UDF 84% 50% 125/49363
REISERFS 81% 41% 100/24700
VFAT 59% 42% 110/98694
---

Ну, вот XFS как самая большая, оказалась наимее фрагментируемой Улыбка
Но EXT2FS снова оказалось самой фрагментированной Грустный
Вот, так!
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 13:13sergeil А в каком дистрибутиве/пакете идет defrag?
Я у себя в ASP-9.2 не нашел.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 16:55unDEFER Я говорю же - из Knoppix'а я его выдрал, но rpm'ку тоже можно найти:
[rpmfind.net]...
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 21:38isn xfs, reiserfs, ext3 и т.д.
Вы бы посмотрели на год выпуска этой утилиты Улыбка
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 21:49unDEFER isn писал(а):

> xfs, reiserfs, ext3 и т.д.
> Вы бы посмотрели на год выпуска этой утилиты Улыбка

Раз её никто не исправил значит она всё верно "кажет" - она ж не использует специальные драйвера и алгоритмы проверки для каждой из файловой системы, а использует функции ядра, а те в свою очередь обращаются к драйверу ФС.
Если у вас есть какие-то более весомые доводы против этой утилиты, буду рад их увидеть.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 22:10isn unDEFER писал(а):

> > xfs, reiserfs, ext3 и т.д.
> > Вы бы посмотрели на год выпуска этой утилиты Улыбка
>
> Раз её никто не исправил значит она всё верно "кажет"
А ещё её никто не использует Улыбка

> Если у вас есть какие-то более весомые доводы против этой
> утилиты, буду рад их увидеть.
Собирать пробовали? В смысле на современной системе gcc >= 3.3 glibc 2.3.3
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 07.01.2005 22:43unDEFER isn писал(а):

> > Раз её никто не исправил значит она всё верно "кажет"
> А ещё её никто не использует Улыбка

И именно поэтому распространён слух о не[де]фрагментируемости ext2

> > Если у вас есть какие-то более весомые доводы против этой
> > утилиты, буду рад их увидеть.
> Собирать пробовали? В смысле на современной системе gcc >= 3.3
> glibc 2.3.3

И что это изменит?
Кстати, собирается - совершенно элементарно - 'make frag' и готово!
Ещё, раз она в современный Debian входит, значит она поддерживается.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 08.01.2005 00:21isn unDEFER писал(а):

> И именно поэтому распространён слух о не[де]фрагментируемости ext2
Никогда такого не слышал. Обычно говорят, что степень фрагментированности
ext2 редко превышает тот уровень, когда это существенным образом влияет на производительность.
Фрагментация FS это тот сферический конь в вакууме, который вызывает интерес в последнюю очередь.

> Кстати, собирается - совершенно элементарно - 'make frag' и готово!
Я про defrag, выпущенную в 1998г.,
на gcc 3.3.3 вылетает с ошибками синтаксиса, неизвестными ключами и т.д.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 08.01.2005 01:40unDEFER isn писал(а):

> unDEFER писал(а):
>
> > И именно поэтому распространён слух о не[де]фрагментируемости ext2
> Никогда такого не слышал. Обычно говорят, что степень
> фрагментированности

Ну о низкой фрагментируемости - суть та же

> > Кстати, собирается - совершенно элементарно - 'make frag' и готово!
> Я про defrag, выпущенную в 1998г.,
> на gcc 3.3.3 вылетает с ошибками синтаксиса, неизвестными
> ключами и т.д.

А я про frag из пакета defrag - весь defrag не компилиться, но многие из утилит входящих в пакет (в том числе frag) очень даже хорошо компиляться ;-)
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 08.01.2005 23:17isn unDEFER писал(а):

> Ну о низкой фрагментируемости - суть та же
А если взять партицию в 50 мб, забить её "под завязку", потом выборочно удалять и записывать новые файлы, то степень фрагментированности будет ещё более впечатляющей. Но в чём смысл? Доказать очевидные вещи: если файл невозможно записать полностью, он запишется частями?
imho: очередные "плоскогубцы, упавшие на жесткий диск".
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 01:04unDEFER isn писал(а):

> unDEFER писал(а):
>
> Доказать очевидные вещи: если файл невозможно записать
> полностью, он запишется частями?

Да, но где-то после **одинаковых** манипуляций с файлами файлы оказываются более фрагментированными, а где-то менее - и это о чём-то всё же говорит.
Другое дело, что основной вопрос всё же не в том насколько фрагментирована система, а насколько она при этой фрагментации становиться медленней..
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 02:12isn unDEFER писал(а):

> > Доказать очевидные вещи: если файл невозможно записать
> > полностью, он запишется частями?
>
> Да, но где-то после **одинаковых** манипуляций с файлами файлы
> оказываются более фрагментированными, а где-то менее - и это о
> чём-то всё же говорит.
Говорить-то говорит.
Только вот сильно сомневаюсь, что манипуляции были __действительно__ одинаковыми.
Может в каком-нибуть DOS'е и можно было смоделировать одинаковые условия,
а здесь хз.

> Другое дело, что основной вопрос всё же не в том насколько фрагментирована система,
> а насколько она при этой фрагментации становиться медленней..
Вот-вот. Поэтому все и забили на эти утилитки и подобного рода сравнения.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 02:25unDEFER isn писал(а):

> Только вот сильно сомневаюсь, что манипуляции были
> __действительно__ одинаковыми.
> Может в каком-нибуть DOS'е и можно было смоделировать
> одинаковые условия,
> а здесь хз.

Не понял.. Какие у вас основания для сомнений?
Скрипт для всех каталогов делает совершенно одинаковые запросы на создание и удаление совершенно одинаковых файлов!
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 02:37isn unDEFER писал(а):

> > Только вот сильно сомневаюсь, что манипуляции были
> > __действительно__ одинаковыми.
> > Может в каком-нибуть DOS'е и можно было смоделировать
> > одинаковые условия,
> > а здесь хз.
>
> Не понял.. Какие у вас основания для сомнений?
> Скрипт для всех каталогов делает совершенно одинаковые запросы
> на создание и удаление совершенно одинаковых файлов!
А запросы эти обрабатывает __многозадачная__ ОС. Дисковый кэш опять же, состояние которого может сильно меняться и т.п. Отсюда и сомнения.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 02:48isn PS. Совсем забыл: надо ещё учитывать размер блока данных (ака кластер). В линуксовых фс, если не ошибаюсь, он по умолчанию 4кб.
А у fat32 зависит от размера партиции. 100 метровый раздел наверняка поделился на блоки в 0,5кб
И т.д., но повторюсь, тема -- бузень. Нет особого смысла заморачиваться насчет дефрагментации, главное не переполнять разделы, иметь попбольше оперативки для дискового кэша и не будет скольно-нибудь существенной фрагментации.
Re: О Фрагментации ext2fs/ext3fs (ext2fs - самая фрагментируемая!) 09.01.2005 15:35romamio У Вас есть книгв Майкла Эбена "FreeBSD Platinum Edition"? Если есть, почитайте, пожалуйста, стр.179; 184. Если же нет, рекомендую приобрести ;-).Она хоть и обо FreeBSD, но там много интересных вещей о фрагментации.
RSS-материал