[db] oracle 자동실행되게 하기.

1. /etc/oratab 의 ‘N’를 ‘Y’로 변경
ORA9:/opt/oracle/product/9.2.0.4:Y

2. /etc/init.d/dbora 파일생성 -> chmod 755 할것
————–
#!/bin/sh
#
# chkconfig: – 70 72
# description: Oracle Database 9.2.0.4
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.

ORA_HOME=/opt/oracle/product/9.2.0.4
ORA_OWNER=oracle

case “$1” in
  start)
    # Start the Oracle databases;
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    su – $ORA_OWNER -c $ORA_HOME/bin/dbstart
    ;;
  stop)
    # Stop the Oracle databases;
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    su – $ORA_OWNER -c $ORA_HOME/bin/dbshut
    ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  *)
        echo “Usage: $0 {start|stop|restart}”
        exit 1
esac
exit 0
———————-

3. /etc/init.d/dblsnr 파일 생성  -> chmod 755 할것
———————-
#!/bin/sh
#
# chkconfig: – 71 71
# description: Oracle databases listener
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.

ORA_HOME=/opt/oracle/product/9.2.0.4
ORA_OWNER=oracle

case “$1” in
  start)
    # Start the Oracle databases listener;
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    su – $ORA_OWNER -c “$ORA_HOME/bin/lsnrctl start”
    ;;
  stop)
    # Stop the Oracle databases listener;
    # The following command assumes that the oracle login
    # will not prompt the user for any values
    su – $ORA_OWNER -c “$ORA_HOME/bin/lsnrctl stop”
    ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  *)
        echo “Usage: $0 {start|stop|restart}”
        exit 1
esac
exit 0

——————

4. /etc/init.d/dbagent 파일생성 -> chmod 755 할것
————–
#!/bin/sh
#
# chkconfig: – 72 70
# description: Oracle Intelligent Agent
#
# 어떤환경변수가 쓰이는지 몰라서.. 다 불러온다.
source ~oracle/.bash_profile

case “$1” in
  start)
    $ORACLE_HOME/bin/agentctl start
    ;;
  stop)
    $ORACLE_HOME/bin/agentctl stop
    ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  *)
        echo “Usage: $0 {start|stop|restart}”
        exit 1
esac
exit 0
———————-

5. chkconfig 사용 rc.d에 등록한다.
chkconfig –add dbora
chkconfig –level 2345 dbora on
chkconfig –add dblsnr
chkconfig –level 2345 dblsnr on
chkconfig –add dbagent
chkconfig –level 2345 dbagent on

6. 혹시 실행하지 못한다는 메시지가 뜨면…
$ORACLE_HOME/dbs 디렉토리에서…
ln -s spfile<sid>.ora init<sid>.ora

Loading

[기타] oracle, mssql, mysql – enterprise manager

oracle -> em의 한계 (ERD, 2개 table select 안됨), toad

msSQL -> visual Studio 2005,2008 (.net 은 제외) : 무료(개인,개발) -> express edition (db connect driver는 따로 받아야 할듯) -> mssql로 개발한것도 무료..??(확인요..)
data envirent   (.net framework 2)

mySQL -> mySQL Yog
           -> web-based : mysqladmin (oracle 10g의 em과 비슷)

Loading

[oracle] 오라클 설치/실행시 주의사항, 기타 TIP

1.
설치나 완료후, netca, dbca, oem 등을 실행시
GLIBC.. libzip.so 어쩌구 저쩌구 나올경우..
LD_ASSUME_KERNEL=2.4.19 을 export 해준다.(.bash_profile에 넣어놔라.)
그리고, gcc32가 실행되야 하는데.. compat-oracle-rhel4가 설치되어있는지 확인해라.(gcc->gcc.orig, gcc32->gcc)

그런데 문제는 위의값을 세팅해놓으면 설치 중간에
Error in invoking target install of makefile /opt/oracle/920/precomp/lib/ins_precomp.mk
이런 에러가 날 수도 있다는 거다.
제일 속편한건… 설치할땐, gcc를 변경해놓으면 될듯. –> 근데 찾아보니 이걸 해주는게 compat-oracle-rhel4 인것 같다. 제일 마지막에 이걸 설치한다음에 gcc해서 gcc32가 나오는지 확인할 것.

2.
Oracle Enterprise management 실행시..
# oemapp console  <- xwindows에서 실행방법
lsnr 떠있는지 확인 <- 실행이 안되면
oemapp, dbca, netca등.. 실행은 되는데, 글씨가 깨지거나, 로그인이 안될때..
# unset LANG 

oem full setting해서 export할때, fail로 나오나, exp 및 log file이 생성되면..
log file을 확인해본다. 만약, EXP-00091: Exporting questionable statistics 때문에 warning이 떴다면,
exp할때, Associated Objects에서 Advanced optaion에서 Statistics Type을 “Do not update statistics on import”를 선택하면 우선 성공하긴 한다..

3.
backspace가 ^H로 나올경우
# stty erase ^H  ( ctrl+v 한다음에 backspace를 누른다. 글구.. bash_profile에 넣어놓으면 편하다.)
혹은
SQL> host stty erase ^H

4.
ed명령시 vi로 바꾸기
SQL> define _editor=vi
귀찮으면 $ORACLE_HOME/sqlplus/admin/glogin.sql 에 추가한다.
기타 환경설정 확인
SQL> show all

Loading

[unix] 터미널에서 한글 사용(설정), gnome도?

1. /etc/sysconfig/i18n을 수정한다.

[수정전]
LANG=”ko_KR.UTF-8″
SUPPORTED=”en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko”
SYSFONT=”latarcyrheb-sun16″

[수정후]
LANG=”ko_KR.eucKR”
SUPPORTED=”en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko”
SYSFONT=”latarcyrheb-sun16″

2. /etc/man.config 파일의 109라인을 수정한다.

[수정전]
PAGER /usr/bin/less -is

[수정후]
PAGER /usr/bin/less -isr

3. /etc/profile.d/less.sh 파일을 수정한다.

[수정전]
[ -x /usr/bin/lesspipe.sh ] && export LESSOPEN=”|/usr/bin/lesspipe.sh %s”

[수정후]
[ -x /usr/bin/lesspipe.sh ] && export LESSOPEN=”|/usr/bin/lesspipe.sh %s”
JLESSCHARSET=euc-kr

4. 터미널을 exit 하시고 다시 접속하시면 한글이 보임

5. gnome에서.. 언어를 한글로 설정했을때.. 메뉴가 한글로 안보이고 네모란 아이콘으로 보일때..
yum install ttfonts-ko
(centos 5.2의 경우는 yum install fonts-korean )

6. zterm등은 되는데 putty에서 한글(입력)이 안될때..
regedit -> \HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session\세션이름
FontCharSet 의 값을 0x81로 바꾼다.

Loading

[win] cmd창에서 ip변경

맨끝에 1은 metric. 복수개의 라우팅경로가 존재하는경우 우선순위를 나타냄.

netsh interface ip set address “로컬 영역 연결” static 192.168.1.3 255.255.255.0 192.168.1.1 1

netsh interface ip set address LAN static 192.168.1.3 255.255.255.0 192.168.1.1 1

(유동ip셋팅)

netsh interface ip set address “로컬 영역 연결” dhcp

(DNS입력)

netsh interface ip set dns “로컬 영역 연결” static 168.126.63.1

(DNS 추가입력)

netsh interface ip add dns “로컬 영역 연결” 168.126.63.2

(WINS server 입력)

netsh interface ip set wins “로컬 영역 연결” static 192.168.1.1

(유동ip셋팅)

netsh interface ip set address “로컬 영역 연결” dhcp

(유동DNS로 셋팅)

netsh interface ip set dns “로컬 영역 연결” dhcp

(유동WINS로 셋팅)

netsh interface ip set wins “로컬 영역 연결” dhcp

(WINS 지우기)

netsh interface ip set wins “로컬 영역 연결” none

(통신포트 방화벽 해제)

netsh firewall delete portopening TCP 4662

netsh firewall delete portopening UDP 4662

Loading

[unix] tar 를 통한 tape 백업

Linux에서 Tape 장비로 백업하기

1) 특정 디렉토리 백업하기

[root@server root]# cd /
[root@server /]# tar cpf /dev/st0 label=“full-backup created on `date`.” directory / home

tar cpf
 c 는 새로운 파일을 생성,
 p 는 파일들의 속성을 유지,
 f 는 바로 뒤따르는 파일 또는 장치에 기록
/dev/st0
 Linux 에서 SCSI Tape 드라이브 장치명
 일반적으로 하나의 Tape 드라이브를 사용
–label=” “
 백업세트에 파일이름을 지정할 수 없으므로, label 옵션을 사용하여 저장파일자체에 추가정보를 기입
 `date` 값의 정보( 현재 시스템의 날짜와 시간) 를 기록한다.
–directory /
 백업을 하기 전에, / 디렉토리로 이동하라는 의미
home
 풀백업 명령어 전에 / 디렉토리로 반드시 이동
 그러므로, 파일시스템상의 /home 디렉토리를 백업하라는 의미

2) 시스템 전체 풀 백업하기

[root@server root]# cd /
[root@server /]# tar cMpf /dev/st0 -label=“full-backup created on `date`.” directory / –exclude=proc –exclude=mnt –exclude=*/lost+found .

tar cMpf
 풀 백업하는 경우, 하나의 테이프 미디어로는 부족한 경우가 많다.
 그래서, -M (–multi-volume) 옵션을 사용하여 여러 미디어에 저장한다.
–exclude
 백업하지 않을 디렉토리를 지정하여 백업에 포함하지 않는다. 대표적으로 /proc /mnt lost+found 디렉토리가 있으며, 관리자가 서버에 따라 다르게 지정해야만 한다.
.
 제일 마지막의 . 은 현재 디렉토리와 그 아래의 모든 디렉토리를 백업한다는 의미로써, 여기서는 시스템 전체를 백업한다는 의미를 가진다.

3) 테이프 드라이브 조종하기

[root@server /]# mt f /dev/st0 rewind
[root@server /]# mt f /dev/st0 offline

rewind
 테이프를 되감기 할 수 있다. 그러나, 최근의 테이프 드라이버들은 자동으로 되감는 동작이 항상 실행되므로, 필요없는 명령어이다.
offline
 테이프들은 이제 드라이버상의 eject 버튼을 누르면 꺼낼 수 있다. 필요없는 명령어이다.

4) 백업의 오류 검사

[root@server root]# cd /
[root@server /]# tar dvf /dev/st0

※ 주의사항
1) Tape 백업시 압축하기
tar로 저장된 파일의 용량을 줄이기 위해 z 옵션을 이용해 백업을 압축할 수 있다. 그러나 이 옵션을 이용할 경우 문제를 일으킬 수 있다. 왜냐하면 압축파일 중 1비트라도 오류가 있을 경우에는 압축된 나머지 모든 데이터의 복구가 불가능하기 때문이다. 따라서 가급적이면 백업때 z 옵션을 이용한 압축 백업을 사용하지 않는 것이 좋다.
2) 명령어 실행시 디렉토리 이동에 관하여…
백업을 실행하기 전이나, 복구하기 전에는 반드시 “cd /” 명령어로 시스템 루트 디렉토리로 이동하여야만 합니다. 그렇지 않으면, 정상적인 백업이 이루어지지도 않을 뿐만 아니라, 백업의 복구도 실행되지 않습니다.

5) 백업된 Tape로 복구하기

[root@server root]# cd /
[root@server /]# tar xpf /dev/st0

tar xpf
 x 는 tar 파일로부터 파일을 추출,
 p 는 파일들의 속성을 유지,
 f 는 바로 뒤따르는 파일 또는 장치에서 가져오기

6) 백업된 Tape로 일부파일 부분복구하기

[root@server root]# cd /
[root@server /]# tar dvf /dev/st0
full-backup created on 2004. 02. 03. (화) 10:28:54 KST.
etc/
etc/passwd
etc/shadow
[root@server /]# tar xpf /dev/st0 etc/passwd

먼저 테이프에 어떤 파일들이 백업되어 있는 지를 확인한다. “tar dvf /dev/st0”
파일명과 경로를 확인하였으면, 특정파일을 지정하여 복구시킨다.
제일 앞에 / 기호가 붙지 않는 것에 주의한다.

※ 주의사항
1) 명령어 실행시 디렉토리 이동에 관하여…
복구 명령어를 실행하기 전에는 반드시 백업파일이 풀릴 디렉토리로 이동하여야 합니다. (백업된 파일의 경로도 고려하여야 한다.) 대부분의 경우, 즉 “cd /” 명령어로 시스템 루트 디렉토리로 이동하여야만 합니다. 그렇지 않으면, 백업에서 복구된 파일이 전혀 엉뚱한 디렉토리로 이동하여서 복구될 수 있습니다.

Loading

[unix] 하드 디스크 에라 숨기기

하드 디스크 에라 숨기기

하드 디스크를 오래 사용하게 되면 에라가 나게 된다. 파일 시스템이 엉키는 간단한 것이라면 디스크 검사로 해결이 된다. 불량 섹터가 났을 때 도스나 리눅스 포맷으로 해결 되기도 한다. 이렇게 운 좋은 경우는 불안하지만 별 어려움 없이 사용 할 수가 있다. 어려운 것은 하드 디스크가 물리적인 에라가 났을 때이다. 물론 이 것도 로우레벨 포맷 프로그램이나 바이오스의 하드디스크 포맷으로 해결하는 경우도 있다. 이것은 그 섹터를 베드라고 설정하고 사용하지 않는 방법을 쓰는 것이다. 가장 심각한 것은 논리 포맷 프로그램과 로우레벨 포맷 프로그램이 실행 중에 에라가 난 부분에서 더 이상 진행하지 못하고 중단 되는 경우이다. 이 때에는 에프터 서비스를 받아야 한다.

에프터 서비스가 문제가 없다면 좋겠지만 종종 판매한 곳을 찾을 수 없어서 이 것이 불가능하거나 고치는 비용이 오히려 중고 가격을 능가하는 경우가 많다. 어쩔 수 없이 하드디스크를 폐기 처분해야 하는 것이다. 하드디스크가 완전히 고장나서 인식조차 되지 않을 때라면 더 이상 이야기 할 것이 없지만 만일 하드디스크의 일부 섹터가 물리적인 에라가 나서 정상작동을 하지 않는 경우라면 해결 방법이 있다.

리눅스의 mke2fs/badblocks 프로그램은 직접 하드디스크와 교신하기 때문에 하드 디스크의 물리적 에라에도 불구하고 끝까지 검사를 한다. 도스 포맷과 바이오스 포맷 은 맵핑하거나 베드섹터라고 표시할 수 없는 에라가 났을 때 포맷자체를 중단해 버리기 때문에 에라난 부분을 찾거나 그 부분의 크기를 알 수 없지만 리눅스에서는 이 부분을 정밀하게 찾아 낼 수 있다. 그렇다면 리눅스에서 하드디스크를 모두 조사하여 에라난 부분을 제외하고 파티션을 한다면 하드디스크의 용량을 크게 잃지 않고 안전하게 재활용 할 수가 있게 되지 않겠는가? 이렇게 할 수 있는 것은 하드디스크의 물리적 에라는 일시적인 충격에 의해서 일부분의 섹터가 긁혀 생기는 경우가 많기 때문이다.

이물질이 들어갔다면 물론 지속적으로 베드가 증가하게 되니까 이렇게 해도 쓸 수는 없을 것이다.

자 이제 하드디스크를 재활용할 수 있는 경우를 정리해 보자. 하드디스크가 인식은 되지만 베드섹터가 났거나 포맷이 안되며 에프터서비스를 받을 수 없는 상황이다. 하드디스크의 일부분이라도 살려서 사용하고 싶다. 이럴때 리눅스가 어떻게 도와 줄 수 있는가? 필자의 스카시 하드디스크가 일부 섹터가 에라가 났다. 이 것을 살려낸 과정을 보이기로 한다. 우선 리눅스 fdisk 프로그램을 이용해서 전체를 리눅스 파티션으로 잡았다.

# fdisk /dev/sda

Disk /dev/sda: 17 heads, 62 sectors, 1020 cylinders
Units = cylinders of 1054 * 512 bytes

Device Boot Begin Stat End Blocks Id System
/dev/sda1       1    1 1020 537509 83 Liux native

fdisk 사용법은 m이라고 치면 자세하게 나온다.

주로 쓰는 것은 d(지우기), n(추가하기), t(ID 바꾸기), a(부트 파티션 설정하기), w(변경사항 실제로 쓰기) 등이다. 명령마다 간단한 메뉴가 나오기 때문에 사용에 어려움은 없을 것이다. 에라난 디스크를 다루고 있으므로 걱정하지 말고 명령을 시험해 보기 바란다.

이 글은 fdisk 사용법에 대한 글이 아니다. 명령 사용법은 스스로 조사해 익히기 바란다. 앞으로도 자세한 명령 사용법은 언급하지 않을 것이다.

실린더가 1020, 실린더당섹터가 62, 헤드수가 17개이며 리눅스 섹터는 512바이트이므로 모두 곱하면 약 540M 가 된다. 이 중 일부 섹터가 에라가 나서 전체를 쓸 수 없게 된 것이다. 어느 부분이 에라가 났는지 살펴보자.

# mke2fs -c /dev/sda1


Checking for bad blocks (read-only test):

Current error sd08:01: sense key Medium Error
Additional sense indicates Unrecovered read error
Scsidisk I/O error: dev 08:01, sector 1092, adsolute sector 1154
scsi0: MEDIUM EROR on channel 0, id0, lun0, CDB: Request Sense 00 00 00 10 00


Current error sd08:01: sense key Medium Error
Additional sense indicates Unrecovered read error
Scsidisk I/O error: dev 08:01, sector 414286, adsolute sector 414348
scsi0: MEDIUM EROR on channel 0, id0, lun0, CDB: Request Sense 00 00 00 10 00

필요한 부분을 제외하고는 모두 생략했다. mke2fs의 -c 옵션은 badblock 프로그램을 부른다. 이 프로그램은 물리섹터를 조사해 불량 유무를 조사하는 프로그램이다. 화면에서 물리 섹터 1154와 414348 부분이 에라가 났다. 실제로는 1154부터 약 300개 414348부터 약 100개 정도의 불량섹터가 있었다. 편의상 생략한 것이다.

불량섹터는 불량섹터를 부른다. 불량섹터 큰처를 억세스하게 되면 하드디스크의 이상 동작으로 계속 이 것이 증가하는 경향이 있다. 그러므로 가능하다면 불량섹터를 중심으로 어느 정도의 여유를 두고 이를 제외한 파티션을 한다면 불량섹터가 증가할 가능성이 적어진다. 이 하드디스크의 섹터수를 2로 나누면 그 부분의 위치를 1k바이트 단위로 알 수 있다. 위에서 1154섹터는 577k 바이트 부근이며 414348섹터는 207174k 바이트 부근이다. 이제 이 곳을 제외한 파티션을 새로 해 보자

# fdisk /dev/sda


Device    Boot  Begin  Stat   End   Blocks Id  System
/dev/sda1   *       3     3   380   199206  6  DOS 16-bit >=32M
/dev/sda2         421   421  1020   316200  6  DOS 16-bit >=32M  

이 디스크의 실린더는 1020이므로 1실린더가 약 500K 정도이다. 첫번째 베드섹터를 피하기 위해서 첫번째 파티션은 실린더 3부터 시작했다. 두번쩨 베드섹터가 200M 근처에 있으므로 앞뒤로 1-2메가 정도의 여유를 두었다. 화면에서 보듯이 도스에서는 두번째 파티션을 확장파티션으로 설정해야 하지만 리눅스에서는 아무 상관이 없다.

이렇게 만든 파티션도 윈도우에서 문제 없이 쓸 수 있다. 물론 이렇게 쓰기 위해서는 첫번째 파티션을 부트가능하게 만들어야 한다. 불안하다면 두번째 파티션을 ID 5번 확장 파티션을 만들고 도스 fdisk 프로그램으로 그 안에 논리 드라이브를 만들면 된다.

fdisk에서 파티션을 변경하는 것은 d로 지우고 n으로 추가하고 t로 아이디를 바꾸는 작업이다. ID 값을 알고 싶으면 l이라고 치면 된다. 조금만 해 보면 쉽게 모든 조작을 할 수 있을 것이다. 필자는 특수한 경우를 위해서 스카시 하드 디스크를 예로 들었지만 IDE 하드 디스크도 마찬 가지이다. 첫번째 IDE 디스크는 hda, 두번째는 hdb라는 이름을 가진다. 도스의 C:,D:와는 개념이 다르기 때문에 주의해야 한다. 에라난 디스크를 다룬다고는 하지만 무척 중대한 작업이니까 리눅스에 대한 이해가 조금은 있는 사람과 함께 하거나 스스로 리눅스에 대한 이해를 한 후에 도전하기 바란다. 리눅스에 대한 이해를 위해 필요한 모든 정보는 쉽게 구할 수 있고 무료이기 때문에 어렵지 않을 것이다. 리눅스에 대해 알고 있는 것이 앞으로 많은 도움이 될 수 있다.

요즘 같이 어려운 시기에 하드디스크 하나도 아쉬운 상황이므로 이 방법을 사용해 볼만하다. 이 하드디스크의 전체 용량에서 약 5메가 바이트 정도만 손해보고 정상적 으로 사용할 수 있으니까 좋은 일이다. 물론 리눅스를 인스톨 해서 쓴다면 더욱 좋겠지만 그건 사용자 마음에 달려 있는 일이다. 참고로 이렇게 쓰는 하드디스크는 중요한 시스템 디스크로 사용하기 보다는 보조적인 용도로 쓰는 것이 좋을 것이다.

하드디스크 청소하기
하드 디스크를 여러 컴퓨터에 옮기며 사용하다 보면 특이한 문제가 생기는 경우가 있다. LBA모드 등에 대해서 롬바이오스가 잘못 판단하는 경우 등인데 한 컴퓨터에서 LBA 모드로 포맷해서 사용하다가 다른 컴퓨터에 연결했을 때 하드디스크의 설정이 LBA로 보이지 않거나 이렇게 강제로 설정해도 부팅 후에 바뀌거나 도스 fdisk 프로그램이 제대로 디스크 용량을 인식하지 못하고 엉뚱한 크기로 파악하는 경우등이다.

이 것은 근본 원인을 알 수 없지만 하드디스크의 마스터 부트 섹터가 이상이 있거나 LBA 모드를 파악하는 방법이 컴퓨터 바이오스에 따라서 제대로 적용되지 않을 때 문제가 생기는 듯하다. 원인은 알 수 없지만 일반적으로 이런 경우에는 간단한 방법이 있다.

리눅스 플로피로 부팅해서 다음 명령을 실행해보자.

# cat /dev/zero >/dev/hda

이 명령은 0을 하드디스크 전체에 쓰는 명령이다. 리눅스는 하드디스크를 물리적인 스트림의 저장체로 보기 때문에 이 명령은 하드디스크의 물리적인 영역 모두에 0을 쓰게 된다. hda는 마스터 부트 섹터부터 하드 디스크 끝까지를 의하며 hda1은 하드 디스크의 첫번째 논리적 파티션이 점유하고 있는 물리적 파티션 전체를 의미한다.

그러므로 위의 명령은 물리적 하드 디스크 전체를 0으로 초기화 하는 것이다. 이 명령을 실행하고 나면 파티션 정보를 포함한 모든 내용이 지워진다. 이제 바이오스에서도 하드디스크의 용량을 제대로 잡을 수 있고 도스 포맷에서도 문제가 없을 것이다.

이렇게 처리한 하드 디스크에 대해서 도스에서 꼭 해야 할 것이다. 마스터 부트 섹터를 초기화 했기 때문에 파티션을 새로 잡아도 부팅되지 않는다. 이럴 때 리눅스 사용자만이 알고 있는 다음과 같은 도스 명령을 사용해야 한다.

a:> fdisk /mbr

리눅스 사용자 사이에서는 아주 유명하지만 윈도우 사용자는 한 번도 본 적이 없을 것이다. fdisk /? 를 사용해도 나오지 않기 때문이며 도스만을 사용한다면 전혀 쓸 일이 없는 옵션이기 때문이다.

이 옵션은 하드 디스크 마스터 부트 섹터의 파티션 정보를 제외한 모든 부분을 새로 쓰게 된다. 컴퓨터에 붙어 있는 첫번째 하드 디스크에만 사용 할 수 있기 때문에 이 명령을 실행해야 할 하드 디스크는 반드시 첫번째로 연결해 놓아야 한다. 이 명령은 다른 용도로도 사용할 수 있는데 예를들어 마스터 부트 섹터에 존재하는 바이러스를 잡을 때도 쓸모가 있다.

회사에서 보안이 필요한 정보가 담긴 하드디스크를 관리하기 위해서 여러 가지 방법이 있을 수 있다. 이런 하드디스크를 다른 용도로 사용하려고 할 때 단순히 파일을 지우기 만 해서는 안된다. 지운 파일을 살리는 프로그램이 있기 때문이다. 이렇게 해서 정보를 빼내지 못해도 하드 디스크를 섹터 단위로 읽게 되면 정보를 쉽게 가져 갈 수 있다. 이럴 때 위에서 말한 “cat /dev/zero >/dev/hda” 명령을 사용하면 좋다. 하드 디스크의 파일 시스템이 모두 없어질 뿐만 아니라 모든 섹터가 완전히 0으로 초기화 되기 때문이다.

시디롬 읽기

윈도우는 아직 도스의 그늘에서 자유롭지 못하다. 새로 산 하드 디스크를 연결하고 윈도우를 인스톨하기 위해서 하드 디스크를 포맷한 후에 시디롬을 인식 시키기 위해서 복잡한 방법이 필요하다. 도스 플로피를 만들고 config.sys와 autoexec.bat를 고쳐서 도스 플로피 부팅 후에 시디롬을 인식할 수 있도록 해야 한다. 도스 플로피를 만드는 작업, mscdex.exe 프로그램이 필요하고 config.sys등을 고쳐야 하며 장착된 시디롬에 맞는 디바이스 드라이버 또한 필요하다. 물론 이 디바이스 드라이버가 요구하는 적절한 옵션에 대해서도 알고 있어야 한다. 이렇게 하지 않고 하드 디스크를 윈도우가 설치된 다른 컴퓨터에 연결하여 윈도우 시디롬에서 필요한 파일만 복사해서 인스톨하는 방법을 쓸 수도 있다. 이 방법을 위해서 두 컴퓨터를 분해하고 새 하드 디스크를 다른 컴퓨터에 연결하는 작업이 필요하다. 윈도우 복사를 위해서 새 하드 디스크를 연결한 컴퓨터에서는 시디롬을 세컨더리 마스터에서 슬레이브로 바꾸어야 하고 하드 디스크를 다시 인식 시켜야 한다. 불행히 여분의 전원 케이블이 없다면 일은 더욱 복잡해진다.

이렇게 컴퓨터에 대한 작업은 기대한 작업 시간과 복잡도가 증가하는 경향이 있다. “새 하드 디스크에 윈도우 인스톨 파일 복사하기”라는 간단한 작업을 수행하기 위해서 두 컴퓨터를 뜯고 전원 케이블을 구하러 다니거나 시디롬과 하드 디스크의 매치가 이상해서 불필요한 곳에서 시간을 소비하기도 하고, 도스 플로피를 만들어서 시디롬을 인식 시키려 할 때에도 필요한 디바이스 드라이버를 구하기 위해서 시디롬 제작 회사의 홈페이지까지 방문해야 하는 경우도 있다. 퇴근 1시간 전에 금방 끝냈 수 있을 것으로 보이는 이런 간단한 작업을 시작했다가 막차를 놓치는 경우가 허다하다.

리눅스가 어떻게 이런 상황을 쉽게 해결하게 해 줄 수 있을까? 리눅스 부팅 플로피로 간단히 해결가능하다. 리눅스는 IDE 시디롬에 대해서 단일한 디바이스 드라이버를 사용한다. 모든 IDE 시디롬이 장착된 위치에 따라 /dev/hdb   /dev/hdd 까지 명칭은 달라 지지만 마운트 해서 읽을 수 있다. 세컨더리 마스터는 /dev/hdc이다. 시디롬은 하드 디스크와는 달리 파티션 개념이 없기 때문에 hdc1,hdc2이런 명칭을 사용하지 않는다.

다음 작업으로 간단히 시디롬의 필요한 파일을 하드 디스크에 옮길 수 있다.

# mount /dev/hda1 /mnt
# mount /dev/hdc /mnt2 -o ro
# mkdir -p /mnt/backup/win95
# cp -a /mnt2/win95/* /mnt/backup/win95

얼마나 간단한 작업인가. 하드 디스크가 적다면 윈도우를 인스톨 한 후에 이 파일들을 지우면 그만이다. 도스 플로피를 만드는 작업에 비해서 작업 시간이 훨씬 적고 하드 디스크를 다른 컴퓨터에 옮기는 작업을 하지 않아도 되기 때문에 드라이버를 들고 컴퓨터를 열 필요가 없다. 퇴근 시간 전까지 윈도우 인스톨 뿐만 아니라 응용 프로그램까지 모두 설치해도 시간이 남게 되지 않을까? 오래된 시디롬은 사운드 카드에 업체마다 특별한 방식으로 연결되어 있다. 이런 시디롬이 회사안에 있다면 커널 컴파일을 새로 해서 그 시디롬에 대한 지원을 추가해 놓으면 필요한 때에 당황하지 않고 작업할 수 있다. 리눅스에서 이런 시디롬에 대한 지원은 좋은 편이다.

그렇다면 시디롬이 달려 있지 않은 컴퓨터에서는 어떻게 할 것인가? 도스에서라면 한가지 방법 밖에 없다. 하드 디스크를 분리해서 시디롬 달린 컴퓨터에 연결해서 필요한 파일을 복사해 오는 것이다. 이 방법은 위에서 말한 모든 문제가 생길 가능성이 있다. 네트웍이 가능하다면 다른 컴퓨터의 시디롬을 리모트로 사용할 수 있다. 윈도우가 정상적으로 동작한다면 문제가 없지만 문제는 언제나 가장 복잡한 상황에서 생기는 법, 지금과 같이 윈도우를 인스톨하는 등 자원 사용이 불가능 할 때에는 많은 시간을 소모 해야 한다. 굳이 도스를 사용하고자 한다면 다시 부팅 플로피를 만들고 도스용 네트웍 디바이스 드라이버를 구해야 하고 필요한 설정값을 알기 위해서 문서를 들여다 보아야 한다. 제 시간에 퇴근하기는 이미 글러 버리는 것이다. 이 것도 리눅스 부팅 디스켓으로 간단히 해결할 수 있다. 이 상황에서 리모트의 시디롬을 리눅스 플로피 만으로 읽어 들이는 방법에 대해서 설명한다. 우선 리눅스 플로피로 부팅한 후에 다음과 같은 명령을 내린다.

# cat /proc/net/dev
Inter-|   Receive                  |  Transmit
  face |packets errs drop fifo frame|packets errs drop fifo colls carrier
     lo:     18    0    0    0    0       18    0    0    0     0    0
   eth0:      0    0    0    0    0        0    0    0    0     0    0

여기에 보면 eth0 항목이 있다. 커널이 이더넷 카드를 제대로 인식한 것이다. 박스 기사에 리눅스 부팅 플로피가 지원하는 네트웍 카드 목록이 있으니 참고 하기 바란다. 만일 회사에서 사용하는 네트웍 카드가 이 목록에 없다면 커널 컴파일을 통해서 지원 하게 하면 된다. 회사원 중에서 리눅스를 사용하는 사람에게 부탁해서 시간이 있을 때 회사에서 사용하는 네트웍 카드에 대한 지원을 추가하기 바란다. 여분의 피시가 있다면 이 기회에 리눅스 박스를 하나 만들어 두면 더욱 좋다. 커널이 네트웍 카드를 인식 했다면 그 다음은 일사천리로 진행할 수 있다. 다음 명령을 사용할 것.

# ifconfig eth0 192.168.1.20
# route add -net 192.168.1.0

192.168.1.20은 임의로 만든 IP번호이다. 이 번호는 회사의 네트웍 중에서 여유가 있는 번호로 바꾸어야 한다. ifconfig는 네트웍 카드 eth0에 IP를 할당하는 명령이다. route명령으로 이 컴퓨터가 할당받은 IP가 속한 네트웍을 라우팅하도록 한다. 물론 이 번호도 회사에서 사용하는 실제 번호로 바꾸어야 한다. 네트웍 카드가 활성화되어 있고 시디롬을 사용할 윈도우 컴퓨터와 연결 가능한지 다음 명령을 사용해 본다.

# ping 192.168.1.20
   PING 192.168.1.20 (192.168.1.20): 56 data bytes
   64 bytes from 192.168.1.20: icmp_seq=0 ttl=64 time=0.4 ms

# ping 192.168.1.30
   PING 192.168.1.30 (192.168.1.30): 56 data bytes
   64 bytes from 192.168.1.30: icmp_seq=0 ttl=64 time=0.8 ms

192.168.1.30은 시디롬을 사용할 윈도우 컴퓨터의 IP번호이므로 실제 번호로 바꾸어야 한다. 문제가 없다면 패킷 전송 속도가 나올 것이다. 이제 윈도우 머신을 마운트하자.

# smbmount //win95com/d /mnt -I 192.168.1.30 -U someuser -P passwd

win95com은 랜메니저 위에서 사용하는 윈도우 박스의 이름이다. 윈도우 네트웍 설정에서 “컴퓨터 이름”에 해당하는 값이다. d는 공유하도록 설정된 시디롬이 할당받은 드라이버 이름이며 리눅스 플로피로 부팅한 컴퓨터의 /mnt에 마운트 된다. 플로피로 부팅했으므로 네임서버가 설정되어 있지 않기 때문에 -I 옵션으로 IP 값을 정확히 적어 주어야 한다. 뒤에 있는 것은 물론 윈도우 박스에 로그인할 때 사용하는 사용자명과 비밀번호 값이다. nobody나 비밀번호 없는 사용자로는 윈도우 박스를 마운트 할 수 없다.

사용자명과 이에 따른 비밀번호가 반드시 필요하다. 이제 리모트 윈도우 박스가 로컬의 /mnt 디렉토리에 마운트 되었다. 마치 로컬에 있는 시디롬처럼 사용이 가능하다.

그 후에는 앞에서 설명한 로컬 시디롬 운용과 마찬가지의 작업을 진행하면 된다.

한개의 플로피로 네트웍이 가능하고 리모트의 시디롬을 마운트해서 사용할 수 있다면 회사의 컴퓨터 운용에 많은 장점이 있을 것이다. 여기서는 시디롬에서 파일 읽어 오기에 대해서만 설명했지만 리모트 윈도우 박스가 마운트 가능하다면 수많은 일을 할 수 있다. 어떤 일이 가능할 것이지는 사용하는 여러분의 용도가 무엇인지에 달렸다.

출처 : http://iskim.intosea.com/linux-window-1.html#ss1.1

Loading

[unix] How to Install Munin on CEntOS

How to Install Munin on CEntOS

Munin is a monitoring tool for servers. It uses RRDtool to log and graph data from your servers. The plugin API is very easy to grasp. Actually, I haven’t read the API documentation yet. I just looked at the output of the plugins and it looks easy to achieve. The data can be accessed through the web.

This guide will walk you through installing and configuring Munin on CEntOS 4.3/4.4 x86. The steps are pretty much the same for later releases of CEntOS, Red Hat, Fedora [Core] and/or Red Hat-based installations.

Munin works by polling your servers for the data hence two applications, Munin and Munin Node. The former periodically gathers data (cronned) and the latter serves the data to the former. Please refer to the following for our example configuration. You can make up a domain if you want Munin to group your servers similar to the live demo.

Munin “Graph Server” – alpha.sample.net (192.168.1.1)
A Munin Node – bravo.sample.net (192.168.1.2)

1. Installing and Configuring Munin

In this section, we set it up on alpha.sample.net

   1. Add the RPMforge repository.
      rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
      This step is optional if your Linux distribution has the packages in its default repositories. For other versions and architectures, click here.
   2. Install munin.
      yum -y install munin

   3. Change the ownership of the Munin web docroot to munin.
      chown -R munin:munin /var/www/munin
   4. The default configuration file (in version 1.2.5-1) the value for the web docroot points to the wrong directory. Replace the value of htmldir from /var/www/html/munin to /var/www/munin at /etc/munin/munin.conf (line 7).
   5. Restart Apache and Cron
      service httpd restart && service crond restart
   6. You can check if it’s working through your browser (i.e. http://192.168.1.1/munin/). You will get a 404 (not found) if you don’t supply a trailing slash.

2. Add a Node

In this section, we will configure bravo.sample.net.

   1. Add the RPMforge repository (see 1.1).
   2. Install Munin Node.
      yum -y install munin-node
   3. Configure. Edit /etc/munin/munin-node.conf with your favorite text editor.
          * Allow the graph server (alpha.sample.net/192.168.1.1) to poll the node.
            allow ^192\.168\.1\.1$
          * If your server doesn’t report the correct hostname, add the following line
            host_name bravo.sample.net
          * If your servers have two interfaces and on the same LAN (e.g. one for Internet and another for LAN), you can configure the node to bind and listen on the local interface by changing the value of host (line 13) from * to the local IP of the node.
   4. Start munin-node and set to start on bootup.
      service munin-node start
      chkconfig munin-node on
   5. Edit Munin’s configuration on the graph server (/etc/munin/munin.conf).
      [bravo.sample.net]
      address 192.168.1.2
      use_node_name yes

Wait for at least 5 minutes for the new node to appear. You can also install the node on the graph server. The default node configuration will work out of the box.

3. Install/Activate Some Plugins

This section should familiarize you with the plugin installation routine. Plugins are installed in the nodes.

    * Apache
         1. Create a symbolic link to the Apache plugins (stored in /usr/share/munin/plugins) in the plugin folder.
            ln -s /usr/share/munin/plugins/apache_* /etc/munin/plugins/

         2. Enable server status reports. Add the following to Apache’s configuration file.
            ExtendedStatus On
            <Location /server-status>
            SetHandler server-status
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1
            </Location>
         3. Restart Apache and the node
            service httpd restart && service munin-node restart
    * Asterisk
         1. Download the plugins for your Asterisk version from here. ( http://rodolphe.quiedeville.org/munin-asterisk.fr.html )
         2. Extract them to /usr/share/munin/plugins.
         3. Make the files executable
            chmod 755 /usr/share/munin/plugins/asterisk_*

         4. Configure Asterisk Manager by adding/changing the following in /etc/asterisk/manager.conf
            [general]
            enabled = yes
            port = 5038

            [munin]
            secret = somepassword
            permit = 127.0.0.1 ;if this doesn’t work, use the local IP
            write = system,call,log,verbose,command,agent,user
         5. Add the following to the plugin configuration file in /etc/munin/plugin-conf.d/munin-node
            [asterisk_*]
            env.username munin
            env.secret somepassword
         6. Reload Asterisk’s configuration and restart the node.
            asterisk -rx reload >> /dev/null && service munin-node restart
    * MySQL
         1. Create a symbolic link to the MySQL plugins (stored in /usr/share/munin/plugins) in the plugin folder.
            ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/
         2. If your root user has a password (or want to use a different user), edit the plugin configuration file in /etc/munin/plugin-conf.d/munin-node and uncomment line 16 by removing the leading hash (#). Then change the parameters that will be used when mysqladmin is run.
         3. Restart the node
            service munin-node restart
    * MTR
         1. Make sure you have the latest version of MTR.
            yum -y install mtr && yum -y update mtr
         2. Download the plugin here (direct link) http://vido.info/stuff/mtr100_.tar.gz
         3. Extract to /usr/share/munin/plugins
         4. Make the file executable.
            chmod 755 /usr/share/munin/plugins/mtr100_
         5. Create a symbolic link to the plugin (stored in /usr/share/munin/plugins) in the plugin folder. Append the host that you want to query to the link of the name.
            ln -s /usr/share/munin/plugins/mtr100_ /etc/munin/plugins/mtr100_somehost.com
         6. To add another host to query, just create another symbolic link.
         7. Add the following to the plugin configuration file in /etc/munin/plugin-conf.d/munin-node
            [mtr100_*]
            timeout 60
         8. Restart the node
            service munin-node restart

4. Links

    * How to install on Debian machines
    * How to Write Munin Plugins
    * Troubleshooting Munin
    * MuninExchange – Munin Plugin Repository

This entry was posted on Thursday, June 14th, 2007 at 13.47.20 and is filed under foo, bar and h4xx1ng, Software/Code, Open Source, Techitude. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Loading