NSF는 네트워크를 통해 서버간에 파일을 공유할 수 있도록 해줍니다.

처음으로 NFS 설정을 해보는데 정말 애를 먹었습니다.

내용 함께 공유하니 저처럼 리눅스 NFS 설정하시는 분들 참고하시길 바래요.

저는 CentOS를 사용하고 있습니다.



서버측 설정

portmap과 NFS를 실행해야 합니다. 그리고 nsflock도 실행해주세요.

설치가 되어있지 않다면 설치해주세요.

CentOS는 기본적으로 설치가 되어있으니 설치과정은 넘어갑니다.


# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]


# /etc/init.d/nfslock start




# rpcinfo -p

로 확인하면 아래와 같이 포트번호와 사용중인 목록이 나옵니다.

nfs랑 portmap이 보이면 잘 실행되고 있는것 입니다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd




마운트할 디렉토리를 설정하기 위해 /etc/exports 파일을 열어 아래의 내용을 추가합니다.


# vi /etc/exports
/home/nfs 192.168.5.123(rw)



/home/nfs 폴더에 대해서 192.168.5.123 아이피에 rw(읽기쓰기)권한을 준다는 설정입니다.

nfs 재실행합니다.


# /etc/init.d/nfs restart
NFS mountd를 종료 중: [  OK  ]
NFS 데몬을 종료 중: [  OK  ]
NFS quota를 종료 중: [  OK  ]
NFS 서비스를 종료 중:  [  OK  ]
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]



서버측 설정이 끝났습니다.


NSF 설정을 확인하고자 할때는

# showmount -e

이 명령어로 확인이 가능합니다.



클라이언트측


portmap과 nfs를 실행합니다.



# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]




마운트를 실행합니다
 
# mount -t nfs 192.168.5.123:/home/nfs /home/nfs


192.168.5.123서버의 /home/nfs 폴더를 /home/nfs 폴더에 마운트 하는 명령어 입니다.

명령이 잘 실행되었다면 NFS설정이 완료된 것입니다.



마운트한 폴더를 삭제할때는 먼저 마운트를 해제해주세요.

# umount /home/nfs




서버나 클라이언트 쪽에서 부팅시 자동으로 올라오도록 설정하기 위해서는 아래의 명령어를 실행하면 됩니다.

# chkconfig --level 3 nfs on
# chkconfig --level 3 portmap on





여기까진 어렵지 않은데 방화벽이 있을경우가 설정이 복잡해집니다.

NFS 사용할때 랜덤방식으로 포트번호가 변경되기 때문에 포트를 고정시켜주는 작업이 필요하고

이 고정된 포트에 대해서 방화벽을 해제해주셔야 합니다.

서버측에서 방화벽이 있는 경우 아래의 작업을 추가로 진행해주어야 합니다.


# rpcinfo -p

로 사용중인 포트를 다시 확인해봅시다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd



111 포트와 2049번 포트를 제외하고 나머지 포트는 NFS가 실행될때마다 변경되는데요 포트를 고정시켜야 합니다.


# vi /etc/init.d/nfslock

start() {
    if [ ! -f /var/lock/subsys/nfslock ]; then
        # Start daemons.
        if [ "$USERLAND_LOCKD" ]; then
          echo -n $"Starting NFS locking: "
          daemon rpc.lockd -p 4000



/etc/init.d/nfslock을 열어 daemon rpc.lockd -p 4000 로 수정해주세요.


# vi /etc/sysconfig/nfs
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002


/etc/sysconfig/nfs에서 TCP, UDP, MOUNTD 포트번호를 고정합니다.



# vi /etc/services


# pxc-splr-ft  4003/tcp                   # pxc-splr-ft
# pxc-splr-ft 4003/udp                   # pxc-splr-ft
rquotad         4003/tcp                        # rpc.rquotad tcp port
rquotad         4003/udp                        # rpc.rquotad udp port




/etc/services를 열어 4003번 포트에 대한 내용을 추가해야합니다. 기존 4003번 포트는 주석처리해주세요.

자 이제 수정한 값을 적용하기 위해 NFS를 재실행합니다.


# /etc/rc.d/init.d/nfslock restart
# /etc/rc.d/init.d/nfs restart



포트가 잘 변경되었는지 확인해봅시다.



# rpcinfo -p
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp    614  status
100024    1   tcp    617  status
100011    1   udp    668  rquotad
100011    2   udp    668  rquotad
100011    1   tcp    671  rquotad
100011    2   tcp    671  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   udp   4001  nlockmgr
100021    3   udp   4001  nlockmgr
100021    4   udp   4001  nlockmgr
100021    1   tcp   4001  nlockmgr
100021    3   tcp   4001  nlockmgr
100021    4   tcp   4001  nlockmgr
100005    1   udp   4002  mountd
100005    1   tcp   4002  mountd
100005    2   udp   4002  mountd
100005    2   tcp   4002  mountd
100005    3   udp   4002  mountd
100005    3   tcp   4002  mountd



4001번 4002번 포트를 잘 사용하고 있네요.

이제 NFS에 사용되는 포트들에 대해서 방화벽을 해제합니다.


# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000:4004 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 4000:4004 -j ACCEPT



그리고 iptables를 재실행합니다.
 
# /etc/rc.d/init.d/iptables restart




서버측의 hosts.allow 또는 hosts.deny에 클라이언트측 서버에 대한 접근을 허용 또는 막아놓았다면 이에 대한 허용처리도 해주어야 합니다.


# vi /etc/hosts.allow
portmap : 192.168.5.123
mountd : 192.168.5.123





nfs가 실행이 되지 않았거나, 방화벽이 열리지 않았거나, host가 막혀있다면

authentication error
RPC Error: Program not registered.

클라이언트측에서 mount 명령어를 실행할때 이런 종류의 에러메시지를 받을 수 있습니다.

이런 메시지가 나타난다면, 서버측과 클라이언트 측의 nfs 관련 서비스가 잘 실행되고 있는지 확인해주시고,

방화벽이나 특정 ip에 대해서 접근을 막아놓지 않았는지 확인해보세요.

구글링을 통해 보니 이런 오류메시지가 나왔을때

다른 분들의 경험에서는 hosts.allow, hosts.deny파일의 퍼미션이 604이상이 되어야 한다고도 하네요.




※ NFS 참조링크
http://www.yongbok.net/blog/?p=75
http://theeye.pe.kr/entry/%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC-%EB%A6%AC%EB%88%85%EC%8A%A4-NFS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
http://mdoli.com/tatter/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-2%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%82%AC%EC%9A%A9-%EC%8B%9C



추가(2012.5.15 업데이트됨)


NFS로 공유된 디렉토리는 서버가 부팅될때 자동으로 마운트 되지 않습니다.

자동으로 마운트되도록 하기 위해서는 /etc/fstab 에 마운트 포인트를 추가하고 netfs 데몬을 활성화해야합니다.
(서버측이 아닌 클라이언트측에서 설정합니다.)


1. /etc/fstab 에 마운트 포인트 추가

# cat /etc/fstab


를 입력하면 아래와 유사한  결과를 볼 수 있습니다.


현재 설정된 마운트 포인트들입니다.

바로 여기에 NFS 설정한 마운트 포인트를 추가해주어야 합니다.

각 값의 순서는 다음과 같습니다.


[파일시스템 장치명] [마운트 포인트] [파일시스템 종류] [옵션] [dump관련설정] [파일점검 옵션]


-파일시스템 장치명 : 장치명을 지정
-마운트 포인트 : 장치가 연결된 마운트 지점
-파일시스템 종류 : 파티션이 사용하는 파일시스템 지정
-옵션 : 파일시스템의 속성을 설정하는 옵션
defaults (rw, nouser,auto,exec suid 속성을 모두 가지는 옵션)
auto : 부팅시 자동 마운트
noauto : 부팅시 자동마운트 안함
exec : 실행파일이 실행되는 것을 허용
no exec : 실행파일이 실행되는 것을 허용 안함
suid : setuid, setgid의 사용을 허용하는 옵션
nosuid : setuid, setgid의 사용을 거부
ro (read only) : 읽기 전용
rw (ead write) : 읽고 쓰기 가능
user : 일반 계정 사용자들도 마운트 할 수 있는 옵션
nouser : root만 mount 가능
usrquota : 일반 사용자 quota적용
grpquota : 그룹 quota 적용
 
-dump 관련 설정
0 : 덤프되지 않은 파일시스템
1 : 데이터 백업을 위해 dump가능
 
-파일점검 옵션
0 : 부팅시 fsck를 사용하지 않음
1 : 루트 파일시스템을 의미
2 : 루트 파일시스템 이외의 파일시스템을 의미



/etc/fstab 파일을 열어 맨아래에 아래와 같이 NFS 설정했던 마운트 포인트를 추가로 입력해주시면 됩니다.

192.168.5.123:/home/nfs /home/nfs nfs defaults 0 0



2. netfs 데몬 활성화


netfs 데몬을 활성화 합니다.


 

# chkconfig --level 35 netfs on


 


값을 확인해보도록 하지요.

#chkconfig --list | grep netfs


 

아래의 그림처럼 3번과 5번이 활성 또는 on 이라고 나오면 됩니다.


 


이렇게 설정이 되면 서버가 부팅될때 NFS 설정한 폴더가 자동으로 마운트 됩니다.

출처 : http://trend21c.tistory.com/1285

'OS > LINUX' 카테고리의 다른 글

iostat  (0) 2012.06.01
리눅스 사양 확인  (0) 2012.05.29
locate 명령어 사용법  (0) 2011.06.29
부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21
chkconfig  (0) 2011.06.21

Hi All, I was trying to remove Ruby Gems on my lucid distro (ubuntu 10.04). I thought of posting it here for my own reference. Some of you might find useful.

First thing we need to find out is the exact location that the Ruby installs it’s libraries. In the terminal program, You can type the following command to find out the exact location.

ruby -e 'puts $:'

You’ll get list of paths. This is the output that I got in my machine.

/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/i486-linux
/usr/local/lib/site_ruby/1.8/i386-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/i486-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i486-linux
/usr/lib/ruby/1.8/i386-linux
.

Next we need to change our directory in to /usr/local/lib/site_ruby/1.8 and type following command to list the files.

ls -la
drwxr-xr-x 5 root root   4096 2009-07-15 12:15 .
drwxr-xr-x 3 root root   4096 2009-07-15 12:14 ..
-rw-r--r-- 1 root root   1415 2009-07-15 12:15 gauntlet_rubygems.rb
drwxrwsr-x 2 root staff  4096 2009-07-15 12:14 i486-linux
drwxr-xr-x 2 root root   4096 2009-07-15 12:15 rbconfig
drwxr-xr-x 6 root root   4096 2009-07-15 12:15 rubygems
-rw-r--r-- 1 root root  29116 2009-07-15 12:15 rubygems.rb
-rw-r--r-- 1 root root    268 2009-07-15 12:15 ubygems.rb

Now we are ready to remove the gems. Type

rm -r rubygems.rb ubygems.rb rubygems

If you wish to remove all gems installed in your computer, first find out the location by executing following commands

which gem gem1.8

Next you can remove them by using following commands. That’s it!

rm -r /usr/local/bin/gem
rm -r /usr/bin/gem1.8

All the best.

Active Directory 파티션에서 개체에 대한 정보를 저장할 때

(DC=test, DC=pe, DC=com>CN=Users>CN=홍 길동)

이런 규칙으로 데이터를 저장하게 되는 데, 이 저장에 필요한 프로토콜이

LDAP(Lightweight Directory Access Protocal)

 

LDAP 프로토콜은 도메인 컨트롤러에서 만들어지는 개체를 개별적인 이름(DC는 DC대로 관리하고 CN은 CN대로)으로 세부화해서 관리

LDAP 프로토콜이 표현하는 방식은 2가지가 있음

 

DC(Domain Componentname) 도메인 구성요소

OU(Organizational UnitName) 조직 단위

CN(Common Name) 일반 이름



1. 기능
파일을 검색하는 명령어이다. Find와 유사한 기능이나 DB를 이용한 검색이므로 검색 속도가 빠르다.

2. 문법
# locate

3. 옵션
-e : 검색에서 배제 할 디렉토리를 지정한다.
-n : 결과물의 개수를 지정된 숫자로 제한한다.

4. 사용방법 및 정보
가) 처음으로 locate를 실행할 때는 아래와 같이, updatedb 명령어나 cron 작업을 이용하여 데이터베이스를 갱신시켜

# updatedb &


이 작업은 root로 실행하여야 한다. 매일 DB를 갱신하여 사용의 효율을 높인다. cron에 대해서는 후에 다루게 된다.

# /etc/cron.daily/slocate.cron &


나) inittab 이라는 패턴이 포함된 파일 들을 모두 출력한다.

# locate inittab
/etc/inittab
/root/inittab
/usr/share/vim/vim63/syntax/inittab.vim
/usr/share/man/ko/man5/inittab.5.gz
/usr/share/man/man5/inittab.5.gz
/usr/share/terminfo/a/ansi+inittabs

'OS > LINUX' 카테고리의 다른 글

리눅스 사양 확인  (0) 2012.05.29
리눅스 NFS 설정하기  (0) 2012.05.18
부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21
chkconfig  (0) 2011.06.21
사용자 프로그램 부팅시 자동 실행  (0) 2011.06.21

  ntsysv와 chkconfig는 사용방법과 실행결과에 조금씩 차이는 있으나 부팅시에 자동 실행할 서비스들을 관리한다는 점에서 같은 목적을 가진 도구이다.
즉, 두가지 모두 런레벨에 따른 자동실행 서비스를 설정하는 역활을 하게 된다.  

 1. ntsysv
   리눅스 부팅시 각 부팅레벨 (0번부터 6번까지)별로 실행시키거나 실행시키지 않을 서비스들을 설정하는 유틸리티이다.
 이 유틸리티는 setup를 실행하여 "System service" 항목을 선택하여 실행 할 수 있다.
 
 - 설정법 :  nesysv --level [0123456]        예) ntsysv --level 35  
   1023456중 하나만 선택해도 되고 2개이상 선택해도 된다. 만약 --level옵션을 사용하지 않는다면 현재 런레벨의 설정이 변경 된다. 
     
 
2. chkconfig
chkconfig는 /etc/rc.d/rcN.d의 각디렉토리에 있는 S로 시작하는 링크파일과 K로 시작하는 링크파일을 생성/삭제함으로써 부팅시에 자동실행할
서비스를 결정할 수 있다.

 1) chkconfig 리스트 확인


2) chkconfig 리스트항목에 서비스 등록 및 제거
  - 등록 : chkconfig --add 서비스명 
    서비스 등록시 /etc/rc.d/rcN.d 디렉토리에 해당서비스의 링크파일이 생성된다.  
 
 
 - 제거 : chkconfig --del 서비스명
    서비스 제거시 /etc/rc.d/rcN.d 디렉토리에 해당서비스의 링크파일이 삭제 된다.


3) 부팅시 특정 서비스 자동실행 설정하기 (chkconfig 리스트의 on, off 설정)
 - 자동실행 설정 (on으로 설정) :  chkconfig --level [런레벨] [설정할데몬명] on   예) chkconfig --level 35 httpd on (httpd의3,5런레벨을 자동실행)
   * --level 옵션을 사용하지 않으면 런레벨 2,3,4,5 번이 on으로 적용 된다.
 
  
 - 자동실행 해제 설정 (off 로 설정) : chkconfig --level [런레벨] [설정할데몬명] off   예) chkconfig --level 35 httpd off (httpd의3,5런레벨을 자동실행 해제)
     * --level 옵션을 사용하지 않으면 런레벨 2,3,4,5 번이 off으로 적용 된다.


4) 기타참고 사항
 - ntsysv(서비스목록에 등록됨) = chkconfig로 서비스 등록시 :   /etc/rc.d/rcN.d/디렉토리에 해당 링크파일이 생성된다.
 - ntsysv(*설정)와 chkconfig로 서비스 on 설정시              :   /etc/rc.d/rcN.d/디렉토리에 해당 링크파일의 앞자리가 S로 표시됨.
 - ntsysv(*설정 해제)와 chkconfig로 서비스 off 설정시        :   /etc/rc.d/rcN.d/디렉토리에 해당 링크파일의 앞자리가 N로 표시됨.
 - ntsysv(서비스목록이 없어짐) = chkconfig로 서비스 제거시   :   /etc/rc.d/rcN.d/디렉토리에 해당 링크파일이 삭제 됨



'OS > LINUX' 카테고리의 다른 글

리눅스 NFS 설정하기  (0) 2012.05.18
locate 명령어 사용법  (0) 2011.06.29
chkconfig  (0) 2011.06.21
사용자 프로그램 부팅시 자동 실행  (0) 2011.06.21
memcached 설치와 이용  (0) 2011.06.17

데몬(서비스)를 관리하는 명령이다.

 

# chkconfig --list

# chkconfig --list network

# chkconfig --del portmap

# chkconfig --add portmap

# chkconfig --level 3 network off

# chkconfig --level 345 network on

 

  chkconfig 명령은 xinetd가 관리하는 서비스는 즉시 적용된다. 하지만 다른 서비스는 바로 적용되지 않기 때문에 # service deamon stop(start,restart) 를 사용해야한다.(여기서 daemon 은 정지할 서비스)

 

#chkconfig --list

 -> 서비스들의 상태를 확인하는 명령

 특정 서비스의 상태를 보려면 뒤에 서비스 이름을 적는다.

     -> chkconfig --list network

 

#ckhconfig --del portmap      

#chkconfig --add portmap

 -> 특정 서비스 삭제 , 추가

  chkconfig 명령으로 서비스를 지워도 실제 서비스하는 스크립트 파일은 삭제되지 않는다. 삭제되는 파일은 /etc/rc.d/tc[0-6].d 에 링크된 파일이고 실제 스크립트가 있는 /etc/rc.d/init.d 에 있는 서비스 스크립트는 삭제되지 않는다.

 

#chkconfig --level 3 network off

#chkconfig --level 345 network on

  -> 특정 런레벨에서 특정 서비스를 시작하거나 정지

[출처] chkconfig|작성자 Hstar


/etc/rc.d/rc.local

'OS > LINUX' 카테고리의 다른 글

부팅시 자동실행 서비스 관리 ( ntsysv, chkconfig )  (0) 2011.06.21
chkconfig  (0) 2011.06.21
memcached 설치와 이용  (0) 2011.06.17
mutt 커맨드라인 첨부 메일 보내기  (0) 2011.06.17
/etc/sysconfig / 시스템 설정 정보  (0) 2011.06.16

출처 : http://wiki.heedy.pe.kr/index.php/Memcached

1 서론
2 memcached의 캐쉬 방식
3 memcache의 인스톨
4 memcache의 기동
5 memcache의 동작확인


서론

memcached는 고속의 분산형 Memory Cache이며, 주로 DB에의 참조 결과를 Cache, 웹시스템에 있어서의 성능향상을 위해 많이 사용된다.

  • 웹시스템에 있어서의 부하대책
    1. 서버의 구성을 살펴본다.
      • Scale Out (서버의 수를 늘린다)
      • Scale Up (CPU/Memory 등의 하드웨어를 향상시킨다)
    2. OS/Middleware의 설정을 살펴본다.
    3. 네트워크구성을 살펴본다.
    4. 어플리케이션 로직을 살펴본다.
  • 위의 대책 중에 DB서버에의 대책에는 데이터의 배치, 데이터 액세스방법을 어떻게 구현했는지가 문제가 된다.
    1. DB서버에의 부하를분산 (DB파티션팅 등의 기술을 사용해 Scale Out)
    2. DB서버에 있어서의 쓸때없는 처리를 줄인다. (DB Query를 다시 살펴본다)

바로 memcache가 위의 문제가 될 수 있는 곳의 해결책이 될 수 있을 것 같다.

  • memcached에 의한 성능향상
    1. 파일 입출력 (File I/O)가 줄어듬
      • 파일의 내용을 캐쉬해 둠으로써 파일 입출력에 의한 부하가 줄어든다.
    2. 세션정보의 공유
      • 유져의 세션정보를 캐쉬해 둠으로써, 복수의 아팟치서버사이의 세션정보를 공유한다.

memcached의 캐쉬 방식

  • 분산형

memcache서버 자체에는 분산장치을 가지고 있지않다. 하지만 memcache의 클라이언트 라이브러리가 존재하며, 분산장치는 이를 이용해 클라이언트에서 구현해 주면 된다.

  • 휘발성

memcache는 onmemory 캐쉬서버이므로 데이터를 계속적으로 가지고 있지 못한다. 프로세스가 종료되면 데이터도 모두 없어진다.

  • 키와 값의 매핑

memcache는 hashmap처럼 키와 값의 매핑정보를 보유한다. 키는 250문자까지 공백을 포함하지 않는 텍스트로 지정하고, 값은 1MB 까지의 임의의 데이터를 입력할 수 있다.

  • LRU 와 유효기간에 의한 캐쉬소거

memcache의 캐쉬데이터의 소거 방식은 LRU(Least Recently Used)이다. 즉 캐쉬에 빈자리가 없을 경우는 가장 오래된 순으로 소거된다. 하지만 키별로 유효기간을 정할 수 있으므로 소거 정책을 정할 수 있다.

 

memcache의 인스톨

    * 선행으로 인스톨 되어야 할 라이브러리 : libevent

 

# wget http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
# tar xvfz libevent-1.4.8-stable.tar.gz
# cd libevent-1.4.8-stable
# ./configure
# make
# make install

 

 

    * memcached의 인스톨

 

# wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
# tar xvfz memcached-1.2.6.tar.gz
# cd memcached-1.2.6
# ./configure
# make
# make install

 

 

memcache의 기동

    * -vv (very verbose) 옵션과 함께 기동, -p 포트, -u root로 실행

 

# memcached -vv -p 11211 -u root &
sh-3.2# memcached -vv -p 11211 -u root
slab class   1: chunk size     88 perslab 11915
slab class   2: chunk size    112 perslab  9362
slab class   3: chunk size    144 perslab  7281
slab class   4: chunk size    184 perslab  5698

 ..중략..

slab class  38: chunk size 391224 perslab     2
slab class  39: chunk size 489032 perslab     2
<4 server listening
<5 server listening
<6 send buffer was 9216, now 7456540
<6 server listening (udp)

 

 

    * -p 옵션으로 복수의 프로세스를 실행 시킬 수 있으며, -d 옵션으로 백그라운드 기동이 가능.

 

# memcached -p 11211 -d -u root
# memcached -p 11212 -d -u root
# memcached -p 11213 -d -u root

 

memcache의 동작확인

    * 접속확인

 

# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.

 

 

    * 상태확인 (telnet 상태에서)

 

stats
STAT pid 13041
STAT uptime 171
STAT time 1225958288
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.001480
STAT rusage_system 0.002299
STAT curr_items 0
STAT total_items 0
STAT bytes 0
STAT curr_connections 3
STAT total_connections 4
STAT connection_structures 4
STAT cmd_get 0
STAT cmd_set 0
STAT get_hits 0
STAT get_misses 0
STAT evictions 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT threads 1
END

    * get/set 동작확인 (telnet 상태에서)

set key1 0 0 6
Hello!
STORED
get key1
VALUE key1 0 6
Hello!
END

[출처] memcached|작성자 루키엔젤

'OS > LINUX' 카테고리의 다른 글

chkconfig  (0) 2011.06.21
사용자 프로그램 부팅시 자동 실행  (0) 2011.06.21
mutt 커맨드라인 첨부 메일 보내기  (0) 2011.06.17
/etc/sysconfig / 시스템 설정 정보  (0) 2011.06.16
IPTABLES 사용법 예제로 정리  (0) 2011.06.16

+ Recent posts