Привет всем Имеется Centos система, которая грузится с флешки, которая в свою очередь в режиме RO. На флешке лежит ext3fs.img с основной файловой системой, при старте в initrd на нее накладывается snapshot через dmsetup, изменения все в tmpfs. Все работает во многих инсталляциях, однако недавно столкнулся с проблемой: при большой нагрузке количество изменений превышает допустимый предел, корневая система помечается как сбойная, соответственно сервер приходит к нерабочему состоянию. В общем-то это проблема известная, описана в мануалах, но при маленькой нагрузке это не мешало работать устройствам годами без проблем. А при большой нагрузке количества блоков на 512мб снапшоте хватает лишь на неделю работы максимум. Можно, конечно увеличить размер снапшота, но это тупиковый путь. Тем более что больше 512 мб свободного места в общем-то не требуется для нормальной работы.
Решил перейти на unionfs. В принципе все заработало. В стандартный шапкин initrd добавил такое:
if [ -n "$EXT3FS" ] ; then
if [ "$quiet" != "1" ] ; then
echo "setting up embedded ext3 fs "
fi
mkdir /rw
mkdir /ro
mkdir /union
mkdir -m 777 /tmp
set up new /dev/root symlink
rm -f /dev/root
mount -t tmpfs -o size=512M tmpfs /rw
mount -o loop /sysroot/ext3fs.img /ro
umount -l /sysroot
unionfs -o cow /rw=RW:/ro=RO /sysroot
ln -s /sysroot /dev/root
fi
Система загрузилась почти нормально. Почти - потому что какая-то засада с правами на файлы. Я долго гуглил, но так и не понял, в чем проблема. У меня только косвенные данные. Например, не запустился mysql:
140202 07:04:22 mysqld started
/usr/libexec/mysqld: Can't create/write to file '/tmp/ib6IxvMO' (Errcode: 13)
140202 7:04:23 InnoDB: Error: unable to create temporary file; errno: 13
140202 7:04:23 [ERROR] bdb: /var/lib/mysql: Permission denied
140202 7:04:23 [ERROR] bdb: /var/lib/mysql/log.0000000001: Permission denied
140202 7:04:23 [ERROR] bdb: PANIC: Permission denied
140202 7:04:23 [ERROR] bdb: PANIC: DB_RUNRECOVERY: Fatal error, run database recovery
140202 7:04:23 [ERROR] bdb: fatal region error detected; run recovery
140202 7:04:23 [ERROR] bdb: /var/lib/mysql: Permission denied
140202 7:04:23 [ERROR] Can't start server : Bind on unix socket: Permission denied
140202 7:04:23 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock
Апач тоже с бедой, на любой запрос отвечает:
[Sun Feb 02 07:08:51 2014] [error] [client 127.0.0.1] (13)Permission denied: access to /reset.php denied
[Sun Feb 02 07:08:58 2014] [error] [client 192.168.0.66] (13)Permission denied: access to / denied
[Sun Feb 02 07:08:59 2014] [error] [client 192.168.0.66] (13)Permission denied: access to /favicon.ico denied
сделать su mysql нельзя, пишет:
# su mysql
su: /bin/bash: Permission denied
любая программа, использующая sudo под рутом пишет:
bash-3.2# save
sudo: can't open /etc/sudoers: Permission denied
хотя раньше такого не было и если запуститься со старым initrd то все будет как надо.
При всем при этом права доступа к корню или к этим файлам имеются и полностью аналогичны таковым с рабочей системы:
bash-3.2# ls -l /etc/sudoers
-r--r----- 1 root root 4652 Feb 2 07:04 /etc/sudoers
bash-3.2# ls -l /
total 20
drwxr-xr-x 1 root root 80 Feb 2 07:04 bin
drwxr-xr-x 12 root root 4140 Feb 2 07:06 dev
drwxr-xr-x 1 root root 1140 Feb 2 07:05 etc
drwxrwxrwx 5 asterisk asterisk 4096 Dec 31 1969 flash
drwxr-xr-x 1 root root 4096 Mar 29 2007 home
drwxr-xr-x 1 root root 180 Feb 2 07:04 lib
drwxr-xr-x 1 root root 4096 Mar 29 2007 media
drwxr-xr-x 1 root root 4096 Mar 29 2007 mnt
dr-xr-xr-x 99 root root 0 Feb 2 02:03 proc
drwxr-x--- 1 root root 60 Feb 2 07:04 root
drwxr-xr-x 1 root root 260 Feb 2 07:04 sbin
drwxr-xr-x 11 root root 0 Feb 2 02:03 sys
drwxrwxrwx 7 asterisk asterisk 4096 Feb 1 22:48 tftpboot
drwxrwxrwx 1 root root 160 Feb 2 07:10 tmp
drwxr-xr-x 1 root root 160 Feb 2 07:04 usr
drwxr-xr-x 1 root root 200 Feb 2 07:04 var
Что может быть? Куда копать? что проверить? Большое спасибо за советы! PS: сорри за кроспостинг ;)