RaFi 파일서버를 소개합니다.

사용자 삽입 이미지

이것이 제가 관리하고 있는 서버 랙의 모습입니다.

위 에서부터 차례대로 RaFi 파일서버, eslab 웹서버(이건 제가 관리 안합니다), DAS 인클로저, 기가비트 이더넷 스위치(허브), 시리얼 디바이스 서버(시리얼콘솔용), KVM스위치, dreamland 서버(제껍니다 ^^;) 순서입니다.

사용자 삽입 이미지

RaFi 서버만 다시 찍어봤습니다. 중간에 eslab 웹서버가 끼어 있네요.

DAS 인클로저와 RaFi서버는 따로따로인 것 같지만 실제로 하나의 서버입니다. DAS인클로저는 그냥 외장하드 케이스 같은 거라고 보시면 돼요.

서버의 디스크 총용량은 무려 8 테라바이트에 달합니다! 물론 백업 등의 이유로 저 용량을 다 쓰지는 않습니다만(얼마만큼 못쓰는지는 비밀요 ㅋㅋ) 그래도 연구실 규모의 서버로는 대단히 큰 용량을 가지고 있지요. 램도 12기가바이트나 돼요. ㅎㅎ

제가 관리하는 서버는 아니지만 급할 때 빌려쓰는 eslab 웹서버도 디스크 총용량이 2.5테라바이트에 달합니다. 물론 여기도 못 쓰는 공간이 있습니다... 만! 역시 비밀입니다 ㅎㅎ

그냥 자랑 좀 해봤어요 ^^;


덧 : 뒷태
사용자 삽입 이미지


저 선, 100% 전부다 제가 깔았어요 ㅠ.ㅠ

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2009/02/24 09:04 2009/02/24 09:04
,
Response
No Trackback , No Comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/120

zfs의 스냅샷 기능 덕에 살았습니다.

연구실 서버와 구 서버의 홈디렉토리 백업 중에
디렉토리를 잘못 지정해서
파일들을 몽땅 덮어써버리는 실수를 해 버렸습니다.

$ rsync -avz -e ssh wbstory@wbstory.codns.com:/home/wbstory/ .

이게 문제의 원흉인데, 이걸 /home/wbstory/backup 디렉토리에서 수행해야 정상인데 /home/wbstory에서 실행시키는 바람에 두 서버의 홈디렉토리가 짬뽕이 돼 버리고 만 사상 초유의 재난사태(?)가 발생하고 말았습니다.

하지만 다행히도 저에겐 막강한 '백업' 시스템이 있었다는거.

# zfs list -r vtrak1-b/home/wbstory

NAME                                        USED  AVAIL  REFER  MOUNTPOINT
vtrak1-b/home/wbstory                      14.6G  85.4G  14.6G  /home/wbstory
vtrak1-b/home/wbstory@2009.02.15_00.17.02  46.6K      -  10.3G  -
vtrak1-b/home/wbstory@2009.02.15_01.17.02  34.6K      -  10.3G  -
vtrak1-b/home/wbstory@2009.02.15_02.17.01  34.6K      -  10.3G  -
... 계속 이어짐

저희 연구실 서버에는 매 시간마다 파일시스템의 변경 사항을 추적하여 백업하는 기능이 포함돼 있습니다. 아, 물론 이거는 이전 포스트에서 설명한 zfs 백업 스크립트에 의해서 만들어진 백업본들입니다.

다른 시스템 같았으면 일주일 전의 풀 백업 이미지를 풀고, 원하는 날짜까지의 인크리멘탈 백업본을 차례차례 적용해서 최종적으로 나온 스냅샷을 가져와 덮어쓰는 작업을 했어야 하는데, (그리고 그렇게 복구해도 하루 전 데이터로만 복구되는데), 저는 이거 한 줄로 끝냈습니다.

# zfs rollback -r vtrak1-b/home/wbstory@2009.02.21_10.17.01

2009년 2월 21일 오전 10시 17분 01초에 백업된 사본으로 되돌려놓으라는 명령입니다.

깔끔하게 되돌려지더군요.

후후훗.
물론 하고 있던 rsync작업은 다 날려먹었지만, 상관없어요. 또 하면 되니까 ^^;

왠지 기쁘네요. 원래 기쁠 상황이 아닌데..
그럼...

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2009/02/22 06:27 2009/02/22 06:27
, , , , , , ,
Response
2 Trackbacks , 2 Comments
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/116

웹서버 접속 장애

금요일까지 멀쩡했던 것 같은데, 오늘 웹 서버에 접속이 안 되더군요.
SSH는 다행히 살아있어서 웹서버를 재가동시켰습니다.
서버에 순간적인 부하가 걸렸던 것 같은데, 그것 때문에 아파치가 죽은건지 아니면 아파치가 갑자기 이상 동작을 해서 부하가 걸린 건지는 알 수 없습니다.
해킹 시도 같진 않고요, 그냥 저번에 설치했던 프로그램과 살짝 충돌이 있었던 것 같습니다.
이거이거, 웹서버는 반쯤 죽어서 골골대고 있는데 저는 잠이나 퍼질러 자고 있었다니... 이곳 미국에서 사용할 적당한 모니터링 도구가 없었다는 게 핑계가 될 지는 모르겠지만 하여튼 서버관리자로서 부끄럽군요.
매일 제가 서버를 모니터링하긴 하는데, 하필 모니터링을 안 하는 주말에 이런 일이 생기다니 참... 어쨌든 복구했습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/06/16 10:33 2008/06/16 10:33
,
Response
A trackback , 4 Comments
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/104

또 스팸 트랙백 공격을 받았네요.

음, 오늘은 좀 피곤한 날이었는데, 집에 와서 생각지도 못한 잡일을 처리하게 되고 말았습니다.
제 블로그에 23일에서 24일에 걸쳐 스팸 트랙백 공격이 있었습니다. IP주소는 랜덤으로 보이는데, 66.249.67 대역이 의심스러워 차단했습니다.
스패머들의 blog name을 보니까 특정 단어들이 자주 보이던데(뭐 porn이라거나, hot 이라거나), 지금은 아쉽게 그냥 스팸트랙백을 지운 뒤라서 수집할 수는 없겠고, 다음에 또 공격당하면 이름 기반의 필터를 추가할 생각입니다.
정상적인 사람이라면 외국 블로거라고 할지라도 블로그 제목에 porn이나 gay따위를 넣지는 않겠죠.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/05/24 11:43 2008/05/24 11:43
, , , ,
Response
No Trackback , a comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/102

badblocks로 하드디스크 완전히 지우기.

하드디스크를 완전히, 완벽하게 지워야 할 일이 생겼습니다.
하드디스크에서 파일을 삭제한다고 해도 dump 명령을 사용하면 파일을 복구할 수 있다는 사실은 익히 알고 계시죠? 하드디스크 복구업체에서는 바로 이 점을 이용합니다.
그렇다면, 자... 중요한 데이터가 들어 있는 하드디스크가 있습니다. 그런데 더 이상 쓰지 않는 디스크입니다. 근데, 뽀개버리기는 너무 아깝고 다른 용도로 쓰려고 합니다. 어떻게 하면 될까요?

가능한 한 가지 방법은, 포맷을 한 다음에 대용량 CD이미지나 영화 파일을 마구잡이로, 용량이 다 찰 때까지 복사해 넣는 방법이 있습니다. 가장 무식한 방법이기도 하고요.
좀 더 세련된 방법으로 dd 명령을 사용하는 방법이 있습니다.

# dd if=/dev/zero of=/dev/sdk

이게 정석적인 방법이긴 하지만, 좀 불완전하게 지웁니다. 복구 경험이 많고 장비가 좋은 복구업체라면 저 방식으로 지운 하드디스크를 복구할 수 있습니다. 하드디스크의 헤드보다 더 민감한 특수 헤드를 사용해서 플래터의 자기 스핀을 읽어내는 방식으로 복구한다고 하네요.

리눅스에서는 원래 이 용도로 쓰는 프로그램이 아니지만 완전히 하드디스크를 청소해 버리는 유틸리티가 있습니다. 그것이 바로 badblocks 입니다.

원래 badblocks는 하드디스크의 배드 블록을 체크합니다. 보통은 read test만 하는데, 여기에 -w 옵션을 주면 write테스트도 하며, 이 write 테스트 중에 하드디스크의 모든 자료가 삭제됩니다.

0x00 0xff 0x55 0xaa등의 패턴으로 모든 블록의 모든 섹터에 쓰기 테스트를 하기 때문에, 이 테스트가 끝난 뒤에는 하드디스크가 완전히 갈아 엎어지게 됩니다. 이건 자기 스핀을 1로 만들었다가 0으로 만들었다가 하면서 여러 번 뒤집어 엎기 때문에 제아무리 경력이 많은 복구업체라도 복구가 불가능합니다.

경고! 마운트 해제된 하드디스크에 사용할 것
경고! 엔터친 다음에는 돌이킬 수 없으므로 장치명을 두 번 세 번 확인할것!("실행할까요?" 하고 묻지 않는다!)

예제는

# badblocks -w /dev/sdk1
sdk1 파티션에 대하여 badblocks 수행

단, 전체 드라이브에 대하여 하고 싶다면 /dev/sdk 라고 쓰면 됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/26 16:54 2008/03/26 16:54
, , ,
Response
No Trackback , a comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/80

iptables NAT에 관한 좋은 글

iptables의 패킷 필터링은 어느 정도 쓸 줄 알게 되었지만, 아직 NAT에 대해서는 잘 알지 못하던 차에 좋은 포스트를 발견하여 소개합니다.

http://yahon.tistory.com/174

그리고, iptables가 어느 글에서 stateless 방화벽이라고 하는데, stateful 방화벽이 맞는 것 같습니다. -m state 라는 매칭 모듈이 존재하니까요.
OpenBSD 에서 만들어진 pf (Packet Filter)라는 프로그램이 stateful방화벽이라면서 ipfw보다 진보됐다고 하는 글을 봤는데, 이 글에는 또한 iptables보다도 진보됐다고 쓰여 있더군요. 도대체 얼마나 진보됐길래 그러는지 pf 를 써봐야 하겠습니다 ^^;
리눅스의 발전속도는 무척 빠르니, iptables가 pf의 모든 기능을 흡수했을 수도 있고... 아무튼 써봐야겠네요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/25 03:38 2008/03/25 03:38
, ,
Response
No Trackback , No Comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/78

iptables mac address filtering

뭐, 거창한 것은 아닙니다.
서버를 사설 IP대에 물려놓고 사용하려다가 제 노트북이 방화벽에 걸려서 간단히 찾아본 꼼수입니다.
일종의 DMZ 비슷한 것이죠.

# iptables -A INPUT -m mac --mac-source 00:12:34:56:78:9a -j ACCEPT

이런 식으로 호스트의 MAC주소 기반 필터링을 수행할 수 있습니다.
물론 복잡하게 해서 특정 호스트의 SSH접근을 거부하게 할 수도 있지요.
# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 01:23:45:67:89:ab -j DROP

이렇게 하면 01:23:45:67:89:ab 라는 MAC주소를 가진 호스트는 SSH접근이 차단됩니다. 단, 이 방화벽 룰이 기존에 있는
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
라는 룰 앞에 있어야 합니다. 아니면 저 룰에 걸려서 통과하겠죠.

-m 에 사용할 수 있는 매칭 모듈에는 참 여러 가지가 있습니다. 위의 mac도 있고, string이라고 패킷의 내용 기반 필터링도 할 수 있고, 패킷의 입력량을 조절할 수 있는 limit, hashlimit, 최근에 필터링된 IP에 대한 검사를 수행하는 recent 모듈 등... 무궁무진합니다.

이전에는 iptables을 어떻게 써야 할 지 몰라 이런 고급 모듈은 사용할 수 없었는데, 이것이 SQL 쿼리문과 닮은 면이 있다는 것을 깨달으면서부터 일은 매우 쉬워졌습니다.

컴퓨터란 학문도 일종의 득도라는 게 있나봅니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/23 12:07 2008/03/23 12:07
, , , , ,
Response
No Trackback , No Comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/75

watch명령을 사용해보자.

watch 명령을 아시는 분은 그다지 많지 않으리라 생각합니다.
top라는 명령 아시나요? 실시간 프로세스 감시 프로그램입니다.
이걸 실행하면 매 5초마다(시간간격은 조정 가능합니다) 프로세스의 상황을 모니터링해 줍니다.
그냥

# top


이렇게 입력해 보시면 되니까 따로 화면은 보이지 않겠습니다.

하지만, top명령은 프로세스 감시에 씁니다. 네트워크를 실시간으로 감시하고 싶으면 어떻게 할까요? 그러니까, 방화벽의 현재 패킷 상태를 실시간으로 감시한다거나, 하드디스크의 남은 용량을 실시간으로 체크하려고 한다면?

watch명령은 바로 그런 경우에 유용하게 쓰입니다.
예를 들어, 실시간 방화벽 모니터링을 해 볼까요?

# watch iptables -L -v -n

하드디스크의 남은 용량을 실시간으로 보려면?

# watch df -h


복잡한 것도 해 보죠. 실시간으로 아파치의 hit수를 계산해 봅시다.

# watch -n10 "cat /var/log/apache2/access.log | awk '{print \$1}' | sort | uniq -c | sort -r"


access.log의 내용 중 첫 번째 컬럼을 추출하고, 정렬한 뒤 중복된 숫자를 세어 내림차순 정렬하는 작업을 매 10초마다 수행한다. 라는 뜻입니다. watch에 넣어 줄 명령은 꼭 따옴표로 묶어 주셔야 합니다. 안 그러면 watch의 출력물을 파이프로 전달하려고 해서 아무 것도 출력되지 않습니다. watch 명령 자체가 무한 루프를 돌기 때문입니다.
awk의 $1 부분에서 \$1을 사용한 이유는... 쉘스크립트가 $1을 해석하지 않게 하려고 이스케이프한 것입니다. $1에 대한 해석은 awk안에서 되어야지 그 전에 쉘이 해석해 버리면 안되거든요.

watch명령의 자세한 형식은 맨 페이지를 참조하시되, 쓸만한 옵션이라고는 하나뿐입니다. -n 옵션이죠. 얼마만큼의 시간간격(초단위)으로 명령을 실행할지 결정합니다. -d 옵션이라고, 바뀐 부분을 강조하는 옵션이 있긴 한데, 개인적으로 좀 난잡해 보여서 별로 좋아하지는 않습니다.

사실 watch명령은 뒤에 나오는 파라메터의 내용을 반복적으로 실행할 뿐입니다. 이걸 응용해서, 어떤 디렉토리의 내용을 매 분마다 옮길 수 있습니다.

# watch -n60 "mv /home/user1/* /home/user2/"

이런 식으로요. 물론 출력으로는 아무 것도 안 나옵니다. 하지만 매 분마다 /home/user1 디렉토리 아래의 모든 파일을 /home/user2 로 옮길 겁니다. user1에게 ftp를 열어주되, 한 번 업로드한 파일을 다시 다운로드할 수 없게 만들고 싶다거나 할 때 유용하게 쓸 수 있습니다.

간단한 cron 이라고도 할 수 있지요.

단, watch 명령은 명령이 수행되는 시간은 계산에 넣지 않습니다. 만약 수행시간이 10초 걸리는 작업을 watch 명령으로 수행한다면, 매 12초마다 명령을 수행할 겁니다. (10초+watch의 기본 시간 간격) 즉, 정교한 시간 간격으로 어떤 스크립트를 실행하고자 한다면 watch는 그다지 탁월한 선택이 아닙니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/23 04:29 2008/03/23 04:29
, , , ,
Response
No Trackback , a comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/74

sshfs를 사용해보자

연구실에 고정되어 있는 서버들은 공용 파일서버(NAS)에 NFS로 연결이 되어 있습니다.
여러분도 아시다시피, NFS는 /etc/exports 라는 파일에 공유 호스트 정보를 적게 되어 있는데요, 이 방식은 호스트 기반 인증이라서 고정되지 않는 서버에는 적용하기 곤란하다는 단점이 있습니다.
제가 예전에 소개해 드렸던 Samba Over SSH 팁에서는 파일 공유를 위해 SSH를 사용합니다. sshfs는 NFS Over SSH라고 할 수 있습니다.
서버측에서는 아무 것도 설치할 필요가 없고요, 클라이언트(리눅스여야 합니다)에서만 sshfs를 설치하면 됩니다.

우분투에서는
# aptitude instal sshfs

로 간단히 설치가 끝납니다.
설정 파일은 /etc/fuse.conf인데, 건드릴 내용은 없습니다.
일반 유저도 마운트할 수 있게 하시려면

# chmod 666 /dev/fuse
# chmod 644 /etc/fuse.conf
# chmod 4711 /bin/fusermount


이렇게 권한을 풀어주시면 됩니다.
마운트는

$ sshfs [사용자계정]@[호스트]:[경로] [마운트지점]

으로 사용합니다. 예제를 볼까요?

$ sshfs wbstory@192.168.1.100:/store/unsafe test


언마운트는 fusermount -u 를 사용합니다.

$ fusermount -u test

주의하실 것은, 이렇게 마운트한 디렉토리를 다시 nfs로 익스포트한다거나, SVN접근을 위해 사용한다거나 하는 경우에는 문제가 발생할 수 있다고 합니다.

http://fuse.sourceforge.net/wiki/index.php/SshfsFaq

여기 FAQ를 보면 그런 경우를 해결하는 방법이 적혀 있습니다.
SSH 계정만 있으면 어떤 서버든지 자유롭게 마운트할 수 있다는 것이 큰 매력이고, 모든 트래픽이 암호화되니까 안전하다는 장점도 함께 누릴 수 있습니다. 마운트한 디렉토리를 또 마운트하는 경우에는 여러 문제가 생긴다고 되어 있지만, 그런 경우는 그다지 많지 않으리라 생각합니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/19 23:13 2008/03/19 23:13
, , , ,
Response
No Trackback , No Comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/72

KVM Over Ethernet

http://www.conetsys.com/product/kvm/kvm%20over%20ip.htm

제가 원하던 장비네요.
KVM의 신호를 이더넷이나 모뎀으로 보내줘서 인터넷 상에서 KVM제어를 할 수 있게 해 주는 솔루션입니다.

이 장비가 있으면 시리얼 콘솔 같은 걸 지원하지 않는 PC서버에서도 부담없이 리부팅이나 설치 작업을 할 수 있습니다. 진정한 중앙 집중형 관리이지요.
이와 함께, SENA에서도 서버의 전원을 제어할 수 있는 솔루션을 선보였는데,

http://www.sena.co.kr/korean/products/console_servers/power_controller/

여기에 설명이 있습니다.
이 두 개의 솔루션이 있으면, 거의 서버실에서 작업하는 것과 별 차이 없는 제어 환경을 갖출 수 있게 되는 겁니다.
서버실에 가게 되는 경우는... 서버 하드웨어의 고장, BIOS로도 못 들어가는 경우, 그리고 서버를 업그레이드할 때 정도?
제가 원하던 거의 이상적인 솔루션이네요.
근데 이걸 내돈으로 살 순 없지... 정말 IDC에 취직해야 할까요?


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 운명과시간의신

2008/03/18 19:25 2008/03/18 19:25
, , , ,
Response
No Trackback , No Comment
RSS :
http://rafi.inha.ac.kr/~wbstory/blog/rss/response/70


블로그 이미지

게임 개발자가 되고 싶은 한 프로그래머의 블로그입니다.

- 운명과시간의신

Archives

Calendar

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Site Stats

Total hits:
16004
Today:
5
Yesterday:
11