Page 1


파이썬실무프로그래밍_책.indb 1

2017-03-22 오후 4:00:21


5

서문

시스템/네트워크 엔지니어가 왜 파이썬을 배워야 할까요? 이 책은 시스템/네트워크 엔지니어 그리고 엔지니어 지망생을 대상으로 합니다. 왜 이 모든 엔지니어를 대상으로 할까요? 대상이 많으면 책이 많이 팔릴 것 같아서? 하하…………(점이 많아 보이는 것은 착시입니다.) 아닙니다. 현재의 IT 시장은 클라우드 환 경으로 이동하면서, 엔지니어에게 시스템/네트워크에 대한 지식 모두를 요구하고 있습니다. 이를 가능하게 하는 것은 IT 제품들이 점점 다루기 쉽게 설계되기 때문입니다. 따라서 현재 시장에서 주목받는 엔지니어는 시스템/네트워크 모두를 잘 이해하고 디자인할 수 있는 엔지 니어입니다. 그렇다면 그다음으로 시장에서 시스템/네트워크 엔지니어에게 요구되는 능력은 무엇일까 요? 제가 보는 관점에서는 프로그래밍을 활용한 창조력입니다. 기존의 엔지니어는 벤더에 서 제공하는 기능과 제한을 잘 이해하고 구성하는 엔지니어였다면, 이제는 엔지니어가 벤더 에서 제공하지 않는 기능을 새롭게 구현하는 능력을 요구하고 있습니다. 그렇다면 이런 창 조적인 일에는 어떤 것이 있을까요? 예를 들어 보겠습니다. 엔지니어들은 업무 중에 ‘노가다 작업’이라는 말을 자주 사용합니다. 이는 정해진 틀 안에서 반복적인 작업을 엔지니어가 직접 해야 하는 것을 의미합니다. 사실 이런 작업은 이미 구조적으로 고정돼 있기 때문에 프로그램으로 구현해서 자동화할 수 있는 경우가 많습니다. 또 한 가지, 시스템/네트워크는 항상 동작해야 하므로 정상적으로 동작하는지 모니터링이 필요합니다. 이를 위해 이미 많은 소프트웨어가 개발되어 운영되고 있습니다. 하지만 모두 요구사항에 딱 맞게 동작하지는 않기 때문에 프로그래밍을 활용한다면, 이를 세부적으로 조 정하고 원하는 동작만 할 수 있도록 설계할 수 있습니다. 엔지니어는 숙명적으로 배우고, 기술을 선도하는 자만이 살아남을 수 있습니다. 부디 이 책 이 이러한 시대적 흐름에 도움이 되고, 시스템/네트워크 프로그래밍을 처음 시작하는 독자 분들에게도 이정표가 되기를 희망합니다. 조 훈(Hoon Jo)

파이썬실무프로그래밍_책.indb 5

2017-03-22 오후 4:00:22


6

서문

(엔지니어로) 살아남기 위해서는? “살아남는 종(種)은 강한 종이 아니고, 또 똑똑한 종도 아니다. 변화에 적응하는 종이다.” 찰스 다윈이 한 말입니다. IT 시장은 빠르게 진화하고 있으며, 특히 하드웨어와 장비의 발전 속도는 더욱 빨라지고 있 습니다. 예전에는 IT 장비에서 제공하는 기능이 매우 단순했고, 이에 맞춰 개발자나 관리자 들이 하는 일이 매우 명확했습니다. 그러나 IT 장비의 발전에 따라 장비들이 지원하는 기능 이 다양해지고, 이러한 기능을 활용하는 업무도 생겨났습니다. 이제 관리자들도 프로그램 개 발을 통해 업무를 효율적으로 수행할 수 있고, 이에 따라 관리자와 개발자의 업무 경계가 모 호해지는 경우도 생기고, 서로의 업무를 이해해야 하는 경우도 생기고 있습니다. 이렇듯 빠 르게 변화하는 IT 업계에서 변화에 적응하는 것은 생존과 관련된 문제입니다. 이 책은 개발에 익숙하지 않았던 시스템/네트워크 관리자들이 손쉽게 파이썬 프로그래밍을 접할 수 있게 안내합니다. 네트워크나 시스템 장비에서 기본적으로 제공하는 파이썬을 통해 장비를 이용하는 프로그램을 쉽게 작성해 볼 수 있습니다. 실습 내용은 쉽게 구성돼 있지만, 실제 업무에서 활용할 수 있는 실용적인 내용이 다양하게 수록돼 있고, 장비별 차이점과 특 수한 환경을 짚어가며 프로그래밍하는 방법이 소개돼 있습니다. 이 책은 파이썬이란 언어에 대한 소개에만 집중한 지루한 프로그래밍 책이 아닙니다. 실무 를 위한 예제를 먼저 소개하고, 여기서 사용된 파이썬 코드를 설명하며 포인트를 짚어가는 방식으로 구성된 책입니다. 초급 단계에서부터 심화 단계까지 다양한 단계를 수록하기 때문 에 순서대로 따라가며 실습하다 보면 점점 프로그래밍 수준이 ‘레벨 업’되는 듯한 성취감을 맛볼 수 있습니다. 따라서 이 책으로 학습하는 많은 독자들이 프로그래밍은 어렵지 않다고 느끼고, 업무에 필요한 파이썬 프로그래밍을 쉽게 시작할 수 있기를 기대합니다. 김종숙(JS Kim)

파이썬실무프로그래밍_책.indb 6

2017-03-22 오후 4:00:22


7

책 소개

대상 독자 이 책은 주로 다음과 같은 독자를 대상으로 합니다. 1. 시스템/네트워크 엔지니어의 능력 향상을 위해 프로그래밍을 공부하고 싶으신 분 2. 이미 프로그래밍은 익숙하지만 엔지니어의 파이썬 활용 방안이 궁금하신 분 3. 시스템/네트워크 엔지니어를 직업으로 삼고 싶으신 취업 준비생

이 책의 구성 이 책은 크게 도입부와 실습부로 나눌 수 있습니다. 1장과 2장은 도입부입니다. 1장에서는 시스템/네트워크 분야를 모르는 독자와 한 부분만 아는 독자를 위해 서로 간의 이 해를 돕고자 하는 목적에서 작성됐습니다. 2장은 실습을 위한 가상 환경 구성을 가능한 한 자세하게 설명합니다. 3~7장은 실습부입니다. 3장에는 2장에서 작성한, 가상 환경에서 실습 가능한 가벼운 코드들이 담겨 있습니다. 4장 에서는 실제 장비에서 실습하고 사용할 수 있는 코드를 다룹니다. 5장에는 파이썬과 함께 배 시와 EEM을 함께 사용할 때 활용도가 얼마나 증가할 수 있는지 확인할 수 있는 코드가, 6장 에는 UCS 서버 SDK를 활용한 코드가 담겨 있습니다. 마지막으로 7장에서는 지금까지 다룬 내용을 모두 활용해 실제 업무에서 바로 사용할 수 있 는 내용을 담고 있습니다. 또한 부록에서는 7장에서 다룬 ‘접속 정보를 기억하고 있는 vKVM 툴’을 사용자 편의성을 높이도록 GUI로 구현해 보았습니다. 이 모든 내용에 대한 코드와 결과를 확인할 수 있는 실행 결과 그리고 배경지식을 한 책에 담았습니다. 따라서 단순히 읽어 보기만 해도 “왜 엔지니어가 파이썬을 배워야 하는지” 알 수 있습니다. 하지만 가능하다면 읽어보지만 말고 실제로 코드를 입력해 보고 테스트해 보 길 강력히 권장합니다. 프로그래밍 세계에는 “백견이 불여일타”라는 말이 있습니다. 직접 코드를 입력하고 실행해 보면 보이지 않던 부분이나 이해가지 않던 부분도 이해되고, 배움의 즐거움도 더욱더 쉽게 느낄 수 있습니다.

파이썬실무프로그래밍_책.indb 7

2017-03-22 오후 4:00:22


8

목차

01 시스템/네트워크 업무 개론

1.1 _ 데이터센터란? 데이터센터의 환경

21

데이터센터의 데이터 흐름

22

데이터센터의 장점

24

1.2 _ 시스템 엔지니어의 업무

25

1.2.1 서버 소개

25

1.2.2 서버의 하드웨어 구성 요소

28

CPU

29

메모리

30

시스템 보드

31

네트워크 카드

32

레이드 카드

33

1.2.3 운영체제의 역할

35

운영체제가 해야 하는 가장 중요한 일

36

운영체제가 해야 하는 기본적인 일

36

모니터링 지표 생성

36

1.2.4 시스템 엔지니어에게 추가로 요구되는 사항

38

가상화되어 가는 환경

38

서버와 연결되는 되는 스위치

39

1.3 _ 네트워크 엔지니어의 업무

파이썬실무프로그래밍_책.indb 8

20

41

1.3.1 네트워크 장비의 기본 기능

41

라우팅

42

스위칭

43

1.3.2 네트워크 프로토콜

43

네트워크 계층별 프로토콜의 이해

43

다양한 프로토콜의 이해

44

2017-03-22 오후 4:00:22


목차

1.3.3 장비별 특성

45

네트워크 피처의 용법

45

여러 가지 분석 도구

46

1.3.4 네트워크 엔지니어에게 추가로 요구되는 사항

47

셸(Shell)

47

샌(SAN)

48

가상 네트워크와 용도별 서버의 데이터 흐름에 대한 이해

49

1.4 _ 서버 엔지니어와 네트워크 엔지니어의 차이점

50

네트워크 장치와 서버의 CPU에 대한 접근

50

콘솔 포트와 매니지먼트 포트

51

OID(Object Identifier)

54

구성품

56

1.5 _ 데이터센터 엔지니어의 미래

57

2.1 _ 실습 장비 소개

60

2.1.1 네트워크 제품군

파이썬실무프로그래밍_책.indb 9

60

시스코 넥서스 9000 시리즈(N9000)

60

시스코 넥서스 5000 시리즈(N5000)

62

2.1.2 시스템 제품군

63

시스코 UCS 랙 서버

63

시스코 UCS 블레이드 서버

63

하이퍼바이저와 가상 머신

64

시스템 제품군 요약

65

02

9

실습 환경 구성

2017-03-22 오후 4:00:22


10

목차

2.2 _ 실습 장비가 없는 경우를 위한 환경 구성 버추얼박스 설치

66

버추얼박스의 실행과 구성

71

버추얼박스에 하드웨어 가상 시스템 만들기

73

가상 머신에 센트OS 설치하기

77

가상 머신에 하드웨어 네트워크 장치 구성

85

가상 머신의 네트워크 주소 구성하기

94

터미널 접속 프로그램 설치

2.3 _ 윈도우용 파이썬 설치하기

03 파이썬으로 실습하는 시스템 관리 - 도입부

112

117

파이썬 내려받기

117

파이썬 설치하기

118

3.1 _ 가벼운 마음으로 시작하는 예제

124

3.1.1 [클라이언트] 윈도우 실행 예제

124

platform 모듈을 통한 시스템 정보 확인

124

파이썬으로 도메인 이름에 대한 IP정보 확인하기

129

3.1.2 [운영체제] 리눅스 실행 예제

135

VI로 파일을 생성하고 생성한 파이썬 파일 실행하기

137

파일 내용을 읽고 화면에 출력하기

138

3.1.3 [운영체제] 관리 서버에서 파이썬 서버로 쉽게 접속하기

파이썬실무프로그래밍_책.indb 10

66

140

2017-03-22 오후 4:00:22


목차

3.2 _ 조금 응용하기

149

3.2.1 [운영체제] 가상 메모리 통계(vmstat)를 엑셀로 보내기

149

시스템에 외부 모듈 적용하기

152

간단한 데이터를 엑셀로 내보내기

154

vmstat 출력 정보를 엑셀로 내보내기

156

엑셀 파일의 헤더 조정하기

160

3.2.2 [운영체제] 리눅스의 로그 모니터링

163

리눅스의 로그

164

메시지 로그에서 찾고 싶은 로그 출력하기

171

11

리눅스 로그에서 찾고 싶은 로그 출력하기(1차 수정)

173

리눅스 로그에서 찾고 싶은 로그 출력하기(2차 수정)

176

리눅스 로그에서 찾고 싶은 로그 출력하기(3차 수정)

179

리눅스 로그에서 찾고 싶은 로그 출력하기(4차 수정)

182

리눅스 로그에서 찾고 싶은 로그 출력하기(5차 수정)

186

메시지 로그에 특정 문자열이 나타나면 알람 표시하기

189

메시지 로그에 특정 문자열이 나타나면 알람 표시하기(1차 수정) 197 메시지 로그에 특정 문자열이 나타나면 알람 표시하기(2차 수정) 201

예외 사항 처리 잘못된 값을 입력했을 때 다시 정확한 값을 입력하도록 유도하기

자주 쓰이는 VI 명령어

파이썬실무프로그래밍_책.indb 11

205 205

210

2017-03-22 오후 4:00:22


12

목차

04 파이썬으로 실습하는 시스템 관리 - 응용편

4.1 _ [서버] 간편한 RAID 로그 수집기

214

RAID Tool 설치 및 실행 예제

214

RAID에 시각 정보 출력

230

RAID 버전 정보 출력

232

다양한 RAID 정보를 선택해서 출력하기

233

RAID 로그를 압축해서 출력하기

240

장애가 발생한 디스크를 레이드 구성에서 안전하게 제거하기

247

4.2 _ [서버] IPMI를 이용한 상태 모니터링 IPMI Tool 설치 및 실행 예제

258

IPMI 명령어를 통해 시스템 정보 확인하기

262

IPMI 명령 실행 결과에서 중복된 내용 제거하기

264

다양한 IPMI 명령어를 선택해서 실행하기

267

팬 속도와 온도 센서에 관한 트렌드 데이터를 출력하기

274

팬 속도와 온도 센서에 관한 트렌드 데이터를 파일로 작성하기

283

4.3 _ [공통] 쉽고 빠른 OID 테스트 환경 구축 snmpwalk 설치 및 실행 시 사용자 입력을 최소화 하기

파이썬실무프로그래밍_책.indb 12

258

290 292

4.4 _ [운영체제] 사용자별 조건에 따른 작업 데이터 출력

298

일반 사용자 권한을 가진 계정 리스트 가져오기

300

일반 사용자의 이력 출력하기

304

사용자별 최근 이력 출력하기

310

사용자별로 가장 많이 사용한 명령어 이력 출력하기

312

특정 시간대에 사용한 이력 출력하기

318

2017-03-22 오후 4:00:22


목차

4.5 _ [네트워크] 연결된 장비에 관한 정보를 자동으로 기록하기

328

MAC을 통해 얻은 정보를 인터페이스 설명에 작성하기

333

343

인터페이스의 포트 정보 추출하기

344

인터페이스의 레이트 값을 추가 추출하기

347

일정 시간이 지난 후 변화된 Input/Output 레이트 값을 조회하기

353

인터페이스별 변화된 레이트 값을 그래프로 그리기

358

예외 사항 처리 좀 더 세밀하게 정확한 값을 입력하도록 유도하기

5.1 _ [운영체제&네트워크] 배시와 파이썬 diff를 이용해 인터페이스 변화를 감지하고 파일에 기록하기

5.2 _ [네트워크] 스케줄러와 파이썬 스케줄러를 통해 인터페이스 설명을 자동으로 갱신하기

5.3 _ [운영체제] 크론과 파이썬 크론을 통해 시스템 상태를 주기적으로 기록하기

5.4 _ [네트워크] CoPP 모니터링

373 373

380 380

392 396

파이썬과 다른 언어를 함께 사용하기

406

413 414

드랍되는 패킷의 증가량과 CoPP 정보를 로그에 기록하기

420

조건은 EEM이 실행은 파이썬으로

05

405

현재 패킷 드랍량과 CoPP 정보 출력하기

5.5 _ [네트워크] EEM과 파이썬

파이썬실무프로그래밍_책.indb 13

324

CDP로 얻은 정보를 인터페이스의 설명에 작성하기

4.6 _ [네트워크] 인터페이스별 사용량 모니터링

13

428 428

2017-03-22 오후 4:00:22


14

목차

5.6 _ [네트워크] EEM과 파이썬 응용 FTP로 이미지 내려받기

435

내려받은 이미지 파일로 부트 환경을 자동으로 재 구성하기

446

EEM을 통해서 이미지 업그레이드 자동화 구현하기

453

예외 사항 처리 다양한 환경에서도 스스로 이해하고 동작하기

06 시스코 SDK를 이용한 시스템 관리

파이썬실무프로그래밍_책.indb 14

435

6.1 _ 사전 구성

458 458

464

환경 변수 설정

464

ucsmsdk 설치

465

UCS 매니저 에뮬레이터 설치

473

6.2 _ 시스코 SDK를 활용한 실습

481

6.2.1 UCS 매니저 에뮬레이터를 이용한 파이썬 실습

481

UCS 매니저 에뮬레이터 접속

481

UCS 매니저 에뮬레이터의 그래픽 모드에 접속하기

483

설정 파일 백업 및 복원

489

UCS 이미지 파일을 확인하고 내려받기

497

블레이드 서버의 이름 변경하기

503

UCS 매니저 에뮬레이터의 설정 추가/변경/삭제하기

509

6.2.2 실제 UCS 매니저를 이용한 실습

515

UCS 매니저가 관리하는 블레이드 서버에 vKVM으로 접속

516

UCS 블레이드 시스템의 로그 파일 수집

519

6.2.3 실제 UCS 랙 서버를 이용한 실습

524

설정 파일 백업 및 복구

525

UCS 랙 서버에 vKVM으로 접속하기

529

UCS 랙 서버의 로그 파일 수집

532

2017-03-22 오후 4:00:22


목차

예외 사항 처리 틀린 부분만 다시 입력받기

7.1 _ 원격지 시스템에 대한 대량 작업

536

550 550

Paramiko의 환경 구성

550

paramiko를 이용한 SSH 접속 테스트

553

SSH로 접속해서 간단한 명령어 수행하기

557

SSH로 접속해서 시스템 종류 체크하기

565

7.1.2 원격지 시스템에 명령어 실행

570

SSH로 접속해서 시스템별 상태 조회 - CPU/메모리/디스크

571

SSH로 접속해서 시스템별 정보 파악 - 관리 네트워크/IP 경로 576

SSH로 접속해서 수집한 내용을 파일로 만들기

07

파이썬으로 실습하는 시스템 관리 - 종합

583

7.1.3 [공통] 여러 개의 원격지에 명령어 실행

590

591

7.2 _ 스마트 로그 수집기

파이썬실무프로그래밍_책.indb 15

535

7.1.1 [공통] 시스템 종류 자동인식

여러 개의 원격지 시스템에 접속해서 한 번에 정보 수집하기

15

601

7.2.1 [운영체제&네트워크] CPU 이상 상태 감지기

601

SAP HANA의 CPU 사용률 모니터링하기

601

네트워크 장비의 CPU 사용률 모니터링하기

614

7.2.2 [네트워크] 인터페이스 상태 자동 감지 및 문제점 추적기

624

감지 조건 및 받아야 할 로그를 선택할 UI만들기

626

인터페이스 에러코드의 상태 값을 UI에 적용하기

633

특정 시간단위로 변화되는 문제점을 추적하고 로그 남기기

644

2017-03-22 오후 4:00:22


16

목차

7.2.3 [운영체제&네트워크] 똑똑한 패킷 캡처 툴 만들기

tcpdump의 다양한 옵션을 이용한 간단한 패킷 캡처 툴 만들기 663

특정 조건에 도달하면 패킷 수집을 중지하고 로그 작성하기

ethanalyzer의 다양한 옵션을 이용한 간단한 패킷 캡처 툴 만들기 691

특정 로그가 발생했을 때 ethanalyzer의 전후 패킷 캡처하기

7.3 _ 유용한 기능 추가

682

704

715

7.3.1 설정 파일 백업을 메일로 전송하기

715

특정 파일을 메일로 전송하기

715

UCS 매니저 에뮬레이터 설정 백업 파일을 메일로 바로 전송하기 723

7.3.2 수집된 정보를 엑셀의 그래프 차트로 출력하기

734

차트를 만드는 샘플 작성하기

734

UCS 랙 서버의 FAN 상태를 차트로 그리기

740

7.3.3 접속 정보를 기억하고 있는 똑똑한 vKVM 실행 프로그램

755

7.3.4 자동으로 구성 파일을 백업하고 변경 사항을 확인하기

774

네트워크 구성 파일을 변경 시도 시에만 자동으로 백업하기

774

기간별 변경 사항 추적하기

784

기간별 변경 사항 추적 및 분석하기

794

7.4 _ 확장된 예외 사항 처리

파이썬실무프로그래밍_책.indb 16

657

805

예외적인 프로세스 모니터링

805

파이썬 실행 도움말 만들기

835

2017-03-22 오후 4:00:22


목차

1. PyQt를 설치해 GUI 구성하기 PyQt 설치하기

842

PyQt Designer를 실행해 UI 만들기

843

2. PyQt로 만든 GUI 실행하기

850

변환된 PyQt GUI 파이썬 코드 실행하기

856

PyQt Designer로 만든 GUI 코드를 실행하는 방법

857

Cisco UCS vKVM 접속 도우미 만들기

859

환경 설정에 따라 다른 언어로 나타나는 GUI 만들기

859

환경에 따라 다른 언어의 리소스를 GUI에 적용하기

863

위젯의 문자열 바꾸기

866

4. vKVM을 실행하는 GUI 만들기

Appendix

850

PyQt에서 작성한 GUI 파일을 파이썬 코드로 만들기

3. 환경에 따라 다르게 동작하는 GUI 만들기

파이썬실무프로그래밍_책.indb 17

842

17

867

위젯 이벤트 핸들링

887

위젯에 포함된 항목 핸들링하기

888

팝업 메시지 박스 만들기

891

5. EXE 실행 파일 만들기

892

2017-03-22 오후 4:00:22


1 0

CHAPTER

시스템/네 트워크 업무 개론

1.1 _ 데이터센터란? 1.2 _ 시스템 엔지니어의 업무 1.3 _ 네트워크 엔지니어의 업무 1.4 _ 서버 엔지니어와 네트워크 엔지니어의 차이점 1.5 _ 데이터센터 엔지니어의 미래

18

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 18

2017-03-22 오후 4:00:22


시스템/네트워크 엔지니어는 주로 어디에서 일할까요? 정답은 여러분이 기대하는 것과는 달리 사무실입니다. 하지만 문서 작업을 할 때를 제외하고 주로 일하는 장소는 어디일까요? 그곳은 바로 데이터센터입니다. 구글, 페이스북, 아마존, 마이크로소프트, IBM, HP, 시스코 등 대형 IT 기업은 모두 각자의 목 적에 맞춰 데이터센터를 운영하고 있으며, 클라우드 서비스를 운영하는 기업은 지역별로 데이 터센터를 추가로 확장해서 운영합니다.

[그림 1-1] 구글 데이터센터에서 일하는 엔지니어

이런 데이터센터에서 시스템/네트워크 엔지니어는 주로 시스템과 네트워크의 구성 및 진단 그리고 관리를 주기적으로 수행하며, 돌발적으로 생기는 문제 해결 등의 업무를 부가적으로 수행합니다. 그렇다면 데이터센터란 무엇일까요? 이번 장에서는 우선 데이터센터가 무엇인지 짚고 넘어가겠습니다.

03 _ 파이썬으로 실습하는 시스템 관리 - 도입부

파이썬실무프로그래밍_책.indb 19

19

2017-03-22 오후 4:00:22


1.1

데이터센터란? 데이터센터가 무엇인지 이미 어느 정도 알고 있는 독자도 있을 것이고, 생소하게 느껴지 는 독자도 있을 것입니다. 이번 장에서는 앞으로 해야 할 작업을 이해하기 위한 기본 지 식을 살펴보겠습니다.

다음 내용은 한국 IT 서비스 산업 협회에서 언급하고 있는 데이터센터에 대한 정의입니다. 지식 서비스의 IT 인프라를 효율적으로 활용하기 위하여 통합 구축하고 24시간 365일 운영, 관리 서비스 또는 이를 지원하는 곳을 데이터센터라 정의하며, 이와 관련된 업무를 수행하여 수익을 창출하는 것

[그림 1-2] 데이터센터 구성 및 업무 처리 체계도

이를 기술적으로 이야기하자면 서버, 네트워크, 스토리지 등의 IT 장비가 중앙에 집중돼 있고 이러한 자원이 연중무휴로 운영될 수 있게 모든 환경을 제공하는 곳을 데이터센터라고 합니다. 다음 절에서는 실제 데이터센터의 사례를 통해 어떤 환경에서 어떤 구조로 이와 같은 임무를 수행하는 지 살펴보겠습니다.

20

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 20

2017-03-22 오후 4:00:22


데이터센터의 환경 데이터센터의 기반 시설은 기존에 건설된 건물의 일정 부분 또는 전체를 사용하는 경우와 다음 그림과 같이 새롭게 건물과 기반 인프라를 건설하는 경우로 구분할 수 있습니다. 대표적으로 NHN에서 춘천에 친환경 데이터센터를 건설한 것이 그 예가 될 수 있습니다.

[그림 1-3] NHN 데이터센터의 조감도

데이터센터 내부를 살펴보면 다음과 같이 랙 Rack 이라고 부르는 철제 구조물에 서버와 네트워크 장비가 설치돼 있습니다.

[그림 1-4] 랙에 장착된 시스코 스위치

1.1 _ 데이터센터란?

파이썬실무프로그래밍_책.indb 21

21

2017-03-22 오후 4:00:23


데이터센터의 데이터 흐름 앞서 살펴본 철제 구조물에는 주로 서버와 네트워크 하드웨어 장치가 장착돼 있습니다. 물론 그 외에 수많은 구성 요소가 있지만, 파이썬 프로그래밍이 목적인 이 책에서는 주로 파이썬을 활용하는 개체인 서버와 네트워크 장치를 중심으로 다룰 것입니다. 하드웨어의 구조를 다시 데이터의 흐름에 따라 간단하게 구조화하면 다음과 같습니다.

외부네트워크

Core (중심)

Aggregation (통합) 10G 이더넷 1G 이더넷 또는 이더채널 백업 네트워크

Access (종단)

서비스 서버군

서비스 서버군

[그림 1-5] 데이터센터의 논리 구조도

이를 각 구성별로 간단하게 설명하면 다음과 같습니다. 중심 통합 종단 서비스 서버군

22

인터넷이라고 불리는 망 또는 외부의 다른 데이터센터와 통신하기 위한 최상위 계층 서비스 서버군이 종단 간의 통신 이외에 다른 서비스 서버군과 통신이 필요하거나 데이터센터 외 부로 나가기 위해 거쳐야 하는 계층 서비스 서버군이 물리적으로 가장 먼저 연결되는 네트워크 연결 지점 사용자가 필요로 하는 데이터가 보관되어 사용자의 요청이 있을 때마다 그대로 전달하거나, 필요 에 따라 사용자의 목적에 맞게 가공해서 유의미한 데이터를 제공

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 22

2017-03-22 오후 4:00:23


쉽게 이해할 수 있게 서비스를 요청하는 흐름을 예를 들어 살펴보겠습니다. 사용자가 다음카카오 daum.net 의 메인 페이지에 접속한다고 가정해 봅시다. 사용자가 다음카카오 메인 페이지에 있는 내용을 확인하려면 사용자의 요청이 실제 페이지 내용이 위치한 서비스 서버에 도착 해야 합니다. 그리고 해당 내용은 다시 위에서 살펴본 계층화 구조를 거쳐서 사용자의 장비에 반환 됩니다. 이때 여러 사용자가 한 번에 서비스를 요청할 수도 있습니다. 이런 경우 요청을 처리하는 부분을 서 비스 군으로 만들어 분산처리함으로써 지연 시간을 줄이고 사용자의 요구사항을 빠르게 처리할 수 있습니다. 구조적으로 이렇게 계층화하는 데는 여러 가지 이유가 있을 수 있겠지만, 가장 쉬운 예로는 상수도 시 설과 비유할 수 있습니다. 일반적으로 상수도 시설을 아주 간단하게 그려 본다면 취수장, 정수지, 배수 지 그리고 가정 급수로 나눌 수 있습니다. 이는 금강의 물을 가정에 바로 공급하기에는 배관이 너무 많 아지고 관리가 되지 않기 때문입니다. 네트워크도 이와 같습니다. 기본적으로 가장 하단에 서비스를 수행하는 서비스 서버들을 위해 적은 용 량의 배관 케이블 을 각각의 서비스 서버에 연결하고, 상단으로 올라오면서 더 큰 용량들을 모아서 집중적 으로 처리하게 됩니다. 더불어 중심구역에서는 이물질 제거 방화벽 등을 수행함으로써 수질에 대한 품질 을 보장할 수 있게 해줍니다.

Core (중심)

Aggregation (통합)

Access (종단)

서비스 서버

[그림 1-6] 네트워크와 상수도의 계층 비교

1.1 _ 데이터센터란?

파이썬실무프로그래밍_책.indb 23

23

2017-03-22 오후 4:00:23


데이터센터의 장점 그렇다면 굳이 왜 여러 하드웨어 자원을 데이터센터에 모아 두는 것일까요? 데이터센터에는 여러 가지 장점이 있지만, 데이터센터를 운영하는 이유는 크게 환경적인 부분과 운영 적인 부분으로 나눌 수 있습니다. 1. 환경 ■■

일정한 환경 온도, 습도, 환기 을 제공한다.

■■

안정적인 전원을 공급한다.

■■

일반 먼지와 비금속 먼지에 대한 처리가 돼 있다.

■■

지진, 해일 등 자연재해에 대비할 대책이 준비돼 있다.

2. 운영 ■■

내부에 있는 데이터센터 장비 간의 통신에는 더 빠른 응답을 보장한다.

■■

시스템을 모니터링하는 요원이 24시간 상주한다.

■■

운영을 위한 각종 시스템이 이미 구축돼 있다.

[그림 1-7] 데이터센터의 뜨거운 공기 빨간색 와 차가운 공기 파란색 의 흐름

데이터센터를 구축하려면 큰 비용을 투자해야 하지만 이런 장점들이 있으므로 기업들이 점점 더 많은 데이터센터를 건립하고 운영하는 것입니다.

24

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 24

2017-03-22 오후 4:00:23


1.2

시스템 엔지니어의 업무 그렇다면 이러한 데이터센터에서 근무하는 시스템 엔지니어는 주로 어떤 일을 할까요? 시스템 엔지니어는 주로 서버의 설치와 구성 및 운영 관리를 담당하고 있습니다. 추가로 샌 SAN 스위치, 스토리지 Storage 그리고 운영체제 및 작은 규모의 네트워크까지 관리하는 경우도 있습니다. 따라서 시스템 엔지니어의 업무를 이해하기 위한 서버 하드웨어의 구성 및 특징을 알아 보고, 운영체제의 역할도 함께 확인해 보겠습니다. 그리고 단순히 서버 하드웨어와 운영 체제뿐만 아니라 앞으로 시스템 엔지니어에게 요구되는 사항도 함께 살펴보겠습니다.

먼저 시스템 엔지니어가 관리하는 대표적인 장비인 서버에 관해 살펴보겠습니다.

[그림 1-8] 시스코 UCS 블레이드 서버가 장착된 랙의 전면부

1.2.1 _ 서버 소개 서버는 크게 메인프레임, 유닉스 그리고 x86 계열의 서버로 나눌 수 있습니다. 이런 구분은 CPU의 종 류에 따라 나뉘며, CPU의 종류에 따라 하드웨어의 구조가 달라지고, 이를 지원하는 운영체제에 따라 다시 나눌 수 있습니다. 이 책에서는 가장 대중적인 x86 인텔 계열의 서버에 관해 중점적으로 알아보겠 습니다.

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 25

25

2017-03-22 오후 4:00:23


서버의 목적은 사실상 아주 단순합니다. 하드웨어의 자원을 적절하게 사용할 수 있도록 운영체제를 실 행하고, 사용자의 목적에 맞는 서비스를 빠르게 제공하기 위해 하드웨어의 자원이 멈추지 않도록 노력 하는 것입니다.

[그림 1-9] 오픈 컴퓨트 제작 서버의 하드웨어 디자인

참고 자료 오픈 컴퓨트 프로젝트란? 페이스북의 다양한 프로젝트 중 하나로, 데이터센터 내부에서 사용되는 다양한 장비의 구조를 개방해서 더 효율적이 고 경제적인 데이터센터를 구축하기 위한 프로젝트입니다. 페이스북 자료에 따르면 초기보다 에너지 효율이 38% 좋아졌고, 데이터센터를 구축하는 단위 비용도 24% 감소했다 고 합니다. 

26

http://www.opencompute.org/

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 26

2017-03-22 오후 4:00:23


이 기준으로 보면 네트워크 장치도 서버와 거의 똑같지만, 두 가지 큰 차이점이 있습니다. 첫 번째로 서버는 사용자의 목적과 용도에 따라 구성품을 조합해서 필요한 목적에 맞게 사용합니다. 하지만 네트워크 장비는 이미 구성된 하드웨어를 성능에 맞게 제조사에서 제공하는 방식으로 사용합 니다. 두 번째로 x86을 기준으로 볼 때 서버 운영체제는 사용자의 목적과 서비스 애플리케이션의 용도에 따 라 설치하고 운영되는데, 네트워크 장비는 이미 업체에서 하드웨어에 맞게 구성해서 제공합니다. 이러한 서버는 안정성은 조금 떨어지지만, 사용자의 목적에 맞게 자유롭게 구성품을 조합할 수 있습니 다. 따라서 서버 업체 간 경쟁을 유도하고 이를 바탕으로 가격을 낮추거나 신기술을 쉽게 도입할 수 있 다는 장점이 있습니다. 또한 높은 유연성 덕분에 빠르게 변화하는 IT 환경에 맞게 쉽게 디자인을 변경 할 수 있습니다. 하지만 서버는 앞서 설명한 것과 같이 개별 부품을 모두 따로 구매하고 조합할 수 있는 특징이 있으므 로 시스템 엔지니어는 개별 항목이 미치는 영향과 목적을 이해하고 있어야 합니다. 개별 구성 부품에 관해 충분히 이해하고 있어야만 사용 목적에 따라 사용할 수 있습니다. 다음 절에서는 서버의 개별 구성 부품에 관해 간략하게 설명하겠습니다.

여기서 잠깐 어플라이언스 제품 서버에도 항상 사용자가 설치하고 테스트해야 하는 제품만 있는 것은 아닙니다. 네트워크 장비처럼 하나의 세트 수준 은 아니지만, 하나의 서비스를 위해 여러 가지 장비로 구성돼 이를 한 번에 설치하고 사용할 수 있도록 구성된 제품이 있습니다. 이를 어플라이언스 Appliance 제품이라고 하며, ‘가 전제품처럼 전원만 연결하면 쉽게 사용할 수 있습니다.’라 는 개념으로 판매하고 있습니다. 그중에 가장 유명한 어플라이언스 제품은 오라클의 엑사 데이터입니다. 기존에는 하드웨어, 운영체제, 데이터베이 스, 관리 소프트웨어 등을 고객 또는 제조사에서 개별적으 로 설치하고 최적화했지만, 이런 작업을 사전에 테스트까 지 완료해서 간단한 절차만 거쳐서 사용할 수 있도록 제공 합니다. 특히 엑사데이터는 영화 『아이언맨』 시리즈에 자주 등장해 대중에게 알려졌습니다.

[그림 1-10] 대표적인 어플라이언스 제품인 오라클의 엑사데이터

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 27

27

2017-03-22 오후 4:00:23


1.2.2 _ 서버의 하드웨어 구성 요소 서버의 하드웨어 구성 요소는 집에 있는 데스크톱을 생각하면 이해하기 쉽습니다. 데스크톱을 구성하 는 부품도 대부분 구조적으로 유사하므로 차이가 나는 부분만 이해한다면 전체적인 구조를 쉽게 알 수 있을 것입니다. 우선 다음 그림을 살펴봅시다.

http://www.cisco.com/c/en/us/td/docs/unif ied_computing/ucs/c/hw/C240/install/C240 /raid.html ❷ ❸ ❹ ❺

[그림 1-11] UCS 랙 서버의 내부 구성도

디스크와 보드를 연결하는 PCB 기판

레이드와 연결하기 위한 커넥터와 보드 자체 컨트롤러

서버 전체의 공기 순환을 위한 팬

CPU와 메모리

PCI 카드와 파워서플라이

[표 1-1] 부품별 위치

28

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 28

2017-03-22 오후 4:00:23


위 그림에서 볼 수 있듯이 서버는 대부분 항목이 2개 이상 집적돼 있습니다. 이는 대부분 부품을 이중 화로 구성해서 장애가 발생했을 때도 동작을 보장하기 위함입니다. 이 중 x86 계열 CPU는 기술적인 제약 때문에 이중화로 구성할 수 없습니다. 기술적으로 메모리는 일대일 구조로 이중화해서 구성할 수 있지만, 비용에 대한 부담과 시장에서 서버에게 요구하는 것은 대용량의 메모리를 확보하는 것이므로 일대일 구조로 이중화하는 구성은 보기 드문 사례입니다. 그렇다면 개별 부품은 어떤 역할을 담당하고 있을까요?

CPU 최근에는 CPU의 성능이 중요한 결정 요소가 아 니지만, CPU는 모든 시스템 연산에 중추적인 역 할을 담당합니다. 2010년 이후에 출시된 CPU는 그래픽 기능이 추가되면서 구조적으로 더 복잡해 졌습니다. 서버용 CPU는 일반적으로 인텔 사의 CPU가 사 용됩니다. AMD에서도 서버용 CPU를 출시한 적 이 있으나, 기존 사용층이 두껍지 않고 여러 가지

[그림 1-12] 제온 코드명: 스카이레이크 CPU

복합적인 문제로 실제 서버로 출시돼 사용된 경 우는 많지 않습니다. 이는 비슷한 성능의 네트워크 장비라도 특정 브랜드의 제품이 시장에서 더 영향력 을 미치고, 다소 더 비싸더라도 고객이 구매하는 이유와 비슷합니다. 구조적으로 서버용 CPU와 범용 CPU의 가장 큰 차이는 서버는 많은 자원이 필요하므로 2개 이상의

CPU를 사용하고, 성능에 많은 영향을 미치는 캐시 용량이 범용 CPU와 비교했을 때 상당히 크다는 것 입니다. 최신 CPU 과거 CPU 레지스터

L1

L2

L3

메모리

[그림 1-13] CPU의 캐시 메모리별 구조도

이런 캐시의 목적은 CPU에서 연산에 필요한 내용을 임시로 담아서 사용하는 데 있습니다. 위 그림에 서 알 수 있듯이 CPU에는 여러 종류의 캐시가 있는데, CPU에서 여러 종류의 캐시를 참조할 때 연산 프로세서와 가장 가까이에 있는 공간을 우선 참조합니다. 그러고 나서 거기에 원하는 자료가 없으면 다 음 공간에서 찾고, 거기에도 없으면 그다음 공간에서 필요한 내용을 찾습니다. 1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 29

29

2017-03-22 오후 4:00:23


이를 비유적으로 표현하면 다음과 같습니다. 가정: 책상에서 업무를 보고 있을 때

1. 필요한 자료를 책상 위에서 찾음 2. (없는 경우) 책상 서랍에서 찾음 3. (없는 경우) 공용 캐비닛에서 찾음 4. (없는 경우) 자료실에서 찾음

따라서 자주 쓰는 자료가 책상 위에 있는 경우가 많으므로 책상의 크기보다는 접근성이 더 중요하고, 책상에서 멀어질수록 크기에 관한 개념이 더 중요해집니다. 이를 다시 CPU의 캐시로 생각하면 CPU 연산에 더 많이 참조될수록 빠른 캐시를 사용합니다. 이처럼 빠른 캐시는 가격이 비싸므로 계층화해서 CPU에서 멀어질수록 가격이 낮고 용량이 큰 캐시를 사용합 니다. 하스웰 데스크톱 i7-4770k

하스웰 서버 E5-4669 v3

차이

L1

128kB

1MB

8배

L2

1MB

4.5MB

4.5배

L3

8MB

45MB

5.6배

 

[표 1-2] 서버와 데스크톱의 캐시 용량 차이

메모리 CPU가 연산을 처리하는 데 필요한 내용을 저장해 두는 공간으로 CPU 내의 레지스터 메모리와 캐시를 제외하고 가장 빠른 속도를 자랑합니다. 이런 속도에 대한 장점 때문에 데이터베이스 시장에서 인메모 리 데이터의 처리와 저장을 메모리 내에서 처리 데이터베이스인 SAP HANA와 같은 새로운 규격의 소프트웨어가 시장에 반향을 일으키기도 합니다. 또한 서버용 메모리는 시스템의 안정성을 위해 오류를 바로잡을 수 있는 추가 메모리 칩이 장착돼 있 습니다. 이를 ECC Error Correcting Code 메모리라고 부릅니다. 일반 메모리의 칩이 8배수로 붙어 있는 것과는 달리 서버용 ECC 메모리는 9배수로 칩이 장착됩니다.

30

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 30

2017-03-22 오후 4:00:23


ECC 메모리

1

2

1

2

3 3

4

5

6

4

5

7

8 6

9 7

8

일반 메모리 [그림 1-14] ECC 메모리와 일반 메모리 칩셋의 차이

다음 그림에서 볼 수 있듯이 ECC 메모리가 오류를 바로잡을 수 있다는 것은 운용 중에는 거의 장애가 발생하지 않는다는 의미입니다. 일반 메모리는 불량이 나는 시점이 대부분 운용 중일 때이지만, ECC 메모리는 초기 화면에 진입할 때와 메모리 테스트를 제외하면 시스템을 다운시키는 수준의 불량은 운 용 중에는 거의 발생하지 않습니다. ECC 메모리의 불량 시점

일반 메모리의 불량 시점 2%

1%

6% 25%

10%

75%

초기 화면 진입 실패 메모리 테스트 실패

81%

운용 중 불량 발생

시스템 불안정성

다른 기타 문제

사이즈와 속도 불일치

초기화면 진입 실패

[그림 1-15] ECC 메모리와 일반 메모리의 불량 시점 비교

시스템 보드 시스템 보드는 마더보드라고 부르기도 합니다. 이름에서 느껴지는 이미지처럼 서버의 모든 부품이 집 적되는 인쇄회로기판 PCB, printed circuit board 입니다. 시스템 보드는 CPU, 메모리, 디스크 그리고 다른 주변 기기 등을 연결하는 것이 주목적이며, 서버용 시스템 보드의 가장 큰 차이점은 시스템 보드에 연결된 부품을 관리하기 위한 모듈이 있다는 점입니다.

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 31

31

2017-03-22 오후 4:00:23


일반 데스크톱과 서버의 가장 큰 차이점은 안정성이라고 이미 언급한 적이 있습니다. 이를 위해 서버에 문제가 될 소지는 없는지, 문제가 발생하고 있지는 않은지 살펴보는 소형 시스템이 서버마다 부착돼 있 다고 생각하면 됩니다. 대부분 해당 시스템을 매니지먼트 Management 시스템이라고 부르지만, 서버 제조사마다 해당 시스템 이름 이 약간씩 다릅니다. 예를 들면 IBM은 AMM, HP는 iLO, 시스코는 CIMC라고 부릅니다.

[그림 1-16] 시스코 CIMC 관리 페이지

네트워크 카드 최근에는 랜포트 이더넷 가 없는 서버는 없지만, 과거에는 선택 사항이었습니다.

[그림 1-17] 포트별 위치

32

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 32

2017-03-22 오후 4:00:24


서버는 통신 포트 없이 단독으로 계산을 처리하던 에니악 전자식 숫자 적분 및 계산기, ENIAC/ Electronic Numerical Integrator And Computer

수준의 장비를 제외하면 기본적으로 다른 장비와 통신할 수 있게 설계돼 있습니다. 대부분

서버는 시스템 보드에 1~4개의 내장 이더넷 랜포트 LOM, LAN On Motherboard 를 제공하고, 용도에 따라 추가 카드를 통해 더 다양한 목적의 포트를 제공합니다. 현재 가상화 트렌드로 인해 물리적인 인터페이스만으로는 내부의 가상 머신 모두에 독립적인 환경을 제공할 수 없는 구조적인 단점이 있습니다. 따라서 가상 인터페이스의 숫자와 이를 처리할 수 있는 대 역폭 그리고 안정성이 가장 중요한 지표가 됐습니다.

[그림 1-18] 시스코 VIC Virtual Interface Card 카드

레이드 카드 요즘에는 일반 데스크톱에도 레이드 RAID, Redundant array of inexpensive disks/Redundant array of independent disks 기능이 있 는 칩이 탑재된 보드가 있을 정도로 어느 정도 대중화된 기술이지만, 레이드는 디스크가 비싸고, 안정 성이 떨어지던 과거에 용량과 안정성을 보장하기 위해 만들어진 기술입니다. 현업에서 일반적으로 운영체제 영역은 운영의 안정성을 확보하기 위해 RAID 1/미러링 Mirroring 으로 구 성하고, 데이터 영역은 속도와 안정성을 동시에 보장하기 위해 RAID 5로 구성합니다. 미러링은 데이 터를 동시에 독립적인 장비에 저장하므로 하나의 디스크가 고장 나더라도 동작을 보장합니다.

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 33

33

2017-03-22 오후 4:00:24


레이드 1 미러링

레이드 5 각 디스크에 Parity 추가

[그림 1-19] 레이드 1/미러링 모드와 레이드 5 모드

레이드 5는 ECC 메모리에서 오류를 검출하는 방식과 유사합니다. 메모리는 1bit의 칩이 패리티 parity 비 트의 역할을 하면서 잘못된 오류를 검출하고 수정하는데, 디스크에서는 이 비트를 모든 디스크가 가지 고 있는 구조입니다. 이는 디스크의 평균 무고장 시간 MTBF, Mean Time Between Failure 이 CPU나 메모리와 비교 했을 때 비교적 짧으므로 고장이 발생할 가능성이 높아서 고장에 대해서 대비책을 마련해 둔 것입니다. 서버 레이드의 또 다른 가장 중요한 특성은 레이드 캐시 메모리의 유무와 용량입니다. 레이드 캐시 메 모리의 용량이 클수록 더 좋은 성능을 낼 수 있지만, 가격 또한 올라가게 됩니다. 그런데 레이드 캐시 메모리는 ECC 메모리와 마찬가지로 휘발성 장치입니다. 따라서 정전되거나 파워 서플라이가 고장 나 는 등 전기가 차단되는 상황에서는 캐시 안에 있는 데이터를 보존할 수 없습니다. 따라서 전원이 꺼지 는 시점에도 데이터를 보존하려면 보조 배터리가 필요합니다.

[그림 1-20] 레이드 카드와 백업 배터리 유닛

이 보조 배터리를 백업 배터리 유닛 BBU, Backup Battery Unit 이라고 부릅니다. 배터리 상태에 따라 레이드 캐 시의 사용 여부를 시스템이 결정하므로 시스템 성능을 모니터링할 때 배터리의 상태도 중요한 지표가 됩니다.

34

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 34

2017-03-22 오후 4:00:24


또한 이 보조 배터리는 노트북 배터리와 유사한 배터리로 주기적인 충/방전과 유지 보수가 필요합니 다. 방전 시에는 데이터가 유실될 위험이 있으므로 레이드 캐시의 사용이 중단됩니다. 이 때문에 성능 저하가 발생할 수도 있고, 운영체제에 따라 경고 메시지를 출력하기도 합니다. 하지만 최근의 배터리는 이러한 점을 보완해서 충/방전 시간을 1분 이내로 줄여 성능 저하를 최소화했습니다. 다음 그림에서도 볼 수 있듯이 레이드 캐시의 크기에 따라서 같은 캐시 알고리즘을 사용한다고 하더라 도 성능이 큰 폭으로 차이가 나는 모습을 확인할 수 있습니다. 4000

3500

STOW WOW CSCAN LRW

3000

2500

2000

1500

1000 4096

8192

16384

32768

65536

131072

Cache Size(4K pages)

[그림 1-21] 레이드 캐시 크기에 따른 알고리즘별 성능 향상 지표

1.2.3 _ 운영체제의 역할

[그림 1-22] 다양한 운영체제

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 35

35

2017-03-22 오후 4:00:24


운영체제가 해야 하는 가장 중요한 일 관점마다 다를 수 있지만, 운영체제가 해야 하는 가장 중요한 일은 시스템을 안정적으로 운영하는 것입 니다. 그리고 문제가 발생했을 때 문제를 인지하고, 문제점을 파악할 수 있는 정확한 로그와 분석 데이 터를 발생시켜야 합니다. 그래야만 다시는 그런 문제가 발생하지 않게 할 수 있기 때문입니다. 특히 범용 목적으로 사용되는 서버는 하드웨어 장애 외에도 예상치 못하는 여러 가지 문제가 발생합니 다. 이때 문제를 정확하게 분석하고 처리하지 못한다면 해당 문제가 지속해서 발생해 서비스에 많은 영 향을 주게 됩니다.

운영체제가 해야 하는 기본적인 일 적절한 시간 내에 사용자의 애플리케이션에 하드웨어 리소스를 제공하는 것 또한 운영체제의 가장 기 본적인 목적 중 하나입니다. 이 부분은 너무나도 당연해서 간과하기 쉽지만, 결국은 기본에 충실한 운 영체제가 사용자층에게 가장 환영받게 돼 있습니다. 예를 들자면 문서 작업을 하고, 중간중간 작업 내역을 저장한다면 운영체제에서 디스크에 접근할 수 있 는 권한을 주고, 디스크에 해당 내용을 써야 합니다. 하지만 운영체제가 불안정해서 디스크에 정확한 내용이 기록되지 않는다면 그 어떤 작업도 해당 운영체제에서 수행하기 어려울 것입니다.

모니터링 지표 생성 운영체제의 모니터링 지표는 시스템의 안정적인 운영과 현재 상황을 파악하기 위해 주기적으로 또는 필요할 때 확인해봐야 할 부분입니다. 그렇다면 운영체제는 어떻게 자원을 모니터링하고 자원을 배분 하게 될까요? 이해하기 쉽게 예를 한번 들어 보겠습니다.

[그림 1-23] 음식을 주문하는 곳

36

CHAPTER 01 _ 시스템/네트워크 업무 개론

파이썬실무프로그래밍_책.indb 36

2017-03-22 오후 4:00:24


데이트 중에 음식점에서 음식을 주문한다고 가정해봅시다. 1. 일단 여자친구가 먹고 싶어 하는 음식을 물어봅니다. 2. 가격대를 살펴봅니다. 3. 수중에 있는 돈을 확인합니다. 4. 고민 계산 합니다. 5. 주문할 수 있는지 결정하고 주문하거나, 다른 음식을 제안할 수도 있습니다.

이렇듯 항상 우리는 현재의 상태를 확인하고 가능한 범위 내에서 실행하게 됩니다. 운영체제 또한 요청 된 사항을 확인하고, 현재의 자원 상태를 파악한 다음 요청자에게 제공할 수 있는지 판단하고, 그에 따 라 대기, 자원 확보, 조정 등의 행위를 합니다.

여자친구의 음식 주문 요청 가격대를 살펴 본다 수중의 돈을 확인한다

애플리케이션의 자원 요청 돈 이 부 족 하 다

요청된 자원 수준 확인 현재 자원 상태 확인

고민(계산)한다

유용한 자원 계산

음식을 주문한다

애플리케이션 실행

자 원 이 부 족 하 다

[그림 1-24] 음식 주문 과정과 자원 요청 과정의 비교

운영체제에서 자원 사용에 대한 모니터링은 가장 중요한 업무 중 하나입니다. 오류나 문제를 로그에 기 록하거나 기록할 수조차 없는 상태라면 커널에 대한 메모리 복제본 Dump/덤프 을 남겨서 나중에 분석할 수 있게 합니다.

1.2 _시스템 엔지니어의 업무

파이썬실무프로그래밍_책.indb 37

37

2017-03-22 오후 4:00:25


파이썬 실무 프로그래밍: 시스템/네트워크 관리자를 위한  

조훈, 김종숙 지음 | 시스템 & 네트워크 시리즈_005 | ISBN: 9791158390532 | 45,000원 | 2017년 03월 31일 발행 | 904쪽 관리자, 네트워크, 시스코, 시스템 관리, 파이썬

Read more
Read more
Similar to
Popular now
Just for you