FastNetMon

Показаны сообщения с ярлыком ext3. Показать все сообщения
Показаны сообщения с ярлыком ext3. Показать все сообщения

пятница, 8 апреля 2011 г.

Как восстановить удаленный файл в Линукс, если он еще открыт в каком-либо приложении?

Все очень просто.

system-r:~# wc -l /etc/apache2/apache2.conf
0 /etc/apache2/apache2.conf
system-r:~# lsof | grep apache2.conf
ispmgr 6655 root 18u REG 9,2 0 21381891 /etc/apache2/apache2.conf
ispmgr 6655 root 37u REG 9,2 15552 21382423 /etc/apache2/apache2.conf.snap (deleted)
system-r:~# cd /proc/6655/fd
system-r:/proc/6655/fd# wc -l 37
398 37
system-r:/proc/6655/fd# cp 37 /root/apache2_recovered.conf
system-r:/proc/6655/fd# wc -l /root/apache2_recovered.conf
398 /root/apache2_recovered.conf
system-r:/proc/6655/fd# stat /root/apache2_recovered.conf
File: `/root/apache2_recovered.conf'
Size: 15552 Blocks: 32 IO Block: 4096 regular file
Device: 902h/2306d Inode: 6971410 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-04-07 23:48:39.000000000 +0400
Modify: 2011-04-07 23:48:35.000000000 +0400
Change: 2011-04-07 23:48:35.000000000 +0400

суббота, 19 марта 2011 г.

Ext3: xxx blocks (5.00%) reserved for the super user

Есть вот такое поле при форматировании разделов в ext3: "blocks (5.00%) reserved for the super user":
mkfs.ext3 /dev/md1
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
122160 inodes, 487952 blocks
24397 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=503316480
15 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information:
done

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

Вот только вопрос, как это reserved используется этим самым супер-юзером?

суббота, 14 августа 2010 г.

EXT3-fs warning (device md2): ext3_dx_add_entry: Directory index full!

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

При этом на машине дела с айнодами обстоят так (прошу не смущаться цифре в 100%, айноды свободные есть):

df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/md2 19144704 18994479 150225 100% /
tmpfs 506008 7 506001 1% /lib/init/rw
udev 506008 1232 504776 1% /dev
tmpfs 506008 1 506007 1% /dev/shm
/dev/md1 131648 44 131604 1% /boot



Более подробно:


Using a filesystem with 4k blocks, and assuming the filenames are of
the same average length, you should be able to get approximately 200k
* (4**3) = 12.8 million files in a single directory. If you use a 2k
block filesystem, the limit will be approximately 200k * (2**3) = 1.6
million files in a single directory.


Как решить проблему? Найти папки, где произошло данное событие и удалить из них файлы.

http://kerneltrap.org/mailarchive/linux-kernel/2008/5/18/1865234

среда, 14 апреля 2010 г.

OpenVZ + noatime для EXT3

Инго Молнар говорит про atime следующее:

Ingo Molnar stressed the significance of fixing this performance issue, "I cannot over-emphasize how much of a deal it is in practice. Atime updates are by far the biggest IO performance deficiency that Linux has today. Getting rid of atime updates would give us more everyday Linux performance than all the pagecache speedups of the past 10 years, _combined_."


(c) http://kerneltrap.org/node/14148

Для OpenVZ же кроме этого есть еще опция непосредственно для отключения/включения noatime для определенных VE:

--noatime yes|no Sets noatime flag (do not update inode access times) on file system.


(c) man vzctl

Например, вот так будет выглядеть команда для отключения atime для определенного VPS:
vzctl set 101 --noatime yes --save
vzctl restart 101


(c) http://www.hostsvault.com/blog/how-to-reduce-disk-partition-io-access-time/

Но обращаю внимание, что есть софт (мало-мало-мало), который от такого сломается. Хотя если у Вас хостинг сервер - Вам бояться нечего, в типичном LAMP такой софт фактически отсутствует.

А еще есть самое-самое надежное подтверждение надежности этой опции - оф руководство по Virtuozzo: http://download.swsoft.com/virtuozzo/virtuozzo4.0/docs/en/lin/VzLinuxClustering/20091.htm

четверг, 11 марта 2010 г.

Быстрое удаление миллионов файлов на ext3

У ext3 есть одна замечательная особенность - удаление большого числа занимает ОГРОМНОЕ количество времени. Это происходит по вине журналирования, которое в данном конкретном случае нам только мешает.

Итак, имеем папку с 5 миллионами файлов:

find mod-tmp/ | wc -l
5482917


Отмонтируем файловую систему с папкой:
umount /mnt


Монтируем ее как ext2:

mount -t ext2 /dev/md2 /mnt


Очень быстро удаляем папку:

time rm -rf mod-tmp2

real 39m34.672s
user 0m1.108s
sys 1m14.433s


Ну, не супер быстро, но тем не менее намного быстрее, чем в случае с ext3.

среда, 20 января 2010 г.

Переключение ext4 журнала на writeback

Открываем fstab:
vi /etc/fstab

Ищем там свой рут раздел:
/dev/md2 / ext3 defaults,grpquota,usrquota 0 0


У меня это /dev/md2.

Т.к. вариант с указанием в fstab data=writeback не работает, Ибо баг - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=529629 и https://bugzilla.redhat.com/show_bug.cgi?id=55495

Идем в обход, активируем для файловой системы дефлтную опцию монтирования:
tune2fs -o journal_data_writeback /dev/md2


В итоге получаем:

tune2fs -l /dev/md2 | grep writeback
Default mount options: journal_data_writeback
Суть внесенных правок:

< Default mount options:    journal_data_writeback user_xattr acl
---
> Default mount options:    user_xattr acl


Перезагружаемся (mount -o remount / тут не сработает):
shutdown -r now

Убеждаемся, что наш основной раздел смонтировался в writeback (кто подскажет более правильный способ - получит плюшку):
dmesg | grep writeback
[ 4.095211] EXT3-fs: mounted filesystem with writeback data mode.

Тюнинг файловой системы Ext3 - увеличение commit

У Ext3 есть параметр commit, указывающий время, через которое происходит синхронизация данных и метаданных с жестким диском, стандартно оно равняется 5 секундам (см. исходники ядра), но в некоторых случаях его можно увеличить без особого вреда, скажем, до 10 секунд, чтобы лишний раз не дергать диски.

Вот информация на английском:
commit=nrsec (*) Ext3 can be told to sync all its data and metadata every 'nrsec' seconds. The default value is 5 seconds. This means that if you lose your power, you will lose as much as the latest 5 seconds of work (your filesystem will not be damaged though, thanks to the journaling). This default value (or any low value) will hurt performance, but it's good for data-safety. Setting it to 0 will have the same effect as leaving it at the default (5 seconds). Setting it to very large values will improve performance.


Настраиваем!

Открываем fstab:
vi /etc/fstab


Ищем там строку с нашей файловой системой и добавляем в нее через запятую "commit=10":
/dev/md2 / ext3 defaults,commit=10,grpquota,usrquota 0 0


Перемонтируем файловую систему:
mount -o remount /


Все, теперь данные на диск у нас будут сбрасываться раз в 10 секунд.

ext3 ordered (стандартый) vs writeback (самый быстрый)

Рекомендовано к прочтению: http://lwn.net/Articles/329008/

Отключение atime для ext3 разделов с интенсивным доступом

Отключение поддержки atime (время последнего доступа) позволяет увеличить производительность дисковой подсистемы.

Вот описание, как и почему стоит это делать:

Here is how atime works: for every instance that the operating system accesses a file, atime logs the time when that file was last accessed (writes this info onto the Linux ext3 partition). As you can imagine, all this writing takes its toll in terms of performance, which is a drag (no pun intended) considering that only mail-monitoring and defragmenting applications use atime to function properly.


Вкратце - при каждом доступе к файлу (хоть на чтение, хоть на запись) файловая система изменяет время последнего доступа к файлу (atime) на текущее и записывает его в файловую систему, что влияет не лучшим образом на производительность (теоретически, практически я ничего сказать не могу - не тестил).

Открываем конфиг:
vi /etc/fstab


Ищем строку с требуемой файловой системой:
/dev/md2 / ext3 defaults,grpquota,usrquota 0 0


И добавляем через запятую после default notatime,nodiratime чтобы получить следующее:

/dev/md2 / ext3 defaults,noatime,nodiratime,grpquota,usrquota 0 0


Перемонтируем файловую систему:

mount -o remount /


Возможные противопоказания: http://phpsuxx.blogspot.com/2010/01/atime-postfix.html

источники:
http://www.findmysoft.com/news/Disable-Atime-for-a-Faster-Running-Linux-OS/
http://en.opensuse.org/Speeding_up_Ext3
http://www.redhat.com/support/wpapers/redhat/ext3/tuning.html

воскресенье, 20 декабря 2009 г.

Типы журналов Ext3

journal
All data is committed into the journal prior to being written into the main file system.

ordered
This is the default mode. All data is forced directly out to the main file system prior to its metadata being committed to the journal.

writeback
Data ordering is not preserved - data may be written into the main file system after its metadata has been committed to the journal. This is rumoured to be the highest-throughput option. It guarantees internal file system integrity, however it can allow old data to appear in files after a crash and journal recovery.


А вот информация прямиком из ядра (filesystems/ext3.txt):

journal All data are committed into the journal prior to being written into the main file system.

ordered (*) All data are forced directly out to the main file system prior to its metadata being committed to the journal.

writeback Data ordering is not preserved, data may be written into the main file system after its metadata has been committed to the journal.


И еще немного с документации ядра:

* writeback mode
In data=writeback mode, ext3 does not journal data at all. This mode provides
a similar level of journaling as that of XFS, JFS, and ReiserFS in its default
mode - metadata journaling. A crash+recovery can cause incorrect data to
appear in files which were written shortly before the crash. This mode will
typically provide the best ext3 performance.

* ordered mode
In data=ordered mode, ext3 only officially journals metadata, but it logically
groups metadata and data blocks into a single unit called a transaction. When
it's time to write the new metadata out to disk, the associated data blocks
are written first. In general, this mode performs slightly slower than
writeback but significantly faster than journal mode.

* journal mode
data=journal mode provides full data and metadata journaling. All new data is
written to the journal first, and then to its final location.
In the event of a crash, the journal can be replayed, bringing both data and
metadata into a consistent state. This mode is the slowest except when data
needs to be read from and written to disk at the same time where it
outperforms all other modes.

вторник, 15 декабря 2009 г.

Filesystem error recorded from previous mount: IO failure

Столкнулся на клиентской машине вот с такой траблой:

Dec 15 14:47:31 centos-53-32-minimal kernel: EXT3-fs warning (device md2): ext3_clear_journal_err: Filesystem error recorded from previous mount: IO failure
Dec 15 14:47:31 centos-53-32-minimal kernel: EXT3-fs warning (device md2): ext3_clear_journal_err: Marking fs in need of filesystem check.



При проверке fsck через LiveCD выдало следующее:


fsck.ext3 /dev/md2
e2fsck 1.41.3 (12-Oct-2008)
Superblock has an invalid ext3 journal (inode 8).
Clear? yes

*** ext3 journal has been deleted - filesystem is now ext2 only


В итоге после окончания проверки имеем то, что у /dev/md2 отключиться журнал. О чем ясно написано при монтировании (фс фактически стала ext2):
/dev/md2 on /mnt type ext2 (rw)


А tune2fs только добавляет уверенности:
tune2fs -l /dev/md2 | grep features
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file


Итого - как включить журнал-то?

Для этого есть команда:
tune2fs -j /dev/md2


Которая отрабатывает следующим образом:

tune2fs 1.41.3 (12-Oct-2008)
Creating journal inode: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.


Ну вот и все, журнал включен:

tune2fs -l /dev/md2 | grep features
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file


В mount тоже самое:

/dev/md2 on /mnt type ext3 (rw)