UNIX/Redhat

[스크랩] 리눅스 가변 램디스크 /dev/shm

99iberty 2013. 12. 10. 12:49

http://bahndal.egloos.com/465571

 

리눅스에서 df 명령으로 디스크의 빈 공간을 확인해 보면 /dev/shm 디렉토리가 있는데, 파일시스템 형식은 tmpfs이고 크기는 RAM 용량의 반 정도 될 것이다.

이 디렉토리는 공유 메모리(shared memory)라고 해서 일종의 램디스크인데, RAM 용량의 반을 당장에 실제로 점유하고 있는 것은 아니고 사용하는 만큼만 용량을 소모한다. 그러므로 RAM 용량이 반이나 날아갔다고 오해하면서 걱정할 필요는 없다.

자주 읽기/쓰기를 하는 임시 파일을 사용해야 할 경우에 RAM 용량이 충분하다면 이 디렉토리가 상당히 요긴하다.

다만, 한가지 주의할 점은 /dev/shm의 접근 권한이다. 모든 사용자가 읽고 쓸 수 있으므로, 만약 이 디렉토리를 사용하고 싶다면 하위에 자신만 접근할 수 있는 권한으로 디렉토리를 하나 만들어서 사용하자.

cd /dev/shm
mkdir my_tmp_dir
chmod 700 my_tmp_dir (자신만 접근할 수 있도록 권한 설정)

참고로, 만약 다른 프로그램들이 RAM을 이미 많이 점유하고 있는 상태에서 /dev/shm 디렉토리를 사용하다가 사용량이 RAM 용량을 초과하게 되면 그 때는 스왑(swap) 영역으로 넘어간다.

 

---------------------------------------------------------------------------------

 

http://cubenuri.egloos.com/viewer/2291331

 

tmpfs /dev/shm 이게 도데체 어떤용도의 파티션인지 한참고민하고 있었는데
역시나 검색에 잘나와아 있었다.

그런데... 문제는 2번 읽어봤는데 여전히 잘 이해가 안된다는것이댜...Orz..

과연 어떤 행간의 의미가 있는것인가... 제대로 봐야겠다.


리눅스에서는 tmpfs라는 형태의 신형 램디스크를 메커니즘을 제공한다. (커널 2.4이후)

이것은 일정크기의 램 디스크를 잡고 필요할 경우에만 램에서 공간을 할당하여 디스크로 사용된다.

즉 사용되지 않는 공간은 일반 램으로서 얼마든지 프로세스가 사용될 수 있다.

즉 2G 시스템에서 램디스크를 1.5G를 잡고 실제 디스크 사용은 0,5G를 사용한다 가정하면

기존의 램디스크시스템의 사용가능 한 메모리는 2-1.5가 된어 0.5G만큼만 사용가능하다.

그러나 새로운 방법론인 tmpfs는 2-(실제디스크사용량) = 1.5G만큼 사용해진다.

즉 디스크의 크기가 최대 크기만 지정되어 있으면 얼마든지 가변적이라는 이야기 이다.

앞으로 다른 /dev/ram을 사용하는 멍청한 램디스크는 쓸 필요가 없다.

효율적으로 메모리를 사용하는 tmpfs를 사용하는 것이 매우 효과적이라 볼 수 있다.


/etc/fstab파일을 보면
none /dev/shm tmpfs defaults 0 0

기본적으로 /dev/shm이라는 마운트 위치가 메모리파일시스템인 tmpfs로 할당되었음을 알 수있다.

옵션은 defaults로 되어 있는데 만일 크기를 변경하고자 하는 경우 defaults대신 size=1500M

를 넣으면 된다.

defaults옵션은 크기는 현재 시스템 메모리의 0.5배만큼 잡는것을 기본으로한다.

따로 명령행에서 넣고자 할 경우

mount -t tmpfs tmpfs /mount_point -o size=1500M

를 넣으면 된다.

활용처

명월이는 ram이 2G인 개발 서버를 한대 가지고 있으며 이 서버에는 자료 저장 및 인터넷 자료를

다운로드 하는 역활을 수행하고 있다. (메모리만 크다.)

여기서 1.5G를 tmpfs를 이용한 램 디스크를 사용하고있다.

그리고 samba로 다른 windows와 공유되고 있으며 nfs로 다른 유닉스들과 공유되고 있다.


그리고 다른 모든 시스템들은 임시적인파일이나 작업들을 전부 여기서 하고 있다.

장점은 전체 시스템들의 hdd의 사용량을 급격하게 줄여 시스템의 안전성이 올라간다.

HDD대신 network를 사용하는데 1G네트이기 때문에 hdd보다 느리다고 말 할 수가 없다.

초당 50Mbyte (400Mbit)정도 전송한다.

특정 시스템같은 경우 hdd를 아에 사용하지 않도록 되어 있다. 기가빗 네트워크와 원격메모리

디스크로만 되어 있다.

만일 DB를 사용한다면매우 빠른 형태의 access를 보인다.

물론 update, insert에서도 발군의 속도를 자랑하게 되지만.. 시스템 다운과 백업, 동기화의 문제가

심각하게 고려될 필요는 있다.

Oracle같은 DB를 사용한다면 굳이 램디스크를 사용하는 것 보다는 오라클 자체의 캐쉬및 메모리

관리능력을 사용하는 것이 보다 효율적이라 생각된다.

만일 고속의 응답성능을 요구하는 DB가 필요할경우 램디스크에 올라가는 DB나 혹은 메모리디비

보다는 가격이 비싸지만 인텔리전스 스토리지(EMC를 개인적 추천)를 사용을 권장한다.

물론 캐쉬용 메모리를 가득 꼽아서... 해당 SAN 전체의 속도와 시스템 신뢰성은 매우 크게

신장된다.


당연하겠지만 비싼 스토리지가 그 값어치를 분명히 한다

출처 : Tong - parkcon님의 Linux & Windows tips통

-----------------------------------------------------------
이건 IO 효율을 어떻게 올리는 메커니즘인지 어떤 상환인지...도데체...
이유를 알고 싶어효~
from 김졍균님 (http://oops.org)

커널 2.4 를 사용하신다면 /dev/shm 을 사용하면
I/O 효율을 굉장히 높힐 수 있겠죠.

/etc/rc.d/init.d 의 start 전에

if [ ! -d "/dev/shm/apachebw/master" ]; then
install -m770 -d /dev/shm/apachebw/master
chown apache.apache /dev/shm/apachebw
chown apache.apache /dev/shm/apachebw/master
fi

if [ ! -d "/dev/shm/apachebw/link" ]; then
install -m770 /dev/shm/apachebw/link
chown apache.apache /dev/shm/apachebw
chown apache.apache /dev/shm/apachebw/link
fi

과 같이 설정을 해주고, httpd.conf 의 BandWidthModul on 바로 아래에
BandWidthDataDir /dev/shm/apachebw

를 지정해 주면 아주 효율적입니다.

[출처] 아파치 밴드위쓰 /dev/shm|작성자 자이스