Загрузка из ОЗУ

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

AmiG0
Сообщения: 16

Загрузка из ОЗУ

Сообщение AmiG0 »

столкнулся со следующей задачей: необходимо, чтобы при загрузке ос, данные из /usr/bin /usr/sbin /usr/lib /usr/libexec (которые находятся на нжмд) копировались в соответствующие разделы ramfs (которые должны монтироваться туда же, т.е. вроде как "поверх"), при выгрузке же os данные должны синхронизироваться (т.е. если произошло обновление каких-либо бинарников, то скопировать из озу обратно на винт).
вижу я это следующим образом (в дистрибутиве загрузка происходит по модели sysvinit): скрипт, стартующий перед всеми user-mode сервисами, монтирующий рамфсы в /usr/bin2 /usr/sbin2 /usr/lib2 /usr/libexec2, копирующий туда всё с винта и монтирующий те же областы оперативы, но поверх уже находящихся на винте /usr/bin /usr/sbin /usr/lib /usr/libexec.
при выгрузке же просто натравливается рекурсивно cp.
но проблема в том, что я банально не знаю, как примонтировать один и тот же сегмент озу в два разных места. т.е. тот же /dev/sda1 я могу хоть в десять маунтпоинтов примонтировать, а под ramfs, даже если я mount source одинаково называю, выделяются разные сегменты памяти. как это можно обойти? если нельзя обойти, то, может посоветуете более кошерный способ реализации это задачи?
заранее спасибо!
Спасибо сказали:
AmiG0
Сообщения: 16

Re: Загрузка из ОЗУ

Сообщение AmiG0 »

таки написал, но не так.

Код: Выделить всё

#!/bin/sh
# Mount/umount script for /usr on ramfs
#
# chkconfig: 12345 01 99
# description: Copy all needed data from /usr/ to ramfs mounts on start
#        and move all back on stop
# Author:       Vladimir AmiGO Stackov <amigo@lnetw.ru>
#

# Source function library.
. /etc/rc.d/init.d/functions

LOCKFILE="/var/lock/subsys/usramfs"
prog="USRAmfs"

doit(){
    for i in `ls /usr/ | grep hdd`;
    do
        i=`echo $i | sed -r s/_hdd//g`
        if [ $1 == "toram" ]; then
            if [ -d "/usr/${i}_ram" ]; then
                umount "/usr/${i}_ram"
                rmdir "/usr/${i}_ram"
            fi
            [[ ! -d "/usr/${i}_ram" ]] || continue
            rm /usr/$i
            ln -s "/usr/${i}_ram" /usr/$i
            mkdir "/usr/${i}_ram"
            mount "${i}_ram" -t ramfs "/usr/${i}_ram"
            cp -a /usr/${i}_hdd/* /usr/${i}_ram
        elif [ $1 == "fromram" ]; then
            [[ -d "/usr/${i}_ram" ]] || continue
            rm /usr/$i
            ln -s "/usr/${i}_hdd" /usr/$i
            cp -au /usr/${i}_ram/* /usr/${i}_hdd/
            umount -f "/usr/${i}_ram"
            rmdir "/usr/${i}_ram"
        fi
    done
    RETVAL=$?
    return $RETVAL
}

start(){
    if [ -f $LOCKFILE ]; then
        echo "Lockfile present, stopping"
        stop
        unlink $LOCKFILE
    fi
    touch $LOCKFILE
    echo -n $"Starting $prog: "
    doit toram
    RETVAL=$?
    return $RETVAL
}

stop(){
    [[ ! -f $LOCKFILE ]] && return 0
    unlink $LOCKFILE
    echo -n $"Stopping $prog: "
    doit fromram
    RETVAL=$?
    return $RETVAL
}

case "$1" in
  start)
    start
   ;;

  stop)
    stop
   ;;

  status)
    mount | grep /usr/
    RETVAL=0
   ;;

  restart)
    stop
    start
   ;;

  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 3
   ;;
esac

exit $RETVAL


если вдруг кому надо...

/topic
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Загрузка из ОЗУ

Сообщение Frank »

Интересно, какова цель?
Изображение
Спасибо сказали:
AmiG0
Сообщения: 16

Re: Загрузка из ОЗУ

Сообщение AmiG0 »

jff
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Загрузка из ОЗУ

Сообщение drBatty »

AmiG0 писал(а):
26.10.2009 18:40
столкнулся со следующей задачей: необходимо, чтобы при загрузке ос, данные из /usr/bin /usr/sbin /usr/lib /usr/libexec (которые находятся на нжмд) копировались в соответствующие разделы ramfs

Frank писал(а):
26.10.2009 21:57
Интересно, какова цель?

наверное данные на USB-1 флешке... помнится так-же и биос кешируется.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
AmiG0
Сообщения: 16

Re: Загрузка из ОЗУ

Сообщение AmiG0 »

drBatty писал(а):
26.10.2009 23:25
AmiG0 писал(а):
26.10.2009 18:40
столкнулся со следующей задачей: необходимо, чтобы при загрузке ос, данные из /usr/bin /usr/sbin /usr/lib /usr/libexec (которые находятся на нжмд) копировались в соответствующие разделы ramfs

Frank писал(а):
26.10.2009 21:57
Интересно, какова цель?

наверное данные на USB-1 флешке... помнится так-же и биос кешируется.
не. исключительно just for fun. данные на raid-5 массиве, просто из памяти оно быстрее =)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Загрузка из ОЗУ

Сообщение drBatty »

AmiG0 писал(а):
26.10.2009 23:28
не. исключительно just for fun. данные на raid-5 массиве, просто из памяти оно быстрее =)

я так не думаю: данные УЖЕ кешированны, причём многоступенчато. впрочем, попробуйте...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
AmiG0
Сообщения: 16

Re: Загрузка из ОЗУ

Сообщение AmiG0 »

уже попробовал. ось грузится быстрее, но всё занимает время на копирование. плюсом также является то, что запуск любых юзер-мод приложений происходит практически мгновенно. не стоит так доверять дисковому и vm кешу.
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Загрузка из ОЗУ

Сообщение Frank »

AmiG0 писал(а):
26.10.2009 23:35
уже попробовал. ось грузится быстрее, но всё занимает время на копирование. плюсом также является то, что запуск любых юзер-мод приложений происходит практически мгновенно. не стоит так доверять дисковому и vm кешу.

А что быстрее - копирование всех файлов в рам-диск с последующим запуском с него, или запуск только нужных файлов однократно с диска, а затем из кэша? Боюсь, реального выигрыша нет.
Изображение
Спасибо сказали:
sendmoreinfo
Сообщения: 50

Re: Загрузка из ОЗУ

Сообщение sendmoreinfo »

AmiG0 писал(а):
26.10.2009 18:40
но проблема в том, что я банально не знаю, как примонтировать один и тот же сегмент озу в два разных места. т.е. тот же /dev/sda1 я могу хоть в десять маунтпоинтов примонтировать


сомнительно как-то. разве что через mount --bind.
Спасибо сказали:
AmiG0
Сообщения: 16

Re: Загрузка из ОЗУ

Сообщение AmiG0 »

sendmoreinfo писал(а):
29.10.2009 13:28
AmiG0 писал(а):
26.10.2009 18:40
но проблема в том, что я банально не знаю, как примонтировать один и тот же сегмент озу в два разных места. т.е. тот же /dev/sda1 я могу хоть в десять маунтпоинтов примонтировать


сомнительно как-то. разве что через mount --bind.
вот спасибо, человече! гуглил, гуглил, да видать скилл не прокачан - так и не нагуглил эту опцию волшебную. теперь всё работает ещё кошернее.
Спасибо сказали: