Use “nc” command.

(ex)  $ nc -k -l 1818 > output.file

  1. See the command argument of nimbus (or supervisor)

     
  2. Search storm.log.dir in the command argument


Error Msg

Cause

  • There are a lot of causes of this situation. In my case, this was because of absence of hostname of kafka server at client side.

Solution

  • Added hostname of kafka server to the client machine. Suppose that the ip and hostname of kafka server are 111.111.111.111 and “kafkaserver”. I used Mac OSX client so I added this information to /private/etc/hosts file. You can easily find the location of host name management file in your OS.


Memory allocation mechanisms in AIX


AIX는 기본적으로 Yorktown 기법으로 memory allocation 이 이루어지며, Watson이나 Malloc 3.1 방법으로도 변경이 가능하다.
각각의 Memory allocation사용방법은 다음과 같다.

  • export MALLOCTYPE=Yorktown
  • export MALLOCTYPE=Watson
  • export MALLOCTYPE=3.1
  • export MALLOCTYPE=3.1_64BIT

Yorktown

Yorktown 은 메모리를 Cartesian binary search tree로 힙 노드들을 관리한다. 

사용시기
  • 대부분의 케이스에서 널리 사용되는 안정적인 방법.
  • 다양한 size 가 기입된 tree로 관리되기 때문에 block size 에 제약이 없음

Yorktown Allocation algorithm
  • free tree에 있는 주소값이 낮은 node(크기는 요청한 사이즈와 같거나 크다)가 삭제 된다. 만약 요청크기보다 큰 경우 두 조각으로 나뉘어 반환된다.

Yorktown free algorithm
  • free tree에 해당 free node를 삽입한다. 삽입시 표준 root insertion algorithm을 따른다. 만약 인접한 메모리영역이 발견된 경우 하나의 노드로 합쳐진다. 이부분은 메모리 파편화를 예방한다.

Yorktown reallocation algorithm
  • 재할당 사이즈가 기존보다 큰 경우, 해당 node는 free tree로 반환되며, 요청된 새로운 크기의 노드로 할당된다. 할당된 새로운 노드에 이전 노드의 데이터들이 옮겨져 반환된다. 이전 블록은 해지되며 더이상 사용가능하지 않다. 만약 재할당 사이즈가 기존보다 작은 경우 노드는 두 조각으로 나뉘며 남는 조각은 free tree로 반환된다.


Watson

Watson 할당 정책은 두개의 분리된 red-black tree(address로 정렬 / size로 정렬)로 관리한다.

사용시기
  • Watson은 red-black tree를 사용하므로, 삽입이나 탐색이 다른 정책에 비해 효과적이다.

Watson Allocation algorithm
  • Yorktown과 비슷하게 요청한 크기와 비슷한 가장 작은 블럭을 탐색한다. 요청한 크기와 일치하는 블럭을 찾은경우 size, address tree에서 제거되며 반환된다. 만약 요청한 사이즈가 발견되지 않으면, sbrk() system call을 호출하여 힙을 확장하며 확장된 블록이 size와 address tree로 삽입된다. 그리고 이전단계의 탐색을 반복한다.

Watson free algorithm
  •  해지할 노드는 먼저 adress tree의 루트에 리턴되며 인접한 노드가 있는지 찾는다. 인접한 노드가 있는경우 하나로 합쳐진다. 

Watson reallocation algorithm
  • 재할당 블럭 크기가 기존보다 큰 경우, 기존 노드는 free tree로 반환되어 인접한 노드가 있는경우 합쳐진다. 요청한 사이즈의 새로운 블럭이 할당되며, 데이터가 기존노드로부터 이동되어 반환된다. 만약 재할당 블럭 크기가 기존보다 작은 경우 블록이 나뉘며 남은 블럭은 free tree로 반환된다. 


malloc 3.1

malloc 3.1에서는 hash bucket으로 관리되며 각각의 bucket포인트에서는 연결리스트로 특정 사이즈의 노드나 블록이 포함된다. 특정 bucket에는 특정 사이즈의 블록이 있다. ( size = 2 ^ (i + 4) ) 

malloc 3.1 allocation algorithm
  • 요청한 사이즈를 보고 bucket 번호가 결정된다. 해당 bucket 번호에 노드들이 없으면 sbrk()를 이용하여 새로운 블록을 집어넣는다. 만약 free list에 노드가 있는 경우 해당 노드가 반환되며 그 다음 노드가 bucket의 list head가 된다.

malloc 3.1 free allocation
  • 메모리 블록이 free pool 로 넘겨질때, 기존에 할당되었던 방법으로 bucket index를 계산하여 해당 버켓의 free list 의 head에 삽입한다.

malloc 3.1 reallocation algorithm
  • 재할당시 재할당 사이즈가 기존보다 커지더라도 해당 블록안에 들어갈 수 있는지 판단한다. 해당 블록 안에서 충족할 수 있는 경우 그 블록이 다시 리턴되며, 큰 사이즈의 블록이 필요한 경우 해당 블록은 해지 되며 새로운 버켓에서 생성한 블록이 데이터 이관 이후 리턴된다.

malloc 3.1 limitations
  • malloc 3.1 은 기본 정책인 Yorktown 보다 효율적이지 못하며 대부분의 상황에서 권장하지 않는다. 고정된 블록사이즈로 인하여 매 블록마다 우리가 원하는 사이즈보다 더 많은 메모리를 할당해야 한다. 
  • 때때로 특정 어플리케이션에서는 malloc 3.1 할당 정책에 따른 사이드 이펙트에 영향을 받기도 한다. 예를들어 특정 요청 사이즈보다 더 쓰는 경우 malloc 3.1에서는 정상적으로 동작하던 코드가(물론 메모리를 잘못 사용하는 것이지만) 다른 할당 정책에서는 실패한다.
  • reallocation 시 데이터 이동을 최소화 하기위해 malloc 3.1을 사용하기도 한다.


Malloc 부가 옵션들

부가 옵션들은 다음과 같이 사용하면 된다.

Malloc multiheap
  • 기본적으로 malloc 은 전체 프로세스 heap을 하나의 속성으로 간주한다. multi thread 환경에서는 각 멀티 스레드가 같은 heap 을 접근하게 된다. 이 경우 single heap은 thread lock 으로 인하여 매우 비효율적이다. 이런 케이스의 경우 malloc multiheap 옵션이 유용하다.
  • export MALLOCOPTIONS=[multiheap:n] | [considersize]
    • multiheap:n : n에는 1 ~ 32의 숫자를 사용할 수 있다. 사용할 힙의 개수를 정의한다.
    • considersize : 기본적으로 multiheap은 사용가능한 다음 heap을 선택하는데, considersize가 활성화된 경우 해당 요청을 처리할만큼 충분한 여유공간이 있는 heap을 선정한다.
    • ex) export MALLOCOPTIONS=multiheap:3,considersize
  • limitations
    • 여러개의 heap을 사용하므로 메모리 파편화를 야기하며, 메모리 부족 현상이 발생할 수도 있다.
    • considersize는 부가적인 처리시간을 필요로 하기 때문에 특정 상황에서는 느려질 수 있다.
    • multiheap옵션은 malloc 3.1 이나 사용자가 정의한 할당 정책에서는 사용할 수 없다.

Pool allocation
  • 메모리 크기가 512 byte 와 같거나 작은 경우 AIX는 효율적으로 malloc의 frontend 와 backend를 제어하는 기능을 제공한다. Pool allocation은 각 스레드마다 고유의 malloc pool을 생성하여 스레드들 간의 malloc locking 현상을 방지한다. 현재 한 프로세스당 설정할 수 있는pool 의 최대 크기는 512MB이다.
  • Pool allocation은 한 쓰레드에서 메모리를 할당하고 다른 스레드들이 해지하는 경우 효과적이지 않다.
  • Pool 개수는 max_size에 따라 결정된다. 32bit에서는 128개의 풀을 가질 수 있는 하나의 머신에서는 64bit에서 64개의 풀을 가질 수 있다.
  • export MALLOCOPTIONS=pool<:max_size>

Malloc buckets
  • Malloc bucket은 Yorktown 할당 정책의 확장 기능이다. 만약 작은 메모리 할당 요청이 굉장히 많은 어플리케이션의 경우 malloc bucket이 더 일반적으로 사용된다. Yorktown 모드에서만 동작한다.
  • 512 byte 이하의 요청에 대해서만 bucket allocator에 의해 서비스되며, 더 큰 경우 Yorktown malloc 으로 넘긴다.
  • export MALLOCOPTIONS=buckets,number_of_buckets:n





AIX: Throughput problems when malloc is called often

최근 고객 사이트에서 MALLOCOPTION=multiheap  환경변수를 재설정하는것 만으로 50% 성능 향상을 이뤄냈다. 무겁고, 동시다발적으로 일어나는 malloc 상황에서만 적용가능하겠지만 대부분의 WAS/Java 를 보면 특별한 케이스가 아니다. 
multiheap 옵션은 가상/물리적 메모리를 증가시키는 만큼 비용이 있다. 각 힙의 free tree가 독립적이기 때문에 파편화가 더 자주 발생한다. 아래에서 오버헤드에 대한 추가적인 설명을 볼 수 있다.

malloc 은 이따금 어플리케이션 성능(특히 AIX에서)의 병목이 된다.  기본적으로 AIX는 하나의 힙을 사용하기 때문에 멀티 쓰레드 어플리케이션에서 malloc lock 상황이 자주 발생한다. multiheap 옵션을 사용함으로서 allocator가 여러 힙들을 병렬로 사용할 수 있다. 

이 옵션이 영향을 미치는지 어떻게 알 수 있는가? 쉽지만은 않다.

pthread library나 kernel locking, routine에서의 실행시간의 집중현상은 locking 이슈와 관련이 있다. locking 현상은 결국 시스템 레벨이나(AIX 의 malloc locking issue같은) Java code의 어플리케이션 레벨(Java code 내 synchronized block이나 method)로 올라온다. Locking 이슈의 근원은 프로파일을 보는것 만으로는 즉시 나타나지 않는다. 예를들어, AIX malloc loking 이슈의 경우 malloc과 free routine에 의해 사용된 시간은 커널 locking 루틴에서의 시간 소비가 대부분인 경우 ​매우 적을 수 있다. 

그럼에도 불구하고 아래는 이 문제를 보여주는 tprof의 한 예이다. 실행은 아래와 같이 하였다.
  • tprof -ujeskzl -A -I -X -E -r report -x sleep 60

Process                          FREQ  Total Kernel   User Shared  Other   Java
=======                          ====  ===== ======   ==== ======  =====   ====
/usr/java5/jre/bin/java           174  22557  11850      0   7473     86   3148

Shared Object                                  Ticks    %    Address  Bytes
=============                                  ===== ======  =======  =====
/usr/lib/libc.a[shr_64.o]                       3037   9.93 900000000000d00 331774
/usr/lib/libpthread.a[shr_xpg5_64.o]            1894   6.19 9000000007fe200  319a8

  Total Ticks For All Processes (KERNEL) = 15045
Subroutine                 Ticks    %   Source                Address  Bytes
==========                 ===== ====== ======                =======  =====
._check_lock                2103   6.88 low.s                    3420     40

  Total Ticks For All Processes (/usr/lib/libc.a[shr_64.o]) = 3037
Subroutine                 Ticks    %   Source                Address  Bytes
==========                 ===== ====== ======                =======  =====
.malloc_y                    856   2.80 ../../../../../../../src/bos/usr/ccs/lib/libc/malloc_y.c    41420    840
.free_y                      669   2.19 ../../../../../../../src/bos/usr/ccs/lib/libc/malloc_y.c    3f980    9a0

  Total Ticks For All Processes (/usr/lib/libpthread.a[shr_xpg5_64.o]) = 1894

Subroutine                 Ticks    %   Source                Address  Bytes
==========                 ===== ====== ======                =======  =====
.global_unlock_ppc_mp        634   2.07 pth_locks_ppc_mp.s      2d714     6c
._global_lock_common         552   1.81 ../../../../../../../../src/bos/usr/ccs/lib/libpthreads/pth_spinlock.c     2180    5e0
.global_lock_ppc_mp_eh       321   1.05 pth_locks_ppc_mp_eh.s    2d694     6c

위의 상황에서 키포인트는 다음과 같다.
  • Process 섹션에서 Kernel 시간이 매우 높다 (Total 시간의 거의 반).  
  • Shared Object 에서 libc와 libpthread 수치가 높다.
  • KERNEL 색션에서 ._check_lock 수치가  높다.
  • libc.a 섹션에서 .malloc_y와 .free_y 수치가 높다.
  • libpthread.a 섹션에서 .global_unlock_ppc_mp와 다른 비슷한 이름의 함수들의 수치가 높다.

AIX에서는 유용한 다른 Allocator 정책과 옵션을 제공한다.

Pool malloc
  • malloc system 의 frontend 격인 pool은 512byte나 그 이하의 메모리 블록 할당을 최적화한다.
  • 일반적으로 애플리케이션은 작은 메모리 블록들을 많이 할당하며, pool을 사용하게 되면 할당 패턴에 비추어 보았을때 일반적으로 시공간적 효율성이 높다.
  • pool malloc 방식은 단일/멀티 스레드 모두 좋은 선택이 될 수 있다. pool 과 multi heap을 조합하는 경우 멀티 스레드 애플리케이션의 충분한 대체제로 사용할 수 있다. 굉장히 일반적인 작은 메모리 블록 할당은 pool을 통해서 굉장히 효율적으로 관리된다. 더 큰 할당들은 multiheap malloc으로 확장성이 용이하게 관리된다. 아래의 설정으로 두 옵션을 복합적으로 사용할 수 있다.
    • export MALLOCOPTIONS=pool,multiheap

Buckets
  • 이 세부 옵션은 Watson allocator의 버킷 allocator 버전이라 할 수 있다. 그러나 이 옵션으로 bucket 수(버킷당 블럭수, 각 버킷 사이즈)를 조절할 수 있다. 이 옵션은 또한 각 버킷의 사용 통계를 볼 수 있는 방법을 제시하는데, 버킷 설정을 최적화 하는데 도움이 된다. 애필르케이션에서 특정 사이즈의 메모리할당 요청이 많이 발생한 경우 bucket allocator는 bucket옵션을 정확하게 기술함으로서 미리 요구한 크기를 할당하도록 설정할 수 있다. Watson 이나 malloc pool 옵션과 비교되는 점은, 512 바이트 미만이어야 한다. 

결론

  • 32bit 단일 스래드 어플리케이션의 경우 기본 할당자를 사용한다.
  • 64bit 어플리케이션의 경우 Watson allocator를 사용한다.
  • 멀티 쓰레드 어플리케이션의 경우 multi-heap을 사용한다. 힙 개수는 사용한 스레드 개수만큼 설정한다.
  • 513 바이트 미만의 작은 블럭에 대한 잦은 할당/해제가 발생하는 프로그램의 경우 malloc pool 옵션을 사용한다.
  • 특정 크기의 메모리 블록이 빈번하게 사용되고, 그 크기가 512바이트보다 크다면 malloc bucket 옵션을 설정한다.
  • 고성능을 요하며 메모리 파편화 이슈가 없는 오래된 어플리케이션의 경우 malloc 3.1을 사용한다.
  • 이상적으로 multiheap과 malloc pool option을 사용한 Watson allocator가 대부분의 multi-thread 어플리케이션에 좋다. front end에서 사용되는 pool 은 빠르며, multiheap은 크거나 작은 할당에 대한 확장성이 용이하게 한다. 
  • free이후에도 특정 어플리케이션의 메모리 사용량이 높은경우 disclaim 옵션이 도움이 된다. (export MALLOCDISCLAME=true)




참조



번역에 오류나 수정사항이 필요한 경우 덧글로 요청 바랍니다.



Introduction


기존 SSH 로그인 방식이 SSH 공격(예를들면 무작위 아이디와 비번으로 여러번 접속시도)에 취약하기때문에 나온 방식으로, key 파일이 되는 것을 생성한 후 접속 client 와 접속할 server에 두고 이를 이용하여 SSH를 접속하는 방식이다.

How to


0. 환경설정

a. 우선 ssh 명령이 먹어야 한다. OpenSSH 가 깔려있는지 확인해본다.
b. public key 를 설정한 후에는 SSH를 통한 로그인 부분은 전부 막아놔야 한다.



1. 키 생성 (클라이언트에서 해야할 일)

client$  mkdir ~/.ssh
client$  chmod 700 ~/.ssh
client$  ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase):  
Enter same passphrase again:
client$  chmod go-w ~/
client$  chmod 700 ~/.ssh
cilent$  chmod go-rwx ~/.ssh/*

공식 사이트에서는 passphrase는 16글자 이상을 권고하고 있지만, 빈칸을 넣는 경우 암호없이 바로 접근할 수 있어서 편하다. 혹시 다른곳에서 키를 암호없이 생성해서 접근가능하지 않을까하는 걱정이 생길수도 있는데, 같은 서버내의 다른계정, 다른 서버내에서 같은계정으로 테스트해보았지만 접속이 되지 않았다. 즉, 암호없이 써도 안전하다. 게다가 암호를 넣게되면 나중에 추가적으로 해야할 귀찮은 일들이 있기 때문에 여기서는 암호없이 쓰는 것만 기술한다.



2. 키 설정 (서버에 해야할 일)

이제 클라이언트에서 생성한 키를 서버에 등록하는 과정이 남았다. 우선 key.pub 를 scp 를 통하여 서버의 자신의 계정에 복사해 둔다. yourid 는 서버내의 자신의 계정이다. 폴더는 자신의 홈폴더(기본적으로 /home/yourid)를 지정하면 된다.

client$  scp ~/.ssh/id_rsa.pub yourid@server.example.com:/home/yourid/

이제 서버에서 해당 key파일을 권한 인식 부분에 붙여넣어야 한다. 이때 cat >> 연산을 이용해서 authorized_keys 에 append 하게 되는데, 이를 통해 여러 클라이언트에서 생성한 키를 한곳에서 관리하게 된다.

server$  mkdir ~/.ssh
server$  chmod 700 ~/.ssh
server$  chmod g-w $HOME
server$  cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$  chmod 600 ~/.ssh/authorized_keys
server$  rm ~/id_rsa.pub

이제 접속 테스트를 해보자. 암호를 묻지 않고 바로 받아온다. ㅋㅋ 이외에도 프로그램중에 ssh 계정접속을 필요로 하는 프로그램들은 모두 암호를 묻지않게 된다. (대환영 ㅋㅋ)

client$  ssh yourid@server.example.com

Tip. 현재 설정한 .ssh 디렉토리를 다른 클라이언트의 디렉토리에 복사해도 다른 클라이언트에서 서버로 SSH 접속이 가능하다. 그래도 보안상 하는 것이므로 이왕이면 한개의 키로 모든 클라이언트에게 돌리는것 보단 귀찮더라도 각 클라이언트당 하나씩 키를 만들어 등록해 사용하길 바란다.

이로서 key 를 통한 ssh 접속설정 및 테스트를 해보았다. 간편한 접속과 좀 더 강화된 서버관리는 이를 사용하는 충분한 메리트가 되지 않을까 싶다. 집에 있는 서버에도 적용을 시켜야 겠다. ㅋ



Related Site



Issues

 

Issue
No firewall, no port used, but changing port to 9906 didn’t work. I’m on CentOS 5.9

 

Solution

 

Installation

 

  1. Check the firewalls among servers. ( Recommended to open all ports among servers )
  2. Create same account( TEST_ACCOUNT ) to all servers.
  3. Create public key of TEST_ACCOUNT for each server. ( ssh-keygen )
  4. Authorize public key of TEST_ACCOUNT in master server to each slave server TEST_ACCOUNT so that master account can access each slave servers through ssh( FILE : $HOME/.ssh/authorized_keys ). Make sure the value of chmod of authorized_keys file is “0×600″ or it  doesn’t work.
  5. Copy hadoop-1.2.1 to the same directory of each server.
  6. Modify  $HADOOP/conf/masters & $HADOOP/conf/slaves to add master and slave servers. Copying modified file to each server is recommended.
    1. SAMPLE : masters

       
    2. SAMPLE : slaves

       
  7. Modify /etc/hosts to recognize hostname of each servers(sudo is needed.). Recommended to use same content among servers. I used hostname like “hadoop-master1″ or “hadoop-slave3″.
    1. SAMPLE : /etc/hosts

       
  8. Configure hadoop setting for each server.
  9. Run Format($HADOOP/bin/hadoop name node -format) and Start($HADOOP/bin/start-all.sh) at master server.

 

 

Tips

 

Format script

I used two masters with two mounted directories ( /data1 & /data2 ) and five slaves with three mounted directories( /data1 & /data2 & /data3 ). You can change the directory of your own. Locate this script to $HADOOP/bin

 

 

Trouble-shootings

 

1. Unregistered data node

  • This exception occurred because of different content of $HADOOP/conf/masters and $HADOOP/conf/slaves among servers.

 

2. ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using ‘localhost’…

  • This issue is because the server has localhost in “/etc/hosts” or “/etc/HOSTNAME” or “rc.conf”. There’re several ways to resolve this issues and I choose “removing a line which includes localhost” in hostname file.

 

3. Bad connect ack with firstBadLink as xxx.xxx.xxx:50010

  • There are several reasons to cause this issue. In my case, I turned off the firewall ( for example “/etc/init.d/iptable stop” ) to resolve this issue (!!Not recommended because turning off the firewall is dangerous for servers which can be accessed from outside. Refer the following site to add IPs and PORTs to the firewall rule. – http://blog.cloudera.com/blog/2009/08/hadoop-default-ports-quick-reference/ )

 

서버 사양 : Ubuntu 10.04 LTS 512MB HDD 20GB


아래의 command는 root 에서 실행하였음


1. nginx / mysql / php-fpm


$ aptitude install python-software-properties

$ add-apt-repository ppa:brianmercer/php

$ apt-get update

W: GPG 오류: http://ppa.launchpad.net lucid Release: 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY A42227CB8D0DC64F

$ gpg --keyserver keyserver.ubuntu.com --recv A42227CB8D0DC64F

$ gpg --export --armor A42227CB8D0DC64F | apt-key add -

$ apt-get update

$ apt-get upgrade

$ aptitude -y update

$ aptitude -y install php5-cli php5-common php5-mysql php5-suhosin php5-gd

$ apt-get install nginx

$ service nginx start

$ apt-get install mysql-server php5-mysql mysql-client

..... mysql 계정설정

$ aptitude -y install php5-fpm php5-cgi php-pear php5-memcache php-apc

$ service php5-fpm start

$ vi /etc/php5/fpm/php5-fpm.conf

pm = dynamic

pm.max_children = 8

pm.start_servers = 2

pm.min_spare_servers = 2

pm.max_spare_servers = 3

pm.max_requests = 500

$ service php5-fpm restart



아래의 명령어로 해당 파일을 지우고 재부팅하면 자동으로 새로 설정한 MacAddress의 network 장비를 eth0으로 인식하고 잘 동작하게 된다.


$ rm /etc/udev/rules.d/70-persistent-net.rules


Nitrous.io 환경 설정에 대한 내용을 정보 제공겸 기록으로 남겨둔다.


MySQL 설치


$ parts install mysql

=> Extracting archive...

=> Installing...

Installing MySQL system tables...2013-11-04 02:32:57 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2013-11-04 02:32:57 1764 [Warning] Buffered warning: Changed limits: max_open_files: 512 (requested 5000) 


2013-11-04 02:32:57 1764 [Warning] Buffered warning: Changed limits: table_cache: 400 (requested 2000)


2013-11-04 02:32:57 1764 [Note] InnoDB: The InnoDB memory heap is disabled

2013-11-04 02:32:57 1764 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2013-11-04 02:32:57 1764 [Note] InnoDB: Compressed tables use zlib 1.2.3

2013-11-04 02:32:57 1764 [Note] InnoDB: Using CPU crc32 instructions

2013-11-04 02:32:57 1764 [Note] InnoDB: Initializing buffer pool, size = 128.0M 

2013-11-04 02:32:57 1764 [Note] InnoDB: Completed initialization of buffer pool 

2013-11-04 02:32:57 1764 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!

2013-11-04 02:32:57 1764 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB

2013-11-04 02:32:57 1764 [Note] InnoDB: Database physically writes the file full: wait... 

2013-11-04 02:32:58 1764 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB

2013-11-04 02:32:59 1764 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB

2013-11-04 02:33:00 1764 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0

2013-11-04 02:33:00 1764 [Warning] InnoDB: New log files created, LSN=45781 

2013-11-04 02:33:00 1764 [Note] InnoDB: Doublewrite buffer not found: creating new

2013-11-04 02:33:00 1764 [Note] InnoDB: Doublewrite buffer created

2013-11-04 02:33:00 1764 [Note] InnoDB: 128 rollback segment(s) are active. 

2013-11-04 02:33:00 1764 [Warning] InnoDB: Creating foreign key constraint system tables. 

2013-11-04 02:33:00 1764 [Note] InnoDB: Foreign key constraint system tables created

2013-11-04 02:33:00 1764 [Note] InnoDB: Creating tablespace and datafile system tables. 

2013-11-04 02:33:00 1764 [Note] InnoDB: Tablespace and datafile system tables created.

2013-11-04 02:33:00 1764 [Note] InnoDB: Waiting for purge to start

2013-11-04 02:33:00 1764 [Note] InnoDB: 5.6.13 started; log sequence number 0 

2013-11-04 02:33:00 1764 [Note] RSA private key file not found: /home/action/.parts/var/mysql//private_key.pem. Some authentication plugins will not work.

2013-11-04 02:33:00 1764 [Note] RSA public key file not found: /home/action/.parts/var/mysql//public_key.pem. Some authentication plugins will not work.

2013-11-04 02:33:01 1764 [Note] Binlog end

2013-11-04 02:33:01 1764 [Note] InnoDB: FTS optimize thread exiting.

2013-11-04 02:33:01 1764 [Note] InnoDB: Starting shutdown...

2013-11-04 02:33:04 1788 [Note] InnoDB: Shutdown completed; log sequence number 1625987 

OK


To start mysqld at boot time you have to copy 

support-files/mysql.server to the right place for your system 


PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! 

To do so, start the server, then issue the following commands:


/home/action/.parts/packages/mysql/5.6.13/bin/mysqladmin -u root password 'new-password'

/home/action/.parts/packages/mysql/5.6.13/bin/mysqladmin -u root -h python-server-45451 password 'new-password' 


Alternatively you can run:


/home/action/.parts/packages/mysql/5.6.13/bin/mysql_secure_installation 


which will also give you the option of removing the test

databases and anonymous user created by default.This is 

strongly recommended for production servers.


See the manual for more instructions. 


You can start the MySQL daemon with:


cd . ; /home/action/.parts/packages/mysql/5.6.13/bin/mysqld_safe &


You can test the MySQL daemon with mysql-test-run.pl


cd mysql-test ; perl mysql-test-run.pl


Please report any problems with the ./bin/mysqlbug script!


The latest information about MySQL is available on the web at 


http://www.mysql.com


Support MySQL by buying support/licenses at http://shop.mysql.com 


New default config file was created as /home/action/.parts/packages/mysql/5.6.13/my.cnf and 

will be used by default by the server when you start it.

You may edit this file to change server settings



=> Symlinking...

=> Installed mysql 5.6.13 

To start the server:

$ parts start mysql 


To stop the server: 

$ parts stop mysql


To connect to the server: 

$ mysql


Update apt-get update serverlist



Path : /etc/apt/sources.list


Following is for the hostple.net Service User.

eb http://ftp.daum.net//ubuntu/ lucid main restricted

deb-src http://ftp.daum.net//ubuntu/ lucid main restricted

## Major bug fix updates produced after the final release of the

## distribution.

deb http://ftp.daum.net//ubuntu/ lucid-updates main restricted

deb-src http://ftp.daum.net//ubuntu/ lucid-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## universe WILL NOT receive any review or updates from the Ubuntu security

## team.

deb http://ftp.daum.net//ubuntu/ lucid universe

deb-src http://ftp.daum.net//ubuntu/ lucid universe

deb http://ftp.daum.net//ubuntu/ lucid-updates universe

deb-src http://ftp.daum.net//ubuntu/ lucid-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## multiverse WILL NOT receive any review or updates from the Ubuntu

## security team.

deb http://ftp.daum.net//ubuntu/ lucid multiverse

deb-src http://ftp.daum.net//ubuntu/ lucid multiverse

deb http://ftp.daum.net//ubuntu/ lucid-updates multiverse

deb-src http://ftp.daum.net//ubuntu/ lucid-updates multiverse

## Uncomment the following two lines to add software from the \'backports\'

## repository.

## N.B. software from this repository may not have been tested as

## extensively as that contained in the main release, although it includes

## newer versions of some applications which may provide useful features.

## Also, please note that software in backports WILL NOT receive any review

## or updates from the Ubuntu security team.

# deb http://ftp.daum.net/ubuntu/ lucid-backports main restricted universe multiverse

# deb-src http://ftp.daum.net/ubuntu/ lucid-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical\'s

## \'partner\' repository. This software is not part of Ubuntu, but is

## offered by Canonical and the respective vendors as a service to Ubuntu

## users.

# deb http://archive.canonical.com/ubuntu lucid partner

# deb-src http://archive.canonical.com/ubuntu lucid partner

deb http://security.ubuntu.com/ubuntu lucid-security main restricted

deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted

deb http://security.ubuntu.com/ubuntu lucid-security universe

deb-src http://security.ubuntu.com/ubuntu lucid-security universe

deb http://security.ubuntu.com/ubuntu lucid-security multiverse

deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse


After modifying sources.list file, execute "apt-get update"






Set date & time of ubuntu server


$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime






Create backup/restore script and register backup schedules to cron



Backup Script

#!/bin/bash

cd /

export Today="finsternis.me-`date '+%Y-%m-%d'`"

tar cvpzf /backup/$Today.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup --exclude=/sys /


Restore Script

#!/bin/bash


if [ $# -eq 1 ]

then

        tar cvpzf $1 -C /

        mkdir /proc

        mkdir /lost+found

        mkdir /mnt

        mkdir /sys

        echo

        echo "========================================================="

        echo "Server Restoring is Finished. Please restart your server"

        echo "========================================================="

        echo

else

        echo "[ Usage ] $0 <backupfile>"

        exit

fi


Register Backup script to cron


$ crontab -e



# m h  dom mon dow   command

33 3 * * 3 /root/backup-server.sh


[분(0-59)] [시(0-23)] [일(1-31)] [월(1-12)] [요일(0-6, 0 = 일요일)] [명령어]






Create Account


$ useradd -G sudo -m -s /bin/bash -b /home [account-id]


Group name could be "admin" or "sudo".




Install Essential Programs


$ sudo apt-get install subversion

$ sudo apt-get install locales



Change Default shell to bash


$ chsh -s /bin/bash


Install Ruby & gem & rails (1.9.3)


$ apt-get install curl

curl -L https://get.rvm.io | bash -s stable

$ vi /etc/group # add all users that will be using rvm to 'rvm' group

$ id

uid=0(root) gid=0(root) groups=0(root),1002(rvm)

$ source /etc/profile.d/rvm.sh

$ rvm requirements

$ rvm install 1.9.3

$ rvm use 1.9.3 --default

$ rvm rubygems current

$ gem install rails


Install redmine (2.3.1)


# Instead of Following commands, refer the instruction of installation in www.redmine.org

$ tar xvfz redmine-2.3.1.tar.gz

$ cd redmine-2.3.1/config

$ cp database.yml.example database.yml

$ vi database.yml        #modify mysql access information

apt-get install libmysqlclient-dev

$ gem install bundler

$ apt-get -y install graphicsmagick-libmagick-dev-compat

$ apt-get install libmagickcore-dev libmagickwand-dev

$ bundle install --without development test

$ rake generate_secret_token

$ RAILS_ENV=production rake db:migrate

$ RAILS_ENV=production rake redmine:load_default_data

$ useradd -m -b /home redmine

$ passwd redmine

$ mkdir -p /redmine/files /redmine/log /redmine/tmp/pdf /redmine/plugin_assets 

$ chown -R redmine:redmine /redmine/

$ chmod -R 755 /redmine/



$ sudo service apache2 stop

sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common

sudo apt-get autoremove --purge

sudo rm -Rf /etc/apache2 /usr/lib/apache2 /usr/include/apache2


만약 apache2를 수동 설치한 경우 "whereis apache2" 명령어를 이용하여 경로를 찾아낸 후, 그 경로를 모두 지운다.

소개



Unix계열에서 백그라운드, 데몬 형태로 실행하고 싶은 경우  "<명령어> &" 형태로 실행하는 방법이 있지만, 이 방법은 실행한 세션이 로그아웃된 경우 HUP(hangup) signal이 세션이 실행한 모든 프로그램에 전달되어, 해당 프로그램들이 종료되게 된다.


nohup 을 사용한 명령어는 이에 대한 예외처리가 되므로, 이를 사용하면 로그아웃되더라도 프로그램을 계속 구동할 수 있다.


구동방법



nohup은 다음과 같이 사용한다.


$ nohup <명령어> &


명령어에 argument가 필요한 경우에도 <명령어> 부분에 모두 기입하면 된다.


(예) $ nohup ls -al &


명령어에 대한 출력은 리다이렉션을 사용하지 않는 한, 명령어를 수행한 디렉토리의 nohup.out 에 자동 저장된다.


종료방법



nohup 전용으로 종료하는 방법은 없으며, ps 명령어를 이용하여 해당 프로세스를 찾고, kill 명령어로 종료한다.


$ ps -ef | grep <명령어>

$ kill -9 <명령어>



외장하드 파티션 변경을 하기 위해 디스크 유틸리티 실행 후 파티션 변경을 적용하였는데 '마운트 해제를 할 수 없다'는 에러 메시지를 접하게 되면 '강제 추출'으로 해결하는것이 하나의 방법이 될 수 있다.


Finder에서 왼쪽 '장비' 탭에 해당 외장하드를 선택하고 마우스 우클릭하여 '추출' 을 선택한다.


분명 '하나 이상의 응용프로그램이 사용중...'이라는 에러메시지 팝업창이 뜨게 될 텐데 거기에서 '강제 추출'을 클릭한다.


강제 추출 이후 다시 디스크 유틸리티를 수행하여 변경된 파티션을 적용하면 정상 동작한다.


Replacing superdrive of Mac Mini to SATA HDD


 - URL : Click


Super drive를 Hdd로 교체시 필요한 부품 : 12.7mm SATA Optical Bay Hard Drive Enclosure (또는 SATA 2nd Universal hdd drive caddy )


  Caution 1 : 9.5mm 도 있으니 부품 살 때 유의할 것.


  Caution 2 : 12.7mm 이라고 아무거나 되는게 아님. 같은 규격에 Dell 노트북용이라길래 싸서 샀더니 외곽 사이즈가 미묘하게 틀림. 결국 니퍼로 난도질 해서 겨우 우겨넣었음. 아오ㅋ


  Caution 3 : 분해 및 조립시 케이블 연결에 매우 주의할 것. 뽑을때 단선이 잘 되기 때문에 선을 당기기 보다는 플라스틱 커넥터를 잡고 뺄 수 있는 작은 1자 드라이버나 핀셋이 좋다. 하드온도 센서 하나 단선되서 이거 연결하느라고 완전 고생했음 ㅡㅜ


이 에러가 발생한 상황이 여러가지 이유가 있을 수 있겠지만,

내 경우에는 ubuntu에서 apt-get upgrade하고 나서 발생하였다.

ps 명령어를 통해 mysql이 실행중인지 검사해 보았지만 프로세스는 떠있지 않았다.

아래의 명령어를 통해 mysql 데몬을 실행 시키면 된다. 

start 자리에 stop, restart를 넣으면 해당 명령을 수행한다.


$ /etc/init.d/mysql start


하나의 머신에서 받은 포트를 다른 머신(다른 IP)의 포트로 전달하는 유용한 프로그램을 소개한다.



rinet- http://www.boutell.com/rinetd/



친절하게 windows 용 바이너리도 제공하고 있으므로 유용하게 사용하면 된다.



설정


설정파일( rinetd.conf )를 작성한다. 디렉토리는 /etc/rinetd.conf 에 굳이 두지 않아도 된다.


출발지 IP     출발지 Port      목적지 IP      목적지 Port

0.0.0.0 22 192.168.0.2 18522


아무 IP에서 오는(0.0.0.0) 22번 포트를 192.168.0.2번의 18522포트로 보내준다 는 내용의 설정이다.



실행


/etc/rinetd.conf에 저장한 경우 rinetd만 실행하면 되고, 설정파일을 특정 경로에 둔 경우 아래와 같이 실행하면 된다.


$ rinetd -c 설정파일 




더블 클릭 후 드래그하는 기능이 Mountain Lion으로 업그레이드 하고 나서부터 동작하지 않아 너무 불편했었는데 우연히 다른쪽 설정들 보다가 검색이 되었다.

아 욘석들 메뉴를 바꿨으면 이야기를 해줘야지...



암튼 시스템 환경설정으로 가서 아래의 설정을 활성화 시키면 된다.


  1. Universal access (손쉬운 사용)
  2. Mouse & Trackpad 
  3. Trackpad Options...
  4. Check 'Dragging - without Drag Lock'



1. GRANT 명령어 이용
// user 생성(id) 및 비번 설정(passwd)과 동시에 특정 DB(dbname)의 모든 권한 부여
mysql> GRANT ALL PRIVILEGES ON dbname.* to id@localhost by 'passwd' with grant option;

// 변경내용 업데이트
mysql> flush privileges;

2. DB 내용 수정 방식

mysql> use mysql;


// 계정생성
mysql> insert into user (host, user, password) values ('localhost', 'USERNAME', password('PW'));

// DB 생성. desc 에서 default 값에 나온 N 수 만큼 아래 'y'를 넣는다.
mysql> desc db;
mysql> insert into db values('localhost', 'DB_NAME', 'USERNAME', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');


// 변경내용 업데이트
mysql> flush privileges; 


Apache


기존의 설치된 System Preference->Sharing 에 Web Sharing 이라는 옵션으로 Web Service를 할 수 있었는데 Mountain Lion 에서는 이 메뉴가 사라졌다. 하지만 실행 파일들은 남아 있으므로 아래의 명령어들을 수행하면 된다.


  1. 터미널 프로그램을 열어서 아래의 명령어를 입력한다 (vi 가 익숙치 않은 분들은 다른 에디터를 사용하기 바랍니다)

    sudo vi /etc/apache2/users/`whoami`.conf

  2. 아래의 내용을 입력하고 저장한다. 이 때 맨 첫줄의 username은 자신의 계정명으로 바꾼다.

    <Directory "/Users/username/Sites/">
         Options Indexes MultiViews
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>

  3. Apache를 실행한다.

    sudo apachectl start

  4. Apache를 정지하거나, 다시 시작하고 싶은 경우 start를 stop 이나 restart로 바꾸고 실행하면 된다.

  5. 웹 페이지 데이터는 자신의 계정 홈 폴더의 Sites 디렉토리 에 넣으면 된다.

  6. 주소는 http://localhost/~계정명 으로 들어가면 된다. (만약 당신의 계정명이 test-account 이면, http://localhost/~test-account 로 들어가면 된다. )

  7. Default apache 경로는 /Library/WebServer/Documents/ 이다. 




PHP



  1. 터미널을 열어 아래의 명령어를 수행한다.

    sudo vi /etc/apache2/httpd.conf

  2. 아래의 2줄에 해당하는 라인을 찾아 주석(맨 앞의 #)을 제거한다.

    #LoadModule php5_module libexec/apache2/libphp5.so
    #Include /private/etc/apache2/extra/httpd-vhosts.conf

  3. 아래의 명령어를 수행한다.

    sudo vi /etc/apache2/extra/httpd-vhosts.conf

  4. 유효하지 않은 도메인 이름을 localhost 로 바꾸고, 경로 또한 /etc/hosts/ 로 바꾼다.

  5. 아래의 MySQL설치법에 따라 MySQL을 설치한다.

  6. 아래의 명령어를 수행하여 php를 활성화 시킨다.

    sudo cp /etc/php.ini.default /etc/php.ini

  7. 아래의 명령어로 apache 서비스를 리스타트 한다.

    sudo apachectl restart





MySQL



  1. 이곳( dev.mysql.com/downloads/mysql )에서 Mac OSX 10.6 용 64bit dmg 파일을 다운로드 한다.

  2. mysql-5.x-osx10.x-x86_64.pkg 와 MySQL.prefpane 를 설치한다.

  3. 시스템 환경설정 에서 MySQL을 시작한다. 시작시 MySQL이 자동으로 시작되길 원하면 아래의 체크박스를 체크한다.

  4. 터미널에서 MySQL을 수행하기 위해 다음 명령어를 수행한다.

    vi ~/.bash_profile

  5. 아래의 내용을 입력한 후 저장한다. 저장 후에는 터미널을 종료하고 다시 시작한다.

    export PATH=$PATH:/usr/local/mysql/bin

  6. 터미널을 수행하면 다음의 명령어를 입력한다.

    mysql -u root

  7. MySQL> 이 나오면 아래의 명령어를 입력하여 root 비밀번호를 변경한다. mypass 부분을 원하는 비밀번호로 대치하여 입력한다. 입력한 후 quit으로 빠져나온다.

    GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'mypass' WITH GRANT OPTION;

  8. Apache와 PHP가 MySQL에 접근하기 위해 아래의 명령어를 입력한다.

    sudo mkdir /var/mysql; sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

  9. MySQL을 관리하기 위한 프로그램을 다운로드 한다. ( Sequel Pro - www.sequelpro.com )




Backspace Key Remap

$ stty erase <key>


Word Remove Key Remap

$ stty werase <key>



<key> 에 입력하는 방법


BackSpace : Ctrl + V  를 누르고  Ctrl + Backspace 를 누르면 ^? 가 화면에 보임.

가볍고

광고도 없고

쓸데없이 툴바나 웹브라우저 첫페이지를 바꾸지 않아서 좋은,


무료 동영상 변환기를 추천합니다.


  1. Install 'XCode'
  2. Run XCode
  3. Preference -> Downloads
  4. Install 'Command Line Tools'


System Preferences > Universal Access > Keyboard > Check "Enable access for assistive devices"


시스템 환경설정 > 손쉬운 사용 > 키보드 > 보조 장비에 대한 접근 활성화 체크

  1. 잉여 2013.09.06 15:46 신고

    도움이 됐습니다..

  2. 못찾겠어요 2013.11.14 09:47 신고

    시스템 환경설정 > 손쉬운 사용 > 키보드 까지는 찾았는데
    그 뒤로가 없네요 ;;;;
    현재 10.9 버전입니다 ;;;

    • Favicon of http://finsternis.tistory.com BlogIcon leanu 2013.11.22 21:05 신고

      시스템 환경설정 > 보안 및 개인 정보 > 개인 정보 탭 > 손쉬운 사용
      쪽을 참조해 보세요.

  1. Menu => Bookmarks => Manage Profiles
  2. Terminal Profiles => Select a profile which you use
  3. Change the value of 'Scrollback Lines' 


원인 : make 시 파일의 시간과 서버의 시간을 참조할 때 파일의 수정 시간이 서버의 시간보다 앞서는 경우 경고 메시지가 발생한다.


해결 : 모든 파일에 대해 현재 서버 시간으로 수정 시간을 변경한다.


$ find . -type f | xargs -n 5 touch


How to sync Multiple Google Calendar

  • iCal 실행
  • Menu -> iCal -> 환경설정(Preference) -> 계정(Account)
  • '+' 버튼을 누르고 gmail 계정 주소 및 암호 입력
  • 구글 계정을 선택하고 오른쪽 메뉴에서 '위임'을 누름
  • '접근 가능한 계정'에서 원하는 달력을 체크하여 사용한다. ( 만약 리스트가 안나오는 경우  iCal 환경설정을 종료했다가 '위임' 탭으로 다시 접근하면 리스트가 나온다.



How to sync Google Contacts

  • 주소록 실행
  • Menu -> 주소록 -> Preference -> '계정' tab
  • iCloud 선택후 우측에서 '이 계정 활성화' 체크 해제
  • '나의 Mac' 선택후 우측에서 Google과 동기화 체크
  • Google 계정 및 암호를 누르면 동기화됨


$ sudo vi /etc/hostname  

파일을 열고 원하는 호스트이름으로 변경후 저장

$ hostname -F /etc/hostname


 

$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

  1. Favicon of http://adunhansa.tistory.com BlogIcon 아둔한사 2014.05.19 19:18 신고

    잘 보고 갑니다.

$ sudo apt-get install apache2
$ sudo apt-get install php5
$ sudo apt-get install libapache2-mod-php5
$ sudo /etc/init.d/apache2 restart

기본적으로 web page directory 는 /var/www에 저장되어 있다.

+ Recent posts

티스토리 툴바