About Amanda Backup

OS 2014. 9. 25. 18:27
Intro

What is AMANDA?

AMANDA, the Advanced Maryland Automatic Network Disk Archiver

"Single server can backup multiple hosts to various media."

"Amanda is a designed to backup multiple files, databases and applications across a local network and store data on a wide variety of devices including tape, disk and optical based storage"

"Optimized for efficient utilization of network and hardware resources"

Copyright (c) 1991-1998 University of Maryland at College Park All Rights Reserved.

History

  • University of Maryland's Computer Science Department
  • Supported by Zmanda

License

Freely distributable source and executable. University of Maryland (BSD style) license and GPL

Features of Amanda

  1. Server-Client(Agent) 아키텍쳐
    1. Single Backup Server <-> Multiple Client
    2. "All Configuration are done one a server"
  2. C & Perl
  3. 표준 백업 S/W를 기반으로 구성 (Extensible)
    1. GNU tar
    2. dump/restore
    3. Others
  4. 개방형 File 및 Tape 포맷
    1. Recover에 mt 또는 GNU tar로 가능 (without Amanda)
  5. Support Windows (32bit/64bit)
  6. Multiple Machines을 Holding Disk(Optional)에 병렬 Dump(백업) 처리
    1. 완료된 Dump들은 가능한 빨리 vtate/tape로 Copy
  7. 백업된 파일과, Media에서 파일의 위치에 대한 카탈로그 유지관리
  8. Generic Interface를 통해 Tape Changer 지원
  9. Device API 제공 (a pluggable interface to storage devices)
    1. Amanda는 실제로 Device와 직접 통신 하지 않는다.
    2. Bundled drivers
      1. tapes
      2. virtual tapes on disk
      3. DVD-RW
      4. RAIT (D2D2T, D2D2C)
      5. Amazon S3
    3. Bundled 'amvault' (Not Stable)
      1. Copy Amanda dumps from one volume to another
      2. 예) Copy to Removable Media
    4. Cloud Storage (S3)
  10. Server와 Client간 Secure Backup 지원
    1. by OpenSSH
    2. DMZ or Internet 구간 보안
  11. 암호화 백업 아카이브 지원
    1. on Amanda Client 또는 on AManda Server
    2. GPG 또는 Any Encryption 프로그램 가능
  12. 압축 백업 아카이브 지원
    1. 네트워크 상에서 "전송 전" 혹은, "전송 후" 선택 가능
    2. 예)
      1. gzip
      2. bzip2
      3. others
  13. Kerberos5 지원 (Authentication)
  14. Fault Tolerance (Down, Hang, Timeout...)
    1. Skip Clinet
      1. 스케쥴된 Backup Run 불가한 상황 극복 (예: 노트북, 랩탑, 기타 등등)
    2. Backup media error
      1. 백업 데이타는 "Holding Disk(Buffering)"에서 유지 (Optional)
      2. Media 문제가 해결되면, 다시 Media로 Flush된다.
    3. Client의 여러 케이스(예: Timeout)에 대해 Operation Re-try 처리
  15. 상세 보고서(Report) 지원
    1. email
      1. Data Balance 정보
      2. Client 백업 상태 요약
      3. Amanda의 Subsystem, Media, Network성능 요약 정보
      4. 각각의 Backup Run에 따른 Media Usage
      5. Error 메세지
  16. Validate Backup Data
    1. "amcheckdump" Command
    2. Storage로부터 Backup을 읽어, 각각에 적용된 Application으로 해석 될 수 있는지 확인
      1. 예: 백업본이 GNU tar 이미지라면, GNU tar로 parsing.
      2. --timestamp
  17. Server/Client 설정 검사 도구 지원
    1. "amcheck"
  18. 백업 스케쥴의 동적 조정
    1. 유지보수 (Host, Disk 추가/제거)
  19. Backup Normalization
    1. 백업 Cycle내에서 Full /. Incremental 백업을 자동 배치 (Intelligently)
    2. Resource 최적화를 위해 "Backup Level" 조절
  20. Pre/Post User 스크립트 지원
    1. Pre-Backup
    2. Post-Backup
    3. Pre-Restore
    4. Post-Restore
  21. IPv6 friendly
  22. Span Tapes 지원 (Split 지원)
    1. 단일 백업이 하나의 tape(vtape)을 초과할 경우, 자동 분할 저장
  23. Simple/Robust Data-Recovery
    1. 모든 Media와 백업 정보를 Database로 관리
    2. Amanda Command로 열람 가능
    3. 백업 데이터는 권한만 있다면 어떤 Client에서도 복구 될 수 있다.
    4. Native Format로 저장되므로, Amanda 없이 OS Tool만으로 복구 가능

System Requirements

Host

  • "Backup Server Host" (Can be a Client Host)
  • "Backup Client Hosts"
  • 저장매체에 접근이 가능해야 한다.
  • 저장매체 예)
    • Disk (Local, NAS, SAN)
    • 대용량 Tape드라이브(라이브러리)

Holding Disk

  • Dump에대한 버퍼링 (실제로 tape에 쓰기 전)
  • 병렬(Parallel) Backup Run 가능
  • Size는 가장 큰 Disk Partition으로부터 생성되는 Dump Output보다 커야 -> 최상의 성능 기대
  • Optional (Recommended)
    • Disable -> Sequentially

Client side tested systems

  • AIX 3.2 and 4.1

  • BSDI BSD/OS 2.1 and 3.1

  • DEC OSF/1 3.2 and 4.0

  • FreeBSD 6, 7 and 8

  • GNU/Linux 2.6 on x86, m68k, alpha, sparc, arm and powerpc

  • HP-UX 9.x and 10.x (x >= 01)

  • IRIX 6.5.2 and up

  • NetBSD 1.0

  • Nextstep 3 (!)

  • OpenBSD 2.5 x86, sparc, etc (ports available)

  • Solaris 10

  • Ultrix 4.2

  • Mac OS X 10

  • Windows: XP Pro (Server pack 2), 2003 server, Vista, 2008 server R2, Windows 7 (!)

Siver side tested systems

  • (!)를 제외한 나머지

Scheduler

"Amanda is a scheduler"

Q: "Will Amanda support my ACME Tape Drive 2000 Ultra Professional?"
A: "Does your Operating System Support it?"

Traditional Scheduling

  • 대부분 백업 솔루션들은 기본적으로 동일한 백업 스케쥴링을 제공.
    • 매주 일요일 또는 격주나 매월 마지막날 Full 백업 수행
    • (추가) 각 Full 백업 사이에는 다른 레벨을 가지는 증분백업을 수행
    • 이러한 방법론의 최대 문제
      • Resources Load Balancing 개념이 없음
        • CPU, Network, I/O
      • Full 백업 완료 지연
        • 예) 종종 시스템 관리자는 일요일 예약된 Full 백업이 월요일 아침까지 계속되는 상황 경험
      • 정기적인 Full 백업 이외에는 대부분 사용률 저조
      • Manual 하게 Load를 조정(Distribute Full Backup) 가능 하나 현실적이지 못함
        • 환경 변화 대응 느림
        • 신규 Client나, 제거 Client가 Manual하게 유지해왔던 LB 균형을 깨뜨림

Amadan Scheduling

  • Optimize Load Balancing of Backup
  • Static한 스케쥴을 지정하는 것 대신, 특정 조건을 셋업
    • "Client A,B, C는 매주 일요일에, D, E, F는 수요일에 Full 백업을 수행하고, 나머지 요일은 증분 백업을 수행해라"
    • "Dump사이클 기간은 7일이며, 최소한 1번의 Full 백업을 수행하고, 그외에는 증분 백업을 수행해라."
  • 아래의 목적을 위해 Amanda는 Full 백업과 증분 백업의 최적 조합을 찾는다. => "Optimal Backup Level"
    • 각 Backup Run 마다, Backup 데이타의 총량을 가능한 '작게(Small)' 하여 수행
    • 이를 위한 고려사항
      • 각 Client마다 보고된, 백업 되어야할 데이터 총량
        • 가장 최근 수행된 Backup(Since last backup) 기준으로 변화된 데이터 양 정보 기반
        • Dump Cycle(Maximum Time between Full Backups)
        • 각각의 Backup에 대한 Backup Media(tape or disk) 가용성 (Client별 상이한 Backup Media)
  • Optimal Backup Level 계산
    • 모든 Backup 단위는 "Estimate phase"를 가지고 시작된다.
    • "Estimate phase"
      • 어떤 File이 변경되었고, 변경된 파일들의 Total size는 얼마인지 결정하는 프로세스
      • 다소 시간 소요 발생 -> 특히 많은 Client수 또는 많은 Filesystem수를 가질때 소요시간 증가
        • (거의 변화가 없는 Filesystem 또는 File 변경이 거의 없는 대상이라면 Bypass 처리 가능)

Example - Amanda Scheduling

(그림1)

(그림2)

  • (그림2)는 (그림1)의 Client들에 대한 백업을 Amanda가 어떻게 스케쥴링 하는지를 보여주는 예제
  • (가정 상황)
    • 각가가의 /home 디렉토리는 100GB를 소비
    • Tape의 용량은 200GB
    • 데이타 변화률은 15%
    • Dump Cycle은 4일
    • 각각의 Backup Run은 DailySet1 부터 DailySet4로 Label된 Tape에 기록
    • 모든 증분 백업은 Level-1이며, 최근 Full 백업 기준으로 변경분을 의미 (=차등백업)
  • 아래 (표1)은 각 Backup Run으로 생성된 Backup Size

    FilesystemDailySet1DailySet2DailySet3DailySet4DailySet1DailySet2DailySet3DailySet4
    /home1100.015.027.7540.84100.015.027.7540.84
    /home2-100.015.027.7540.84100.015.027.75
    /home3--100.015.027.7540.84100.015.0
    /home4---100.015.027.7540.84100.0
    Total100.0115.0142.75183.59183.59183.59183.59183.59
  • 실제로 Amanda는 Tape의 용량을 최대한 활용하기 위해, 증분 백업의 Level을 0~9까지 모두 활용한다. (Tape 효율성 최대화)

Appendix

  • Dump Cycle
    • Short
      • 예) 3~4일
      • 장점: Incremental Backup 수가 적기에 Resotre가 상대적으로 쉽다.
      • 단점: 더 많은 Tape 및 Time 소요.
    • Long
      • 장점: 여러 Tape에 Load를 보다 효과적으로 분산 가능
      • 단점: 많은 증분 백업으로 인해 Restore에 더 많은 단계를 필요로 함

Tape Management

  • Amanda는 vpate, ptape, disk, optical 등 모두 tape으로 추상화
  • 모든 tape은 사용되기 전에 "amlabel" 명령을 통해 label처리가 되어야 한다.
    • label과정을 쉽게 하기 위해, default template이 제공된다.
    • custom template 작성 가능
  • Labling의 목적은 동일 tape에 Overwriting 방지 (유효한 백업 이미지 보전)
    • Amanda의 tape 식별자 정도 개념
    • 각각의 Backup Run 단위마다 New Tape으로 시작
    • 동일 tape에 여분이 있더라도, 다른 시점의 Backup Run은 반드시 Next Tape의 첫부분부터 기록
  • 백업 보존 정책에 따라, 각 Tape의 만료 일자 추적
    • 만료되 Tape은 새로운 Backup의 기록을 위해 재사용된다. (Rotate)
      • 필요하다면, 특정 tape들은 재사용하지 않도록 설정 가능. (만료되지 않도록)
      • DVD-RW와 같은 Optical Media를 대상으로 Archiving 할때 유용
  • 단일 Backup Run에, 매우 큰 대용량 데이타 백업에 대해 Mulitple Tape 사용 지원 (Span Multiple Tapes)
    • >= version 2.5
    • (2.5 이전 Old Version: Large Filesystem을 작은 Chunks로 관리자가 쪼개야 했음)
    • 하나의 Backup Run에 대해 최대(max) 사용가능한 tape 설정 (runtapes 1)
    • "part_size"로 백업데이타를 Split (Recommanded: 1/10 of Tape-Size)
    • LEOM (Logical End-Of-Midium) 지원/미지원 둘다 가능 (LEOM 지원 권장)
      • Amanda는 백업 초기단계에 "end of volume" 감지 가능 (with LEOM, without LEOM)
      • vtape의 경우, VFS Device는 LEOM 기본 지원 -> Tape Spanning 자동 활성 (enabled)

Setup Virtual Tapes

  • Virtual Tapes(vtapes)은 tape를 Emulating 함을 의미
  • "chg-disk" Tape Changer (Recommended)

Pre-Requirements

  • vtapes 저장소로 사용할 독립된 Physical HDD 또는 Partition를 결정 (성능)
    • Dedicated HDD 권장
  • holdingdisk와 vpates는 동일한 Physical HDD여서는 안된다. (성능)
  • vpates 저장소는 Amanda에 의해 Backup대상에 포함되어서는 안된다.

Length and number of tapes

  • HDD를 어떻게 vtapes으로 분할할지 결정하기 위해 아래의 사항들에 대해 평가/추정 필요.
    • 백업되어야 할 데이터의 Total amount
    • Full백업 당, 허용 가능한 Level-1이상의 증분백업의 개수
    • Full백업 대비, 증분백업의 Size (="데이터 변화율%")
    • total tapecycle (백업 데이터 유지 기간과 연관)
    • 앞선 수치들의 장기적 변화 추이
  • 넉넉한 공간을 확보(Cost↑, Utilization↓)를 통해 "Oversubscribing"을 방지하는 것이 권장되나, oversubscribing을 허용했을 경우, Backup Failure 방지를 위한 주의/감시 체계 필요.

Safe Calculation

  • Available Space를 tapes으로 분할 지침

available space * 0.9 >= tapelength * tapecycle

    • Usage가 Full에 근접할 경우, 급격한 성능 저하가 "0.9"의 이유
    • 성능을 위한 보수적 수치
    • 필요에 따라 조정 가능
      • Amanda가 하나의 Tape용량(tapelength)를 모두 채우는 일은 드물다.

Oversubscribing

  • 실제 존재하는 Resouce보다 더 많은 백업 대상을 수용
  • vtape의 Length와 Cycle값 조정
available space * oversubscription factor = tapelength * tapecycle
    • 1.0 <= oversubscription factor <= tapecycle
  • 각 Backup Run에 사용된 Tape의 유휴 용량이 충분할때 가능한 방법
    • 예) DLE의 모든 항목을 Full백업 수행이 가능할만큼 Tapesize가 클 때,
  • Amanda는 Space의 초과여부는 고려하지 않음.
Example
  • (가정 상황)
    • 15GB Storage (available space)
    • 15 Tape Cycle
    • 2GB Tape Length
    • oversubscription factor = 2.0
    • DLE중 하나의 Usage가 급격히 증가...
T01T02T03T04T05T06T07T08T09T10T11T12T13T14T15
1.9GB1.6GB1.4GB1.7GB1.8GB1.9GB1.2GB1.7GB1.8GB0.3GB0.5GB0.9GB0.4GB0.6GB0.4GB
  • (결과)
    • T01~T09 총량
      • 1.9+1.6+1.4+1.7+1.8+1.9+1.2+1.7+1.8 = 15 (GB)
    • T10부터 T15까지는 Dump데이터가 tape으로 flush되지 못한채, Holdingdisk에 남겨지게 됨.
    • 이 현상은 Tape Cycle가 끝나고 다시 시작하는(reuse) T01이 될때까지 계속된다. (Backup Failure)
  • oversubscription factor 에 대한 가이드
    • 2.0은 매우 높은 수치.
    • 상황에 따라 적절한 값은 달라지지만, 대개 1.1~1.5가 보통

Redundancy

  • 모든 vtapes을 단일 대상에 두는 것은 대규모 데이터 손실에 취약
  • RAID 장비 기반도 안전하지 않음
  • Solution => RAIT

Tape Configuration

Device Management

"Amanda dose not use any Proprietary driver for tape or optical devices."

  • Amanda는 단지, tape의 속성을 정의한 "tapetype"을 지정
    예) LTO-3

    tapetype
    define tapetype LTO3-400-HWC {
    comment "LTO Ultrium 3 400/800, compression on"
    length 401408 mbytes
    filemark 0 kbytes
    speed 74343 kps
    }
    define tapetype HARDDISK { # Define our tape behaviour
    length 100000 mbytes # Every tape is 100GB in size
    }
  • 범용 tape 저장 장치에 대한 tapetype Definition이 미리 준비 되어 있음

Virtual Tape

  • Amanda는 백업 기록을 위한 Target Media로 Disk를 사용할 수 있는 기능 제공
  • 임의의 전용 디렉토리가 "vtapte"으로 불리는 Virtual Tape로 사용된다.
  • 완전히 Physical Tape을 사용하는 방식과 동일하게 운영
    • Physical Tape Library 인프라 투자 결정에 대한 평가나 테스트 가능
    • 현재는 Production환경에서도 Disk에 백업을 기록/보관도 충분
  • RAIT 지원
    • "Redundant Array of Inexpensive Tapes"
    • RAIT 목적은 "중복성" 증가 (D2D2T, D2D2C)
    • 여러 Disk에 데이터가 저장되는 RAID 기술과 유사
    • virtual tape & physical tape
    • 2,3,5 Tapte Set 지원
      • 예) 3개의 Tape Set
        • 2개의 Tape는 데이터 저장
        • 1개는 Parity 비트 저장
        • 단일 Tape 대비 2배의 용량/성능
        • 실패율 감소 (1/00 -> 1/10000 : 두 Tape모두가 유실/손상 되지만 않는다면 복구 가능)
      • 예) 5개의 Tape Set
        • 4배의 용량/성능
      • 예) 2개의 Tape Set
        • 용량/성능 증가는 없다.
        • Output에 대한 중복(Replicate)
        • 저장 매체 타켓을 다르게 할 수도 있다. (vtape + tape)
        • 동일한 타겟
          • 정확히 똑같은(매체, 방식 등등) 두개의 "Clone"이 만들어 지므로 DR 대비, On-Site, Off-Site로 분리 배치 가능
        • 상이한 타겟
          • Tape는 장비 보관용에 유리, Disk는 신속한 복원에 유리



'OS' 카테고리의 다른 글

[동영상] TCP/IP의 원리  (0) 2012.05.12
Posted by 사랑줍는거지
,

[동영상] TCP/IP의 원리

OS 2012. 5. 12. 13:56



'OS' 카테고리의 다른 글

About Amanda Backup  (0) 2014.09.25
Posted by 사랑줍는거지
,

Linux 설치시 설치상태나, 설치 단계에서부터 몇가지 체크하고 모니터링 할게 있어서, SSH로 접근 하면 좀 편하지 않을까 싶어서, Ananconda가 Load되면서 SSH를 뛰울 수 있는 방법이 없나~ 하다가... 아주 썩 깔끔한 방법은 아니지만, 우선 급한대로 원하는 결과만(?) 만들어 내어 일단 메모해둔다. (보안같은 부분은 추가적으로 해줘야 한다.. SSH가 root로 비번도 없이 로그인 되니... pass를 미리 설정하던지, Allow인자를 활용하던지.. 아무튼, 꼭 보안은 별도로 신경 써줘야 한다...)


1. 환경

TFTP/PXE로 isolinux 이미지들을 바탕으로 설치

isolinux중에서 initrd.img 이미지를 편집하는 것으로 처리.


2. initrd.img 풀어 해치기~

# cd <initrd.img가 있는 디렉토리>

# mkdir initrd

# cd initrd

# zcat ../initrd.img | cpio -idv

# ls -al

drwxr-xr-x 15 root root 4096 Apr  8 19:54 .

drwxr-xr-x  4 root root 4096 Apr  8 19:53 ..

-rw-r--r--  1 root root  134 Apr  8 19:54 .bash_history

lrwxrwxrwx  1 root root    4 Apr  8 19:54 bin -> sbin

-rw-r--r--  1 root root   78 Apr  8 19:54 .buildstamp

drwxr-xr-x  2 root root 4096 Apr  8 19:54 dev

drwxr-xr-x 16 root root 4096 Apr  8 19:54 etc

drwxr-xr-x 18 root root 4096 Apr  8 19:54 firmware

lrwxrwxrwx  1 root root   10 Apr  8 19:54 init -> /sbin/init

drwxr-xr-x  3 root root 4096 Apr  8 19:54 lib

drwxr-xr-x  4 root root 4096 Apr  8 19:54 lib64

drwxr-xr-x  3 root root 4096 Apr  8 19:54 modules

drwxr-xr-x  2 root root 4096 Apr  8 19:54 proc

-rw-r--r--  1 root root  157 Apr  8 19:54 .profile

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sbin

drwxr-xr-x  2 root root 4096 Apr  8 19:54 selinux

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sys

drwxr-xr-x  2 root root 4096 Apr  8 19:54 tmp

drwxr-xr-x  7 root root 4096 Apr  8 19:54 usr

drwxr-xr-x  7 root root 4096 Apr  8 19:54 var


3. ssh 데몬 실행을 위한 준비
(다행이 Anaconda 이미지에 sshd 바이너리나 기본적인 설정파일은 미리 준비되어 있었다.)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# ssh-keygen -b 1024 -f etc/ssh/ssh_host_key -N "" -t rsa1

# ssh-keygen -d -f etc/ssh/ssh_host_rsa_key -N "" -t rsa

# ssh-keygen -d -f etc/ssh/ssh_host_dsa_key -N "" -t dsa

# cp -a etc/ssh/sshd_config.anaconda etc/ssh/sshd_config

# cat etc/ssh/sshd_config
(Port를 변경하고 싶으면 변경하면 되고, 기타 옵션 조정을 원하면 알아서....)

Port 22

HostKey /etc/ssh/ssh_host_key

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

PermitRootLogin yes

IgnoreRhosts yes

StrictModes yes

X11Forwarding yes

X11DisplayOffset 10

PrintMotd yes

XAuthLocation /sbin/xauth

KeepAlive yes

SyslogFacility AUTHPRIV

RSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords yes

PermitUserEnvironment yes


4. Anaconda 로딩 시, sshd 자동 실행 처리
(이부분이 참... 원래 init 스크립트가 그냥 bash 쉘 스크립트였는데, CentOS6부터 바꼈는지, 컴파일 되어 있다..ㅡ.ㅡ;; 어쨌든, 훼이크성 편법이지만, 부팅중 실행되는 바이너리 중 하나를 바꿔치기 해서 /usr/sbin/sshd가 실행되도록 임시 처리 했다.... 만만한게 auditd 였다.. 추후 정상적인 init프로세스에 추가 할수 있는 방법을 찾으면 수정..)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# cd sbin

# mv auditd auditd.orig

# cat > auditd << EOF

#!/bin/bash

/sbin/sshd

/sbin/auditd.orig

EOF

# chmod 755 auditd


5. SSH 설정작업은 끝... 작업했던 디렉토리 내용을 다시 initrd.img로 묶어준다.

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# find . | cpio -H newc -o | gzip -9 > ../initrd.img


6. 이제 다시 설치를 시도해서, 설치 과정중 해당 서버로 SSH접속을 시도해본다.

- Password는 없이 바로 로그인 된다.

- 다른 사전 작업이 필요하다면, 각자 처리 해둔다.


이상, 끝..... 서두에 이야기 했듯이... sshd를 실행하는 것이 정상적이진 않다... 시간이 되는대로 CentOS 6 Anaconda의 init과정을 좀 파봐야 겠다... 뭔가 나오면 그때 문서 업데이트하기로 하고 오늘은 이정도로만....

Posted by 사랑줍는거지
,

오늘 예전에 같이 동고동락(?)했던 SE분께 놀러 갔다가 딱 걸렸다..ㅡ.ㅡ;; 그쪽 고객중에서 사내 업무에 필요한 관계로, LiveCD를 커스터마이징하는 방법을 요청 했다고....

뭐 대충 보니, LiveCD에 각종 드라이버나, 유지보수 할수 있는 도구들을 담아두고, 유사시에 LIveCD를 응급복구 용도로 사용할려는 것 같다. 이전에는 WindowsPE를 커스트마이징 해서 사용해 온듯 하나, 라이센스 문제가 불거저 더이상 사용하지 못하게 된것 같기도 하고...

아무튼, 이야기를 들어보니, LIveCD의 커널에 특정 하드웨어(Disk 드라이버나 NIC 드라이버) 모듈을 추가 하는 작업은 아니라, 단순히 Linux OS에서 사용할 유틸리티 파일들을 추가 해두려는 것이라, 바로 테스트 해봤다.

Linux 기반에 원격설치서비스(RIS)구축을 해본적이 있어, "벌거 있겠어?? 그놈이 그놈이겠지.." 했는데, 역시나, 쉬운게 없다..ㅡ.ㅡ;;

먼저 맞닥드린건, Fedora16이라는 최신 시스템...ㅡ.ㅡ;; 그간 관심밖에 있었던 Linux 부팅 프로세스가 엄청 낯설었다.... (정말 이 분야에서도 이제 퇴출될 날이 곧.........) 부트 프로세스에 대해 대충이라도 파악하기 위해, initramfs의 init 스크립트를 한참 봤다... 대략 "이런식이구나..." 보구 나니, 표현과 디렉토리 구조, 그리고 패키징 포맷정도가 달라지고 이전과 개념적으로는 거의 비슷....

해서 오늘의 목적인 "Root-Image 파일에 원하는 유틸리티를 빨랑 박아 넣고 끝내자~~" 로 패스...

추적해보니 Root-Image는 squashfs.img라는 파일... 이걸 다시 푸니, 또 ext3fs.img가 나왔다..(뭐가 일케 꼬아 놨어..ㅡ.ㅡ;;) 대충 풀고, 필요한 파일 박아 넣고, 다시 역순으로 패키징하고... 하는 과정에서 개삽질 연속....

역순 패키징할때, 원래 디렉토리 구조로 안해서 한참을 헛짓...ㅡ.ㅡ;; (진짜 죽어야 겄다...)
또 오랜만에 mkisofs랑 mksquashfs 사용할려니 버벅버벅... Error 줄줄............ 아무튼 어떻게 저렇게 마무리...

단순히, 유틸리티들을 Root-Image에 복사해 넣어 두는 것이지만, 까먹지 않기 위해 개인 Wiki에 메모....
다음에, 특정 H/W 모듈도 추가 해야 할 일이 있을 때, 참고하면 도움도 될것 같다...


Wiki : http://redmine.nehome.net/redmine/projects/linux/wiki/LiveCD_-_Edit_Fedora_LiveCD's_Root-Image  



LiveCD - Edit Fedora LiveCD's Root-Image

  • (Note)
    • LiveCD와 동일 배포본인 OS에서 작업하는 것이 여러가지로 안전할듯...

Root 이미지 파일 추출

# cd /usr/local/src

# mkdir /mnt/tmp

# mount Fedora16-LiveCD.iso /mnt/tmp
mount: warning: /mnt/tmp/ seems to be mounted read-only.

(나중에 ISO 이미지 생성시, 필요하므로 미리 복사해둠...)
# cp -a /mnt/tmp iso-src

# ls -al /mnt/tmp/
total 30
dr-xr-xr-x. 5 4294967295 4294967295   224 Mar 25 20:33 .
drwxr-xr-x. 3 root       root        4096 Mar 25 23:57 ..
dr-xr-xr-x. 3 4294967295 4294967295    84 Mar 25 19:16 EFI
-r--r--r--. 1 4294967295 4294967295 18092 Mar 25 19:17 GPL
dr-xr-xr-x. 2 4294967295 4294967295   444 Mar 25 19:16 isolinux
dr-xr-xr-x. 2 4294967295 4294967295   200 Mar 25 19:18 LiveOS

# cp /mnt/tmp/LiveOS/squashfs.img /usr/local/src/

# umount /mnt/tmp

# mount squashfs.img /mnt/tmp
mount: warning: /mnt/tmp/ seems to be mounted read-only

# ls -al /mnt/tmp/
total 5
drwx------. 3 root root   29 Mar 25 19:18 .
drwxr-xr-x. 3 root root 4096 Mar 25 23:57 ..
drwxr-xr-x. 2 root root   33 Mar 25 19:18 LiveOS

# tree /mnt/tmp/
/mnt/tmp/
└── LiveOS
    └── ext3fs.img

1 directory, 1 file

# cp /mnt/tmp/LiveOS/ext3fs.img /usr/local/src/

# umount /mnt/tmp

Root-Image 에 원하는 작업 처리.

일단, 마운트 하기

# mount ext3fs.img /mnt/tmp

# ls -al /mnt/tmp/
total 116
dr-xr-xr-x.   2 root root  4096 Mar 25 19:14 bin
dr-xr-xr-x.   5 root root  4096 Mar 25 19:18 boot
drwxr-xr-x.   4 root root  4096 Mar 25 19:10 dev
drwxr-xr-x. 116 root root 12288 Mar 25 19:18 etc
drwxr-xr-x.   2 root root  4096 Jul 29  2011 home
dr-xr-xr-x.  11 root root  4096 Mar 25 19:12 lib
dr-xr-xr-x.  11 root root 12288 Mar 25 19:18 lib64
drwx------.   2 root root 16384 Mar 25 18:50 lost+found
drwxr-xr-x.   2 root root  4096 Jul 29  2011 media
drwxr-xr-x.   2 root root  4096 Jul 29  2011 mnt
drwxr-xr-x.   2 root root  4096 Jul 29  2011 opt
drwxr-xr-x.   2 root root  4096 Mar 25 18:50 proc
dr-xr-x---.   2 root root  4096 Mar 25 19:14 root
drwxr-xr-x.  22 root root  4096 Mar 25 19:13 run
dr-xr-xr-x.   2 root root 12288 Mar 25 19:14 sbin
drwxr-xr-x.   2 root root  4096 Jul 29  2011 srv
drwxr-xr-x.   2 root root  4096 Mar 25 18:50 sys
drwxrwxrwt.   2 root root  4096 Mar 25 19:17 tmp
drwxr-xr-x.  13 root root  4096 Mar 25 19:08 usr
drwxr-xr-x.  17 root root  4096 Mar 25 19:13 var

원하는 파일 넣기.

  • 원하는 위치에 복사 해넣고 umount하면 됨.
  • (Note)
    • tmp류의 디렉토리의 경우, LiveCD가 부팅되면서 초기화를 하므로, 별도의 디렉토리를 생성후, 파일 복사해야 함.

패키지 설치/제거.

# chroot /mnt/tmp

(설치)
# yum install [패키지]

(제거)
# yum remove [패키지]

작업 완료되었으면, umount

  • ext3fs.img 파일의 size가 4GB로 제한되어 있으니, 데이타 추가시 용량에 신경 써야 함.
  • 필요시, ext3fs.img 파일을 새로(더 큰용량으로) 생성하여 작성도 가능할듯...
# umount /mnt/tmp

추출 및 변경/추가된 Root-Image 재작성.

# mkdir LiveOS

# mv ext3fs.img LiveOS/

(삭제 해주지 않으면, 이전 파일에 Append 됨. -noappend 옵션을 주면 되나, 수정전 원본은 삭제해준다.)
# rm squashfs.img

# mksquashfs LiveOS squashfs.img -keep-as-directory -all-root
Source directory entry LiveOS already used! - trying LiveOS_1
[===|

# cp squashfs.img iso-src/LiveOS

(ISO로 만들 Source 디렉토리 외부에 boot정보 파일이 있어야 mkisofs가 정상 작동...)
# cp -a iso-src/isolinue isolinux

# mkisofs -udf -V "Fedora16-LiveCD" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-info-table -boot-load-size 4 -o Fedora16-LiveCD-New.iso iso-src
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
  1.24% done, estimate finish Mon Mar 26 00:13:36 2012
  2.47% done, estimate finish Mon Mar 26 00:13:36 2012
  3.71% done, estimate finish Mon Mar 26 00:13:36 2012
  4.94% done, estimate finish Mon Mar 26 00:13:36 2012
  6.18% done, estimate finish Mon Mar 26 00:13:36 2012
  7.42% done, estimate finish Mon Mar 26 00:13:49 2012
  8.65% done, estimate finish Mon Mar 26 00:13:47 2012
  9.89% done, estimate finish Mon Mar 26 00:13:46 2012
 11.12% done, estimate finish Mon Mar 26 00:13:44 2012
 12.36% done, estimate finish Mon Mar 26 00:13:44 2012
 13.59% done, estimate finish Mon Mar 26 00:13:43 2012
 14.83% done, estimate finish Mon Mar 26 00:13:42 2012
 16.06% done, estimate finish Mon Mar 26 00:13:48 2012
.
.
.

생성된 Fedora16-LiveCD-New.iso 로 부팅해서, 커스터마이징 해뒀던 상태가 반영되었는지 확인한다.

  • 금번 테스트에서는 간단히 /home과, /root 디렉토리에 call518이라는 텍스트 파일을 넣어 봤다.
  • 아래는 스크린샷....

     





Posted by 사랑줍는거지
,
원문 : http://www.cyberciti.biz/tips/centos-linux-6-download-cd-dvd-iso.html


CentOS Linux version 6 has been released. It is a community-supported operating system based on Red Hat Enterprise Linux (RHEL) version 6. CentOS Linux is considered as the most popular Linux distribution for web servers with almost 30% of all Linux servers using it.

CentOS Linux 6 Desktop Screenshot

Fig.03: CentOS Linux 6 Desktop Screenshot


From the release notes:

The CentOS team is pleased to announce the immediate availability of CentOS-6.0 for i386 and x86_64 Architectures. CentOS-6.0 is based on the upstream release EL 6.0 and includes packages from all variants. All upstream repositories have been combined into one, to make it easier for end users to work with.

CentOS Linux 6 Screenshots

CentOS 6 Download

You can download CentOS Linux 6 via the web/ftp server or via BitTorrent (recommended) client.

CentOS 6 DVD ISO download

CentOS Linux 6 DVD ISO Torrents

Torrent files for the DVD's are available at the following location:

A Note About CentOS Linux version 6.1

From the mailing list:

Since upstream has a 6.1 version already released, we will be using a Continous Release repository for 6.0 to bring all 6.1 and post 6.1 security updates to all 6.0 users, till such time as CentOS-6.1 is released itself. There will be more details about this posted within the next 48 hours.

Featured Articles:

Posted by 사랑줍는거지
,
CentOS 6이 너무 늦는군요.... FrameOS 6을 사용중이지만, 그래도 기대되는건..........
오늘 관련해서 검색하다가, RHEL 6의 또다른 클론 버전을 발견......(RHEL 클론 버전들이, 그것도 유용한 것들이 많네요. 이런걸 발견할 때마다 느끼지만, 나만 몰랐던 것 같은....)
하나는 Scientific Linux 6 이고, 하나는 Fermi Linux이다. 이중 활성화 정도로 봐서는 Scientific Linux 6이 더 나은듯 하다.
일전에 소개한 FrameOS는 초기 구성이 아주~ 너무나 컴팩트하게 구성되어 VM용에 최적화 되어 있는게 특징이었다. Scientific Linux 6는 아직 설치까지는 해보지 못했지만, 구글 검색결과 외국에서 대학 연구실이나, 과학 연구부서에서 많이 사용된다고 한다.

http://scientificlinux.org/

위 주소에서 보다 자세한 정보를 얻을수 있다. 참고로 5.x까지는 CD/DVD 이미지가 제공된듯 하나, 6부터는 DVD만 지원하는듯....





Posted by 사랑줍는거지
,
Posted by 사랑줍는거지
,
Chef의 Server/Client 구성을 위해 이래저래 구글 돌아다니다가 우연히 접한 OS인데, 너무 너무 끌리는 OS였다. 일단 설치 ISO이미지 용량이....330MB정도로 무지~무지~ 쬐끔이다~ 정말 Frame OS??????


아래는, 이 OS를 찾게된 링크 내용인데, FrameOS의 특징에 대한 설명이 잘되 있다. 개인적인 이유지만, 컴팩트 하면서도 RHEL(CentOS)와 100%호환되고(즉, 무지 컴팩트 하지만, yum으로 얼마든지 원하는 서비스 설치/추가가 가능 하다는..), 더군다나, Chef가 이미 적재되어 있어, 자동화 요소도 기본적으로 가지고 있다. 좀더 확인해봐야 겠지만, 가상화 인프라 구축에서 지금 해야할일이 엄청 줄어들지도 모르겠다~ (+.+)

다른 문서에서는, KVM기반의 Hypervisior 구축시, Host-OS로도 많이 이용하는듯 하다. 커널도 최신 및 부수적인 패키지들이 모두 최신이었다. 현재 FrameOS 버전이 6인걸로 추정하는데, 아마도 RHEL6 SRPM을 가져다 만들었다면,,, 큭...ㅋㅋㅋ CentOS6를 기다릴 필요가 그닥.....없어질지도.... (좀더 확인을 해봐야 할 사항임)
 


원문 : http://support.frameos.org/discussions/questions/3-why-should-i-use-frameos-instead-of-centos

Why should I use FrameOS instead of CentOS?

  1. SUPPORT STAFF2 Posted by rubiojr on February 25, 2011 @ 06:24 PM

    rubiojr's Avatar

    Good question.

    To be honest, moving existing RHEL/CentOS/SL/OL hosts to FrameOS doesn't make much sense. You can always fetch the packages you need from FrameOS repositories if you need an up2date Ruby/Chef stack.
    FrameOS tries to be 100% compatible with RHEL. You should be able to install FrameOS packages in CentOS.

    FrameOS is a Ruby/Chef flavored RHEL distribution. 99% of the packages come from Red Hat source RPMs. They key differences are:

    • Comes with Ruby Enterprise and Chef pre-installed.
    • FrameOS updates policy (with regard to Ruby/Chef) is less conservative than CentOS's. We follow Chef and Ruby upstream. If upstream doesn't break backwards compatibility, we upgrade (i.e. we will upgrade from jruby 1.5 to jruby 1.6).
    • Core install footprint is smaller. Great for fast provisioning virtual/automated environments.

    It all comes down to having an up to date ruby stack and saving a few steps after the install without having to resort to writing your own kickstart config file right now.

    Let me know if that helps ;)


ㅁㄴㄹㅇㅁㄴㄹ

아래는 ESXi 에서 설치 스크린샷이다.

부팅 초기화면이다. 눈에 뛰는건 Kickstarted Install 이다. Tap을 눌러 cmdline를 살펴보니, ks=cdrom:/frameos.ks 라고 되어 있었다. 아마도 일반적인 설정값으로 자동으로 설치가 완료되게끔 되어 있는듯.. 아직 ks파일 내용은 보지는 못했음. (본 설치는 첫번째 메뉴로 진행..)

ESXi에서 OS종류로 RHEL6(64bit)로 선택했으며, 메모리는 1GB를 할당하지 않으면, 텍스트모드로만 설치가 지원된다. (정말 RHEL6 클론인가...?? +.+)













패키지그룹 선택화면이다. 없....다...ㅡㅡ;;ㅋㅋㅋ Core하나 달랑.... 그만큼 날씬~하단 얘긴가...










설치정보 입력시간을 포함해서, 총 소요시간은 5분도 채 안걸린듯 하다. 뭐 보시다시피 전체 패키지 개수가 180여개 뿐이다... 시간이 걸릴게 딱히.... 아무튼, SSH외에는 거의 서비스도 떠있는게 없고, 정말.. 가볍다 못해, 성의 없이 느껴질 정도다.. ㅋㅋㅋㅋ

암튼 이놈으로 간단히 Chef도 해결될듯하고, VM의 템플릿OS로 잡는것도 검토해봐야 겠다.

아무튼, 정말 날씬한 몸매(?)의 OS를 원하신다면 꼭 사용해보시길.... 




(추가) FAQ 페이지를 뒤적거렸더니, ks내용도 친절히 안내되어 있음..ㅎㅎ 그리고, RHEL6 기반이 맞다...와우~
 

http://mirror.frameos.org/kickstart/frameos6.ks

cdrom
lang en_US.UTF-8
text
keyboard us

#
# Configure the network
#
#network --bootproto=query
#network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 --gateway=10.0.2.254 --nameserver=10.0.2.1 --hostname=frameos
network --bootproto=dhcp 

zerombr yes
clearpart --all
autopart
bootloader --location=mbr --append="rhgb quiet"

timezone Europe/Madrid
rootpw frameos
authconfig --enableshadow --enablemd5
selinux --disabled
firewall --disabled
skipx
reboot

%packages --nobase
@core





[사이트내 기타 문서들]
 

FrameosOS 6


Experimental Features





Binary RPMS included in the ISO

acl
attr
audit
audit-libs
authconfig
basesystem
bash
binutils
bzip2
bzip2-libs
ca-certificates
chkconfig
coreutils
coreutils-libs
cpio
cracklib
cracklib-dicts
cronie
cronie-anacron
crontabs
curl
cyrus-sasl
cyrus-sasl-lib
dash
db4
db4-utils
dbus-libs
device-mapper
device-mapper-event
device-mapper-event-libs
device-mapper-libs
dhclient
dracut
dracut-kernel
e2fsprogs
e2fsprogs-libs
efibootmgr
elfutils-libelf
ethtool
expat
file-libs
filesystem
findutils
fipscheck
fipscheck-lib
frameos-logos
frameos-release
gamin
gawk
gdbm
glib2
glibc
glibc-common
gmp
gnupg2
gpgme
grep
grub
grubby
gzip
hwdata
info
initscripts
iproute
iptables
iptables-ipv6
iputils
kbd
kbd-misc
kernel
kernel-firmware
keyutils-libs
krb5-libs
less
libacl
libattr
libblkid
libcap
libcap-ng
libcom_err
libcurl
libdrm
libedit
libffi
libgcc
libgcrypt
libgpg-error
libidn
libnih
libselinux
libsepol
libss
libssh2
libstdc++
libudev
libusb
libuser
libutempter
libuuid
libxml2
logrotate
lua
lvm2
lvm2-libs
MAKEDEV
mingetty
module-init-tools
mysql-libs
ncurses
ncurses-base
ncurses-libs
net-tools
newt
newt-python
nspr
nss
nss-softokn
nss-softokn-freebl
nss-sysinit
nss-util
openldap
openssh
openssh-clients
openssh-server
openssl
pam
passwd
pciutils-libs
pcre
pinentry
plymouth
plymouth-core-libs
plymouth-scripts
popt
postfix
procps
psmisc
pth
pygpgme
python
python-iniparse
python-libs
python-pycurl
python-urlgrabber
readline
rootfiles
rpm
rpm-libs
rpm-python
rsyslog
ruby-ee
sed
setup
shadow-utils
slang
sqlite
sudo
sysvinit-tools
tar
tcp_wrappers-libs
tzdata
udev
upstart
util-linux-ng
vim-minimal
wget
which
xz-libs
yum
yum-metadata-parser
zlib

















Posted by 사랑줍는거지
,

Myth or truth: One should always use Apache httpd in front of Apache Tomcat to improve performance?


http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one-should-always-use-apache-httpd-front-apache-tomcat-improve-perform


원문은 : 위 링크

Apache-Tomcat과 httpd의 핵심 개발자들이 직접 작성한 내용입니다. 오늘 옆팀에서 Apache만 붙이면 성능이 떨어진다고 해서 좀 봐주다가 찾은 자료네요. PHP를 서비스 하거나, 기타 Apahce의 특정 모듈기능을 필요하지 않는다면, 다시 말해 단순 정적인 웹서비스에서는 굳이 httpd서버를 Tomcat앞단에 둘필요는 없을듯 합니다. 흔히들 대부분의 개발자들이 기본적인 HTTP요청은 Apache가 처리하고 Tomcat내에서 처리될 자바 어플리케이션만 Tocmat으로 보내 처리되도록 하는게 가장 성능이 좋을것이라 믿어 왔지만. 구조상으로 봐도, 더 좋을리는........ Tomcat의 Apache Native Module성능이 httpd에 비교해 전혀 차이가 없는데..........(PHP등을 사용한다면, Apache가 앞단에 있어야 하니, 그런 부분은 논외 처리. 번거로움없이 일반유저로 80포트를 사용하고 싶다거나, Tomcat에러페이지를 관리 하고 싶다거나, 등등 나름대로 Apache를 앞단에 두어야 할 이유도 충분히 있다. 이글의 요점은 Apache를 앞단에 두어서는 안된다~가 아니니 오해 없기를~)
 

Myth or truth: One should always use Apache httpd in front of Apache Tomcat to improve performance?

 posted by mthomas on April 14, 2010 11:14 PM

The short answer is that this is a myth. The longer answer is that back in the days of Tomcat 3 there was some truth to this depending on circumstances. However, for the versions of Tomcat in use today (5.5.x and 6.0.x) then there is no need to use httpd for purely performance reasons. Tomcat now supports the native/APR connector which uses the same native library (the Apache Portable Runtime—APR) as httpd for the low-level I/O and therefore can achieve similar performance to httpd. When serving static content there is ever so slightly more overhead when using Tomcat compared to httpd but the differences are so small they are unlikely to be noticeable in production systems.

If you research the httpd vs Tomcat performance issue, you will find a variety of load and performance benchmarks that show a range of results. An often quoted result shows that Tomcat's pure Java connector is consistently faster than httpd.

This particular result is the opposite of what is expected. httpd should be significantly faster than Tomcat's pure Java connector. This result is probably caused by the size of the file used. Tomcat caches small static files in memory by default and this will provide a significant performance improvement. httpd does not cache files in memory by default. This demonstrates quite nicely how the definition of the benchmark can have a significant impact on the results.

The performance testing performed by Christopher Schultz, a regular on the Tomcat users mailing list, used a wider range of file sizes and provides – in my view – better results. The results of his tests are shown in the graph below.

Click to see larger image

These results are much more in line with what is expected, although there are a few interesting points to note:

  • Apache httpd and Coyote APR/native show similar performance levels.
  • Coyote NIO isn't too far behind httpd and Coyote APR/native.
  • There appears to be a limit on the usefulness of sendfile. This may be a hardware limitation but is worthy of further attention. I've added this to my todo list.
  • For small file sizes (less than ~10KiB) the static file caching in Tomcat provides a significant performance boost.

The detailed results for any performance test will vary with a number of factors such as the hardware used, the number of concurrent requests, the use of keep-alive and the use of caching. These factors can change the results of a particular test but the broad performance results will remain the same:

  • httpd and Coyote APR/native typically have similar performance.
  • Coyote NIO is typically just behind Coyote APR/native (further behind for SSL).
  • Coyote BIO will typically offer the lowest performance.

The settings to achieve the best performance will vary from application to application. The best settings for an application will depend significantly on the size of the resources, the ratio of static to dynamic content, the number of concurrent users, the usage patterns of those users and so on. Generally, performance can be improved by increasing the cacheMaxSize for the context, increasing the number of connector threads (using maxThreads [4]) available to process requests and enabling keep-alive (using maxKeepAliveRequests) but all of these come at the cost of increased resource usage. There is a trade-off to make here between performance and resource usage that will be different for each application.

It should also be noted that there is no magic "make it run faster" option in Tomcat. If your application takes 15s to generate a request, there is nothing that Tomcat can do to improve that. You'll need to profile your application to understand why requests are taking that long and then tune your application code appropriately.

While raw performance for static content may not be a good reason to use httpd, there are a number of good reasons why you might want to use httpd with Tomcat. The most frequent reason is to provide load-balancing to two or more Tomcat instances. httpd isn't the only option to so this - hardware load balancers or other reverse proxies can be used - but it is a popular choice amongst system administrators as many of them are already familiar with httpd. I'll write more on using httpd as a load-balancer in a future article.

httpd is also used with Tomcat when there is a requirement to support technologies other than Java. While Tomcat can support PHP or Perl, the support for these is better in httpd. Therefore, for sites that need a mix of technologies httpd can be used as the front-end web server, directing requests to mod_php, mod_fastcgi, mod_proxy_http (for Tomcat) or any other module as appropriate.

httpd's support for integrated Windows authentication is also a reason for using httpd in front of Tomcat. There are Tomcat based solutions for integrated windows authentication and, as these gain acceptance through wider use, this particular reason for using httpd may become less important. However, at the moment, it remains one of the more frequently cited reasons for using httpd with Tomcat.

In summary, there are good reasons for using httpd with Tomcat but raw performance for static content isn't one of them. If you are using httpd solely to improve static content performance then I recommend taking a look at the Coyote APR/native connector for Apache Tomcat.

Mark Thomas is a Senior Software Engineer for the SpringSource Division of VMware, Inc. (NYSE: VMW). Mark has been using and developing Tomcat for over six years. He first got involved in the development of Tomcat when he needed better control over the SSL configuration than was available at the time. After fixing that first bug, he started working his way through the remaining Tomcat bugs and is still going. Along the way Mark has become a Tomcat committer and PMC member, volunteered to be the Tomcat 4 & 7 release manager, created the Tomcat security pages, become a member of the ASF and joined the Apache Security Committee. He also helps maintain the ASF's Bugzilla instances. Mark has a MEng in Electronic and Electrical Engineering from the University of Birmingham, United Kingdom.

Comments

Configuring Response Headers

We're currently using Apache Httpd to handle such things as expires by type and gzip configuration. I wonder if these things can be set up in tomcat, thereby eliminating the httpd layer for us.

CDN & Throughput

I think that it is useful to use the httpd when you are configuring the Content Delivery Network.

IMHO if you use both the httpd and tomcat on different machines, each can fully concentrate only on its work. Tomcat's threads can compute your application's logic and use the whole memory for speed up the application. Whilst httpd's threads can serve the content from the disk. This can improve the throughput.

-- tom

Different Myth(?)

While this post answers the myth question of native HTTP vs Tomcat HTTP, if you are using a native HTTP to do (perhaps) other services, I'm curious about whether it's myth or truth that one should go with AJP or HTTP for the native<->Tomcat communication. The tomcat documentation mostly seems to suggest that this should be AJP rather than HTTP - is this still just a myth?


Posted by 사랑줍는거지
,
커널 컴파일을 해야할 일이 생겼다. 실용단계에 있는 건 아니지만, 분산파일시스템으로서 2.6.34부터 kernel 베이스 라인에 포함된 ceph라는 걸 테스트 해보라는 Order가 떨어진 관계로.. 그런데!!!! 지난주 목요일 부터, CentOS 5.5 x86_64의 커널을 최신으로 올릴려고 하는데, 이게 컴파일도 에러 없고, 설치 완료하고 부팅만 하면 아래 에러와 함께 Kernel Panic에 빠져 버린다.

Mounting root filesystem.mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fssetup
root: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /devunmounting old /procunmounting old /sysswitchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

 
구글링 해봐도, 해결책 찾기가 쉽지 않았다. 뭐 root 파일시스템 지정을 LABEL로 하지말고, /dev/sda3등과 같은 실제 장치명으로 하라는... 뻔한 이야기들만.........
VMware에서 진행했던거라, 혹시, VMware SCSI모듈쪽 문제인가 싶어, 커널에 VMware관련 모듈도 포함시켜 봤지만 소용없었음.

별짓을 다 해봤지만, 해결이 되지 않던 와중, 역시 구글 형님께서 해결의 실마리를 주셨음.
(링크 : http://funky-dennis.livejournal.com/3290.html)
문제는, 커널 컴파일 설정중 CONFIG_SYSFS_DEPRECATED_V2=y 가 활성화 되어 있어야 했다.
실제 적용해보니 그렇게 실패했던 것이 한방에 성공했다.
허무하다...ㅡㅡ;; 그러고 보니 커널 컴파일을 해본지가 너무 오래됐넹... 예전에 호스팅회사 있을때는 커널 컴파일 건수가 자주 있어 그럭저럭 대처했었는데, 하나도 기억이 안난다. 메롱이다 ㅡㅡ;;


적용방법은, make menuconfig 상에서 아래와 같이 체크 해줌
General setup ->
[*] enable deprecated sysfs features to support old userspace tools
[*]   enabled deprecated sysfs features by default 


최종적으로 .config 내용에서 아래와 같이 되어 있어야 한다.
# grep CONFIG_SYSFS_DEPRECATED .config
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y


 위 옵션의 역할에 대해서 현재 나로선 정확히 모른다. enable/disable에 따라 뭐가 다른지 분명히 해야 하는데.. 관련 정보는 나중에 구글에서 좀더 찾아봐야 겠다. 


(내용 추가)
하나 해결되니, 다른게 또 튀어 나오는군...;;;
커널 부팅은 정상이나, 부팅중 fail 하나 발견...ㅡ.ㅡ Udev관련된것 같긴 한데, 자세한건 또 손가락 품팔이 할수 밖에... 잇힝;; 이거 말고도 할거 많은데, 시작부터~

  -> 급히 검색해본 결과로는  CONFIG_SYSFS_DEPRECATED 옵션 y일경우, 발생함. 그렇다고 해당 옵션을 끌수는 없는 상황(끄면 부팅이 안되므로..ㅡㅡ;)이라, 우선은 이 메세지는 무시하기로 함. (자세한 조사는 뒤로...뒤로..뒤로...;;;)
Posted by 사랑줍는거지
,