'Articles'에 해당되는 글 116건

  1. 2014/04/23 용비 Cygwin에서 rocksdb 빌드하기
  2. 2014/04/22 용비 Install gcc 4.7+ in CentOS
  3. 2014/04/04 용비 Linux Max User Process 변경
  4. 2014/03/25 용비 Linux 비밀번호 변경시 BAD PASSWORD
  5. 2014/02/26 용비 Infinispan NAT IP 설정
1. gflags 설치
wget https://gflags.googlecode.com/files/gflags-2.0-no-svn-files.tar.gz
tar -xzvf gflags-
2.0-no-svn-files.tar.gz
cd gflags-2.0
./configure && make && sudo make install
2. snappy 설치
wget https://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
tar -xzvf snappy-1.1.1.tar.gz
cd snappy-1.1.1
./configure && make && sudo make install
3. apt-cyg 설치 (Cygwin Console에서 수행:yum이나 apt-get과 비슷한 기능)
svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/
chmod +x /bin/apt-cyg
4. zlib 설치
apt-cyg install zlib
apt-cyg install zlib-devel
5. bzip2 설치
apt-cyg install bzip2
apt-cyg install bzip2-devel
6. rocksdb 설치
6.1. rocksdb 소스 다운로드
https://
github.com/facebook/rocksdb 에서 zip파일 다운로드 후
c:\cygwin\home\user계정 폴더로 옮김
Cygwin Console에서 압축 해제
unzip rocksdb_master.zip
6.2. build_detect_platform 수정
cd rocksdb_master
cd build_tools
vi build_detect_platform
아래 항목을 찾아서 다음과 같이 변경
PLATFORM_CXXFLAGS="-std=c++11" => PLATFORM_CXXFLAGS="-std=gnu++11"
case "$TARGET_OS"  in 을 찾아서 아래 항목 추가
CYGWIN_*)
PLATFORM=OS_LINUX
COMMON_FLAGS="$COMMON_FLAGS $MEMCMP_FLAG -lpthread -DOS_CYGWIN"
PLATFORM_LDFLAGS="-lpthread"
PORT_FILE=port/port_posix.cc
;;
6.3. Makefile 수정
아래 항목을 찾아서 수정
WARNING_FLAGS = -Wall -Werror => WARNING_FLAGS = -Wall
6.4. include/rocksdb/slice.h 파일에 다음 내용 추가
#include <cstdio>
6.5. include/rocksdb/status.h 파일에 다음 내용 추가
#include <sstream>
#include <cstdlib>
#if defined(OS_CYGWIN)
namespace std {
template <class Tdigit>
string to_string(Tdigit value)
{
stringstream stream;  
stream << value;  
return stream.str();  
}  
inline int stoi(const string& str)  
{  
return ::atoi(str.c_str());  
}  
}  
#endif
6.6.port/port_posix.h 파일 수정
#if defined(OS_MACOSX) || defined(OS_SOLARIS) || defined(OS_FREEBSD) ||\  
    defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(OS_DRAGONFLYBSD) ||\  
    defined(OS_ANDROID) || defined(OS_CYGWIN)  
// Use fread/fwrite/fflush on platforms without _unlocked variants  
#define fread_unlocked fread  
#define fwrite_unlocked fwrite  
#define fflush_unlocked fflush  
#endif
6.7. util/env_posix.cc 파일 수정
assert 주석 처리
public:  
  PosixRandomAccessFile(const std::string& fname, int fd,  
                        const EnvOptions& options)  
      : filename_(fname), fd_(fd), use_os_buffer_(options.use_os_buffer) {  
    //assert(!options.use_mmap_reads);  
  }
defined(OS_CYGWIN) 추가

  virtual uint64_t NowNanos() {
#ifdef OS_LINUX || OS_CYGWIN
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return static_cast<uint64_t>(ts.tv_sec) * 1000000000 + ts.tv_nsec;
#elif __MACH__
    clock_serv_t cclock;
    mach_timespec_t ts;
    host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
    clock_get_time(cclock, &ts);
    mach_port_deallocate(mach_task_self(), cclock);
#endif
    return static_cast<uint64_t>(ts.tv_sec) * 1000000000 + ts.tv_nsec;
  }
6.8. Compile시 Error
./util/log_buffer.h에서 timeval now_tv 변수에 대한 오류가 발생할 경우
./util/log_buffer.h 파일에 #include <sys/time.h> 추가
snappy, gflags library Error like next
/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld: cannot find -lsnappy /usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld: cannot find -lgflags collect2: error: ld returned 1 exit status Makefile:251: recipe for target 'db_bench' failed make: *** [db_bench] Error 1
case "$TARGET_OS" in 의 CYGWIN_*) 부분에서 다음 항목 추가
 PLATFORM_LDFLAGS="-lpthread -L/usr/local/lib"
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/590

Install gcc 4.7+ in CentOS

Articles 2014/04/22 22:41 용비
You could simply use his repo and install just gcc, instantly.
1. gcc 4.7 Install

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo
yum --enablerepo=testing-1.1-devtools-6 install devtoolset-1.1-gcc devtoolset-1.1-gcc-c++

2. Edit Bash File

export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc  
export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp
export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++

3. gcc 4.8 Install

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
yum --enablerepo=testing-devtools-2-centos-6 install devtoolset-2-gcc devtoolset-2-gcc-c++



받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/589

Linux Max User Process 변경

Articles 2014/04/04 11:43 용비
Linux 시스템에서 사용자별로 기본적으로 실행할 수 있는 Process는 1024개이다.

조회하는 방법
ulimit -a

이것을 다음과 같은 방법으로 변경할 수 있다.

1. /etc/security/limits.conf 수정
   [user_name] [soft | hard] nproc [value]

2. /etc/profile 수정
   vi /etc/profile
   ulimit -u [value] 추가 후 저장
   source /etc/profile

   만약 root 계정에서 수정한 후,
   다른 계정에서 적용하려면 적용하려는 계정으로 로그인 후, source /etc/profile 한번 더 실행

3. .bash_profile 수정
   vi .bash_profile
   ulimit -u [value] 추가 후 저장
   source .bash_profile


받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/588

리눅스를 사용하여 사용자 계정을 추가하고 간단한 비밀번호를 입력할 경우,
BAD PASSWORD : is too simple이라는 메시지가 뜨면서 new password를 입력하라는 메세지가 뜨는 경우가 있다.

그럴 때는 root 계정에서 다음 파일을 수정하면 된다.

1. Password 정책 파일 오픈
vi /etc/pam.d/system-auth

2. 다음 항목을 찾음
password    requisite     pam_cracklib.so try_first_pass retry=3 password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok

3. 주석 처리
#password    requisite     pam_cracklib.so try_first_pass retry=3

4. use_authtok 삭제
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/587

Infinispan NAT IP 설정

Articles 2014/02/26 16:03 용비
Infinispan에서는 JGroup이 Clustering을 담당하고 있다.

최근 Cloudstack 기반 VM에서 Infinispan Clustering을 진행하는 도중에
서로 다른 망 (DMZ, IS)에 존재하는 VM간 Clustering을 묶기 위해서 여러 모양으로 테스트를 진행했다.

우선 서로 다른 망간의 Clustering은 JGroup에서 제공하는 RELAY2를 사용하여 Data Replication을 처리할 수 있다. 즉, 데이터 센터 간의 Backup이 필요할 경우에 RELAY2를 이용하면 된다.

그러나 한가지....
Cloudstack 기반 VM에서는 UDP가 안되고, TCP Unicast를 써야 한다.
그런데 TCPPING을 통해 Clustering으로 묶어야 할 상대방을 찾지 못하는 문제가 발생했다.

이유는....
JGroup에서 NAT IP를 식별하지 못하기 때문...
문제는 이게 언제 해결될지 알 수 없다는 점이다.

현재 JGroup이 3.4 버전인데.. 4.0에서 해결되려나...
JGroup 소스를 많이 변경해야 하기 때문에 당장은 적용이 어렵다고 하는 것 같다.

하지만, 갈수록 Cloud 인프라를 사용하는 추세인데 얼른 지원해야 하지 않을까..?
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/585