Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Делаем RAMdisk для сервера [Update-03.09.2012]

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Mr. Sota, 9 июл 2012.

  1. Автор темы
    Mr. Sota

    Mr. Sota Старожил Пользователь

    Баллы:
    123
    Skype:
    mr_hosting
    Здравствуйте!
    У меня на днях появилась проблема с зависанием сервера и лагами, с падением тиков ниже 10.
    В случаи покупки VDS у меня делаю рамдиск для вас бесплатно!
    Частично проблема была решена переносом карты и плагинов на рамдиск. Вот именно про это действие я и раскажу.
    Что требуется:
    - VPS/VDS/DS на Linux
    - Больше 4гб RAM
    - Cron
    Что получим:
    - Уменьшение(а может и вообще пропажа) лагов
    Риски:
    - Потеря карты и/или плагинов на время до 5 минут.

    И так приступим.

    Скажем наш сервер лежит в директории /GreenTech125/. А мир называется GreenTech.
    Тогда мы создаем два баш скрипта - sync.sh и start.sh.
    Код:
    #start.sh
    #!/bin/sh
    MAIN_DIR_V="/dev/shm/gt125"
    MAIN_DIR_P="/GreenTech125"
    WORLD_VOLATILE_1="$MAIN_DIR_V/GreenTech/"
    WORLD_PERM_1="$MAIN_DIR_P/perm_GreenTech/"
    WORLD_VOLATILE_2="$MAIN_DIR_V/plugins/"
    WORLD_PERM_2="$MAIN_DIR_P/perm_plugins"
    touch $MAIN_DIR_P/restore.lock
    if [ ! -d $MAIN_DIR_V ]; then
    echo "Recreating directories\n"
    mkdir $MAIN_DIR_V
    echo "Done... !\n"
    echo "Restoring Maps... !\n"
    rsync -r -t -v "$WORLD_PERM_1" "$WORLD_VOLATILE_1"
    rsync -r -t -v "$WORLD_PERM_2" "$WORLD_VOLATILE_2"
    echo "Done... !\n"
    echo "Removing LOCK file, syncng will continue as scheduled"
    rm -f  $MAIN_DIR_P/restore.lock
    fi
    Код:
    #sync.sh
    #!/bin/sh
    MAIN_DIR_V="/dev/shm/gt125"
    MAIN_DIR_P="/GreenTech125"
    WORLD_VOLATILE_1="$MAIN_DIR_V/GreenTech/"
    WORLD_PERM_1="$MAIN_DIR_P/perm_GreenTech/"
    WORLD_VOLATILE_2="$MAIN_DIR_V/plugins/"
    WORLD_PERM_2="$MAIN_DIR_P/perm_plugins"
    if [ -d $MAIN_DIR_V ] && [ ! -e  $MAIN_DIR_P/restore.lock ]; then
    rsync -r -t -v "$WORLD_VOLATILE_1" "$WORLD_PERM_1"
    rsync -r -t -v "$WORLD_VOLATILE_2" "$WORLD_PERM_2"
    echo "Sync done!"
    else
    echo "Sync error!"
    fi
    Как видим скрипты используют папки "perm_GreenTech" и "perm_plugins". Давайте создадим их:
    Код:
    cd /GreenTech125
    mkdir perm_GreenTech
    mkdir perm_plugins
    Теперь нужно поместить наш мир и плагины в эти директории. Они используются для постоянного хранения мира и плагинов соответственно.
    Теперь переместим в эти директории наши файлы:
    Код:
    mv /GreenTech125/GreenTech /GreenTech125/perm_GreenTech
    mv /GreenTech125/plugins /GreenTech125/perm_plugins
    Теперь добавим sync.sh в cron:
    Код:
    crontab -e
    В кроне вводим "*/5 * * * * sh /GreenTech/sync.sh"
    Не забудьте дать права на выполнение. Например 775

    Теперь создадим ссылки на новые директории:
    Код:
    ln -s /dev/shm/gt125/GreenTech .
    ln -s /dev/shm/gt125/plugins/perm_plugins/plugins .
    На этом все.
    Вам осталось только выполнить файл start.sh и после каждой перезагрузки вашего VPS/VDS/DS тоже нужно будет его выполнить, а потом запускать сервер как обычно.

    Команда GreenTech и лично я желаю вам успехов в этом деле!
    P.S. Не забывайте следить за "весом" карты и плагинов, чтобы было достаточно РАМы для самого сервера
    P.P.S. Делалось на сервере под управлением CentOS 6.2 64bit. i7-3960K, 64GB RAM(1333MHz)
    P.P.P.S. Не забудьте перед выключением VDS/DS запустить sync.sh

    UPD.09.08.2012: Можно добавить в крон строку "@reboot sh /GreenTech/start.sh" и тогда не нужно будет каждый раз после выключения его выполнять вручную.
    UPD.03.09.2012: Сравнение скорости:
    Код:
    [root@GreenTech shm]# time dd if=/dev/shm/myfile.zero of=/dev/shm/myfile2.zero bs=64k count=4096000
    165966+0 записей считано
    165966+0 записей написано
    скопировано 10876747776 байт (11 GB), 5,03276 c, 2,2 GB/c
     
    real    0m5.346s
    user    0m0.018s
    sys    0m5.324s
    
    Код:
    [root@GreenTech shm]# time dd if=/dev/shm/myfile.zero of=/dev/shm/myfile2.zero bs=16k count=409600
    210813+1 записей считано
    210813+1 записей написано
    скопировано 3453964288 байт (3,5 GB), 1,7396 c, 2,0 GB/c
     
    real 0m1.741s
    user 0m0.019s
    sys 0m1.722s
    Как видите скорость 2 и 2.2ГБ, именно гигабайта, а не бита, т.е. 16 и 17.6Гб/с.
    Код:
    [root@GreenTech shm]# time dd if=/dev/shm/myfile.zero of=/myfile2.zero bs=64k count=4096000
    161999+0 записей считано
    161999+0 записей написано
    скопировано 10616766464 байта (11 GB), 56,2528 c, 189 MB/c
     
     
    real    0m56.502s
    user    0m0.043s
    sys    0m7.686s
    
    Код:
    [root@GreenTech shm]# time dd if=/myfile2.zero of=/dev/shmmyfile2.zero bs=64k count=4096000
    161999+0 записей считано
    161999+0 записей написано
    скопировано 10616766464 байта (11 GB), 41,0642 c, 259 MB/c
     
    real 0m51.288s
    user 0m0.020s
    sys 0m7.279s
    
     
    FirePoint, AZoN, The_FoXi и 6 другим нравится это.
  2. Хостинг MineCraft
    <
  3. Zeniter

    Zeniter Активный участник

    Баллы:
    78
    В кроне вводим "*/5 * * * * sh /МояПапка/sync.sh"

    У меня выдает:
    [​IMG]
     
  4. Zeniter

    Zeniter Активный участник

    Баллы:
    78
    Я вводил без кавычек, сейчас попробую
     
  5. Zeniter

    Zeniter Активный участник

    Баллы:
    78
    Вопрос, после этого карта будет лежать все время в другой папке. тобишь надо в конфигах поменять названия мира под папку?
     
  6. Автор темы
    Mr. Sota

    Mr. Sota Старожил Пользователь

    Баллы:
    123
    Skype:
    mr_hosting
    /\
    .|.
    .|.
     
    ВремяПриключений, caNek и Philipp022 нравится это.
  7. vindeezel1993

    vindeezel1993 Активный участник Пользователь

    Баллы:
    78
    Skype:
    vindeezel1993
    отучаться нужно сидеть под рутом. дел натворить можно. я больше как уверен, что тут сидят новички со знанием основы, дай бог
     
  8. Philipp022

    Philipp022 Старожил Пользователь

    Баллы:
    123
    Skype:
    mazahaka6450
    Имя в Minecraft:
    PhilippBalakin
    rm -r -rf /bin

    НЕ ВВОДИТЕ ЭТО! ИНАЧЕ СЕРВЕР НЕ УВИДИТЕ!:trf:
     
    gogaigor и slenky нравится это.
  9. Феня

    Феня Старожил Пользователь

    Баллы:
    123
    Skype:
    vasilev_max
    Имя в Minecraft:
    eblan_tupoj
    Не большая ошибка :) Пишется: rm -f -r /bin:trf:
     
    Сникерсни нравится это.
  10. Philipp022

    Philipp022 Старожил Пользователь

    Баллы:
    123
    Skype:
    mazahaka6450
    Имя в Minecraft:
    PhilippBalakin
    Неа ;)
    Проверь :D
     
  11. Philipp022

    Philipp022 Старожил Пользователь

    Баллы:
    123
    Skype:
    mazahaka6450
    Имя в Minecraft:
    PhilippBalakin
    Не буду спорить с человеком, благодаря которому я сижу с макбука стоимостью 1.6к $
     
    Mr. Sota нравится это.
  12. rescr1pt

    rescr1pt Старожил Пользователь

    Баллы:
    103
    А если нужно будет изменить какойто конфиг плагина то куда нужно будет лезть?
     
  13. karolize

    karolize Старожил Пользователь

    Баллы:
    153
    Очень даже интересно... надо будет как-нибудь попробывать :) лови лайк ;)
     
  14. Creative

    Creative Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    Creative
    У меня проблема такая же как у:
    Пробовал делать и так:
    Результат такой же... + если можно объясните более доходчиво, как запускать это все дело после добавления крона. В какой последовательности, и пр.
     
  15. Creative

    Creative Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    Creative
    CentOS 6.0 x64, пробую от root чтобы исключить возможность недостатка прав.

    Ввожу:
    crontab -e (пробовал еще crontab -u root -e)

    Выводится список, куда вставляю строку:
    */5 * * * * sh /world/sync.sh (через шифт+инсерт)
    После чего жму экнтер, и ошибка.

    Может я не правильно крон добавляю? Я не сильно разбираюсь в unix системах:(
     
  16. The_FoXi

    The_FoXi Активный участник Пользователь

    Баллы:
    88
    Skype:
    Foxn2o2
    Имя в Minecraft:
    FoXi
    Также можно и с БД ... только это будет стрёмновато ....)))
    Зато 4 +- гига скорость R/W это хороший плюс для сервера..)
     
  17. The_FoXi

    The_FoXi Активный участник Пользователь

    Баллы:
    88
    Skype:
    Foxn2o2
    Имя в Minecraft:
    FoXi
    Тока вот интересно .. простой юзер разве может в хронтаб прописать какойнибуть таск? Или это моя паранойя так работает , что все ограничено).....
     
  18. Philipp022

    Philipp022 Старожил Пользователь

    Баллы:
    123
    Skype:
    mazahaka6450
    Имя в Minecraft:
    PhilippBalakin
    Это не майн.)
    pex user Foxi add crontab.create.self
    :D
     
  19. The_FoXi

    The_FoXi Активный участник Пользователь

    Баллы:
    88
    Skype:
    Foxn2o2
    Имя в Minecraft:
    FoXi
    А при чём тут майн? Короче лижбы ляпнуть , не понимая о чём говориш.
     
  20. The_FoXi

    The_FoXi Активный участник Пользователь

    Баллы:
    88
    Skype:
    Foxn2o2
    Имя в Minecraft:
    FoXi
    Вобшем хорошо работает. Спасибо за идею)
    Добавил ешё кеш от анти X-ray
     
    Сникерсни нравится это.
  21. The_FoXi

    The_FoXi Активный участник Пользователь

    Баллы:
    88
    Skype:
    Foxn2o2
    Имя в Minecraft:
    FoXi
    А ты попробуй весь путь к директории укажи.
     

Поделиться этой страницей