● 디스크와 메모리

   디스크   메모리 
 속도  저속  고속
 가격  저가  고가
 용량  고용량  저용량
 용도  저장용  작업용


● 디스크의 종류
   용량  속도  가격  단점
 PC에서 많이 사용
 IDE(E-IDE)
 고용량  저속(5400 rpm)  저가  
 SATA  고용량  고속  저가  복구가 안됨
 SATA2  고용량  고속  저가  SATA단점 해결
 서버에서 많이 사용
 SCSI
 저용량  고속(기본 15K rpm)  고가  


● OS별 디스크 관련 명령어 비교
   리눅스  솔라리스  윈도
 파티셔닝  fdisk  fdisk  fdisk
 포맷  mkfs  newfs  format
   mke2fs    
   mke3fs    
 마운트  mount  mount  자동


● OS별 디스크명 표기 예시
 타입  리눅스  솔라리스  윈도
 SCSI  /dev/sda  c0t0d0s0  C:
     /dev/sda1    D:
     /dev/sda2    
   /dev/sdb    
 IDE  /dev/hda    
     /dev/hda1    
     /dev/hda2    
   /dev/hdb    
* 물리적이름 : 커널이 디스크를 부르는 이름.
* 논리적이름 : 유저가 디스크를 부르는 이름. 위의 표기 예시가 논리적이름임.

* Hot Swap : 장비가 켜져있을 때 디스크를 꽂고 빼고 할 수 있는 기능.



● 디스크 추가 과정

HDD 추가 // Power Off
  ↓
OS 부팅
  ↓
파티셔닝
  ↓
포맷  
  ↓
마운트




● HDD 추가

1. Edit virtual machine settings를 선택한다.


2. Add 버튼을 누른다.


3. Hard disk 선택 후 Next


4. 기본 적용 상태로 계속 Next


5. 추가시킬 디스크 용량 설정 후 Next


6. 디스크의 이름을 지정 후 Finish


7. New hard disk 에 새로 추가한 디스크가 보인다. OK 버튼을 눌러 빠져나온다. 하드를 붙인 후 파티션, 포맷, 마운트 작업을 위해 OS를 부팅한다.




● 파티셔닝(구획 나누기)
위에서 1G용량의 하드를 장착했다. 이것을 600M과 400M으로 파티션을 나눠본다.

1. 루트로 로그인 후 fdisk 명령으로 장착된 하드가 잘 인식되었는지 확인해본다. /dev/sdb 라는 이름의 디스크가 인식되었음을 확인했다. 이제 fdisk /dev/sdb 명령으로 파티셔닝을 시작한다.


2. n을 누른다. (add a new partition)


3. p를 누른다. (1~4번까지는 Primary partition이므로 p)
그리고 첫번째 파티션이므로 1을 입력.


4. 첫번째 파티션의 첫 실린더번호를 입력하라고 나오는데 디폴트로 1이 입력되어있으므로 엔터.
마지막 파티션의 실린더번호는 즉 해당 파티션의 용량을 뜻하므로, 우리가 하려는 목적인 +600M를 입력.
그러면 첫번째 파티션이 만들어졌다.


5. 두번째 파티션도 첫번째 파티션을 생성할 때와 마찬가지 방법으로 하되, 두번째를 뜻하는 2를 입력하는 것과 총 1G의 용량 중 첫번째 파티션에 할당된 600M을 제외한 나머지 용량을 할당하기 위해 +$를 입력하는 것이 다르므로 주의한다.


6. 위에서 바로 w를 눌러 저장해도 되지만(write table to disk and exit), 파티션이 제대로 만들어졌는지 조회해보려면 p를 누른다.(print the partition table)
첫번째 파티션과 두번째 파티션이 잘 만들어졌음을 확인했다.


7. w를 눌러 저장한다. 파티션 설정 정보 관련 내용은 추가한 해당 디스크 안의 MBR(마스터부트레코드)에 저장된다. (솔라리스는 label 명령어임)




● 포맷
ext3 파일시스템으로 포맷해본다.

1. 첫번째 파티션의 장치명인 /dev/sdb1을 mkfs.ext3의 명령어로 포맷한다.


2. 두번째 파티션도 마찬가지로 포맷한다.




● 마운트
첫번째 파티션은 루트디렉토리 밑의 p1디렉토리에, 두번째 파티션은 루트디렉토리 밑의 p2디렉토리에 각각 마운트 시켜본다.

1. p1, p2라는 디렉토리를 만들고 mount명령어를 이용하여 마운트 시킨다. 잘 되었는지 df 명령어로 조회해본다.


2. 이후 OS를 종료해버리면 나중에 재부팅시 마운트가 되어있지 않다. 앞으로 재부팅 후에도 자동으로 계속 마운트가 되어있게 하기 위해 /etc/fstab 파일을 열어 수정한다. 오타가 있으면 부팅에서 오류가 나니 주의한다. vi를 열었을 때 글자가 깨져보인다면 캐릭터셋을 EUC-KR 또는 UTF-8로 바꾼 후 다시 파일을 열어야 한다.




[Q1] 6G HDD 추가 후
        2G -> /test1
        3G -> /data1
        나머지 -> /u01/app 에 마운트 시켜 보라.

[Q2] 2G HDD 추가 후
        전체를 oracle계정의 /backup 으로 사용할 수 있도록 권한을 변경하라.

Posted by 겨울섬
,

모든 리눅스제품에서 통용되는 방법이다. 나는 페도라11로 테스트를 했는데, RHEL 시리즈에서도 같은 방법으로 하면 된다.

1. 리눅스 1번 CD로 바꾼 후 부팅시 vmware로고가 뜰 때 잽싸게 F2를 눌러 바이오스 셋업으로 들어간다.


2. boot탭에서 부팅장치 우선순위 CD-ROM Drive를 최상위로 올린다. 키보드의 -를 눌러서 바꾸면 된다. 그리고 Exit탭에서 Exit saving changes를 하고 빠져나온다.


3. 재부팅 되면서 CD로 부팅을 한다. 페도라는 Rescue installed system을 선택하면 되고, RHEL시리즈는 커맨드입력하라는 창이 나오는데 거기서 linux rescue라고 치면 된다.


4. 모두 기본을 선택해주고 OK를 하면 된다. 중간에 네트워크를 이용할 것이냐는 물음에, 우리는 루트암호를 깨는 것만 할 것이므로 네트워크를 굳이 이용하지 않아도 되니 NO를 선택한다.


5. 빨간색 네모박스 안의 명령을 기억하자. 복구모드로 들어가서 저 명령을 쳐야 실제 설치된 시스템으로 마운트가 되는 것이다.


6. 자 이제 복구모드로 들어왔다. 우리는 루트암호를 깨야 하므로 암호가 저장되어있는 파일인 /etc/shadow를 열어야 한다. vi로 열어보면 아무 내용도 들어있지 않다. 이유는 지금 우리가 들어와있는 복구모드는 CD로 부팅했으므로 CD로 시스템에 들어와있는 것이다. 그래서 chroot /mnt/sysimage라는 명령을 쳐야 실제 복구시킬 시스템으로 마운트가 된다. 위 명령을 친 후 /etc/shadow파일을 열자.


7. root: : 사이의 값을 모두 지워준 후 저장하고 빠져나와 재부팅(reboot)을 시킨다. 여기 시점에서 루트의 암호는 깨진 것이다. 재부팅 시 다시 바이오스 셋업으로 들어가 부팅장치 우선순위를 HDD로 바꿔준다.


8. 재부팅 후 로그인 화면에서 원래는 root를 쓰면 다음에 암호를 묻는 창이 나와야 하지만, 루트의 암호를 깼으므로 묻지 않고 로그인에 성공했다.


9. 루트암호를 잊어버렸을 때 위와 같은 처리를 하여 루트암호를 깨고 로그인에 성공했다. 하지만 루트계정은 시스템에서 최고관리자의 역할이기에 암호없는 루트는 아무 문제가 될 수 없다. 그래서 다시 루트의 암호를 재설정해준다.


※ 가장 좋은 것은 루트암호를 까먹지 않고, 주기적으로 바꿔주는 것이 필요하다.
Posted by 겨울섬
,

프로세스와 데몬은 엄밀히 말하면 다른 것이다. 프로세스와 데몬을 구별할 줄 알아야 한다.
프로세스와 데몬의 공통점은 어떤 일을 우리 대신 수행해주는 것이라고 보면 되는데, 차이점은 프로세스는 필요시 실행시키는 것이고 데몬은 자동 실행이라는 것이 다른 점이다.

● 데몬의 종류

  • standalone : 일명 정규직의 개념. 요청이 들어오면 관리데몬(수퍼데몬) 없이 자기가 알아서 요청을 받는 항시 구동.
  • xinetd : 일명 일용직의 개념. 필요할 때만 구동. xinetd는 수퍼데몬이라고 하는데, 요청이 들어오면 xinetd가 받아서 하위 데몬을에게 일을 시킨다. 일이 끝나면 하위 데몬을 종료시킴.


데몬은 데몬이름.conf 라는 설정파일 안에서 데몬의 형식을 상황에 맞게끔 수정해주면 된다.



포그라운드 프로세스는 해당 프로세스의 작업이 맨 상위로 처리되어 그 작업이 끝나기 전까지 다른 작업을 하지 못한다.
백그라운드 프로세스는 해당 프로세스의 작업이 우선적은 아니기에 그 작업이 끝나기 전에도 다른 작업을 수행 가능하다.

yes > /dev/null : 포그라운드 프로세스 실행방법의 일종으로 실행 중에는 다른 작업이 불가능.
yes > /dev/null & : 백그라운드 프로세스 실행방법은 뒤에 &을 추가해 주는 것임. 실행 동안 다른 작업 가능.

jobs
현재 수행중인 프로세스가 어떤 것인지 보여줌. (프로세스 번호도 같이 보여줌)

fg 1
현재 수행중인 1번 프로세스를 포그라운드로 변경. (ctrl+z 누르면 일시정지. 이때 백그라운드로 변경시키고 다른 작업 수행 후에 포그라운드로 다시 변경시켜주면 됨.) (ctrl+c 누르면 취소)

bg 1
현재 수행중인 1번 프로세스를 백그라운드로 변경.

ps
ps -ef | grep yes
현재 돌고있는 프로세스를 전부 보여줌.
프로세스 중 yes가 들어가있는 프로세스만 보여줌.

pstree
pstree | grep httpd
프로세스들을 트리 형태로 보여줌.
아파치와 관련된 프로세스 데몬만 트리로 보여줌.

top
top -c : top을 실행시켰을 때 명령어까지 보여준다.
윈도의 작업관리자와 같은 개념으로서, 5초마다 한번씩 갱신하며 cpu이용률이나 메모리이용률, 현재 돌고있는 프로세스명 등을 보여준다. (top을 종료하려면 ctrl+c)
shift+p : cpu 많이 쓰는 프로세스부터 정렬됨.
shift+m : 메모리 많이 쓰는 프로세스부터 정렬됨.
k : PID to kill이라는 프롬프트가 뜨며 거기에 죽일 프로세스PID번호를 입력하고, 시그널을 입력하면 죽는다.

kill (시그널번호) PID

시그널 종류
 -1  : 종료시킨 후에 다시 시작 (HUP)
 -9  : 강제로 즉시 종료 (Kill)
 -15 : 정상적으로 끝날 때까지 냅둠. 즉, 정상종료. (Term)
프로세스는 커널이 만들고 관리한다. top명령에서 부하가 많은 프로세스의 PID를 보고 커널에게 해당 프로세스를 죽이라고 신호를 주는데 이때 사용하는 명령어가 kill이다.
Posted by 겨울섬
,