본문 바로가기

자격증/리눅스 마스터 1급

Part1) 리눅스의 실무의 이해 - 리눅스 시스템의 이해(1) | 리눅스와 하드웨어, 부트매니저

하드웨어의 이해


1) CPU(Central Processing Unit): 컴퓨터 시스템 전체를 제어하는 장치로서 중앙 처리 장치라고 부름.

  1. 레지스터(Register): 중앙 처리 장치에 있는 일종의 임시 기억 장치이고, 아주 적은 데이터를 잠시 저장할 수 있는 공간이며, O/S가 제어권을 넘긴 다른 프로그램으로 데이터를 전달하기 위한 장소를 제공함.
  2. 산술 논리 연산 장치(Arithmetic-Logic Unit): 중앙 처리 장치의 한 부분으로서 컴퓨터 명령어 내에 있는 연산자들에 대해 연산과 논리 동작을 담당.
  3. 제어장치(Control Unit): 비교, 판단, 연산을 담당하는 논리 연산장치와 명령어의 해석과 실행을 담당함.
2) 메모리(Memory): 컴퓨터의 마이크로프로세서가 신속하게 이용할 수 있도록 명령어와 데이터를 전자적인 방법으로 저장하는 장소
  1. 롬(ROM: Read Only Memory): 컴퓨터에 미리 장착되어 있는 메모리로서 저장되어 있는 데이터는 읽을 수만 있고 그 값을 변경 할 수 없음. 컴퓨터 부팅되거나 재설정 위한 프로그램을 저장하고 있으며, 비휘발성임.
  2. PROM(Programmable ROM): 사용자에 의해 내용이 한 번 수정될 수 있는 롬.
  3. EPROM(Erasable Programmable ROM): 메모리 속에 저장된 내용을 지우고 재사용 할 수 있는 PROM으로서 메모리 칩의 표면에 부착된 유리창을 통해 강렬한 자외선을 비추면 ROM 내의 내용이 삭제됨.


하드웨어의 선택


RAID(Redundant Array of Independent Disks): 잃어버려서는 안되는 중요한 데이터를 가지고있는 서버에 주로 사용되며, 여러 대의 하드디스크가 있을 때 동인한 데이터를 다른 위치에 중복해서 저장하는 방법(하나의 RAID는 하나의 디스크로 인식).

  1. RAID-0: 중복되지 않는 Array를 가지는 것으로 스트립은 가지고 있지만, 데이터를 중복해서 기록하지는 않는다. 따라서, 가장 높은 성능을 기대할 수 있지만, 고장대비 능력이 전혀 없다.
  2. RAID-1: 디스크 미러링으로, 중복 저장된 데이터를 가진 적어도 두 개의 드라이브로 구성된다. 각 드라이브를 동시에 읽을 수 있으므로 읽기 성능은 향상되고, 쓰기 성능은 단일 디스크 드라이브 경우와 같다. 다중 사용자 시스템에서 최고의 성능과 최고의 고장 대비 능력을 발휘 한다.
  3. RAID-2: 디스크들 간에 스트립을 사용하며, 몇몇 디스크들은 에러를 감지하고 수정하는데 사용되는 ECC 정보가 저장되어 있다.
  4. RAID-3: 스트립을 사용하고, 패리티 정보를 저장하기 위해 별도의 드라이브 한 개를 쓴다. 내장된 ECC 정보가 에러를 감지하는데 사용되고, 데이터 복구는 다른 드라이브에 기록된 XOR을 계산하여 수행된다. 입출력을 겹치게 할 수 없어서, 단일 사용자 시스템에 적합하다.
  5. RAID-4: 대형 스트립을 사용하며, 사용자가 어떤 단일 드라이버로 부터라도 레코드를 읽을 수 있다는 것을 의미하고, 모든 쓰기 작업은 패리티 드라이브를 갱신해야 하므로 입출력의 중첩은 불가능하다.
  6. RAID-5: 순환식 패리티 어레이를 포함하고, RAID-4에서의 쓰기제한을 주소 지정한다. 그래서 모든 읽기/쓰기 동작은 중첩될 수 있다. 패리티 정보를 저장하지만 데이터를 중복 저장하지는 않는다. 보통 3~5개의 디스크를 어레이로 요구하고, 성능이 중요하지 않고 쓰기 작업이 많지 않은 다중 사용자 시스템에 적합하다.
  7. RAID-6: RAID-5와 비슷하지만, 다른 드라이브들 간에 분포되어 있는 2차 패리티 구성을 포함함으로써 매우 높은 고장 대비 능력을 제공한다.
  8. RAID-7: 컨트롤러로서 내장되어 있는 실시간 운영체제를 사용하며, 속도가 빠른 버스를 통한 캐시, 독자적인 컴퓨터의 여러 가지 특성을 포함하고 있다.
  9. RAID-10: 각 스트립은 RAID-1 스트립 어레이를 제공한다. 이 방식은 RAID-1보다 높은 성능을 제공하지만 값이 더 비싸다.
  10. RAID-53: 각 스트립은 RAID-3 스트립 어레이를 제공한다. 이 방식은 RAID-3보다 높은 성능을 제공하지만 값이 더 비싸다.
※RAID 부연 설명

 레벨

 방식 

 최대 하드 수 

 디스크 총 용량 예시 (p = 패리티영역)

 설명

 0

 stripe 하드 연결

 2개 이상

 100M + 100M = 200M

 단순 하드연결, 속도가 빠름, 손상시 복구 능력 X

 1

 미러링 동기화 

 2개 이상 

 100M + 100M =100M

 동기화된 하드 대체 연결, 복구개념의 시초

 2 

 백업+DATA를 각각 사용 

 2개 이상 

 100M + 100M = 100M

 백업된 내용으로 복구(사용 안함)

 3 

 패리티영역 추가 byte단위 

 3개 이상 

 100M + 100M + 100M = 200M

 오류 기록 하드영역 1개 추가, 한개의 하드 에러시 복구, 패리티 영역 손상 시 복구불가

 4 

 패리티영역 추가 block단위 

 3개 이상 

 100M + 100M + 100M = 200M

 대형 스트립, 오류 기록 하드영역 1개 추가, 한개의 하드 에러시 복구, 패리티 영역 손상 시 복구불가

 5  각 하드에 분산패리티 할당  3개 이상 100M + 100M + 100M(p) = 200M 순환식 패리티, 패리티 영역을 각 하드디스크에 분산시킴, 랜덤한 하드 1개의 손상에 대한 복구 가능
 6 각 하드에 분산패리티 할당 4개 이상 100M + 100M + 100M(p) + 100M(p) = 200M 패리티 영역을 각 하드디스크에 분산시킴, 랜덤한 하드 2개의 손상 복구 가능
 0+1 stripe된 레이드에 미러링   
 1+0 미러링된 레이드에 stripe   

!레이드 개념에 대한 모르는 사항이 있으면 http://12bme.tistory.com/286 에서 참고 하시면 될 것 같습니다.



2) SCSI(Small Computer System Interface)월등한 다중 처리 성능과 빠른 속도 그리고 탁월한 안정성을 보장하여 특수 목적 전문적인 컴퓨터에서 자주 쓰인다.

  • SCSI의 특징: 호환성이 뛰어나고, 고성능이며, 확장성이 뛰어나다.



부트 매니저


부트 매니저: 운영체제를 실행하기 위한 프로그램. 하나의 컴퓨터에 두 개 이상의 운영체제를 설치하고 선택하기 위해서도 필요하다.

(리눅스O/S 에선 LILO[Linux Loader]와 GNU GRUB[GRand Unified Bootloader]를 사용)


GRUB의 역할: 멀티 부트로더로, 컴퓨터를 처음 시작할 때 처음으로 실행되는 프로그램이다. 리눅스 등의 운영체제의 커널을 RAM으로 읽어 들여 적재하는 역할을 한다.


-GRUB로 부팅 순서

  1. 하드 디스크의 첫 번째 부트섹터인 MBR(Master Boot Record)에 저장된다.
  2. 시스템 전원이 공급되면 가장 먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에 대한 기본적인 점검과 인식을 한다.
  3. ROM-BIOS는 하드디스크의 첫번째 부스섹터의 MBR에 있는 부트 매니저에게 그 제어권을 넘겨준다.
  4. GRUB는 컴퓨터 시스템의 부팅을 시작하고, GRUB에 의해 부팅될 운영체제가 선택되고 해당 운영체제의 커널이 RAM에 적재되면 커널이 시스템을 운영하게 된다.

GRUB로 운영체제 시작하기


▼시스템 전원을 키고, 일정한 시간이 지나기 전에 키보드를 누르면 다음과 같은 GRUB 초기화면이 나타난다.



이 화면에서 사용자는 e, a, c 키를 선택 할 수 있다.

 'e'Key: 시스템 부팅 과정에서 boot.img 이전의 명령들을 수행할 때 누름

 'a'Key: 커널 Arguments를 수정할때 누름

 'c'Key: 명령행(커맨드라인)을 실행하기 위해 누름


▼아래 그림은 c 키를 누른 뒤 GRUB의 커맨드라인으로 이동한 모습이다. 리눅스 서버가 부팅되지 않을 경우 부팅과정을 변경하거나 편집할 수 있다.




▼GRUB 커맨드라인에서 사용할 수 있는 명령어는 help 을 치면 명령어 목록 들이 나온다.



위에서 말한 수동으로 부팅하는 방법은 다음과 같다.


명령행에 GRUB 설정 파일에 설정한 내용을 적고 부팅에 관한 명령어를 입력하면 된다.

 1단계: root 명령어로 부트디스크 및 부트파티션을 지정한다.

 2단계: kernel 명령어로 부팅에 사용할 커널을 지정한다.

 3단계: boot 명령어로 2단계에서 지정한 커널로 부팅한다. 


▼root 명령은 현재 위치를 확인하고 RAM으로 읽어들일 커널이 있는 파티션을 지정할 때 사용한다. 그 이후 kernel과 initrd 명령으로 읽어 들일 커널 및 관련 파일을 지정한다. 이때, 커널이 있는 /boot 디렉토리가 별도의 파티션에 연결되어 있는 경우, 이 파티션을 root로 하고 kernel 명령을 내릴 때 커널이 있는 디렉토리의 경로를 적을 필요가 없기 때문에 boot를 기입할 필요없이 바로 "/커널명"으로 기술하면 된다. 그리고 마지막으로 boot명령으로 이를 부팅 시작한다.

 


시스템에 문제가 발생하여 싱글유저모드로 부팅하는 방법 - (14년도 후반기)


▼GRUB 초기화면에서 'e키'를 누른다. 이 화면에서 'b키'를 누르면 부팅을 시작하고, 'e키'를 누르면 선택한 명령을 편집 할 수 있다.




▼여기서 kernel에 대고 'e키'를 또 누른다.





▼그러면 다음과 같은 화면이 나오는데,  여기서 'rhgb quite'를 지우고 'single'을 추가 후 [ENTER]를 눌러서 나온다.




▼ 'b키'로 부팅을 시작하면 되는데, 다음과 같이 싱글 유저모드로 부팅이 되면 성공한 것이다.



간략하게 설명 하자면,

 1. 부팅하고자 하는 커널 이미지를 선택한다.

 2. e키를 이용하여 편집모드로 변경 후 kernel명령어가 포함된 라인을 편집한다.

 3. kernel 명령어의 맨 뒤에 single을 추가 기입한다.

 4. b키를 눌러서 부팅과정을 시작한다.


GRUB의 설정


GRUB로 멀티부팅을 하기 위한 /boot/grub/grub.conf 설정 파일의 설정


  /boot/grub/grub.conf 파일

 


 목록

 설명

 default=0 

 입력값이 0이면 첫번째 운영체제를, 1이면 두번째 운영체제로 부팅한다.

 timeout=5

 5초 이후에 자동부팅하도록 설정 

 splashimage= (hd0,0)/grub/splash.xpm.gz

 부트로더 메뉴의 배경색 설정

 title CentOS 6 (2.6.32-642.el6.x86_64) ~ initrd /initramfs....img

 메뉴의 제목 



GRUB의 복구와 삭제

  1. 인스톨 CD를 CD-ROM에 넣고 시스템을 재부팅한다.
  2. 설치 화면이 나왔을 때, 프롬프트상에 다음과 같이 적고 <Enter> 키를 누른다. - Boot: vmlinuz root=/dev/had2
  3. 리눅스의 root로 로그인을 하여 터미널 또는 텍스트 모드 콘솔의 쉘에서 다음과 같이 명령을 내린다. - /sbin/grub-install /dev/had
  4. 시스템을 재부팅한다
그리고 설치 CD에서 복구 모드로 부팅하여 GRUB로 재설치 할 수도 있다.
  1. 먼저 설치 CD를 넣고 시스템을 부팅한다.
  2. 그리고 처음 화면에서 프롬프트에 linux rescue라고 기재하고 <Enter>를 누른다.
  3. 그러면 rescue 모드로 설치 프로그램이 진행된다.
  4. 언어와 키보드 설정을 하고 난 후에 네트워크 설정을 하게 된다.
  5. 쉘로 떨어지면 /mnt/sysimage로 이동한다. - cd /mnt/sysimage
  6. chroot명령으로 /mnt/sysimage 디렉토리를 /로 바꾼다 - chroot .
  7. grub 설치한다 - /sbin/grub-install /dev/had
  8. 마지막으로 exit 명령을 내리면 시스템이 재부팅된다.