MongoDB'yi nasıl oluşturabilirim?


10

Bana öyle geliyor ki şu anda bununla ilgili iki yol var:

  1. https://github.com/skrabban/mongo-nonx86
  2. https://github.com/RickP/mongopi

Çatala yerleştim mongo-nonx86. Bağımlılıkları Raspberry Pi'deki Mongodb'u Yükle bölümünde anlatıldığı gibi yükledim ve kullanarak MongoDB oluşturmaya çalıştım scons. Ancak aşağıdaki hatayı alıyorum:

generate_buildinfo(["build/buildinfo.cpp"], ['\n#include <string>\n#include <boost/version.hpp>\n\n#include "mongo/util/version.h"\n\nnamespace mongo {\n    const char * gitVersion() { return "%(git_version)s"; }\n    std::string sysInfo() { return "%(sys_info)s BOOST_LIB_VERSION=" BOOST_LIB_VERSION ; }\n}  // namespace mongo\n'])
gcc -o build/linux2/normal/third_party/pcre-8.30/pcre_exec.o -c -fPIC -fno-strict-aliasing -Wstrict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Wcast-align -Winvalid-pch -O3 -DBOOST_ALL_NO_LIB -D_SCONS -DMONGO_EXPOSE_MACROS -DSUPPORT_UTF8 -D_FILE_OFFSET_BITS=64 -DJS_C_STRINGS_ARE_UTF8 -DMONGO_HAVE_HEADER_UNISTD_H -DMONGO_HAVE_EXECINFO_BACKTRACE -DHAVE_SYNC_FETCH_AND_ADD -DALIGNMENT_IMPORTANT -DHAVE_BSWAP32 -DHAVE_BSWAP64 -DHAVE_CONFIG_H -Ibuild/linux2/normal/third_party/boost -Isrc/third_party/boost -Ibuild/linux2/normal/third_party/pcre-8.30 -Isrc/third_party/pcre-8.30 -Ibuild/linux2/normal -Isrc -Ibuild/linux2/normal/mongo -Isrc/mongo src/third_party/pcre-8.30/pcre_exec.c
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
scons: *** [build/linux2/normal/third_party/pcre-8.30/pcre_exec.o] Error 4
scons: building terminated because of errors.

Derleme mongopiaynı dosyada aynı hata iletisiyle durur.

Bu arada, sistemimin dramatik bir şekilde eskimiş olduğunu fark ettim. Ancak en son sürümlere yükseltmek bile sorunu çözmedi. Bu noktada, bunun gerçekten boş hafıza ile ilgili bir sorun olduğunu varsayıyorum. Sadece 256 MB'lık bir modelim olduğu göz önüne alındığında.


bellek sorunu olabilir - bellek bölünmesini yapılandırdınız mı? Gcc'yi çalıştırmadan önce ne kadar boş belleğiniz var?
abolotnov

@abolotnov: Derlemem mongopitamamlanır tamamlanmaz bunlara cevap vereceğim ; D Şu an bu caddeyi keşfederken
Der Hochstapler

@abolotnov: Bellek bölünmesi 224/32. free -m177 ücretsiz gösterir.
Der Hochstapler

1
Mongodb ikili, communityArch ARM dağıtımındaki depodadır .
Jivings

@Jivings: Arch'ı kullanmak için bir denemeye değer olabilir, çünkü Wheezy sürümünde derlemek için hiçbir yere gitmiyorum.
Der Hochstapler

Yanıtlar:


9

Bu cevabın sadece Raspberry Pi'nin 256 MB sürümüne uygulandığını lütfen unutmayın. 512 MB sürümü, ek ayarlamalar yapmadan MongoDB'yi derlemek için yeterli boş hafızaya sahip olmalıdır

Genel olarak düşük bellek durumları hakkında okurken, durumu düzeltmek için takas alanını artırmak için öneriler buldum.

Dolayısıyla, bearbin'in cevabını okuduktan sonra , bunun geçerli bir seçenek olabileceğine ikna oldum. Ancak, ben takas boşluk eklemek için tercih etmeden kullanan zRAM .

Ben tam süreci bir türlü hatırlayamıyorum çünkü herhangi bir şey , ben rehber takip Howto - Linux bir Swap dosyası ekle Nixcraft tarafından.

  1. Takas dosyası / depolama alanı oluşturun:

    sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    
  2. Alanı takas alanı olarak ayarlayın:

    sudo mkswap /swapfile1
    
  3. Yalnızca root'un okuma / yazma izni ver:

    sudo chmod 0600 /swapfile1
    
  4. Takas alanını etkinleştir:

    sudo swapon /swapfile1
    

Daha sonra sconsbaşarıyla tamamlandı ve MongoDB'yi yükledim. mongopiSonunda çatalı kullandım .

db level locking enabled: 1
mongod --help for help and startup options
Sun Feb 10 13:05:33
Sun Feb 10 13:05:33 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Sun Feb 10 13:05:33
Sun Feb 10 13:05:33 [initandlisten] MongoDB starting : pid=2182 port=27017 dbpath=/data/db/ 32-bit host=raspberrypi
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] ** NOTE: This is a development version (2.1.1) of MongoDB.
Sun Feb 10 13:05:33 [initandlisten] **       Not recommended for production.
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Sun Feb 10 13:05:33 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Sun Feb 10 13:05:33 [initandlisten] **       with --journal, the limit is lower
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] db version v2.1.1, pdfile version 4.5
Sun Feb 10 13:05:33 [initandlisten] git version: f457ff42ec37f2562d1a5ff06b4d96a861414c94
Sun Feb 10 13:05:33 [initandlisten] build info: Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l BOOST_LIB_VERSION=1_49
Sun Feb 10 13:05:33 [initandlisten] options: {}
Sun Feb 10 13:05:34 [initandlisten] waiting for connections on port 27017
Sun Feb 10 13:05:34 [websvr] admin web console waiting for connections on port 28017

B modelinde de aynı sorunu yaşadım ve bu çözüm işe yaradı. Teşekkürler
Mircea Nistor

ÇOK TEŞEKKÜR EDERİM. Model B'nin benim için yeterli boş belleğe sahip olmadığını ve bu tavsiyeyi uyguladıktan sonra kurulumun işe yaradığını belirtmek isterim. Model B'li iki kişinin adımlarınızı takip etmesi gerektiğini düşünmek için bu cevaptaki notunuzu değiştirmeyi düşünür müsünüz?
Matthew Moisen

@MatthewMoisen: Model B ile de bu sorunu yaşadım. Ancak benimki 256 MB RAM ile ilk revizyon oldu. Sadece ikinci revizyon 512 MB aldı.
Der Hochstapler

1

Mightţe yarayabilecek bir seçeneđim var . Ancak, muhtemelen derleme sürecinizi önemli ölçüde yavaşlatacaktır.

Pi'nize ZRAM kurmanız gerekiyor. Temel olarak, daha fazla işlemci kullanmanıza izin vermek için kullanılan RAM'i sıkıştırır, ancak daha fazla CPU kullanımı pahasına.

Buradaki talimatları izleyeceğiz, ancak kolay görüntüleme için bunları yazıya koyacağım.

Bu nedenle, bu komutların çoğu root gerektirdiğinden önce root olmanız gerekir:

sudo su

Ardından, /etc/init.d/zramaşağıdaki içeriklerle bir dosya oluşturun :

#!/bin/bash

### BEGIN INIT INFO
#Provides: zram
#Required-Start:
#Required-Stop:
#Default-Start: 2 3 4 5
#Default-Stop: 0 1 6
#Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
#Description: Adapted for Raspian (Rasberry pi) by eXtremeSHOK.com using https://raw.github.com/gionn/etc/master/init.d/zram
### END INIT INFO

start() {
    mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching '[[:digit:]]+')

    modprobe zram

    sleep 1
    #only using 50% of system memory, comment the line below to use 100% of system memory
    mem_total_kb=$((mem_total_kb/2))

    echo $((mem_total_kb * 1024)) > /sys/block/zram0/disksize

    mkswap /dev/zram0

    swapon -p 100 /dev/zram0
}

stop() {
    swapoff /dev/zram0
    sleep 1
    rmmod zram
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        RETVAL=1
esac

İsterseniz kolay bir yol Pi üzerinde onu almak için: sudo wget http://vps1.berboe.co.uk/zram.sh -O /etc/init.d/zram.

Ardından, komut dosyanızı önyükleme başlangıcına aşağıdakileri yaparak ekleyin:

chmod +x /etc/init.d/zram
update-rc.d zram defaults

Sonra yeniden başlatın ve her şey işe yarayacak.

Yeniden yükleme tamamlandığında, bu komutu çalıştırın: swapon -s. Çıktı bir şekilde şöyle olmalıdır:

Filename Type Size Used Priority
/var/swap file 524284 0 -1
/dev/zram0 partition 237900 0 100

Şimdi, ZRAM kurulur ve daha önce yaptığınız gibi derlemeye çalışırsanız çalışabilir.


Bu öneri için teşekkürler! Şimdilik zram kullanmadan ek takas alanı ekledim. Derlemeye şimdi devam etmeye çalışıyorum.
Der Hochstapler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.