আমি কীভাবে মঙ্গোডিবি তৈরি করতে পারি?


10

আমার কাছে দেখে মনে হচ্ছে এটি নিয়ে যাওয়ার দুটি উপায় আছে:

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

আমি mongo-nonx86কাঁটাচামচ জন্য স্থির । আমি রাস্পবেরি পাইতে মংডোডব ইনস্টল করে বর্ণিত নির্ভরতাগুলি ইনস্টল করেছি এবং ব্যবহার করে মোংগোডিবি তৈরির চেষ্টা করেছি scons। তবে আমি নিম্নলিখিত ত্রুটি পেয়েছি:

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.

সংকলন mongopiএকই ত্রুটি বার্তায় হুবহু একই ফাইলটিতে থামবে।

ইতিমধ্যে আমি বুঝতে পারি যে আমার সিস্টেমটি নাটকীয়ভাবে পুরানো। এমনকি সর্বশেষতম সংস্করণে আপগ্রেড করাও সমস্যার সমাধান করেনি। এই মুহুর্তে, আমি ধরে নিচ্ছি যে এটি প্রকৃতপক্ষে মুক্ত মেমরির একটি সমস্যা। দেওয়া হয়েছে যে আমার কাছে কেবল 256 এমবি মডেল রয়েছে।


একটি মেমরি সমস্যা হতে পারে - আপনি মেমরি বিভাজন কনফিগার করেছেন? জিসিসি চালানোর আগে আপনার কতটা ফ্রি মেমরি আছে?
abolotnov

@ আবোলোটনভ: আমার সংকলনটি শেষ হওয়ার সাথে সাথে আমি তাদের উত্তর দেব mongopi; ডি আমি এখনই এই অ্যাভিনিউটি অন্বেষণ করছি
ডের হচস্টাপলার

@ আবোলোটনভ: মেমোরি বিভাজনটি 224/32। free -m177 বিনামূল্যে দেখায়।
ডের হচস্টাপলার

1
মোংডব বাইনারি communityআর্চ এআরএম ডিস্ট্রোতে থাকা সংগ্রহস্থলে রয়েছে।
জিভিংস

@ জিভিংস: আর্চ ব্যবহারের জন্য উপযুক্ত হতে পারে, কারণ আমি হুইজি রিলিজটিতে এটি সংকলন করে কোথাও যাচ্ছি না।
ডের হচস্টাপলার

উত্তর:


9

দয়া করে মনে রাখবেন যে এই উত্তরটি কেবল রাস্পবেরি পাই এর 256 এমবি সংস্করণে প্রয়োগ হয়েছিল। 512 এমবি সংস্করণে অতিরিক্ত বিন্যাস ছাড়াই মোংগোডিবি সংকলনের জন্য পর্যাপ্ত ফ্রি মেমরি থাকতে হবে

স্বল্প-স্মৃতি পরিস্থিতিটি সাধারণভাবে পড়ার সময়, আমি পরিস্থিতি প্রতিকারের জন্য সোয়াপ স্পেইস বাড়ানোর পরামর্শ পেয়েছি।

সুতরাং, বেরাবিনের উত্তর পড়ার পরে , আমি নিশ্চিত হয়েছি যে এটি একটি বৈধ বিকল্প হতে পারে। যাইহোক, আমি জেডআরএএম ব্যবহার না করে অদলবদল যুক্ত করার বিকল্প বেছে নিয়েছি

যেহেতু আমি কোনও কিছুর জন্য সম্পূর্ণ প্রক্রিয়াটি কখনই স্মরণ করতে পারি না , আমি লিনাক্স অ্যাড অ্যা অ্যান্ড অদলবদল নির্দেশিকা অনুসরণ করেছি - নিক্সক্রাফ্ট বাই হাওটো।

  1. সোয়াপ ফাইল / স্টোরেজ স্পেস তৈরি করুন:

    sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    
  2. অদলবদল অঞ্চল হিসাবে স্থান সেট করুন:

    sudo mkswap /swapfile1
    
  3. কেবল রুটকে পড়তে / লেখার অনুমতি দিন:

    sudo chmod 0600 /swapfile1
    
  4. অদলবদল সক্ষম করুন:

    sudo swapon /swapfile1
    

এরপরে, sconsসাফল্যের সাথে সম্পন্ন হয়েছে এবং আমি মঙ্গোডিবি ইনস্টল করতে সক্ষম হয়েছি। আমি mongopiশেষ পর্যন্ত কাঁটা ব্যবহার করেছি ।

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

আমি একটি মডেল বি সম্পর্কে একই সমস্যা ছিল এবং এই সমাধানটি কাজ করে। থেক্স
মিরসিয়া নিস্টর

আপনাকে অনেক বেশি প্রাণবন্ত ধন্যবাদ জানাই। আমি উল্লেখ করতে চাই যে মডেল বিয়ের জন্য পর্যাপ্ত ফ্রি মেমরি ছিল না এবং এই পরামর্শ অনুসরণ করার পরে ইনস্টলেশনটি কাজ করেছিল। মডেল বি সহ দু'জনের আপনার পদক্ষেপগুলি অনুসরণ করা দরকার তা বিবেচনা করার জন্য এই উত্তরে আপনার নোটটি পরিবর্তন করতে আপনি কি আপত্তি করবেন?
ম্যাথু ময়েসেন

@ ম্যাথেজোমাইসেন: আমি একটি মডেল বি নিয়েও এই বিষয়টি প্রকাশ করেছি। তবে আমার 256 এমবি র‌্যামের সাহায্যে প্রথম সংশোধন হয়েছিল। কেবলমাত্র দ্বিতীয় সংশোধনীটি 512 এমবি পেয়েছে।
ডের হচস্টাপলার

1

আমার কাজ করতে পারে এমন একটি বিকল্প রয়েছে । তবে এটি সম্ভবত আপনার সংকলন প্রক্রিয়াটি নাটকীয়ভাবে কমিয়ে দেবে।

আপনার পাইতে জেডআরএএম সেটআপ করা দরকার। মূলত এটি আপনাকে আরও ব্যবহারের অনুমতি দেওয়ার জন্য ব্যবহৃত র‌্যামকে সংকুচিত করে, তবে আরও সিপিইউ ব্যবহারের ব্যয় করে।

আমরা এখানে নির্দেশাবলী অনুসরণ করব তবে আমি এগুলিকে সহজে দেখার জন্য পোস্টে রাখব।

সুতরাং প্রথমে আপনাকে রুট হওয়া দরকার কারণ এই কমান্ডগুলির প্রচুর শিকড়ের প্রয়োজন:

sudo su

তারপরে, /etc/init.d/zramনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল কল করুন :

#!/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

আপনি যদি চান পাই উপর এটি পেতে একটি সহজ উপায়: sudo wget http://vps1.berboe.co.uk/zram.sh -O /etc/init.d/zram

তারপরে, আপনার স্ক্রিপ্টটি স্টার্ট-এ-বুট তালিকায় যুক্ত করে যুক্ত করুন:

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

তারপরে পুনরায় বুট করুন এবং এটি সমস্ত কাজ করা উচিত।

পুনরায় বুট করার পরে, এই কমান্ডটি প্রয়োগ করুন: swapon -s। আউটপুটটি কিছুটা এরকম হওয়া উচিত:

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

এখন, জেডআরাম ইনস্টল করা আছে এবং যদি আপনি কাজ করার আগে আপনি যেমনটি করেছিলেন তেমন সংকলন করার চেষ্টা করেন।


এই পরামর্শের জন্য ধন্যবাদ! আমি আপাতত জ্রাম ব্যবহার না করে কেবল অতিরিক্ত সোয়াপ স্পেস যুক্ত করেছি। এখনই সংকলন চালিয়ে যাওয়ার চেষ্টা করছি।
ডের হচস্টাপলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.