참 오랫만에 IBM DeveloperWorks의 글을 소개하려한다. "Linux로 상용 하드웨어를 재활용하기 위한 세 가지 방법"이라는 글인데, 읽어보면 한번쯤은 생각해봤던 내용이라는 생각이 들것이다. 가벼운 마음으로 한번 읽어보자.

아래는 글의 서문을 발췌한 것이다. 자세한 내용은 원문을 보자. 원문 보기(클릭)

Linux 세계의 연금술

Linux 권위자인 H. Peter Anvin은 최근에 오래된 시스템의 용도를 파일 서버로 변경했다. 그는 잦은 보안 업데이트, RPM 기반 패키지 관리 시스템 및 서버에 적절하게 패키지로 제공되는 소프트웨어의 수를 근거로 하여 Fedora를 운영 체제로 선택했다. Anvin의 시스템은 RAID(Redundant Array of Independent Disks) 6 구성에서 9TB의 새 하드 디스크를 호스트한다. 책상 아래에 사용하지 않은 채 방치하고 있었던 이전의 개발 시스템이 지금은 매우 중요한 작업을 수행하고 있다.

이 시스템이 아주 오래된 것은 아니지만, 컴퓨터 하드웨어를 사용하지 않고 있었다는 것은 대체로 뭔가 문제가 있음을 나타낸다. 이런 시스템은 오늘날과 같은 빠른 발전과 변화의 추세를 따라잡기에는 대체로 너무 느리고 이를 지원하기에 너무 오래된 것은 물론이고, 특히 보증 기간이 지난 경우 기술적으로 안정적이지 않다. 하지만, 시스템이 오래되었다고 그냥 버리기에는 너무 아깝다. 많은 회사와 가정에서는 이렇게 오래된 시스템을 학교나 도서관에 기증하여 더 오래 사용할 수 있도록 하고 있지만, 이런 시스템을 기증받아 사용하는 사람들 역시 그런 구형 시스템으로 뭘 할 수 있을지 몰라서 결국 하드웨어가 재활용 센터로 넘어가는 운명에 처하는 경우가 많다. 이는 자원 낭비일 뿐 아니라, 때로는 재활용 컴퓨터가 소위 제3세계 국가의 쓰레기 매립장이나 소각로로 보내지는 바람에, 전자 폐기물이라는 새로운 문제를 만들어낸다(자세한 내용은 참고자료 참조).

본 기사에서는 Linux 운영 체제를 사용하여 오래되긴 했지만 작동하는 컴퓨터 시스템의 용도를 변경함으로써, 구식 시스템에 서버, 미디어 플레이어 또는 씬 클라이언트로서의 새로운 생명을 불어넣는 방법을 설명한다.


 현재 사용중인 Linux server가 어떤 시스템인지 정보를 확인하는 방법은 많다.
RedHat 계열이면 /etc/redhat-release 파일을 열면 배포판 정보가 보이고,
uname 명령을 사용하면 또 일부 정보를 확인할 수 있다.

nmon을 설치했다면 nmon 실행 후 r을 입력하면 시스템 정보를 볼 수 있지만, 32비트인지 64비트인지 확인하는데는 좀 번거롭기도 하고... 그래서 찾아보았더니 명령어 한줄로 확인하는 법이 있었다!!

# getconf LONG_BIT
64


자 이렇게 하면 32 혹은 64로 화면에 뿌려준다.
쉽구나... 근데, 이거 정확한거겠지... ^^;
  이번에 백업용 DB 서버에서 개발사에서 제공한 이기종간 Database link를 사용할 수 있게 해주는 Gateway 프로그램을 실행하는데 오류가 발생하더군요. 그래서 검색을 해봤더니 ldd라는 명령어를 이용하여 해당 실행 파일이 필요로하는 라이브러리를 확인할 수 있더군요.

DB1> ldd 파일이름


이렇게 해주면 라이브러리 이름과 버전 정보를 알려줍니다. 아래는 ls를 ldd 명령으로 라이브러리 정보를 확인해본 결과입니다.

db@DB1:/bin>ldd ls
    librt.so.1 => /lib64/tls/librt.so.1 (0x00000034e0600000)
    libacl.so.1 => /lib64/libacl.so.1 (0x0000002a9557f000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00000034de900000)
    libc.so.6 => /lib64/tls/libc.so.6 (0x00000034dc000000)
    libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00000034dcb00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000034dbc00000)
    libattr.so.1 => /lib64/libattr.so.1 (0x0000002a95686000)

# cat /proc/cpuinfo
이렇게 입력하면

processor    : 3
vendor_id    : GenuineIntel
cpu family    : 15
model        : 6
model name    : Intel(R) Xeon(TM) CPU 3.00GHz
stepping    : 4
cpu MHz        : 2992.850
cache size    : 2048 KB
physical id    : 0
siblings    : 4
core id        : 1
cpu cores    : 2
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 6
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl est cid xtpr
bogomips    : 5985.04
대략 이런 형식의 정보를 얻을 수 있습니다.
이를 바탕으로 대략 분석해본 결과 아래와 같은 결론을 얻었습니다.

physical id : 물리적인 CPU 번호
siblings : 해당 physical CPU의 코어수
core id : 해당 논리 CPU core 번호. Dual core이면 core 번호가 틀리고, Hyperthreading이면 core 번호가 같다.
cpu cores : 논리 core 갯수. siblings와 cpu cores의 값이 같으면 그 수치대로 Dual/Quad core라고하면 되는 것 같다. 아니면 Hyperthreading인가??

결론.

physical id 갯수 : 물리적인 CPU 갯수
siblings 값 : 개별 CPU의 코어수
siblings 값 / cpu cores 값 : 이 결과값이 2이면 Hyperthreading, 1이면 Dual/Quad core... 뭐 이 정도...


참고 자료
Linux: /proc/cpuinfo 에서 Dual(Quad) Core와 Hyper Theading 구분하기
 HDD 기반의 파일 시스템을 사용하는 사람이라면 그것이 개인용 PC든, 서버든 File system 문제로 장애를 격은적이 있을겁니다. 누구나 알고 있는 MS Windows booting중에 나오는 파란 화면의 Disk check라든지... 운영중이던 Server의 Disk가 일부 손실된다던지... 제게 Oracle 관리에 대해서 가르쳐주시던 모 강사님은 미러링에 실시간 백업까지 하던 시스템의  스토리지가 동시에 고장나는 일도 겪어보셨다고 하시더군요. 백업은 몇번을 해도 낭비가 아니라는...

그러고보니 주제와는 좀 벗어난 얘기를 하고 있군요. 본론으로 돌아와서요. 시스템의 전원 문제나 비정상 종료 같은 장애시에 파일 시스템의 무결성을 제공하는 저널링 파일 시스템에 대한 IBM DeveloperWorks의 문서를 소개합니다. 예전에도 ext4였나요? 저널링 관련 얘기가 나온 문서를 소개한 적이 있는데요. 이건 비교적 최근 문서입니다. 한번 보세요~

원문 : 리눅스 저널링 파일 시스템 분석

 
최근에 저널링 파일 시스템이 신비의 대상으로 여겨져 연구 주제로 떠오르고 있습니다. 하지만 오늘날 저널링 파일 시스템(ext3)은 리눅스(Linux®)에 기본으로 탑재되어 있습니다. 저널링 파일 시스템 이면에 숨겨진 아이디어를 찾아 시스템 전원 문제나 비정상 종료 과정에서 더 나은 무결성을 제공하는 방법을 익힙시다. 현재 사용 중인 다양한 저널링 파일 시스템을 익히고 차세대 저널링 파일 시스템도 미리 살펴봅시다.

저널링 파일 시스템을 다양한 방식으로 정의할 수 있지만 요점만 간략하게 정리해보자. 저널링 파일 시스템은 부트 시점에서 파일 시스템 일관성 검사를 위해 fsck가 돌아가는 모습에 진절머리가 난 사람을 위한 고안물이다(저널링 파일 시스템은 결함에 회복력을 보이는 파일 시스템이라는 아이디어에서 나왔다). 저널링 기능이 없는 전통적인 파일 시스템을 부적절하게 종료하면, 운영체제가 이를 감지해 fsck 유틸리티를 사용해 일관성 검사를 수행한다. 이 유틸리티는 파일 시스템을 탐색해(상당히 오랜 시간이 걸릴 수도 있다) 안전하게 교정할 수 있는 문제점을 수정한다. 어떤 경우에는 파일 시스템이 심하게 망가졌기에, 운영체제가 알아서 단일 사용자 모드로 진입한 다음에 사용자가 복구 과정을 진행하도록 만드는 경우도 있다.

 요즘 한정된 공간에서 서버 가용성을 높이는 방법의 하나로 블레이드 서버를 고려하는 분들이 많은걸로 알고 있습니다.(아... 아닐수도 있겠네요. 전기요금이 좀...) 암튼, 블레이드 서버는 좁은 공간에서 다수의 서버를 편리하게 운용할 수 있도록 해줍니다.
 IBM DW에 올라온 [POWER 블레이드에서 리눅스를 활용한 복잡한 네트워크 구축 방법]라는 문서에 보면 Power blade server에서 리눅스를 활용한 복잡한 Network 구축 방법이 소개되고 있습니다.

원문 : POWER 블레이드에서 리눅스를 활용한 복잡한 네트워크 구축 방법

블레이드는 특히 통신 서비스 제공업체에서 응용과 서비스를 위한 탁월한 선택입니다다. 하지만 이런 서비스 제공업체에 필요한 독특한 요구 사항은 종종 복잡하고 집중적인 관리와 계획이 필요한 환경 설정을 요구합니다. 결국 엄격한 요구 사항을 충족할 필요가 있습니다. 이 기사에서는 POWER6™ JS22 블레이드 장비 설정을 위해 필요한 네트워크 환경 설정 계획과 구체적인 방안을 설명하겠습니다.

블레이드 기반 운영 모델은 다음과 같은 이유로 인해 유무선 통신 업체에 상당한 가치를 부여한다.

  1. 작은 공간은 데이터 센터 공간을 비용 대비 효과적으로 활용함을 의미한다.
  2. 배포는 분산 배포를 위한 NEBS(Network Equipment Building System) 요구 사항을 충족한다. (NEBS는 네트워크로 연결한 장비가 호환성 자격을 부여받기 위해 반드시 충족해야 하는 요건 범주 집합이다.)
  3. 비용 대비 효율이 높은 수평적인 확장성은 통신 서비스 제공업체가 지불해야 하는 배포 비용을 줄인다.
  4. 중 앙 집중적인 관리 지원은 서비스 제공자 네트워크에서 내부 배포를 위한 좀 더 나은 OAM&P(Operations, Administration, Maintenance, and Provisioning) 지원을 제공한다. 이 용어는 추적을 위한 원칙과 사용해야 하는 구체적인 소프트웨어 집합을 기술한다.
  5. 업그레이드와 유지보수를 포함한 지속적인 가용성 기반 운영 모델을 위한 붙박이식 지원은 고객 관점에서 서비스 장애를 방지한다.

추가적인 고려 사항은 특히 복잡한 환경 설정을 보유한 통신 서비스 제공업체 환경에서 핵심이다.

  • 다 중 VLAN: 다중 VLAN은 CDN(Customer Data Network)과 관리(OAM&P) 트래픽을 위해 사용된다. 다중 VLAN을 독자적으로 고려하면 다중 LPAR(논리 파티션)을 가로질러 고객 QoS(Quality of Service)를 효과적으로 운영하도록 보증한다.
  • 마이크로 파티셔닝과 가상화: 이런 전략은 용량 활용과 TCO(Total Cost of Ownership)을 극대화하는 과정에 도움을 준다.
  • 현존하는 네트워크 복잡성: 다중 클라이언트 LPAR에서 자원 부하 분배를 요구할 경우, 현존하는 네트워크에 좀 더 높은 부하 가변성이 필요할지도 모른다.

이 기사에서 능동/수동 설정으로 쌍을 맺은 시스코 스위치를 사용해 블레이드 본체에 다중 VLAN을 설정하는 방법을 설명한다. 이 기사에서 소개하는 예제에서, Power용 리눅스(Linux®)를 돌리는 BladeCenter® JS22에서 다중 VLAN을 연결하도록 네트워크를 설정했다. 이 아키텍처는 각각 1GB 외부 포트 네 개와 내부 포트 열네 개를 갖춘 시스코 카탈리스트 스위치 모듈 여섯 개를 포함한다.


 유닉스/리눅스 사용자라면 가장 자주 사용하는 프로그램 중에 하나인 vi 편집기에 대한 튜토리얼입니다.
그 동안 vi에 대한 글들이 많았지만 그래도 빠뜨릴수 없는 부분인거 같아서 소개하려합니다. 기본적인 유닉스/리눅스 사용법에 대해서는 알고 있는 사용자를 대상으로 작성된 문서입니다.

원문 : 초보자를 위한 유닉스 팁과 기교, Part 2:vi 편집기

vi 편집기를 처음 접하는 사용자는 편집기가 직관적이지 못하다고 느끼기 쉽습니다. 하지만 세상에서 내로라하는 개발자들이 30년이 넘는 도구를 아직도 애용하는 데는 그만한 이유가 있습니다. vi 편집기는 삽입 모드(insert mode)와 명령 모드(command mode)로 작업을 분리합니다. 그래서 키보드에서 엄청나게 빨리 사용자가 정의한 영역을 대상으로 텍스트를 편집하고 삽입하고 이동할 수 있습니다.

이 튜토리얼 내에서

  • vi 소개

  • vi에서 커서 이동하기

  • vi에서 텍스트 삽입하고 편집하기

  • 고급 vi 명령

선수조건

이 튜토리얼을 따라가려면 명령행, 파일, 디렉터리라는 개념을 알아야 한다. 또한 유닉스(UNIX®) 계열 운영체제에 로그인할 줄도 알아야 한다.


시스템 필요조건

유닉스 계열 운영체제가 돌아가는 시스템에 로그인할 수 있는 계정만 있으면 충분하다. 유닉스 계열 운영체제는 IBM® AIX®, 리눅스(Linux®), BSD(Berkeley Software Distribution), 맥 OS(Mac OS®) X 등을 포함한다. 맥 OS X은 터미널을 실행해야 명령행을 사용할 수 있다.


 Linux 관련 커뮤니티에 올라오는 글들을 보면 가끔씩 임베디드 보드나 미니 ITX 보드등에 CF 카드나 메모리 기반 저장장치를 이용해서 리눅스 박스를 꾸미는 분들이 글을 올리시곤 합니다. 재밌어 보이기도 하지만 막상 시도해보려면 장애물이 많죠. 하드웨어 구매에서 리눅스 설치까지 난관이 많습니다. 10월 28일에 한국IBM DeveloperWorks에 임베디드 리눅스 배포판을 설치하는 튜토리얼이 올라와있어서 소개합니다.

원문 : 바닥부터 만들어보는 임베디드 리눅스 배포판


임베디드 환경에서 쓸 수 있는 리눅스(Linux®) 배포판을 어떻게 만들 수 있을지 배워보겠습니다. 이 내용에서는 TS-7800 싱글 보드 컴퓨터를 동작시키는 경우를 예로 들었습니다. 이 튜토리얼에서는 크로스 컴파일링(cross-compiling), 부트 로더(boot loader), 파일 시스템, 루트 파일 시스템, 디스크 이미지, 부트 프로세스 등 시스템을 만들고 배포판을 생성하는 데 결정해야 할 모든 측면에 대해 배울 것입니다.

시작하기 전에

목표

이 튜토리얼에서는 대상 시스템에 리눅스를 어떻게 설치할지 보인다. 미리 만들어진 리눅스 배포판을 쓰는 게 아니라 처음부터 독자들 스스로 만들어내는 것이다. 당연히 대상에 따라 상세 과정은 다르지만 일반적인 주제는 똑같이 적용된다.

이 튜토리얼을 끝내고 나면(적절한 대상 시스템을 갖고 있다면) 셸 프롬프트가 깜빡거리는 제대로 동작하는 리눅스 시스템이다.

이 튜토리얼에 관해

튜토리얼은 크로스 컴파일에 관한 이슈 토론으로 시작한다. 그러고 나서 리눅스 시스템의 컴포넌트가 무엇인지 그리고 이것들을 어떻게 한데 넣을 것인지 논의한다. 빌드와 설치 그리고 대상 시스템의 설정에 대해서도 다룬다.

여 기서 논의할 구체적인 대상 시스템인 Technologic Systems의 TS-7800은 기본적으로 스스로 부트할 수 있는 기능을 갖고 있다. 다른 시스템은 다른 메커니즘을 갖고 있을 것이다. 그리고 이 튜토리얼에서는 이외 모든 가능한 부트 로더에 대해 그다지 자세하게 다루지는 않을 것이다.

먼저 준비해야 할 것들 그리고 시스템 요구 사항

대상으로 삼을 임베디드 시스템에 관심을 갖고 있는 개발자들이든, 꼭 그렇지 않더라도 그저 리눅스 시스템이 어떻게 생겼는지 들여다보고 싶은 개발자들이든 이 튜토리얼에서 많은 걸 얻을 것이다.

사용할 호스트 환경은 우분투(Ubuntu)이지만 다른 시스템도 동작한다. 기본적으로 유닉스(UNIX®)나 리눅스 시스템 관리를 할 수 있다고 가정한다. 이 튜토리얼에서는 호스트 시스템에 루트(root) 접근을 갖고 있다고 가정한다.

이 튜토리얼에서는 여러분이 사용할 셸이 본(Bourne)셸 종류라고 가정한다. C셸을 사용한다면 아마도 프롬프트가 다르게 나타날 텐데 환경 변수 설정할 때 다른 명령어를 사용해야 할 필요가 있을 것이다.

크로스 컴파일링을 위해 필자는 2008년 5월에 발표된 crosstool-ng 버전 1.1.0을 사용했다. 배포 사이트(참고자료 참조)에서 다운로드할 수 있을 것이다. 설치와 설정에 대해서는 상세 내용을 참조하기 바란다.



 시스템 운영자라면 가장 중요한 업무중에 하나로 꼽는것이 바로 백업일 것이다. "복구에 실패한 DBA는 용서해도 백업에 실패한 DBA는 용서 할 수 없다"는 모 강사님의 말씀처럼 백업의 중요성은 백번을 강조해도 과함이 없습니다.
 규모가 큰 업체라면 티볼리같은 백업 솔루션을 사용하기도하지만, 일반적인 중소기업에서는 백업을 위한 스토리지 확보도 힘든게 현실이죠.

 이 문서에서는 간단한 로컬 백업에서부터 넷트워크를 이용해서 분산 백업하는 방식 및 이와 관련된 사항들을 설명하고 있습니다. 백업을 위한 스토리지를 확보했다면 이제 백업을 실습해보고 실무에 적용해보는 것도 좋겠죠.


원본 : 리눅스에서 백업 자동화하기(쉽게 할 수 있는 보안 분산 넷트워크 백업 DIY)

매우 중요한 데이터 손실은 굉장히 파괴적입니다. 그럼에도 수많은 전문가가 데이터 백업을 무시합니다. 이유야 제각기 다양하겠지만 가장 공통적인 해명은 판에 박힌 백업 수행이 정말 허드렛일이라는 것입니다. 기계는 평범하고 반복되는 일을 하는 데 탁월하므로 본래부터 단조로운 일과 사람의 선천적인 미루는 성향을 줄이는 핵심은 백업 과정을 자동화하는 것입니다.

리눅스를 사용한다면 맞춤 백업 솔루션을 만드는 데 필요한 굉장히 강력한 도구에 접근할 수 있다. 이 글에서 다룰 솔루션은 간단하면서 좀 더 진보적이고 안전한 네트워크 백업을 수행하는 데 도움이 될 것이다. 이 일을 하는 데는 거의 모든 리눅스 배포판의 일부로 들어 있는 오픈 소스 도구를 사용할 것이다.


+ Recent posts