RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT 교육센터 : 정성재 강사

 

1.파티션이란?
Partition이라는 것은 분할,칸막이라는 뜻으로 컴퓨터에서는 HDD의 영역을 설정하는 것을 말한다.
우리의 일상사와 비교한다면 어떠한 땅을 정리한다고 할 수 있다. 예를 들어 땅이 1000평이 있는데,
이 중 800평을 논으로 쓰고, 200평을 밭으로 쓴다고 구역을 설정하는 것처럼 컴퓨터에서도 이러한
개념과 동일하다. 즉. 파티션설정이란? Windows에서는 한개의 HDD를 여러개로 분할, 예를들면 C: D:
등으로 나누는 것을 의미한다.(물론 HDD전체를 하나로 사용하더라도 파티션설정이 필요하다. 왜냐하
면 OS에게 전체를 한 드라이브로 사용한다구 통보해야 하므로) 또한, 하나의 HDD로 여러가지 다른
OS(Windows98, NT, Linux등)를 인스톨할 경우에도 파티션 설정을 해야 된다. 리눅스에서의 파티션을
크게 두가지로 나눈다. 리눅스 전용 파일 시스템을 위한 파티션(Linux Native Partition)과 스왑 파
티션(Swap Partition)이 그것이다. Linux Native Partition은 실질적으로 리눅스가 인스톨되고, 사
용하기 위한 파티션으로 그냥 줄여서 Linux Partition이라고도 한다. Swap Partion은 프로그램 실행
시 부족한 메모리의 용량을 하드디스크로 대신하는 파티션으로 꼭 지정해야 한다. 유닉스 운영체제
에서 파일 시스템과 스왑의 비율은 9:1 정도로 하는 게 적당하다. 즉, 물리적 하드디스크 용량의
10% 정도를 스왑으로 설정하면 된다. 하지만 리눅스와 같은 PC용 운영체제에서는 이 정도로 크게 스
왑을 잡을 필요는 없다. 이 스왑의 크기에 관한 설정은 사람마다 각기 다른 소견을 가지고 있지만,
대략 자기가 가진 메모리의 약 2배정도 설정해주면 적당하다.

2.디스크의 인식
(1) 설명: 윈도우나 도스에서는 하드디스크를 그냥 편의상 C: D: 등으로 구분하지만, 리눅스에서는 디스크를 포함한 모든 장치를 파일로 관리한다. 일반 PC계열에서 하드디스크방식이 IDE타입과 SCSI방식이 있다. 리눅스에서의 인식은 다음과 같다.
(2) 종류
1) IDE방식의 하드디스크 : 대체적으로 E-IDE타입은 하드디스크를 4개까지 지원한다.
ㄱ. Primary Master disk : /dev/hda
ㄴ. Primary Slave disk : /dev/hdb
ㄷ. Secondary Master disk : /dev/hdc
ㄹ. Secondary Slave disk : /dev/hdd
2) SCSI방식의 하드디스크 : 일반 SCSI방식이냐 WIDE-SCSI방식에 따라 하드디스크의 지원하는 갯수가 7~15개이다.
첫번째 드라이브 : /dev/sda
두번째 드라이브 : /dev/sdb
세번째 드라이브 : /dev/sdc
...
3) 세부파티션 : 하나의 디스크를 가지고 여러개의 파티션을 나누었을 경우 뒤에 번호가 붙는다.
예) IDE타입의 하드디스크인 경우 : /dev/hda
/dev/hda1
/dev/hda2
/dev/hda3
...

3.파티션의 유형
(1) 설명: 윈도우즈계열이나 유닉스계열 모두 주파티션(Primary Patition)과 확장파티션(Extend Partition)이 있다. 차이점은 윈도우즈계열인 경우에는 주파티션 1개에 확장파티션이 1개로 구성되지만, 유닉스계열은 주파티션 4개에 확장파티션이 1개로 구성된다.
1) Primary Partition(주 파티션)
ㄱ. 기본적인 파티션으로 부팅가능한(Bootable) 파티션이다.
ㄴ. 운영체제를 담고 있는 하드 디스크에는 하나 이상 존재해야 한다.
ㄷ. 총 4개까지 만들 수 있다. 만약, Extend Partition을 사용한다면 실질적으로 사용할 수 있는 최대 주파티션의 수는 3이다.
2) Extend Partition(확장 파티션)
ㄱ. 확장 파티션은 하나의 디스크에 하나만 만들 수 있다.
ㄴ. 네 개 이상의 파티션을 만들고 싶다면 하나의 확장 파티션을 설정한 후 그 확장 파티션 영역내에 여러개의 논리 파티션(Logical Partition)을 나누면 된다. 확장 파티션은 주 파티션과는 달리 직접적으로 사용하는 파티션이 아니고, 다만 4개 이상의 파티션 사용을 위한 영역설정 개념의 파티션이다. Extend Partition 의 선언은 Primary Partition내에 해야 한다.
3) Logical Partition(논리파티션)
ㄱ. Extend Partition 내에 생성되는 파티션으로 /dev/hda5 이후의 번호를 붙여 생성된다.
ㄴ. IDE 타입인 경우에는 63개, SCSI타입인 경우에는 15개까지 생성할 수 있다.
ㄷ. 보통 시스템에서는 inode를 고려하여 IDE타입인 경우에는 32개, SCSI인 경우에는 15개를 기본 지원한다.
ㄹ. 참고로 fdisk는 16개 이상의 파티션을 분할할 수 없다.

4.파티션의 분할
(1) 설명: 리눅스에서 디스크의 파티션을 분할하는 방법에는 비주얼하고 사용하기 쉬운 Disk Druid 방식과 텍스트방식의 fdisk가 있다. fdisk를 이용하여 파티션을 분할하도록 한다. 레드햇 리눅스 9.0 에서는 그래픽모드로 리눅스를 설치하면 fdisk를 이용한 설치는 할 수 없고 Disk Druid 방식만 이용해야 한다.
(2) Disk Druid 를 이용한 파티션 분할 : fdisk에 비해 파티션 설정은 쉬우나 파티션을 나누게 되면 fdisk와는 다르게 지정된 우선순위에 따라 파티션번호가 바뀐다. 또한 설치시에만 사용하는 방법이므로 리눅스 설치 이후 새로운 하드디스크 추가설치에는 사용할 수 없다
(3) fdisk를 이용한 파티션 분할
1) fdisk의 기본명령확인 : fdisk명령을 실행하면 텍스트형태로 'Command (m for help):' 뜬다. 'm' 눌러 확인해보면 다음과 같다.
- 리스트 -
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
2) fdisk의 주요명령
p: 현재 파티션의 정보를 출력
d: 파티션 삭제
n: 파티션 추가
t: 파티션 속성 변경
w: 파티션 변경내용을 저장하고 종료
q: 파티션 변경내용을 저장하지 않고 종료, 파티션 저장, 삭제등의 설정이 잘못되었을 경우 선택한 후 fdisk를 재실행하여 다시 설정할 경우 사용.

5.파티션설정
리눅스에서 파티션별 크기의 설정은 디렉토리의 크기와 밀접한 관계가 있다. 대체적으로 디렉토리의 크기가 유동적인 파티션의 설정에 유의해야 한다. 대표적인 디렉토리가 /home, /usr, /var등이 해당한다.
1)초보자 또는 가정용을 위한 파티션 설정 : 파티션 설정을 잘 모르면 두개만 나눈다.
ㄱ. RedHat 6.2
/(root) : 약 1.7GB ~ 2GB가 정도 => X-window를 포함한 전체를 인스톨할 경우
Swap : 64MB
ㄴ. RedHat 7.1 일 경우
/ : 약 3.5GB 정도 => 전체 설치시
Swap : 128MB
=> 이렇게 설정하면 나머지 여러디렉토리들은 / 파티션아래로 자동으로 설정된다.
2)서버운영을 위한 기본 파티션
/(루 트 파티션) : 커널 및 관련파일저장하는 곳으로 큰 공간이 필요없으며 Red Hat6.2의 서버표준 사양이 약 256MB정도이다. 파티션유형은 Linux native로 지정한다. 7.1버전인 경우이고 커널컴파일 등의 작업을 수행하려면 최소 512MB이상 설정이 필요하다.
/usr : 모든 어플리케이션이 존재하는 곳이므로 크게 설정해야 한다. 최소 512MB이상되어야 하며 보통 리눅스6.2를 전부 인스톨할경우 1500MB, 7.1버전인 경우에는 3.5GB는 되어야 한다. 파티션 유형은 Linux Native이다.
/home : 사용자의 홈 디렉토리로 사용자의 수에 따라 적당한 영역의 설정이 필요하다. 사용자당 얼마의 공간을 할당할 것인지를 결정해 예상되는 총사용자의 수와 곱하여 이에 적합한 파티션을 설정해야 한다. 홈디렉토리의 파티션 유형도 Linux Native로 지정한다.
Swap : 파티션 유형이 Linux Swap으로 지정하여야 하며, 보통 메모리의 2배를 지정한다. 6.2버전인 경우에는 최소 30MB에서 최대 128MB가 적당하고, 7.1버전인 경우에는 256MB~1GB정도로 설정한다.
(사용예)리눅스 CD전체를 인스톨할 경우 최소 설정예
ㄱ. 6.2
/(root) : 256MB
/usr : 1450MB
/home : 50MB
Swap : 64MB
ㄴ. 7.1
Swap : 128MB
/ : 250MB
/home : 50MB
/var : 500MB
/usr : 나머지 공간(전체설치시 3.5GB이상)
3)웹서버 운영을 위한 파티션설정 : 리눅스 7.1 버전이고 HDD가 40GB인경우 (참고로 정석은 아니고,참고만 할 것.)
Swap : 512MB => 보통 램의 두 배이므로 여유있게 잡는다.
/ : 500MB => 최소 500MB할당해야 한다.
/var : 5GB => log등이 기록되므로 최소 1GB 할당
/tmp : 1GB
/usr : 4GB (전체설치시 3.5GB 이상 설정해야 한다. 8.0과 9.0 버전에서 전체설치시에는 6GB이상 할당해야 한다.)
/usr/local : 5GB
/data : 10GB => 백업용으로 그냥 할당. 없어도 무방
/home : 9GB(나머지 전부할당)

(참고1) 리눅스를 인스톨하면서 나타나는 몇가지 메뉴 설명
1. Emulate 3 Buttons : 리눅스의 X-windows에서는 기본적으로 마우스 버튼을 3개 지원한다. 보통 사용자들은 2버튼 마우스를 사용하는데, 2버튼 마우스로 3버튼 역할을 할 수 있도록 해주는 것이다. 즉, 두 개의 버튼을 동시에 누르면 3버튼 마우스의 가운데 버튼을 누른 것과 같은 효과를 얻을 수 있다. 선택한다.
2. MD5 password : MD5란 일종의 암호화 알고리즘으로 기본적으로 8자 이내로 되어있는 패스워드를 암호화하여 256자까지 확장해서 사용할 수 있도록 해준다. 기본값으로 선택되어 있으니 그대로 사용한다.
3. Use Shadow Passwords : /etc/passwd 파일에서 패스워드부분을 다시 /etc/shadow파일에서 관리하도록 하는 옵션이다. 기본값으로 선택되어 있으니 그대로 사용한다.
4. NIS : Network Information Service의 약어로 네트워크로 연결되어 있는 여러 대의 리눅스머신들의 정보를 하나의 서버에서 관리하는 것을 말한다.
5. MBR : Master Boot Record의 약어로 하드디스크의 부팅을 관리하는 영역이다. 만약 리눅스가 시스템부팅을 관리하려면 lilo(Linux loader)를 이 MBR영역에 인스톨해야 한다. 그렇지 않으면 부팅디스켓을 만들어서, 리눅스 부팅시에는 디스켓을 이용해야 하는 번거로움이 있다.
만약 LILO를 MBR에 인스톨했을 경우 리눅스를 지워도 LILO라는 메시지가 뜬다. 메시지를 없애려면 윈도우상태에서 fdisk /mbr이라는 명령을 줘야 한다.
(참고2) 마우스의 작동
기 본적으로 유닉스,리눅스계열에서는 3버튼 마우스를 사용하도록 되어 있다. 3개의 버튼의 기본 동작을 보면 맨 왼쪽버튼이 영역을 지정하고, 가운데버튼이 붙여넣기, 맨 오른쪽버튼이 복사를 한다. 그러나, 보통 2버튼 마우스를 사용하므로 2버튼 마우스를 3버튼 마우스처럼 사용하는 옵션이 Emulate 3 Buttons이다. 즉 가운데 버튼의 역할을 두 개의 버튼이 동시에 눌려졌을 때 수행 한다.
(참고3) 현재 리눅스에서의 파티션 지원
현재 리눅스에서 디스크 하나당 지원하는 파티션은 SCSI하드디스크는 15개, IDE하드디스크는 63개의 파티션을 가질 수 있지만, 하나의 물리적인 디스크안에 12개 이상의 파티션 설정은 권장하지 않는다.
참고로 MS Windows의 경우에는 논리파티션에 운영체제를 설치할 수 없도록 되어 있다.

Trackback
Reply

출처 : 대전 국제 IT 교육센터 : 정성재 강사

 

1. 개요
실제 서버로서의 운영과 관련하여 리눅스를 설치하고 관리자로 고려해야 할 사항에 대해 알아본다.

2. 하드웨어 파악하기
(1) CPU : 인텔계열인지, 알파CPU인지 등의 종류를 알아야 하고 장착된 CPU의 갯수도 파악해야 한다.
(2) 하드디스크 : 하드디스크의 용량을 알아야 하고 SCSI방식인지 IDE인지 알아야 한다. 또한 IDE인경우에는 하드디스크가 장착된 위치(예를 들면 Primary Master, Secondary Slave등)도 알아야 하고 장착된 개수도 파악해야 한다.
(3) RAM : RAM의 용량이 얼마인지 꼭 알아야 하고, 또한 리눅스 버전에 따라 하드웨어가 지원되지 않을 수 있으니 메모리타입도 알아두면 좋다.
(4) 마우스: 마우스 타입(PS/2, USB, Serial 등)을 알아야 하고 버튼의 갯수, 제조사 등도 알아두면 좋다.
(5) 비디오카드: X-Window를 사용하기 위해서는 비디오카드의 칩과 RAM의 용량을 알아야 한다.
(6) 모니터 : 역시 X-Window를 사용하기 위해서는 알아야 한다.
(7) 네트워크 카드: 네트워크에 연결하여 사용하려면 Ethernet 카드를 알아야 하고 장착된 카드의 수도 알아야 한다. 추가로 IP주소, 넷마스크, 게이트웨이주소, DNS서버의 IP주소, 도메인 이름, 호스트이름 등도 알아야 한다.
(8) 기타장치: SCSI나 RAID등의 장비도 사용하면 정확히 정보를 알아야 한다.

3. 리눅스의 설치모드
(1) 설명: 레드햇 리눅스를 CD로 설치하면 부팅이 되면서 'boot:' 라는 프롬프트가 보여지게 된다. 레드햇 리눅스에는 다양한 모드의 설치 방법을 제공한다.
(2) 설치모드
1) [ENTER] : 리눅스 설치시 'boot:'라는 프롬프트에서 그냥 엔터키를 입력하면 그래픽한 모드의설치를 할 수 있다. 리눅스 설치 프로그램인 아나콘다(anaconda)에 의해서 고해상도 그래픽모드(800x600)로 리눅스를 설치할 수 있다. 아나콘다가 비디오카드를 자동으로 인식하여 보여주는데 만약 인식하지 못하는 경우에는 텍스트 화면 형태의 설치모드로 넘어간다. 처음부팅후에 1분동안 입력을 하지 않으면 자동으로 이 모드로 설치된다.
2) text: 텍스트 그래픽 화면으로 설치하는 모드이다. 비디오카드가 X 윈도우를 지원하지 않는 종류라면 이 모드로 설치해야 한다.
3) expert: 리눅스에 숙련된 사용자들이 사용할 수 있는 설치모드로 설치과정의 설정들을 직접할 수 있다. 'linux noprobe'와 'linux text noprobe'모드가 이에 속한다. 대부분의 하드웨어 탐색작업을 하지않고 설치 과정에서 직접 로드될 드라이버에 대한 옵션을 입력할 수 있도록 해주지만 초보자에게는 어려운 모드이다.
4) linux rescue: 리눅스 설치후에 부팅시 안된다든지의 시스템의 문제가 발생할 때 사용하는 모드이다.
5) lowers: 저해상도 모드인 640x480으로 리눅스를 설치할 때 사용한다. 고해상도 모드로 설치할 수 없는 경우에 사용하면 된다.
6) linux dd: 리눅스 설치 전에 리눅스를 지원하지 않는 하드웨어의 드라이버가 별도로 제공된 경우 이 모드를 선택하여 드라이버를 띄어 리눅스를 설치할 수 있다.
7) 시리얼모드(serial mode)를 이용한 설치
ㄱ. 설명: 시리얼 모드를 통하여 설치시에 사용한다.
ㄴ. 사용법
linux console=장치명
linux text console=장치명
ㄷ. 사용예
linux console=ttyS0
8) kickstart를 이용한 설치
킥스타트란 레드햇리눅스 설치시에 필요한 여려가지 선택들을 특정한 설정파일에 미리 넣어둠으로써 자동으로 설치하도록 지원하는 방법이다.
9) linux mediacheck: ISO이미지에 md5sum이 내장되어 있는데, 이 이미지의 체크섬 완결성을 테스트할 때 사용한다. ISO 이미지를 다운받아 생성된 모드 RedHat Linux CD인 경우에 체크해 볼 만 하다.
(3) 설치와 관련된 커널 옵션
1) 설명: 설치시에 커널에 옵션을 전달할 수 있다.
2) 사용예
linux mem=128M
=> 128MB의 RAM용량을 가진 시스템에서 커널이 RAM 용량을 모두 사용하도록 지시할 때 쓴다.

4. 리눅스의 설치시 고려점
(1) 설치 유형 설정: 레드햇 리눅스에서는 기본적으로 4개의 설치 유형과 1개의 업그레이드 설치를 제공하고 각각의 유형에는 장단점이 있다.
1) 레드햇 리눅스의 설치 유형
ㄱ. Desktop(데스크톱): 일반적인 PC용으로 사용할 때 쓴다. X-window가 설치되고 개인용이므로 멀티미디어 관련 응용프로그램 등이 설치된다. 레드햇 9.0 버전부터 메뉴로 나온다.
ㄴ. Workstation(워크스테이션): X 윈도우가 기본적으로 하나 이상 설치되는 설정이다.
ㄷ. Server(서버) : X 윈도우가 설치되지 않고 서버운영을 위한 설정이다.
ㄹ. Laptop(노트북) : 노트북 사용자를 위한 설정이다. 리눅스 버전에 따라 존재하지 않을 수있다. 레드햇 9.0에서는 이 메뉴가 빠져있다.
ㅁ. Custom System(사용자 설치): 사용자가 선택하여 설치하는 설정이다.
ㅂ. Upgrade Existing System(업그레이드설치) : 현재 사용중인 리눅스를 업그레이드할 때 사용한다.
2) 고려점: 워크스테이션이나 서버의 경우 프로그램상에서 파티션이나 디렉토리 설정을 자동으로 알아서 해주므로 설치가 굉장히 쉽다. 그러나, 이 두개의 모드를 선택하면 듀얼 부팅이라든지 파티션 용량 설정이라든지 설정이 불가능하다. 관리자라면 사용자 설치를 선택하여 파티션 및 디렉토리설정을 모두 파악하고 자기가 운영하는 시스템을 최적화해야 한다.
(2) 파티션 설정
1) 개요: 리눅스를 설치하기 위해서는 최소 2개의 파티션이 필요하다. 하나는 실제적으로 리눅스가 설치되는 파티션(Linux Native파티션으로 마운트포인트는 '/')과 다른 하나는 Swap파티션이다. 그러나, 좀 더 안전하고 편리한 관리를 위해서는 여러 개의 파티션 분할이 필요하다.
2) 파티션 분할의 장점
ㄱ. 백업하기가 용이하고 업그레이드 등의 관리가 쉽다.
ㄴ. 부팅이 빨라지고 서비스 거부 공격등의 대처할 수 있다.
ㄷ. 마운팅한 파일시스템을 관리하기 쉽고 각각의 파일시스템 용량을 제한할 수 있다.
ㄹ. SUID 제한을 주어 보안을 강화할 수 있다.
3) 권장 파티션
/ : root파티션으로 레드햇 권장서버는 256MB이다. /boot파티션을 별도로 나누지 않고 커널컴파일 등의 작업을 할 예정이면 500MB이상의 설정이 필요하다.
Swap : 스왑파티션으로 리눅스 운영체제의 가상메모리 영역이다. 512MB정도면 충분하다.
/usr : 리눅스 응용프로그램이 설치되는 공간이다. 최소 512MB가 필요하며 응용프로그램을 많이 설치한다면 그 이상의 용량이 필요하다. 요즘 버전에서 전체선택하여 전부 설치하려면 이디렉토리가 3-4GB 정도의 용량이 필요하다.
/var : 로그파일, 프린터 spool, 메일 등이 저장되는 디렉토리이다. 요즘에 스팸메일등의 영향으로 많이 설정해야 하는 파티션으로 부각되고 있다. 최소 256MB 이고 사용자나 메일등의 사용이 많으면 GB바이트 단위의 용량이 필요하다.
/home: 사용자의 계정이 등록되는 디렉토리로 사용자의 수에 따라 달라진다. 예를 들면 사용자당 10MB를 할당하고 사용자가 500명이라면 5GB를 할당하면 된다.
4) 기본 파티션 중 추가로 설정해도 되는 파티션
/boot: 모든 커널이미지가 저장되는 디렉토리로 커널컴파일등의 작업을 한다면 200MB 정도 설정 해주면 된다.
/tmp: 모든 사용자가 임시로 저장하고 사용하는 디렉토리이다. 경우에 따라 임의의 사용자가 모두 점령하여 사용할 수 있으므로 파티션을 따로 지정하는 것도 좋은 방법이다.
5) 시스템에 만들 수 있는 추가적인 파티션
/chroot: DNS, 아파치등을 chroot로 고립된 환경하에서 프로그램을 설치할 수 있다. 약 256MB정도 설정하면 되나 시스템 상황을 고려해서 더 늘어날 수도 있다.
/var/lib : Mysql이나 Squid등의 응용프로그램에서 사용할 라이브러리를 별도로 관리할 수 있다/ 약 1GB 정도 설정하면 된다.
6) 스왑파티션: 요즘은 메모리와 디스크 용량이 점점 대용량화되면서 예전에 권장하던 스왑파티션의 설정이 무색해지고 있다. 여러 상황을 고려하여 설정해야 한다.
ㄱ. 스왑의 크기와 관련된 상황
a. 설치된 메모리의 크기
b. 스왑 공간으로 사용이 가능한 디스크의 크기
c. 작동중인 응용프로그램
d. 동시에 작동하는 응용프로그램
ㄴ. 일반적인 스왑크기의 설정
a. 일반적으로 설치된 메모리의 용량의 2배정도하면 된다.
b. 간단한 서버인 경우에는 256MB 정도 설정한다.
c. 대용량 서버인 경우에는 최소 512MB를 설정하고 상황에 따라 그 이상도 설정한다.
7) 자동파티션 설정: 자동파티션을 선택하면 일일히 파티션을 지정할 필요가 없게되어 설치는 편하지만 기존의 파티션이 삭제된다. 만약 윈도우와 리눅스를 동시에 사용하는 경우라면 선택하지 않는 것이 좋다. 레드햇 9.0에서는 자동파티션을 선택하더라도 기존의 파티션을 보존하는 메뉴가 다시 나오기는 하지만, 될 수 있으면 수동파티션 설정을 권장한다.
8) 수동파티션 설정
ㄱ. 설명: 리눅스에서는 수동으로 파티션을 설정할 경우를 위해 fdisk방법과 Disk Druid 방법을 제공한다. 레드햇 9.0에서는 fdisk를 이용한 설치는 제공되지 않는다.
ㄴ. 종류와 장단점
a. Disk Druid: 레드햇 리눅스에서 제공하는 파티션 프로그램으로 그래픽한 환경에서 파티션을 설정할 수 있다.
b. fdisk: 리눅스 초기부터 사용하던 프로그램으로 Disk Druid보다 강력하게 파티션을 설정할 수 있다. 내가 원하는 파티션에 정확히 해당 마운트 포인트를 설정할 수 있고, 차후 리눅스 설치후에 Disk를 추가했다든지 파티션을 변경할 때 사용하므로 관리자는 이 명령을 이용한 설정을 정확히 알아야 한다.

5. 레드햇 리눅스 인스톨러(RedHat Linux Installer)
(1) 개요: 리눅스는 일반적으로 설치하는 방법인 CD-ROM을 이용한 방법뿐만아니라 NFS, FTP 등 네트워크를 이용한 설치방법도 제공한다. 따라서, 레드햇에서는 인스톨러를 First Stage Installer와 Second Stage Installer로 구분한다.
(2) First Stage Installer
1) 설명: 여러 형태의 설치방법이 존재하므로 각각의 설치방법에 따라 서로 다른 이미지 파일이 존재한다.
2) 종류
ㄱ. boot.img : Local CD-ROM, Hard Disk설치시에 사용하는 기본적인 이미지 파일이다. (레드햇 8.0 이전 버전에서 사용함)
ㄴ. bootnet.img : NFS Image, FTP, HTTP 등의 네트워크 설치시에 사용하는 이미지 파일이다. (레드햇 8.0 이전 버전에서 사용함)
ㄷ. bootdisk.img : 레드햇 9.0 버전에서 사용하는 이미지파일로 boot.img와 bootnet.img를 통합한 파일이다.
ㄹ. pcmcia.img : 노트북이나 랩톱(laptops)에 설치시 필요한 이미지 파일이다. (레드햇 8.0 이전에서 사용함)
ㅁ. pcmciadd.img : PCMCIA driver disk를 이용한 설치시 필요한 이미지 파일이다.
ㅂ. drvnet.img: 네트워크 장치 드라이버를 통한 설치시에 필요한 이미지 파일이다.
ㅅ. drvblock: 기타 다른 블록 디바이스를 통하여 설치시에 필요한 이미지파일이다.
(3) Second Stage Installer
실제적으로 설치를 진행하는 인스톨러로 그래픽모드와 텍스트모드로 제공된다.

6. 리눅스 설치와 가상콘솔
(1) 설명: 리눅스설치시에도 여러 개의 가상콘솔을 지원한다. 설치중에 창전환을 통해 여러 메시지를 확인할 수 있다. 최종적으로 설치시에 발생하는 로그는 /root/install.log에 기록된다.
(2) 가상콘솔 목록
1) [CTRL] + [ALT] + [F1] : 텍스트모드로 설치시에 보여지는 화면
2) [CTRL] + [ALT] + [F2] : Bash 쉘 화면
3) [CTRL] + [ALT] + [F3] : 인스톨과정에서 나타나는 메시지를 보여주는 화면
4) [CTRL] + [ALT] + [F4] : 커널에서 나타나는 메시지를 보여주는 화면
5) [CTRL] + [ALT] + [F5] : mke2fs와 grub 명령으로부터 출력되는 메시지를 보여주는 화면
6) [CTRL] + [ALT] + [F7] : 그래픽한 모드로 설치시에 보여지는 화면

Trackback
Reply

출처 : 대전국제 IT 교육센터 정성재 강사

 

. GNU와 FSF

(1) GNU

GNU란 재귀적 약어로 GNU's Not Unix 즉 "GNU는 유닉스가 아니다."라는 뜻이다. 리차드 스톨만을 주축으로 자유로운 소프트웨어를 희망하던 공동체들이 가장 먼저 운영체제인 유닉스를 모태로 개발을 시작하면서 이 말이 탄생되었다. GNU는 유닉스와 호환이 되도록 만들어진 운영체제이기는 하지만 유닉스와는 다른 운영체제라는 의미를 내포시키기 위해서 만들이름이라고 할 수 있다.
1984년에 시작된 프로젝트로 초기에는 이렇게 자유로운 UNIX를 만드는 데 목적이 있었으나 1990년 대에는 운영체제이외의 gcc, emacs 등 같은 응용프로그램도 만들었다.
(참고) 관련사이트:
http://www.gnu.org

(2) FSF(Free Software Foundation)

1) 개요: 비영리를 목적으로 하는 조직으로 GNU 프로젝트를 추진하는 단체이다. Free Software를 주창한다. 자유 소프트웨어라는 용어는 무료나 공짜라는 뜻은 아니다. 자유(Free)는 '구속되지 않는다'는 관점에서의 자유이다. 즉, 프로그램의 변경이나 수정의 자유를 말한다.

2) 자유 소프트웨어(Free Software)란?
ㄱ. 목적에 상관없이 프로그램을 실행시킬 수 있는 자유
ㄴ. 필요에 따라서 프로그램을 개작할 수 있는 자유(이러한 자유가 실제로 보장되기 위해서는 소스코드를 이용할 수 있어야 한다. 왜냐하면 소스 코드없이 프로그램을 개작한다는 것은 매우 어려운 일이기 때문이다.
ㄷ. 무료 또는 유료로 프로그램을 재배포할 수 있는 자유
ㄹ. 개작된 프로그램의 이익을 공동체 전체가 얻을 수 있도록 이를 배포할 수 있는 자유
3) 관련사이트:
http://www.fsf.org (http://www.gnu.org와 같다.)

(3) 카피레프트(Copyleft)와 GNU GPL

1) 카피레트트
ㄱ. 개요: 저작권을 뜻하는 Copy right의 반대를 뜻하는 의미에서 사용하였다. 저작권법을 근간으로 하지만 저작권법이 갖고 있는 주된 목적을 반대로 이용해서 소프트웨어를 개인의 소유로 사유화시키는 대신 자유로운 상태로 유지시키는 수단으로 삼는 것이다.
ㄴ. 핵심: 프로그램을 실행하고 복제할 수 있는 권리와 함께 개작된 프로그램에 대한 배포상의 제한조건을 별도로 설정하지 않는한, 개작과 배포에 대한 권리 또한 모든 사람에게 허용하는 것이다. 이러한 방법을 통해서 "자유 소프트웨어"라는 용어의 핵심인 "자유"를 모든 사람에게 보장할 수 있고 프로그램을 입수한 사람은 그 누구도 뺏을 수 없는 권리를 갖게 된다.
2) GNU GPL(General Public License): GNU 소프트웨어에서 카피레프트를 실제로 구현한 라이센스기준이다.

(4) 리눅스와 GNU/Linux

GNU 에서는 하나의 완성된 시스템을 만들기 위해서 HURD라는 이름의 커널을 개발중이었으나 하나의 제품으로 사용될 수 있을 말한 상태가 아니었다. 그러나 다행스럽게도 또 다른 커널이 사용 가능했는데, 1991년 리누스 토발스(Linus Torvalds)가 유닉스 커널과 호환가능하게 만든 리눅스라는 이름이 커널이 그것이었다. 1992년 무렵 GUN시스템과 리눅스를 결합함으로써 하나의 완성된 자유 운영체제를 만들 수 있었다. 현재 사용되고 있는 GNU시스템은 리눅스 덕분에 가능했던 것이라고 할 수 있다. 그래서 이 시스템을 GNU/Linux라고 부르는데, 이는 리눅스를 시스템 커널로 채용한 GNU시스템을 지칭한다.

2. 리눅스에 대하여

(1) 리눅스의 역사
리눅스를 커널을 지칭하는 말이다. 1991년 리누스 토발즈(Linus Torvalds)가 0.01버전의 리눅스를 인터넷상에 띄웠고, 곧 많은 해커들의 참여로 지속적인 커널로 개발되었다.

(2) 리눅스의 어원
리눅스는 커널 개발자인 리누스 토발즈(Linus Torvalds) + 유닉스 OS (특히 Minix라는 운영체제)의 합성어이다.

(3) 리눅스 커널의 특징: 리눅스는 Free Source Software로 커널코드의 대부분을 자유소프트웨어재단(FSF)의 라이센스 정책인 GNU GPL을 따른다.

(4) 리눅스의 특징
1) 유닉스와 같은 운영체제로 멀티유저, 멀티 태스킹 시스템이다.
2) 완전히 공개된 시스템이다.
3) 유연성과 확장성이 뛰어나다. - 다양한 하드웨어를 지원한다.
4) 강력한 네트워크를 지원하는 시스템이다.
5) 가격대 성능비가 매우 우수하다.

(5) 리눅스의 단점
1) 기술지원의 부족: 리눅스에서 사용되는 대부분의 응용프로그램들이 비상업적인 제품으로 인해
전세계에 흩어져 있는 개발자들이 일일히 기술지원을 하는 것이 불가능하다.
이로 인해 사용하면서 발생하는 문제점들은 모두 사용자의 몫이다.
2) 하드웨어 지원이 부족: 여전히 특정 하드웨어에 설치가 어렵고 모든 플랫폼에서 작동하지 않
는다.
3) 사용자의 숙련된 기술이 요구된다.

3. 리눅스배포판

(1) 개요: 리눅스는 오픈 소스(Open Source)에 기반을 두고 있기 때문에 다양한 리눅스 배포판이
나와 있다. 모든 배포판은 같은 리눅스 커널과 시스템 도구를 제공하지만 설치하는 방법
과 기본제공되는 응용 프로그램이 다르다. 각각의 배포판에는 장점과 단점이 있다. 배포
판에 대해 알아보자.

(2) 배포판의 종류
1) RedHat
ㄱ. 설명: 가장 인기있는 배포판으로 상용 리눅스 배포판 업체인 레드햇 소프트웨어사가 제공한다. 초보자들도 쉽게 설치할수 있다. 설치과정은 그래픽 사용자 인터페이스를 사용할 것인지 텍스트 기반의 인터페이스를 사용할 것인지 선택할 수 있다. 또한 RPM패키지방식을 사용하여 설치, 관리, 업그레이드 등이 용이하다. X 윈도우로 GNOME과 KDE를 동시에 제공하며 이 배포판은 인텔, 알파, SPARC 버전이 있다.
ㄴ. 사이트
http://www.redhat.com
2) Debian
ㄱ. 설명: 수많은 참여자가 참여하여 만들어진다. "The Debian Project"로 알려진 비영리기구가 제공하는 것으로 GNU가 공식적으로 후원한다. 이 배포판은 dpkg라는 유틸리티를 사용한다. 이 배포판은 인텔, 알파, 스팍, 모토롤러(매킨토시, 아미가, 아타리)용 버전이 나와있다.
ㄴ. 사이트
http://www.debian.org
3) SuSE
ㄱ. 설명: 상용소프트웨어로 독일업체인 S.u.S.E가 배포한다.유럽에서 선두의 자리를 지키고 있다. 이 배포판에는 KDE가 포함되어 있으며 쉬운 업그레이드와 패키지 관리를 위하여 'YaST'유틸리티를 제공한다. 이 배포판은 인텔용과 알파용 버전이 있다.
ㄴ. 사이트
http://www.suse.com
4) OpenLinux
ㄱ. 설명: 상용소프트웨어 업체인 칼데라사가 제공하는 기업사용자들을 목표로 하고 있다. 표준으로 KDE를 제공하며 이 배포판은 인텔용 버전만 있다.
ㄴ. 사이트
http://www.caldera.com
5) Linux Mandrake
ㄱ. 설명: 상용소프트웨어 업체인 MandrakeSoft S.A가 제공하는 것으로 프랑스의 배포판이다.
ㄴ. 사이트
http://www.linux-mandrake.com
6) Slackware
ㄱ. 설명: 월넛 크리크 소프트웨어사의 패트릭 폴커딩에 의하여 제공된다. 패트릭 폴커딩은 현재와 같은 리눅스 배포판의 원조에 해당하는 사람이다. 설치과정은 꽤 간단하지만 업그레이드와 패키지 관리 기능은 취약하다. 여전히 libc라이브러리에 기반하고 있다. 최신 버전은 glibc로 옮겨가고는 있다. 이 배포판은 리눅스에 친숙하고 기술이 뛰어나 사람에게 추천할 만 하다. 이 배포판은 인텔 버전만 있다.
ㄴ. 사이트
http://www.slackware.com
7) 기타: 터보리눅스(
http://www.turbolinux.com) 등 그외에도 많은 리눅스가 존재한다.

(3) 국내 리눅스 배포판 업체
1) 와우리눅스
http://www.wowlinux.com
2) 한컴리눅스
http://www.hancom.com
3) 미지리눅스
http://www.mizi.com

4. 리눅스문서관련사이트

(1) 외국

1)
http://www.linuxdoc.org
=> 최신의 리눅스문서를 볼 수있는 사이트로
http://www.tldp.org와 같다. tldp는 The Linux Documentation Project의 약자이다.
2)
http://www.linux.org
=> 리눅스의 전반적인 정보를 알 수 있다.
3)
http://www.linux.org.uk
=> 리눅스 커널의 네트워크 관련 코드 개발 책임자인 Alan Cox가 운영하는 사이트로 리눅스
네트워크와 커널에 관한 내용을 얻을 수 있다.
4)
http://www.linux.com
=> 리눅스 거대회사인 VA Linux System이 운영하는 사이트로 많은 리눅스 정보와 데이터를
제공한다.
5)
http://www.slashdog.org
=> 리눅스 제품 정보와 최신 뉴스가 빨리 업데이트되는 사이트이다.
6)
http://www.freshmeat.net
=> 리눅스의 마스코트 펭귄이 좋아한다는 신선한 고기(freshmeat)를 의미한다. 최근의 리눅스 소식과 관련된 사이트 링크를 위주로 질높은 정보를 제공하는 사이트이다.
7)
http://www.linuxgazette.com => 리눅스 저널 관련 사이트이다.

(2) 국내
1)
http://www.kldp.org
=> Korean Linux Documentation Project의 약자로 한국 리눅스문서 사이트이다. 많은 정보를 얻을 수 있는 사이트이다

Trackback
Reply

출처 : 대전 국제 IT 교육센터 정성재 강사

 

1.유닉스란?

유닉스란 일종의 운영체제(OS:Operating System)이다. 운영체제란 컴퓨터를 구동시키는 가장 기본적인 프로그램을 말한다. 흔히 접하는 MS-DOS, Windows 95,Windows 98, Windows NT, Windows 2000,Windows XP ,LINUX 등이 OS이다.대부분의 OS는 한 곳에서 개발배포하지만, 유닉스는 여러종류가 있고, 여러 종류의 시스템에 이식되어 사용되고 있다. 개발되어 있는 OS는 물론 새로이 개발되고 있는 OS들도 유닉스의 영향을 많이 받고 있다. 유닉스는 현재 OS세계에서 최고의 위치를 차지하고 있다.

2.유닉스의 역사와 종류

유 닉스는 1969년 미국의 AT&T사의 Bell연구소에서 연구원으로 근무하고 있던 Ken Tomson 이라는 사람에 의해 만들어졌다. Ken Tomson은 DEC사에서 만든 PDP-7이라는 컴퓨터에서 프로그램을 개발하는데 편리한 운영체제를 새로이 개발하면서 Multics라는 OS를 참고로 하였기 때문에 Unix라는 이름을 붙여 주었다. 그후 AT&T에서 무료로 여러 연구소 및 대학교등에 OS를 Source와 함께 보급하여 여러 버젼의 유닉스가 등장하였다. 대표적인 것으로는 System V계열과 BSD계열이 있다. System V계열은 AT&T사가 주도하는 유닉스계열이며, AT&T사와 Sun Microsystem사가 여기에 속하고, BSD계열은 버클리대학에서 만든 것으로 BSD(Berkeley Software Distribution)계열에는 IBM, DEC, Hewlett-Packard사 등이 있다.

3.유닉스의 특징

(1)Multi-user가능 : 한 대의 기계를 여러 명의 사용자들이 동시에 사용 가능하다.
(2)Multi-Tasking을 지원 : 한꺼번에 여러가지 일을 할 수 있다.
(3)강력한 Network기능 지원: Ethernet(Lan card규격)과 TCP/IP를 이용한 Network 시스템을 지원하며 오늘날 최대의 통신망인 Internet도 바로 이 시스템을 근간으로 운영되었다.
(4)뛰어난 이식성을 지님 : 유닉스는 약간의 어셈블리와 대부분의 C언어로 작성되어 있기때문에 C를 컴파일 할 수 있으면 어셈블리 부분만 새로 만들고, C부분을 다시 컴일함으로써 쉽게 다른 시스템에 이식할 수 있다.
(5)계층적 파일 구조를 가지고 있음.
(6)가상메모리와 Shared Library를 지원
(7)프로세스간의 통신을 위하여 Pipe라는 기능을 제공

4.유닉스의 구성

(1) 개요: 기본적으로 커널(kernel),쉘(shell),유틸리티(utility)세 부분으로 구성되어 있으며,C와 다른 언어의 Compiler등이 있다.
(2) 구성요소
1)Kernel : 운영체제의 핵심으로 사람으로 비유하면 뇌에 해당한다. kernel은 예전 도스의 'MSDOS.SYS','IO.SYS'를 Load하는 것과 같이 유닉스가 부팅될 때 처음 로드된다. 커널의 기능은 시스템의 하드웨어를 제어하는 임무로 메모리, CPU,디스크, 단말기, 프린터등의 시스템자원 활용도를 높이기 위한 스케줄링과 자료관리 등의 핵심요소다.
2)Shell : Shell은 커널과 사용자간의 다리 역할을 하는 것을 사용자로부터 명령을 입력받아 그것을 해석하고 프로그램을 실행하는 역할을 한다. 즉, 컴퓨터에 사람이 명령을 내려 수행해야 하는데 컴퓨터의 모든 하드웨어는 부팅하면서 커널이 인식하게 된다. 사용자가 하드웨어를 제어하려면 커널에게 명령을 내려야 한다. 하지만 커널은 사람의 명령을 알아 듣지 못한다. 이 때 중간에서 사람의 명령을 받아 커널에서 전달해주는 역할을 하는 것이 Shell이다. 한마디로 사람과 커널간의 통역자이다. 유닉스에는 SHELL이 있는데 전통적으로 많이 쓰는 Shell에는 'Bourne Shell','C Shell', 'Korn Shell'등이 있다.
3)Utilty : 말 그대로 유용한 도구이다. 사용자가 특정한 문서의 내용을 찾아 바꾸려고 한다면 찾기명령을 수행하고 수정명령도 내려야 한다. 그러나 이러한 기능을 한번에 [찾아-바꾸기]를 할 수 있는 프로그램이 있다면 이러한 것을 유틸리티라고 한다.


5.유닉스 기본적인 특징

(1) Device와 파일 : Device란 하드디스크, 키보드, 프린트, 화면 출력 장치 등 시스템에 설치된 여러 가지 자원을 말한다. 유닉스에서는 이것들을 모두 파일로 취급한다. 따라서 특정 하드웨어에게 명령을 수행하려면 특정 파일에 명령을 내리면 된다.
예) eject /dev/cdrom
=> CD-ROM드라이브의 트레이(Tray)를 연다.

(2) 유닉스의 파일구조
유 닉스의 파일구조는 /(root)를 기준으로 그 하위 디렉토리에 usr, var, bin 등이 존재하고 다시 usr 디렉토리 밑에는 local, src등의 디렉토리가 존재한다. 이러한 구조를 계층적 파일 구조라하며, 거꾸로 뒤집에 놓으면 나무처럼 생겼다고 해서 Tree구조라고도 불리운다.

(3) pipe와 redirection

1) pipe
ㄱ. 유닉스가 프로세서의 통신을 위해 도입한 것으로 어떤 프로세스의 표준 출력이 다른 프로세스의 표준입력으로 쓰이게 하는 것.
ㄴ. pipe가 여러 개 연결되어 pipe-line을 구성하게 되면 자료들은 pipe-line를 따라 흐르게 된다.
예) ls | more
=> ls 명령의 출력이 more라는 filter의 입력으로 사용되어 결과가 한 화면씩 출력된다.
ls | sort | more
=> ls의 결과인 자료들은 sort를 통해 정렬되고, 다시 more를 통해 한 화면씩 출력된다.
2) redirection : 기본개념은 pipe와 유사하다. 이것은 프로세스의 표준 출력 방향을 바꾸거나 표준 입력을 바꾸는 역할을 한다.
예) aa > zz : aa의 실행결과를 zz라는 파일에 저장하라는 의미
aa >> zz : aa의 실행결과를 zz라는 파일에 덧붙이라는 의미
aa < zz : aa를 실행하면서 표준입력으로 파일 zz의 내용을 사용하라는 의미

(4) 가상메모리와 Shared Library

1) 가상메모리(Virtual Memory)
ㄱ. 개념: 하드디스크의 일부를 메모리처럼 사용되는 것을 말한다. 하드디스크는 데이터가 저장되는 공간이고, RAM(메모리)는 작업공간이라 할 수 있다. 프로그램을 실행시키면 작업공간에 해당하는 메모리로 공간이 이동되는 데, 메모리의 공간이 작으면 큰 프로그램은 실행시킬 수 없게 된다. 이러한 문제점을 극복하기 위해 사용되는 것이 가상메모리이고,
유닉스에서는 SWAP이라고 부른다.
ㄴ.Swapping : 메모리에 프로그램들이 많이 올라와 공간이 꽉 찼다고 하더라도 가상메모리를 설정하면 또다시 새로운 프로그램을 실행시킬 수 있게 된다. 이것은 메모리에 올라와 있지만 사용하지 않고 있는 프로그램을 하드디스크에 설정된 가상 메모리 공간으로 보내고 그 빈 공간에 새로운 프로그램을 로딩하기 때문이다. 또한 가상메모리에 있는 내용을 사용하려면 다시 메모리로 올리고, 그 대신에 메모리에 있던 다른 내용이
하드디스크에 저장된다. 이처럼 메모리와 하드디스크사이의 데이터교환을 스왑핑(swapping)이라고 한다.
2) Shared Library
ㄱ. 설명: 프로그램에서 특정한 기능을 하는 routine들을 모아 놓은 것을 library라 하여, 프로그램 개발시 library중에서 필요한 routine들을 받아서 link시킨다. 이렇게 되면 같은 기능을 하는 routine들이 실행파일마다 들어가므로 실행파일의 크기도 커지고 메모리도 남게된다. 그래서, 같은 routine들을 공유하는 것이 Shared Library이라 한다.
ㄴ. 사용법 : 프로그램 실행시 library이름과 함께 OS에 요청하면 OS가 찾아서 프로그램에 Link시켜준다.
ㄷ. 장점 : 실행파일의 크기가 작아져 디스크의 낭비가 적어지고, 여러 프로그램에서 같은 library에 있는 routine을 사용시 한번만 load하면 되므로 메모리가 절약된다.
ㄹ.기타 : MS-Windows나 OS/2의 DLL(Dynamic Link Library)와 비슷하지만 유닉스가 훨씬 더 효율적으로 지원한다.

6. 유닉스 파일시스템의 특징

1) 파일 이름 : 유닉스의 파일이름은 종류마다 다르지만 보통 14자에서 255자까지 지원한다. 또한 도스에서처럼 파일을 이름과 확장자로 나누지 않는다. 유닉스 파일이름 안에 들어 있는 '.'은 이름과 확장자를 구별하는 것이 아니고, 그냥 이름의 일부분이다. 하지만 유닉스파일 이름에서 '.'으로 시작하는 파일은 hidden파일로 취급받아서 보통의 경우에는 보이지 않는다. 또한 유닉스는 대,소문자를 구별한다.
2)파일 속성 : 도스 파일에는 Archive,Hidden, System, Read Only등 4가지 속성이 있다. 유닉스 파일도 속성을 가지고 있지만, 도스와는 다르다. 유닉스의 파일속성은 기본적으로 읽기(r), 쓰기(w), 실행(x)의 속성을 가지고 있으며, 디렉토리도 파일과 똑같이 취급하므로 디렉토리임을 표시하는 속성(d)도 있다. 물론 디렉토리도 r,w,x의 속성을 가지고 있다. 유닉스에서는 이러한 파일 속성에 의해 파일에 접근할 수 있는 권리가 정해지므로 이것을 허가권(Permmission)이라고 한다.

7. 유닉스 명령어의 특징(도스와 비교)

(1) 모든 명령어가 파일의 형태로 존재하고, 도스에 비해 상당히 많다.
(2) 대소문자를 구분한다.
(3) 도스에서는 옵션사용시 /(슬래쉬)를 사용하지만 유닉스에서는 -(대쉬)를 사용한다.
(4) 유틸리티마다 다르지만 많은 유틸리티들이 option을 같이쓰는 것을 허용한다.
예를 들면 ls -alF는 ls -a -l -F와 같은 의미이다.
(5) 긴파일의 이름도 지원한다.(리눅스에서 기본적으로 255자까지 사용가능)
(6) 메타문자(도스의 와일드카드)인 *,?를 사용한다.

Trackback
Reply
안타깝게도 CPU 타잎 확인 하는 부분은 제대로 계산이 안된다.
이유는 쿼드코어, 코어2듀오, 듀얼코어, 하이퍼스레딩 등 때문에...
사실 좀 더 세밀하게 짜면 정상적으로 할 수있는데 귀찮아서..........

#!/bin/bash
LANG=C
unset GREP_OPTIONS GREP_COLOR

echo "
################################ SYSTEM CHECK uzoogom edition. ################################

1) Network Information-------------------------------------------------------------------------
1-1) HOSTNAME: `hostname`

1-2) Ethernet Information
`ifconfig | grep -v "127.0.0.1" | grep "addr"`

1-3) Route(gateway) Information
`route | egrep '(default|Gateway)'`


2) SYSTEM Information-------------------------------------------------------------------------
2-1)CPU Information
CPU : `cat /proc/cpuinfo | grep "processor" | wc -l` EA
`cat /proc/cpuinfo | grep "model name" | uniq`
`cat /proc/cpuinfo | grep "MHz" | uniq`

2-2) Memory Information
`free -m`

2-3) Partition Information
`fdisk -l | grep dev`

2-4) Disk Information
`df -h`


3) PROCESS Information-------------------------------------------------------------------------
`pstree`


4) Open Port Scanning-------------------------------------------------------------------------
`netstat -antp | egrep '(LISTEN|Address)'`


5) Auto start processor-------------------------------------------------------------------------
5-1) Crontab
`crontab -l`

5-2) chkconfig list
`chkconfig --list | grep "3:on"`

5-3) rc.local
`egrep -v "(#|touch)" /etc/rc.local`
"
Trackback
Reply
요즘에 회사에서 써먹을려고 다시 짠 백업 스크립트
행여나 이 블로그에 흘러들어와서 그걸 그대로 쓴다면 무궁무진한 오류가 뜨니 주의하시요!

#!/bin/bash
#edit by uzoogom 090723
#
# backup configure
host=$(hostname)
day=$(date +%Y-%m-%d)
check=$(mount | grep -c "backup")

# Backup Storage Mounting Check
if [ $check == 1 ]
        then
                echo "Backup Storage Mounting Check .... OK!!"
        else
                echo "Backup Storage Mounting Check .... FAIL!!"
                echo "Exit backup scripts"
                exit 0
fi

# Make a backup Directory
mkdir -p /backup/${host}/{webdata,data,config} 2>/dev/null
mkdir /root/backup/reference 2>/dev/null

# 백업 할 디렉토리를 적을 파일 생성

touch /root/backup/reference/{webdir,datadir,configfile}

# Lists to Backup 백업 할 디렉토리를 적을 파일 생성
WEBDATA=$(grep -v "^#" /root/backup/reference/webdir)
DATA=$(grep -v "^#" /root/backup/reference/datadir)
CONFIG=$(grep -v "^#" /root/backup/reference/configfile)

# TMP Directory
LIST="/tmp/backuplist_$$.txt"

# Target Backup Locations
WEBDATABACKUP="/backup/${host}/webdata"
DATABACKUP="/backup/${host}/data"
CONFIGBACKUP="/backup/${host}/config"
DATABASEBACKUP="/backup/${host}/database"

#
echo "
========================================================================
Starting backup at `date +%Y-%m-%d\ %H:%M:%S`
========================================================================
"

# date to nubmer 증분 백업을 위해서 날자 지정
# 1-Mon, 2-Tue, 3-Wed, 4-Thu, 5-Fri, 6-Sat, 7-Sun
set $(date '+%u')

# backup Time stamp
rm -f /backup/${host}/backupTime*.txt
echo Starting at `date +%Y-%m-%d\ %H:%M:%S` > "/backup/${host}/backupTime($day).txt"

if test "$1" = "6" ;
then
        # weekly a full backup of all data and config. settings:
        #
        echo "Step1. Performing Full Data Backup--------------------------------------"
        tar zcf "$DATABACKUP/data_full_$day.tgz" $DATA 2>/dev/null

        echo "Removing incremental data backups..."
        rm -f $DATABACKUP/data_diff*

        echo "Removing four week old full Data backup..."
        find $DATABACKUP -depth -type f \( -ctime +20 -o -mtime +20 \) -print > $LIST
        rm -f `cat $LIST`
        echo "------------------------------------------------------------------Done +"
        echo ""

        #
        echo "Step2. Performing Full WebData Backup-----------------------------------"
        tar zcf "$WEBDATABACKUP/webdata_full_$day.tgz" --exclude-from=./reference/exclude  $WEBDATA 2>/dev/null

        echo "Removing incremental data backups..."
        rm -f $WEBDATABACKUP/webdata_diff*

        echo "Removing four week old full WebData backup..."
        find $WEBDATABACKUP -depth -type f \( -ctime +20 -o -mtime +20 \) -print > $LIST
        rm -f `cat $LIST`
        echo "------------------------------------------------------------------Done +"
        echo ""

        #
        echo ""
        echo "Step3. Performing Full Config Backup------------------------------------"
        tar zcf "$CONFIGBACKUP/config_full_$day.tgz" $CONFIG 2>/dev/null

        echo "Removing incremental config backups..."
        rm -f $CONFIGBACKUP/config_diff*

        echo "Removing four week old full config backup..."
        find $CONFIGBACKUP -depth -type f \( -ctime +20 -o -mtime +20 \) -print > $LIST
        rm -f `cat $LIST`
        echo "------------------------------------------------------------------Done +"
else
        # incremental data backup:
        #
        echo "Step1. Performing Incremental Data Backup-------------------------------"
        find $DATA -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST
        tar zcfT "$DATABACKUP/data_diff_$day.tgz" "$LIST" 2>/dev/null
        rm -f "$LIST"
        echo "------------------------------------------------------------------Done +"
        echo ""

        # incremental webdata backup:
        #
    echo "Step2. Performing Incremental WebData Backup----------------------------"
        find $WEBDATA -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST
        tar zcfT "$WEBDATABACKUP/webdata_diff_$day.tgz" --exclude-from=./reference/exclude "$LIST" 2>/dev/null
        rm -f "$LIST"
        echo "------------------------------------------------------------------Done +"
        echo ""

        # incremental config backup:
        #
        echo "Step3. Performing Incremental Config Backup-----------------------------"
        find $CONFIG -depth -type f  \( -ctime -1 -o -mtime -1 \) -print > $LIST
        tar zcfT "$CONFIGBACKUP/config_diff_$day.tgz" "$LIST" 2>/dev/null
        rm -f "$LIST"
        echo "------------------------------------------------------------------Done +"
fi

# MySql 용 백업 설정이나, MySql을 마땅히 백업할 서버가 없어서 주석처리
# Database Backup
#
#mkdir -p /backup/${host}/database 2>/dev/null
#DB_DIR="/usr/local/mysql/data"
#
# Create SQL dump of databases and compress:
#echo "
#Archiving Databases...
#"
# Find current databases
# DB=( $(find ${DB_DIR}/ -maxdepth 1 -type d ! -name ".*" | sort | sed -e 's/\/usr\/local\/mysql\/data\///g') )
# Set for loop max counter based on number of databases
# j=${#DB[@]}
# for (( i=0; i&lt;j; i++ )); do
#         mysqldump -u user --password=passwd --opt ${DB[i]} | gzip >"$DATABASEBACKUP/${DB[i]}_$day.sql.gz"
# done
#
#echo "
#Removing two week old database backups...
#"
#find $DATABASEBACKUP -depth -type f \( -ctime +13 -o -mtime +13 \) -print > $LIST
#rm -f `cat $LIST`
#rm -f "$LIST"
#

# backup Time stamp
echo Finished at `date +%Y-%m-%d\ %H:%M:%S` >> "/backup/${host}/backupTime($day).txt"
echo "
========================================================================
Finished: `date +%Y-%m-%d\ %H:%M:%S`
========================================================================
"
exit 0
Trackback
Reply
모든 스크립트의 기본은 정말이지 단순하다.
얼마나 그 명령어에 대해 이해를 하고 있느냐.
단지 그것 뿐이다.

여기에서는 가장 기본적으로 그 해당 명령어를 사용하는 방법은 알고 있으리라 생각하고 적는다.
괜시리 명령어 사용법도 모르면서 스크립트에 덤벼들지 마라. 잘못하면 시원하게 파일을 날릴 수 있으니까!

어찌보면 가장 단순하지만, 가공할만한 잠재력을 가진 명령어 중 하나인 find!
find만 잘 응용해도 열 스크립트 안 부럽다!


1. 특정 파일 속 특정 단어 찾기
ex) html 파일에서 mms:// 찾기
find . -type f -name "*.html" -exec grep "mms://" {} /dev/null \;
(뒤에 /dev/null을 붙이는 이유는 해당 파일명을 보기 위함이다.)

2. 특정 파일 속 특정 단어 바꾸기
ex) html 파일에서 mms://를 http://로 바꾸기
find . -type f -name "*.html" -exec perl -pi -e 's/mms/http/g' {} \;
(유의 할 점은 특수기호[가령 / 같은..]는 인식을 못하기 때문에 문자로 쓰기 위해선 꼭 \를 붙여줘야한다)

3. 특정 파일만 압축하기
ex) html 파일만 찾아서 압축하기
for i in $(find . -name '*.html'); do tar -zrvf html.tgz $i; done

4. 5일 지난 파일 삭제하기
rm -f 'find . -mtime +5'

뭐 기본적으로 이정도만 응용해도 꽤나 훌륭한 결과를 얻을 수 있다.



Trackback
Reply

이제 guest OS 를 설치 해 보자. (Guest OS를 가상화가 될 OS 들을 뜻한다.)

 

 

먼저 새로운 가상화 머신을 위해 H/W 셋팅을 한다.

New Virtual Machine 버튼을 클릭하면 셋팅을 할수있는 창이 뜬다.

 

 

1. 가정 먼저 어떤 타잎으로 설정할건지를 묻는데. 기본적인 Typical을 선택하여 넘어가자.

 

 

2. 여기에서는 가상화서버의 이름을 정한다. 알아보기 쉬운 이름으로 정하는게 관리하기 좋다.

 

 

3. 어떤 데이터 스토리지에 설치를 하느냐.. 파티셔닝을 하지 않았다면 하나만 나오니 그냥 선택

 

 

4. 이제부터가 중요하다. Guest OS를 어떤 것을 설치하느냐에 따라 그 버전에 맞는 항목을 선택해 주어야 한다.

 

 

5. Memory 활당하는 부분

 

 

6. 네트워크 카드 활당하는 부분

 

 

7. 하드 용량 활당하는 부분

 

 

8. 마지막으로 자신이 입력한 정보를 확인 한 후에. OK를 눌르면 모든 환경 설정은 끝이 나게 된다.

 

 

9. Guest OS들이 올라와 있는 모습을 확인 할 수 있다.


Trackback
Reply

정말이지 허망할 정도로 쉬운 vmware ESXi 설치하기.

자 슬슬 자신감이 생기지 않는가? XEN과 비교해보면 정말 놀라울 정도의 편리한 인터페이스다.

 

vmwware ESXi를 설치 완료 후, IP셋팅을 하고 브라우저를 통해 접속하면 아래와 같은 화면이 보인다.

 

Download VMware Infrastructure Client를 클릭하여 설치를 하면, guest OS를 올릴 준비는 완료가 된 것이다.

 

설치 완료 후, 실행 한 상태에서 vmware ESXi 설치 시 입력한 ID/PW를 입력하여 접속 한다.

 

 

접속이 완료 된 화면, 어디서 많이 본 것 같지 않은가? 그렇다. vmware server랑 별반 다를 것이 없는 눈에 익은 인터페이스다!


Trackback
Reply

vmware ESXi의 구성요소는 다음과 같다.

 

VMware ESXi

VMware ESX Server 3i U3 Installable

VMware ESXi 3.5 U3 Installable with HP Management Components

설명할 필요도 없는 vmware esxi 핵심 프로그램이다. H/W 바로 위에 올라가는 개념

 

VMware Infrastructure Client

VMware를 하드웨어에 설치하고 한동안 벙~ 저 있었다.

VMware Infrastructure Client 이게 없다면 ESXi를 설치했다고 한들 guest OS를 올릴 수 없다.

 

물론 무료이긴하지만, 정식 라이센스를 받아야한다.

즉, 무료로 사용할테네 라이센스를 주세요. 라는 묘한 상황인 것이다.

역시 vmware 홈페이지에서 회원 가입하고, 다운로드 후 라이센스 발급을 받아 추후 라이센스를

입력해주면 된다.

 

메뉴얼은 아래를 클릭하여 다운 받아보도록하자.

영어라지만, 별 거없다. 그냥 CD넣고 yes 정도만 눌러줘도 3~4분만에 설치는 완료된다.

 

참- 좋은 세상이다.

 

설치메뉴얼)

http://www.vmware.com/pdf/vi3_35/esx_3i_i/r35/vi3_35_25_3i_i_get_start.pdf

Trackback
Reply

그래도 하반기 프로젝트를 가상화로 정해버렸기 때문에

해야한다. 경제도 어려운 이 판국에.... 일 못하면 튕겨나간다. 찾자 찾자 해서 구글링 한 결과

 

오오. VMware ESXi 라는 무료 가상화 솔루션이 있다!

VMware ESX는 익히 알고있었지만, 뒤에 "i"가 하나 더붙은 이건 무엇인가 하니.

MircoSoft Hyper-V에 자극을 받은 vmware사에서 무료로 내 놓은 vmware ESXi 것이다. 캬하~

 

시간이 좀 지났지만, 왜 이걸 몰랐는지!

 

다운 로드 및 자세한 정보는 Vmware의 문을 두들겨보자.

 

http://www.vmware.com/products/esxi/

 

물론 잊지 말아야 할 것은 자신의 CPU가 가상화를 지원하느냐 하는 것이다!

Trackback
Reply
My Advanced Linux/Virtualization  2009. 7. 24. 16:16

리눅서(linuxer)라면 누구나 한 번 쯤 들어봤을 가상화 기법.

 

XEN이란 무엇인가!

 

Xen은 XenSource의 OS 레벨 Paravirtualization용 무료 오픈 소스 솔루션이다. Paravirtualization에서는 하이퍼바이저와 OS가 가상화에서 협업하고, OS는 변해야 하지만, 성능은 우수하다.

Xen은 협업(게스트 OS를 수정해야 한다) 이 필요하고, 패치 된 OS들만이 Xen을 통해서 가상화 될 수 있다. 전체 가상화 보다 더 나은 성능을 보이기 때문에, 그 자체가 오픈 소스인 리눅스 관점에서 볼 때, 합리적인 절충안으로 볼 수 있다. 하지만, 다른 비 오픈 소스 OS의 지원 같은 전체적인 지원 관점에서 볼 때는 이것이 단점이 될 수 있다.

Xen에서 Windows를 게스트로서 실행하는 것이 가능하지만, Intel Vanderpool 또는 AMD Pacifica를 실행하는 시스템에서만 가능하다. Xen을 지원하는 다른 OS로는 Minix, Plan 9, NetBSD, FreeBSD, OpenSolaris 등이 있다.

 

 

나 역시 가상화를 하려고 했을때 가장 먼저 생각난 XEN 하지만 앞서 설명한  패치된 OS를 도무지 구할 수가 없어서 설정 할 방법이 없었다.

 

그리고 구글링을 해보다보니 XEN 가상화에서 Full virtualization을 지원하는 것 처럼 적힌 것도 있는데, 아마 옛버전에서는 됐을지연정 RHEL5.2에서는 돼지 않음을 확인했다.

 

(2008 오픈소스세미나에가서 레뎃 관계자한테 직접 질문했더니 전가상화는 지원하지 않는다고 말하더라.. 허탈~)


Trackback
Reply

일단, 가상화를 시작하자고 말을 했으니 가상화가 무엇인지부터 알고 시작하자.

여러가지 유형이 있지만, 현재 가장 크게 사용되는 3가지 가상화에 대해서 설명해보자

 

1. Full virtualization (전가상화, 전체가상화)

전체 가상화(네이티브 가상화) 또한 가상화 방식이다. 이 모델은 게스트(guest) OS들과 네이티브 하드웨어 사이를 중재(mediate)하는 가상 머신을 사용한다. (그림 2) "중재(Mediate)"는 핵심적인 단어이다. VMM이 게스트 OS와 베어 하드웨어 사이를 중재하기 때문이다. 보호를 받고 있는 특정 명령어들은 하이퍼바이저 내에서 트랩핑(trap) 및 핸들되어야 한다. 기반 하드웨어는 OS가 소유한 것이 아닌, 하이퍼바이저를 통해서 공유되기 때문이다.


   그림 2. 전체 가상화는 하이퍼바이저를 사용하여 기반 하드웨어를 공유한다.
 
전체 가상화는 하드웨어 에뮬레이션 보다는 빠르지만, 하이퍼바이저 중재 때문에 실제 하드웨어 보다는 성능이 낮다. 전체 가상화의 가장 큰 장점은 OS를 수정하지 않고 실행될 수 있다는 점이다. 유일한 제한 사항은 OS가 기반 하드웨어(예를 들어, PowerPC)를 지원해야 한다는 것이다.

 

 

 

2. Paravirtualization (부분 가상화)

Paravirtualization은 전체 가상화와 약간 유사한 대중적인 기술이다. 이 방식은 기반 하드웨어로의 공유 액세스에 하이퍼바이저를 사용하지만, 가상화 인식 코드를 OS로 통합한다. (그림 3) 이 방식은 재컴파일이나 트래핑(trapping)을 할 필요가 없다. OS 그 자체로 가상화 프로세스에 협력하기 때문이다.


   그림 3. Paravirtualization은 프로세스를 게스트 OS와 공유한다.
 
앞서 언급했던 것처럼, Paravirtualization은 게스트 OS들이 하이퍼바이저에 맞게 수정되어야 한다. 이것이 단점이다. 하지만, Paravirtualization은 가상화 되지 않은 시스템 성능에 가까운 성능을 보인다. 전체 가상화와 마찬가지로, 여러 다른 OS들이 동시에 지원된다.

 

 

 

3. OS level virtualization

마지막 기술인 OS 레벨 가상화는 지금까지 다루어왔던 것과는 다른 기술을 사용한다. 이 기술은 그림 4처럼 OS에서 서버들을 가상화 한다. 이 방식은 하나의 OS를 지원하고, 서버들을 분리시킨다.


   그림 4. OS 레벨의 가상화는 서버들을 분리시킨다.

OS 레벨 가상화는 OS 커널을 수정해야 하지만, 장점은 성능이 우수하다는 점이다.

 

 

각각의 장 단점을 잘 파악해서 자신에게 맞는 가상화 방법을 선택하면 된다.


Trackback
Reply

2008의 전반적인 트랜드라고 하면 당연 가상화 시스템이라고 말하겠다.

많은 회사에서 서서히 비용절감 및 고효율성을 원하기 시작하면서 나타난

아니 이미 진작에 나타났었지만 비효율적이라고 생각되어 조용히 사라났다가 당찬 모습으로

다시 나타난 가상화(Virtualization).

 

나도 이른 바 최신버전 증후군 환자라 해보고 싶었지만,

우리 회사에서 돌릴만한 여유있는 서버가 없었던 터라 하지 못했는데

이번 중기거점에 남는 서버가 한 대 있는 것을 발견, 결국 하반기 프로젝트는

가상화로 정하게 되었다.

 

그럼.

 

막연하게 가상화란 무엇인걸까?


Trackback
Reply

시스템 구현

LVS Load Balancing method
 NAT 이용한 가상서버
 IP 터널링 이용한 가상서버
 다이렉트 라우팅 이용한 가상서버

 

LVS Direct Routing
 사용자의 요청은 가상 IP 주소를 가진 부하분산서버로 간다
 부하분산서버는 스케줄링 알고리즘에 따라 클러스터에서 실제 서버를 선택
 접속을 기록하는 해시 테이블에 새로운 접속을 추가
 부하분산서버에서 선택한 서버로 직접 패킷을 전송
 리얼서버는 요청을 처리하고 결과를 사용자에게 직접 전송

 

스케줄링 알고리즘
 Round-Robin Scheduling
 Weighted Round-Robin Scheduling
 Least-Connection Scheduling
 Weighted least-Connection Scheduling

 

Technology
1. heartbeat
2. Ldirectord
3. ipvsadm

 

1. Heeartbeat
-  heartbeat 프로토콜을 이용하는 오픈 소스 프로젝트
-  정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급 복 구 프로세스를 수행

- Master 호스트가 서비스를 책임
- Master 호스트에 문제발생시 Hot standby 호스트가 가상 IP를 인계받아 서비스 재계


2. Ldirectord
 리얼서버의 상태를 모니터링 하는 PERL 스크립트
 설정파일에 정해진 URL에 주기적으로 특정문자열 요구
 타임아웃, 응답된 문자열 유효성 등으로 서버상태 결정
 리얼서버의 다운시 IPVS 테이블에서 삭제
 리얼서버 복구시 IPVS 테이블에 재 등록
 라이렉트 라우팅은 Linux Director서버의 IPVS 테이블을 이용해 커널에서 처리
 모든 리얼 서버가 다운 되었을 경우 fall-back 서버가 응답


3. ipvsadm
 2개 이상의 노드를 가진 클러스터링 시스템에서 커널내부의 IPVS 테이블을 설정하고 유지하는 유틸리티
 IPVS테이블은 커널이 로드밸런서로 들어오는 패킷을 각각의 리얼서버 노드로 전달하기 위해 참조
 2개의 프로토콜 지원(TCP, UDP)
 3가지 방식의 패킷 포워딩 방식 지원(NAT, Tunneling, Direct routing)
 4가지 스케줄 알고리즘 지원

 

구축
Network 설정(공통)
/etc/hosts
X.X.X.100 www.dunet.co.kr www virtual ip (VIP)
X.X.X.101 ha1.dunet.co.kr ha1 master
X.X.X.102 ha2.dunet.co.kr ha2 standby
X.X.X.103 node1.dunet.co.kr node1 real server1
X.X.X.104 node2.dunet.co.kr node2 real server2

 

real server 서버들은 VIP를 로컬주소로 인식하도록 설정 되어야 함
- loopback device 에 IP alias 기능을 이용
- /etc/sysconfig/network-scripts/ifcfg-lo:0 스크립트를 다음과 같이 설정

DEVICE=lo:0
IPADDR=X.X.X.100
NETMASK=255.255.255.255
NETWORK=X.X.X.X
BROADCAST=X.X.X.X
ONBOOT=yes
NAME=loopback

 

GATEWAY혼돈을 막기 위해 /etc/sysconfig/network 파일에 아래 항목 추가
GATEWAYDEV=eth0

 

각 real server에서 /etc/ha.d/conf/ldirectord.cf에 포함
Test Page of node1.dunet.co.kr
Test Page of node2.dunet.co.kr


ARP 응답문제
loopback devices에서 Alias된 VIP가 추가된 경우 로컬네트워크의 ARP 요청이 로드밸런서로 가지 않고 리얼 서버가 먼저 응답하므로 부하분산이 되지 않는 문제가 생길 수 있다.


커널 2.2.14 – Hidden Device 기능을 이용
커널 2.4.X  - Hidden patch 필요
커널 2.6.X  - /etc/sysctl.conf 파일에 수정 후 활성화


# ARP hidden configure
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


활성화
# sysctl -p

TIP) 확인법으론 windows나 linux에서 arp -a 명령을 실행. 로드밸런서 서버 맥어드레스가 나오면 정상적으로 셋팅이 된 것이다.

 

Linux Director Server 설정
- kernel 2.4 이상에서는 IPVS기능 사용가능
- Director서버는 반드시 자신에게 접속하는 클라이언트 패킷을 real server로 보낼 수 있는 IPforward기능이 필요


# vi /etc/sysctl.conf
net.ipv.ip_forward = 1 로 변경 후 저장


활성화

# sysctl -p


실행을 위해 /etc/ha.d/conf/ldirectord.cf에 설정파일 필요


# vi /vietc/ha.d/conf/ldirectord.cf
checktimeout=3
checkinterval=1                     # 테스트페이지 요청 주기
fallback=127.0.0.1:80gate         # 모든 리얼서버 다운시 이동할 웹 서버
autoreload=yes
logfile=”/var/log/ldirectord.log”
quiescent=yes
virtual=X.X.X.100:80                # 리얼서버 IP및 포트, 포워딩 방식
   real=X.X.X.103:80 gate 3          - gate = Direct Routing
real=X.X.X.104:80 gate 2             - masq = Network address translation
service=http                              - ipip = IP Tunneling
  checkport=80
  checktype=connect
  request=”index.html”
  receive=”Test Page”
  scheduler=wlc                    # 스케줄링 방식
  #persistent=600                    - rr, wrr, lc, wlc

- Real Server 동일 사양에서 똑같게 구성
- Director Server 동일하게 구성

 

LVS 각 서버들 httpd 실행
# /etc/rc.d/init.d/ldirectord start
- 부팅 시 자동 실행되지 않게 설정!!!


ipvsadm을 통해 테이블 확인
# ipvsadm - L

장애 로그로 결과를 분석

Trackback
Reply
High Availability Cluster
이 구성은 서비스를 제공하는 Active server 와 장애 발생시 서비스를 이어 받는 Stand-by server로 이루어진다. 가용성 확보는 물론 데이터 상속에 대해서도 관여한다. 데이터 관리 방법에 따라 ‘Shared Disk(공유디스크)’, ‘Data Mirrioring(데이터복제)타입’, ‘Remote Cluster(원격 클러스터)타입’으로 분류된다.

공유디스크 타입
(1) 특징
- 비교적 고가의 외장 공유디스크 필요
- 대용량의 데이터를 취급하는 시스템에 적합
(2) 기본 구성 및 동작
- 정상 동작 수행 중인 상태
- 서버에 장애가 발생하면 스탠바이 서버에서 서비스를 이어받는다.(failover)
- 장애가 발생한 서버의 문제를 조치한다.
- 원래의 서버로 서비스를 원복한다(failback)

데이터복제 타입
(1) 특징
- 고가의 외장 공유 디스크가 필요 없다.
- 데이터의 복제로 인해 소용량의 데이터를 취급하는 시스템에 적합.
(2) 기본 구성 및 동작
- 액티브 서버에서 디스크 읽기는 비 클러스터 구성인 상태와 동일하며, 디스크 쓰기 동작에서 Interconnect 네트워크를 통해 복제가 이루어진다.
- 데이터의 복제는 리얼타임으로 동작하는 Synchronous방식과 원격지의 클러스터 노드의 데이터 복제를 지원하는 Asynchronous방식이 있다.
- 액티브 서버에서 장애가 발생할 경우 스탠바이 서버에서 복제된 데이터를 통해서 어플리케이션이 실행되며 서비스를 이어 받게 된다.

HeartBeat 설정 및 구동
- heartbeast 프로토콜을 이용하는 오픈 소스 프로젝트
- 정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급복구 프로세스를 수행
- 이더넷 카드 혹은 시리얼 케이블을 이용 각각의 호스트를 연결
- Heartbeat 프로토콜로 연결된 호스트들은 가상 IP를 공유
- Master 호스트가 서비스를 책임
- Master 호스트에 문제 발생시 Stand-by 서버로 서비스 계속

Heartbeat 설정
Heartbeat는 3개의 설정 파일을 사용한다.(기본경로 /etc/ha.d/)
- ha.cf : heartbeat 구성에 필요한 기본 설정 파일.
- haresource : 노드간에 공유할 자원과 스크립트 설정 파일.
- authkeys : 노드간의 인증 방법을 설정.

# vi /etc/ha.d/ha.cf
debugfile  /var/log/ha-debug # debugfile 로그 생성 파일  
logfile    /var/log/ha-log        # 로그 생성 파일   
logfacility local0    
keepalive 2                           # 두 노드간 heartbeat 주고받는 주기(초단위)   
deadtime 10                          # 노드가 죽었다고 판단하는 시간(10초후 failover)   
udpport 694                          # UDP heartbeat 패킷을 보낼 포트   
ucast eth1 slaverIPAddress   # UDP heartbeat 보낼 인터페이스  
auto_failback on                   # 장애 노드 복구시 자동 복구 여부 설정   
master node                       # 마스터 노드   
slcave node                        # 슬레이브 노드

# vi /vietc/ha.d/haresource
마스터 노드명            virtual IP          공유 서비스명   
master node         192.168.1.100     httpd

이 후 공유리소스에 대한 링크를 생성한다.
# ln –s /etc/rc.d/init.d/httpd /etc/ha.d/resource.d/httpd

# vi /etc/ha.d/authkeys
auth 1            # 사용할 인증 방식   
1 md5 hello       # 인증 시 보낼 메시지
여기에서 주의 할 점은 보안상 root만 실행할 수 있도록 권한을 주어야한다.
# chmod 600 /etc/ha.d/authkeys

heartbeat 구동과 종료
# service heartbeat start
# service heartbeat stop

※ 이는 간단한 HA만의 설정이다.
이런식의 서버 설정은 하나가 놀고있기 때문에(standby) 자원의 효율면에선 떨어진다고 볼 수있다. standby서버 역시 효율적으로 사용은 다음에 알아보도록 하자.
Trackback
Reply
뭔가 참 기능도 좋고 한대..
이상하게 정감이 안가는 블로그에서 탈피.

사실 텍스트큐브 직접셋팅해서 할까 호스팅 업체를 찾아보던 도중에
구글에서 R&D해서 서비스 한다고 해서 잽싸게 옮겨탔다.

기능을 좀 볼까나~
Trackback
Reply

vsftp를 사용할 경우 에서 업로드시간과 실제시간이 다를 경우가 있다.


이경우 vsftpd.conf 설정파일에서 use_localtime = yes 를 추가시킨 후,

vsftpd를 재시작 시켜주면, 서버 시간과 동기화 시켜준다.


그리고 만약 최상위 폴더를 잠그고 싶을때는

chroot_local_user=YES

를 추가해주면 된다.


기본적인 서버시간 동기화

rdate -s time.bora.net

Trackback
Reply
rpmdb 관련 에러..

간혹 yum 이나 up2date가 중간에 끊기거나 잘못되서
rpm 명령어가 안 먹히거나.. 아예 먹통이 되어버리는 경우가 있다.
ps axf로 확인해도 프로세서가 죽지도 않고 좀비상태로 남아있거나!

이럴땐 rpmdb가 꼬인것으로 rpmdb를 삭제하고 다시 빌드하면 된다.

# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb

이걸로 오케이!

Trackback
Reply
.htaccess와 .htpasswd 웹인증은 apache환경에 인증세팅으로 ID/PASSWORD를 넣어서 보안을 강화하는 한 방법이다. 기본적으로 셋팅 되어있지 않으므로 따로 옵션을 주어 셋팅을 하여야 한다.

일단 httpd.conf 파일을 수정해 보자.
AccessFileName .htaccess
을 추가해주자. 물론 .htaccess 파일은 임의로 수정이 가능하다.
그 후, 인증을 거치고 싶은 홈페이지의 최상위 디렉토리 옵션을 찾아서 아래와 같이 수정해 준다.

<Directory "/usr/local/apache2.0/htdocs">
    Options Includes FollowSymLinks
    AllowOverride All   #AllowOverride의 옵션을 ALL로 수정
    Order allow,deny
    Allow from all
</Directory>

이 후, 클라이언트환경을 아래와 같이 설정 해 주자.


[클라이언트 환경]
;인증을 걸고 싶은 폴더에 .htaccess와 .htpasswd 를 생성한다.

.htaccess : vi로 아래 내용을 만든다.
AuthType Basic
AuthName "Password Required"
AuthUserFile /data/wwwdunet/weblog/.htpasswd
AuthGroupFile /dev/null
ErrorDocument 401 "ERROR , NOT CORRECT PASSWORD OR USER"
Require valid-user


.htpasswd : 아이디와 패스워드를 입력한다.
# /home/apache/bin/htpasswd -c .htpasswd 원하는아이디
New password: <="=" 패스워드 입력
Re-type new password: <="=" 패스워드 재입력
Adding password for user 원하는아이디

-c 옵션은 처음 파일 생성할 때쓰는 옵션이니 이 후에는 -c 옵션을 빼고 하여야한다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2025/03   »
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 31