유닉스나 리눅스 환경에서 작업을 많이 하는 분들을 Shell script를 많이 이용하게 됩니다. Shell script는 업무의 자동화에 유용하죠. 최근에는 MS에서도 자사의 윈도우즈 운영체제에 Power shell이라는 제품을 설치하여 Script를 사용할 수 있도록했죠.

 이번에 소개할 문서는 배시 셸 관련 투토리얼입니다.


원문 : 배시 셸로 작업하기



거의 모든 유닉스(UNIX®) 기반 운영체제에서 활용 가능한 배시 셸에 대한 소개 튜토리얼입니다. 배시는 성숙하고, 강력하고, 그럼에도 불구하고 사용하기 쉬운 셸이며, 자유롭게 구할 수 있습니다. 이 튜토리얼은 다른 인기 있는 유닉스 셸과 다른 점을 파악하기 위해 배시에 대한 간략한 역사를 소개하며, 배시 내부에서 제공하는 주요 기능을 살펴봅니다. 다음으로 유닉스 파일 시스템, 디렉터리와 파일 조작 방법, 배시 외양과 동작 방식을 개인화하기 위한 몇 가지 방법을 설명합니다. 마지막으로 이 튜토리얼은 배시가 제공하는 작업 제어 기능을 소개하며 끝을 맺습니다.

이 튜토리얼 내에서

  • 배시 개괄

  • 배시에서 명령 행 프롬프트로 작업하기

  • 배시에서 파일과 디렉터리 다루기

  • 배시 개인화하기

  • 배시 작업 제어

선수조건

필요한 사전 지식은 없다.


시스템 필요조건

이 튜토리얼을 읽기 위한 시스템 요구 사항은 없다. 단지 글을 읽고 배시를 익히면 된다. 하지만 이 튜토리얼을 최대로 활용하려면 튜토리얼이 제공하는 기법을 시도할 필요가 있다. 이렇게 하려면 버전 2.05 이상인 동작하는 배시 셸이 필요하다. 컴퓨터에 설치된 배시 셸 버전을 모른다면, 배시 셸 홈 페이지를 방문해 필요한 정보를 얻기 바란다.


 리눅스에서 파일 관리를 할때 종종 사용하는 명령으로 find가 있습니다.
간단하게 파일 이름으로 검색을 하거나, 파일 크기로 검색을 할때 find를 사용하죠. 이 find 명령에 대한 개요 및 사용 예를 제공하는 OTN[각주:1]의 문서를 소개합니다.

원문 : Linux find 명령어 완전 정복 가이드

 아래는 원문의 앞부분을 발췌한 내용입니다.

가장 강력하면서도 한편으로는 혼란스러운 유비쿼터스 명령어인 find 명령어에 대한 개요.

게시일 : 2008년 7월

Linux find 명령어는 모든 Linux 명령어 가운데 가장 유용하면서도 혼란스러운 명령어 가운데 하나입니다. 다른 Linux 명령어의 표준 구문과 다른 구문을 가지고 있다는 점에서 어렵습니다. 하지만, 파일명, 파일 유형, 사용자, 더 나아가 타임 스탬프 별로 파일을 찾을 수 있다는 점에서 강력한 명령어이기도 합니다. find 명령어를 사용하면 이러한 속성을 자유롭게 조합해 파일의 위치를 찾을 수 있을 뿐만 아니라, 찾은 파일에 대해 연산을 수행할 수 있습니다.

본 글의 목적은 find 명령어와 그 잠재적 이점을 개략적으로 설명함으로써 find 명령어를 손쉽게 학습 및 사용할 수 있도록 돕는 것입니다. 동시에, find 명령어의 특성 중 가장 강력하면서도 한편으로는 혼란스러운 측면에 대한 개요 및 참조를 제공할 것입니다.

[주: 여기에서 사용된 find 명령어는 GNU 버전이기 때문에 일부 세부 내용은 다른 버전의 find 명령어와 다를 수 있습니다.]

  1. Oracle Technology Network [본문으로]
 IT관련 종사자라면 한때 메인프레임이라는 단어가 가진 무게감, 동경... 뭐 이런 느낌이 있었을것이다. 어릴때 뉴스 등에서 가끔씩 봐왔던 슈퍼 컴퓨터라든지, 영화에서나 볼 수 있었던 그런 대형 서버들... 이제 메인프레임이 시장에서 서서히 없어지려하고 있다. IT 시장은 급속도로 변하고 있다. 따라가기 힘들만큼...
아직 삼십대 초반인데 벌써 이러면 나중엔 어떻게 밥 벌이할런지 걱정이네요. ㅡ.ㅡa


 언제부터인가 유닉스 서버가 시장을 접수하기 시작했고 유닉스의 뒤를 리눅스 서버가 바짝 뒤쫓고 있는 양상을 띄게 되었다. 이게 몇년 전이다. 이때 벌써 메인프레임은 사양길에 들어선 사업이라는 얘기가 많았다.
 가상화, 분산처리, 병렬처리 등등의 기술을 이용해서 유닉스/리눅스 서버는 점점 영역을 넓혀가고, K*에서 윈도우 서버로 웹서비스(ASP.Net), 데이타베이스(MS-SQL) 등등을 올려서 사용하는 현재에는 메인프레임이라는 단어가 생소하기까지하다. 이런 대형 시스템에 이런 제품으로 궁합을 맞추는데도 사실 드물것이다. 업계 최초라고 얘기한다는데, 구축 당시와 운영중인 현재에도 엔지니어와 개발자들의 삽질은 이루 말할 수 없을정도이다.
음... 얘기가 잠깐 옆으로 샜는데... ^^;

 메인프레임의 쇠퇴와 유닉스/리눅스/윈도우 서버의 부흥의 이유에 대해서 생각해보자.

1. 유닉스와 리눅스 사용자의 증가로 인해 관리/개발 인력이 증가했다. 초기의 유닉스는 메인프레임과 마찬가지로 어려운 시스템이었지만, 리눅스가 개인 PC에서도 유닉스 환경을 거의 똑같이 사용할 수 있도록 해줬기에 유닉스 서버 인력은 많아졌고, 인력 수급이 원활해졌죠.
 그리고 메인프레임에 비해서 저렴한 유닉스 서버 장비 가격과 유지보수, 인력비 등으로 인해서 경쟁에서 우위를 차지할 수 있었습니다. 이제는 리눅스 서버가 유닉스 시장을 위협할 정도가 됬으니 유닉스 서버도 안심할 수 없게되었네요. 그래서 SUN Microsystems(이하 썬)에서는 Solaris를 Open Solaris로 공개하게 되었고, IBM은 Open Solaris를 z10 시스템(메인프레임)에서 운용할 수 있게했습니다.(IBM이 메인프레임 시장에서 버티기위한 대책 중 한가지입니다.)

2. 유지 보수의 어려움.
 현재 전산인들이 주로 사용하는 개발 언어로는 JAVA, C/C++, C#, JSP, ASP, ASP.Net,  Perl, PHP, Python, Ruby 등이 있습니다. 반면에 메인프레임에서 사용하던 코볼, 포트란 등의 언어는 이제 대학에서도 잘 가르치지 않고 있습니다. 점점 개발인력이 줄어들고 있는 상황에서 유지보수가 편한 쪽으로 시스템을 바꾸게 되었죠.

3. 결국 돈이 문제다.
 일단 장비 가격이 대형 유닉스 서버의 몇 배가 되고(요즘에 좀 내렸다고 하는데, 그래도 유닉스 서버의 갑절이 넘는다.), 유지보수를 위한 인력 역시 구하기 힘들다. 지금 메인프레임 유지보수를 하는 사람들은 수년 혹은 십수년이 넘는 경력으로 인해서... 희망하는 연봉에 맞춰 주기가 힘들다.
일반 개발자보다 급여가 높다는 DBA인 나도 희망 연봉에 준하는 급여를 받은 적이 없다. 경력이 좀더 쌓이면 달라질까??


 메인프레임의 쇠퇴를 바라보며 느끼는 점.
지금 내가 가진 기술도 곧 사장될 수 있으며, 내가 가망없다고 취급하는 기술도 시장의 강자로 우뚝설 수 있다.

 앞으로 십년 이상 IT업계에 종사할 사람으로서 바짝 긴장해야 겠다는 생각을 하게됩니다. 앞으로 업계를 이끌지도 모를 기술들에 관심을 가지며, 현재 내 연봉을 결정해주는 기술외에 다른 영역에도 지속적인 관심을 기울이지 않으면 언제 실업자가 될지 모른다는 거죠.
너무 우울한 얘기를 한것 같은데요. 이게 현실인것 같습니다. 오라클이 언제 시장에서 힘을 잃을지, 갑자기 DBMS의 패러다임이 바뀌어서 다른 개념의 제품이 시장을 휩쓸어 버릴지는 아무도 모르는거죠. 다만... 제 대출금 다 갚을때까지는 오라클이 시장에서 굳건하게 버텨주길 바랍니다. IBM AIX서버도 그 자리를 지켜주시길...
 아~ 이번엔 리눅스 사용자를 위한 문서입니다. 리눅스 파일 시스템으로 많이 쓰고있는 ext3의 최신 버전인 ext4가 나왔네요. 까마득하게 모르고 있었는데, 이번에 IBM DeveloperWorks의 문서를 보고야 알았습니다. ^^;

 초 보 리눅서라면 거의 누구나 설치해보는 RedHat 계열의 리눅스 배포판을 설치하면 ext3라는 파일 시스템을 주로 사용하죠. 다양한 파일 시스템이 존재하는 가운데 가장 대중적으로 많이 사용하는 ext3 파일 시스템의 최신 버전인 ext4에 대한 내용을 다루고 있는 문서입니다.

물론 아직은 불안정한 상태이기에 사용에는 주의를 기울여야 합니다. 커널 컴파일 등의 추가 작업이 필요할 수도 있기에 ext4의 도입은 아직은 주의해야할 문제라고 하네요. 그리고 혹시 테라바이트 단위의 큰 파일을 다뤄야하는 시스템이라면 아직은 ext4보다는 xfs, jfs 등의 파일시스템을 고려하는게 좋을것 같습니다.

원문 : ext4로 이주하기(최신 리눅스 파일 시스템을 위한 준비)


ext4는 오랫동안 자리를 지켜온 리눅스(Linux®) 파일 시스템의 최신 버전이며, 직전 버전 만큼이나 중요하고 인기가 높으리라는 예상을 합니다. 리눅스 시스템 관리자로서, 여러분은 ext4의 장단점과 이주하기 위한 기본 절차를 숙지하고 있어야 합니다. 이 기사는 ext4를 채택할 시기, ext4를 위한 전통적인 파일 시스템 유지 관리 도구 활용법, 파일 시스템 성능을 최대로 이끌어내는 방법을 설명합니다.
 "사무실의 아무 자리에나 앉아서 아이디와 비밀번호를 입력하면 내가 사용하던 환경이 뜨면서 업무를 볼 수가 있습니다." 어느 영화에서나 보던, 혹은 어느 외국계 기업에서 사용한다던 얘기이지만, 실제로 구현 가능한 기술들이죠. MS의 액티브디렉토리 기술을 사용해서도 구현이 가능하다고합니다.

 이번에 소개할 문서는 유닉스, 리눅스 환경에서 이런 기능을 할 수 있게 해주는 기술들에 대한 내용입니다.
NIS, NIS+, NFS, Automounter, 시각동기화 등의 기술을 이용해서 구현하는 법을 설명하고 있습니다. NIS, NFS는 모두 SUN Microsystems가 만든 기술들로 AIX, HP-UX, Solaris, Linux에서 모두 사용 가능합니다.

원문 : 유닉스와 리눅스를 함께 어울리게 만들기

 이 글을 쓴 마틴 브라운은 자유기고가로 IT 컨설턴트이면 프리랜서 작가입니다. 번역은 박재호, 이해영씨가 수고하셨습니다.


NIS(Network Information Service)로 리눅스(Linux®)와 유닉스(UNIX®) 사이에 핵심 데이터베이스를 공유하는 방법과 NFS(Network File System)로 직접 연결하거나 automounter로 파일 시스템을 공유하는 방법을 살펴봅니다. 유닉스와 리눅스는 비슷하지만, 두 시스템을 통합하는 과정을 복잡하게 만드는 몇 가지 차이점이 있습니다. 예를 들어, 동일한 인증 시스템을 공유하지만, 대다수 시스템은 또한 단독으로 동작합니다. 이런 인증 정보 공유는 네트워크에 물린 모든 서버에 SSO(Single Sign-On) 기능을 제공합니다.

IBM DeveloperWorks에 올라온 문서중에서 게이머의 혼을 불태우게 만드는... 정확히 말해서 리눅스를 좋아라하는 콘솔 게이머에게 흥미로운 글이 있어서 소개하려합니다.
제목하여 [PS3에서 리눅스 개발, Part 1: 장난감을 넘어서] 두둥!!!

PS2에 리눅스를 설치하여 슈퍼컴퓨터를 만들수 있다는 소식이 이슈가 된적이 있었지만, 실제로 사용하기엔 무리가 있는 구성이었죠. PS2용 리눅스 패키지를 구하는것도 쉽지 않았구요. PS3에 리눅스를 설치하는건 양상이 좀 다른것 같습니다. 오픈소스 커뮤니티의 힘이라고 할까요? PS3에 리눅스(Fedora 7)를 설치하여보자. 아래의 문서를 정독해보시길 바랍니다. ^^

원문 : PS3에서 리눅스 개발, Part 1: 장난감을 넘어서


소니 플레이스테이션 3(PS3)에서 리눅스(Linux®)가 돌아가지만, 제대로 돌리려면 미조정이 필요합니다. 연재물 1번 타자인 이 기사에서는 Peter Seebach가 PS3 리눅스의 기능과 장점을 소개하고, 미조정에서 몇 가지 장점을 얻기 위한 방법을 설명합니다.

소니가 처음으로 플레이스테이션 3에서 특별한 부가 장치 없이 리눅스를 돌릴 수 있다고 발표했을 때, 반응이 뜨거웠다. 초기에 리눅스를 바로 설치하기란 상당히 어려운 작업이었다. 지원 설치 프로그램은 특별히 만든 PS3 커널이 동작하도록 만들기 위해 페도라 코어 5나 6 설치 DVD를 손으로 뜯어고쳐 만든 전용 스크립트를 돌렸다. 사람들은 우분투 같은 여타 시스템을 돌리기 위해 수 많은 시간을 소비했다. PS3에서 돌아가는 전용 그림 사용자 인터페이스 설치 프로그램으로 무장한 테라소프트에서 만든 옐로우 독 리눅스는 단연 돋보였다.

세월이 흐르자 강산도 바뀌었다. 페도라 7은 포장만 뜯으면 PS3에 설치가 가능해졌지만, 설치 DVD를 찾기 위해 PS3 저장 드라이버를 선택하는 부분과 설치 프로그램을 볼 수 있도록 초기 설치 명령행에서 비디오 모드를 잡기 위해 설정값을 기억하는 부분이 가장 큰 난관이었다.

결국 PS3에서 리눅스를 돌릴 수 있게 되었다. 그것도 아주 쉽게 말이다. 문제는 제대로 동작하지 않는다는 점이다. PS3를 저렴한 셀 개발 시스템으로 선택했다면, 기본 설치 과정을 그대로 따르다 보면 셸 프롬프트가 떨어질 무렵에 수백 메가바이트에 이르는 스왑을 탑재한 시스템이 만들어진다는 사실에 당황스러울지도 모르겠다.

이 연재물에 대하여

기사 셋으로 구성된 이번 연재물은 전도 유망한 개발 환경으로서 PS3 리눅스를 살펴본다.

첫 번째 기사인 1부에서는 PS3에 밀접한 기본 환경 설정을 위해 볼트와 너트를 조이는 방법을 소개하고, 효율적으로 활용하는 방법을 보여주며, 성능을 개선하거나 좀 더 쓸만한 화면을 보기 위한 몇 가지 팁을 제안한다.
2부와 3부는 PS3를 개념 증명 시연 기계에서 실제 동작하는 시스템으로 바꾸도록 특히 성능과 튜닝 문제점을 파고 든다. 물론 이런 기법은 일반 리눅스에도 적용이 가능하다.

시작하기

페 도라 7을 구한다(페도라 8도 동작하지만, 이 기사를 작성할 무렵에 페도라 7을 사용했다). 물론 좀 더 PS3에 가깝게 만들어진 배포판이나 작고 효율적인 배포판을 사용할 경우 더 좋은 결과를 얻을지도 모르겠지만, 페도라 7에는 강력한 장점이 있다. 바로 셀/B.E. SDK 지원이다(물론 RHEL 5.1도 지원하지만 페도라 7에서 지원이 훨씬 더 강화되었다).

나 는 부하 분산이라는 이유 때문에 비트토렌트 광이 되었다. 이는 다운로드 시간만큼 업로드를 하도록 클라이언트를 동작한 채로 남겨둬야 함을 의미한다. 오픈 소스 소프트웨어는 협력을 바탕으로 하므로 대역폭 절감을 위한 협력도 아주 중요한 출발점이 된다. 전체 DVD 이미지(참고자료 참조)를 내려받는 데 시간이 걸리므로 우선 PS3 리눅스에 대한 배경 지식을 살펴보자.

플 레이스테이션 2도 리눅스를 지원하지만 사용하기에 조금 고통스럽다. 소니는 PS2용 전용 키트를 발표했지만, 두껍고 낡은 PS2에 추가 하드 드라이브를 장착해야 했다. 나중에 나온 (좀 더 일반적인) "얇은" PS2 유닛은 지원하지 않았고, 키트는 금세 사라져버렸다. 하지만 사라진 근본 이유는 개념 테스트 용으로 만들어졌기 때문이다. 시스템은 메모리도 적었고, 특수한 컴파일러 도구도 없었고, CPU는 고만고만한 MIPS 코어 기반이었다. 벡터 유닛은 전용 도구가 아니면 지원되지도 문서화되어 있지도 않았다.

반면, PS3는 출시 전부터 리눅스를 지원하고 있었으며, 소니는 지원 코드와 패키지를 광범위하게 퍼트렸다. 시스템 출시 즈음에 페도라 5와 6를 직접 지원하는 "셀 추가" CD가 배포되었으며, PS3 이식을 위해 다른 배포판에 필요한 모든 파일 역시 제공했다. 결과적으로 페도라 7은 별도 CD 없이도 PS3에서 동작했다. 물론 부트로더 설치를 위해서는 소니가 제공하는 프로그램을 사용해야 한다. 추가 소프트웨어 CD(참고자료 참조)는 새로운 커널 버전에 대한 업데이트를 지속적으로 반영하고 있다.
 이번에 소개할 글은 IBM DeveloperWorks의 Linux관련 문서들 중에서 커널 관련 문서입니다.
리눅스의 핵심이라고 할 수 있는 커널 부분의 시스템 호출 인터페이스에 대한 내용을 다루고 있습니다. "조엘 온 소프트웨어"로 낯익은  박재호님과 이해영님이 번역을 하셨네요.


원문 : 리눅스 시스템 호출을 활용한 커널 명령 (SCI 탐험과 독자적인 시스템 호출 추가하기)


리눅스(Linux®) 시스템 호출은 우리가 매일 사용하는 기능입니다. 하지만 시스템 호출이 사용자 영역에서 커널 영역으로 어떻게 넘어가는지 알고 있나요? 리눅스 시스템 호출 인터페이스(SCI, System Call Interface)를 탐험하고 새로운 시스템 호출을 추가하는 방법(과 다른 대안)을 배우고, SCI 관련 유틸리티를 살펴보겠습니다.

리눅스 시스템 호출은 우리가 매일 사용하는 기능이다. 하지만 시스템 호출이 사용자 영역에서 커널 영역으로 어떻게 넘어가는지 알고 있는가? 리눅스 시스템 호출 인터페이스(SCI, System Call Interface)를 탐험하고 새로운 시스템 호출을 추가하는 방법(과 다른 대안)을 배우고, SCI 관련 유틸리티를 살펴보자.

이 기사에서, 리눅스 SCI를 탐험하고, 2.6.20 커널에 시스템 호출을 추가하는 방법과 이 함수를 사용자 영역에서 사용하는 방법을 보여줄 계획이다. 또한 시스템 호출 개발에 유용한 몇몇 함수와 시스템 호출 대안을 살펴보겠다. 마지막으로 프로세스 사용을 추적하는 기능과 같이 시스템 호출과 관련이 있는 몇몇 종속 메커니즘을 살펴본다.


 UNIX/Linux 시스템을 사용하다보면 다양한 로그 파일들을 접하게 됩니다. 로그 파일은 사용자에게 시스템의 현재 상태와 과거의 상태, 그리고 각종 작업의 결과 등을 알려주는 소중한 정보원입니다. 이번에 소개할 문서는 IBM DeveloperWorks의 "AIX and UNIX | Linux" 카테고리에서 로그 파일에 관한 문서입니다.

원문 : 시스템 관리 툴킷: 로그 파일 이해하기


전형적인 리눅스(Linux®)나 유닉스(UNIX®)는 시스템이 돌아가는 동안에 수많은 로그 파일을 생성합니다. 이 중에는 유용한 정보를 제공하는 로그 파일도 있고, 용량이나 자원을 계획하는 데 도움을 주는 로그 파일도 있습니다. 이 기사에서는 주요한 로그 파일 몇 개를 소개합니다. 또한 로그 파일이 존재하는 위치, 파일에 기록되는 정보 형식, 로그 정보를 유용하게 사용하는 방법도 살펴봅니다.

기사 연재 소개

전형적인 유닉스(UNIX®) 관리자라면 시스템을 관리하면서 나름대로 자주 사용하는 유틸리티, 스크립트, 기교가 있기 마련이다. 이러한 유틸리티, 스크립트, 명령 체인 등은 관리자가 수행할 작업을 단순화시켜 준다. 일부 도구는 운영체제에 딸려오지만, 대다수 도구와 기교는 수년 동안 쌓아온 경험과 시스템 관리를 조금이라도 편하게 하려는 욕구에서 나왔다. 이 기사 연재는 다양한 유닉스 환경에서 제공하는 도구를 최대한 활용하는 방법을 살펴본다. 또한 다양한 유닉스 플랫폼에서 시스템을 단순하게 관리하는 방법도 소개한다.





로그 파일

모든 시스템은 시스템 내 다양한 정보를 추적하고 기록하는 로그 파일을 생성한다. 파일 내용과 용도는 시스템에 따라 다르지만, 본질적으로 파일에 담긴 핵심 정보는 대개 비슷하다.

예를 들어, 모든 유닉스와 리눅스 시스템은 syslog 도구를 사용한다. syslog는 운영체제와 응용 프로그램과 서비스가 정보를 기록할 때 사용하는 범용 로그 시스템이다. syslog는 로그인 정보, 성능 정보, 하드웨어와 시스템 실패 정보 등 다양한 정보를 기록한다. syslog 외에도 시스템에는 서비스 로그, 환경 로그, 응용 프로그램 로그 등 시스템 상태와 동작 상태를 기록하는 다양한 로그가 있다.

로그 파일에서 정보를 분석하고 추출하는 작업은 시간이 많이 걸리고 복잡하다. 하지만 로그 파일에 담긴 풍부한 정보를 무시하기는 어렵다. 로그 파일은 잠정적인 문제, 결함, 보안 구멍을 찾아내는 데 도움이 되는 정보를 제공한다. 또한 제대로만 분석한다면 서버에 걸리는 하중과 용량 문제도 미리 파악해 대비할 수 있다.


 LAMP 시스템 조율 시리즈의 마지막인 Part 3, MySQL 조율에 관한 문서를 소개합니다.
공개 DataBase 중에서 가장 (최소한 한국에서는...) 다양한 사용자층을 확보한 MySQL은 UNIX/Linux 환경에서 사용할 수 있는 대표적인 DataBase중의 하나입니다. 특히나 오픈소스 제품이기에 무료로 사용할 수 있지만, 그 덕에 정교한 튜닝을 하지 않고 사용하는 적당히 설치해서 적당히 사용하는 제품이기도 하죠... 물론 상용 제품들도 벤더사에서 설치해준 상태 그대로 사용하는게 대부분의 DB서버가 처한 우울한 현실이기도 하죠.

자... 이제 IBM DeveloperWorks에서 소개하는  "LAMP 시스템 조율, Part 3: MySQL 조율"을 소개합니다. 아~ 한글이라서 더욱더 맘에 듭니다. (이 놈의 영어 울렁증은...)

원문 : LAMP 시스템 조율, Part 3: MySQL 조율


LAMP(Linux®, Apache, MySQL, PHP/Perl) 아키텍처를 활용하는 응용 프로그램은 끊임없이 개발되고 배포되고 있습니다. 하지만 때로 서버 관리자는 다른 사람이 작성했다는 이유만으로 응용 프로그램 자체에 대한 통제권이 거의 없습니다. 기사 셋으로 이뤄진 이번 연재물은 응용 프로그램 성능을 향상시킬 서버 환경 설정 항목을 다룹니다. 연재 마지막인 세 번째 기사에서는 최대 성능을 발휘하도록 데이터베이스 계층을 조율하는 데 초점을 맞춥니다.

MySQL 조율에 대해

MySQL 서버를 빠르게 하기 위한 방법은 세 가지가 있는데, 효율이 낮은 쪽에서 높아지는 쪽으로 나열하면 다음과 같다.

  1. 하드웨어로 문제를 푼다.
  2. MySQL 프로세스 설정을 조율한다.
  3. 질의를 최적화한다.
DB2®로 이주
MySQL에서 IBM® DB2®로 이주하는 명쾌하고 비용이 들지 않는 방법을 찾고 싶은가? "MySQL 또는 PostgreSQL에서 DB2 Express-C로의 마이그레이션 (영문)" 기사에서는 이주 도구를 활용해 쉽게 이전하는 방법을 보여준다. 공짜 DB2 Express-C를 내려받아 지금 바로 시도해보자.

하드웨어로 문제를 푸는 방법이 가장 먼저 떠오른다. 특히 데이터베이스가 자원을 잡아먹는 괴물이라는 사실을 감안하면 말이다. 하지만 이 해법에는 한계가 있다. 현실을 고려할 때 CPU나 디스크 속력은 두 배로, 메모리 용량은 네 배에서 여덟 배 정도만 늘일 수 있다.

두 번째로 좋은 방법은 mysqld라는 MySQL 서버 조율이다. 이 프로세스 조율은 올바른 위치에 메모리를 할당하고 어떤 부하가 걸릴지 mysqld에 알려주는 조정 기법을 의미한다. 디스크 속력을 좀 더 빠르게 만드는 대신, 필요한 디스크 접근 횟수를 줄이는 편이 유리하다. 비슷하게, MySQL 프로세스가 올바르게 동작하도록 만드는 조율은 개발자가 임시 디스크 테이블과 파일 여닫기 같은 배경 작업에 신경을 쓰는 대신 질의에 대한 서비스에 좀 더 많은 시간을 보낼 수 있음을 의미한다. mysqld 조율은 이번 기사에서 주로 다룰 내용이다.

최고로 좋은 방법은 질의 최적화다. 이는 적절한 색인을 테이블에 만들어 놓고, MySQL의 장점을 최대로 활용하는 방향으로 질의를 작성하는 조율 기법을 의미한다. 이번 기사에서 질의 조율을 다루지는 않지만(이 주제로 책을 써도 되겠다), mysqld 환경 설정을 변경해 조율이 필요한 질의를 보고하도록 만든다.

중요한 조율 순서를 제시하긴 했지만, 그렇다고 해서 적절히 조율을 마친 질의를 위해 하드웨어나 mysqld 설정을 무시하라는 말은 아니다. 느린 기계는 느린 기계일 뿐이며, 제대로 작성한 질의를 돌리더라도 부하가 걸려 실패하는 경우를 목격했는데, mysqld가 질의를 서비스하는 대신 바쁘게 움직이느라 시간을 소모하고 있었기 때문이었다.

 지난번에 소개한 LAMP 시스템 조율의 두번째 문서를 소개하려합니다. 이번에는 아파치 웹서버와 PHP의 최적화에 관한 내용을 소개하고 있네요.
 아파치의 MPM 환경 설정, PHP 중간 코드 캐싱 등의 내용을 설명하고 있습니다.

원문 : LAMP 시스템 조율, Part 2 : 아파치와 PHP 최적화



LAMP(Linux®, Apache, MySQL, PHP/Perl) 아키텍처를 활용하는 응용 프로그램은 끊임없이 개발되고 배포되고 있습니다. 하지만 때로 서버 관리자는 다른 사람이 작성했다는 이유만으로 응용 프로그램 자체에 대한 통제권이 거의 없습니다. 기사 셋으로 이뤄진 이번 연재물은 응용 프로그램 성능을 향상시킬 서버 환경 설정 항목을 다룹니다. 첫 번째 기사는 LAMP 아키텍처, 성능 기법, 기본적인 리눅스 커널, 디스크, 파일 시스템 미조정을 다뤘습니다. 두 번째 기사에서는 아파치와 PHP 컴포넌트를 최적화하는 방법에 초점을 맞춥니다.

리눅스, 아파치, MySQL, PHP(또는 펄)은 일정 목록부터 블로그와 전자 상거래 사이트에 이르기까지 많은 웹 응용 프로그램의 토대가 된다. LAMP 컴포넌트에 의존하는 많은 오픈 소스 패키지는 다양한 문제를 해결한다. 응용 프로그램 부하가 증가할수록, 기반 구조에서 병목 현상이 발생해 사용자 요청에 대한 반응이 느려지는 형태로 나타난다. 직전 기사에서는 리눅스 시스템 조율 방법과 LAMP 기초, 성능 측정 방법에 대한 기초를 다뤘다. 이번 기사에서는 아파치와 PHP로 대표되는 웹 서버 구성 요소에 초점을 맞춘다




 

+ Recent posts