Этот патч предоставляет информацию о всех измененных, вновь созданных или подвергшихся изменению прав посредством chmod файлах в системе. Таким образом, эти файлы могут быть забэкаплены без осуществления полного сканирования файловой системы и поиска изменившихся файлов (например, посредством программ rdiff-backup или rsync). Само резервное копирование не входит в задачи этого патча, он только предоставляет список файлов. Бэкап списка изменившихся файлов осуществляете уже Вы сами, это самая легкая часть задачи. Более сложную - формирование спсика изменившихся файлов - решает патч ядра.
В патче нету хеширования, сортировки или фильтрации дубликатов файлов. Это означает, что после того, как файл будет изменен и до того, как вы его забэкапите, он может изменится снова. Таким образом, вы вполне можете получить дубликаты файлов в логе изменений. Чтобы избежать ошибок в поведении бэкап скрипта просто удаляйте дубликаты в нем.
Чтобы использовать все эти замечательные возможности, необходимо применить следующий патч на исходники 2.6.27 ядра с kernel.org После этого у ядра появится два триггера, которые по-умолчанию отключены и система логирования изменившихся файлов не создает нагрузки на систему:
/proc/sys/fs/bh_logging_user
/proc/sys/fs/bh_logging_root
Чтобы включить логгирование, используйте следующие команды:
echo 1 > /proc/sys/fs/bh_logging_user
echo 1 > /proc/sys/fs/bh_logging_root
Либо же можно добавить следующие строки в файл:
vi /etc/sysctl.conf
fs.bh_logging_user=1
fs.bh_logging_root=1
После этого необходимо внести коррективы в файл /etc/syslog.conf, чтобы syslog принимал сообщения от ядра (как раз посредством них и будут передаваться измененные файлы) и сохранял их в лог:
kern.debug /var/log/modified
После этого, все измененные файлы будут отображаться в логе /var/log/modified.
UPDATE: самостоятельно перенес патч на 2.6.32.8 ядро, вот он, прошу: http://fastvps.googlecode.com/svn/trunk/patches/bluehost-backup-fastvps-edited-patch-2.6.32.diff
Вот мануал по накатываюнию патча на 2.6.32.8 ядро
cd /usr/src/linux-2.6.32.8
wget http://fastvps.googlecode.com/svn/trunk/patches/bluehost-backup-fastvps-edited-patch-2.6.32.diff
patch -p1 < bluehost-backup-fastvps-edited-patch-2.6.32.diff
В итоге должны увидеть нечто вот такое:
patching file fs/compat.c
patching file fs/dcache.c
patching file fs/namei.c
patching file fs/open.c
patching file fs/read_write.c
patching file include/linux/fs.h
patching file kernel/sysctl.c
patching file mm/mmap.c
Далее собираем ядро.
(с) http://www.mattheaton.com/?p=188
MODPOST vmlinux.o
ReplyDeleteWARNING: modpost: Found 5 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o:(.data+0x3194): undefined reference to `bh_logging_user'
kernel/built-in.o:(.data+0x31c0): undefined reference to `bh_logging_root'
mm/built-in.o: In function `mmap_region':
/root/rpmbuild/BUILD/kernel-2.6.32.8/mm/mmap.c:1196: undefined reference to `bh_log_modified'
fs/built-in.o: In function `do_sys_open':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:1090: undefined reference to `bh_log_new'
fs/built-in.o: In function `sys_fchown':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:811: undefined reference to `bh_log_modified'
fs/built-in.o: In function `sys_fchmod':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:635: undefined reference to `bh_log_modified'
fs/built-in.o: In function `sys_lchown':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:782: undefined reference to `bh_log_changed'
fs/built-in.o: In function `sys_fchownat':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:757: undefined reference to `bh_log_changed'
fs/built-in.o: In function `sys_chown':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:726: undefined reference to `bh_log_changed'
fs/built-in.o: In function `sys_fchmodat':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/open.c:670: undefined reference to `bh_log_changed'
fs/built-in.o: In function `vfs_write':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/read_write.c:357: undefined reference to `bh_log_modified'
fs/built-in.o: In function `do_readv_writev':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/read_write.c:671: undefined reference to `bh_log_modified'
fs/built-in.o: In function `sys_renameat':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/namei.c:2793: undefined reference to `bh_log_removed'
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/namei.c:2794: undefined reference to `bh_log_new'
fs/built-in.o: In function `do_unlinkat':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/namei.c:2369: undefined reference to `bh_log_removed'
fs/built-in.o: In function `do_rmdir':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/namei.c:2272: undefined reference to `bh_log_removed'
fs/built-in.o: In function `sys_mkdirat':
/root/rpmbuild/BUILD/kernel-2.6.32.8/fs/namei.c:2150: undefined reference to `bh_log_new'
make[2]: *** [.tmp_vmlinux1] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.Meag8L (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.Meag8L (%build)
make[1]: *** [rpm] Помилка 1
make: *** [rpm] Помилка
Не могу собрать ядро после патча. Может подскажыте?
Оххх. а ядро ванильное (с kernel.org) точно?
DeleteДа, это https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.gz
ReplyDeleteCentos 6.3
ReplyDeleteЧто я делал:
yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config
cd /usr/src
wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.gz
tar -xvf linux-2.6.32.8.tar.gz
cd linux-2.6.32.8
cp /boot/config-`uname -r` .config
make menuconfig
Отмечаю General setup ---> enable deprecated sysfs features which may confuse old userspace
mkdir -p /usr/src/redhat/SRPMS
mkdir -p /usr/src/redhat/RPMS/i686
vi scripts/package/mkspec
И в самый низ добавляем следующее:
echo "%post"
echo "/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install "$KERNELRELEASE" || exit \$?"
echo ""
echo "%preun"
echo "/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove "$KERNELRELEASE" || exit \$?"
echo ""
time make rpm
А делее ошыбки... (
This comment has been removed by the author.
ReplyDeleteЯ уже вручную накатывал патч, ошибки те же.
ReplyDeleteЯдро без патча собирается нормально
Пожалуйста, вот актуальная версия патча с документацией: https://github.com/FastVPSEestiOu/Linux-kernel-fast-logging-path
DeleteСпасибо за наводку, вижу патч для Убунту-Дебиана.
DeleteНо у меня беда в том, что под Дебианом (причем старом lenny) ядро с патчем собирается без проблем, и работало так как надо.
А вот под Centos 6.4 сборка завершалась ошибками. Хотя ядро одно и тоже, ванильное. Может я чего не установил, пока не разобрался. Пробовал даже вручную вносить изменения в код, исход тот же, ошибки.
А Вы как собираете? Попробуйте собрать в обход rpm, просто make make install. Я на гитхабе указал, какие версии ядра нужны.
DeleteА вообще, напишите проще jabber'ом, придумаем, как собрать: pavel.odintsov [at] gmail.com