01. operation/i. Theory2014.07.23 12:51

서비스를 운영중 1024 이하 포트들은 root권한으로 프로그램이 실행되어야 합니다.

 ※관련 내용 : http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html


하지만, redhat (centos) 6.x 버전으로 올라오면서 이에 대한 제한을 해제가 가능합니다.

 (kernel version : 2.6.25)


해당 패키지 정보 : libcap

Name        : libcap                       Relocations: (not relocatable)

Version     : 2.16                              Vendor: CentOS

Release     : 5.5.el6                       Build Date:

Install Date:                                  Build Host: c6b18n2.bsys.dev.centos.org

Group       : System Environment/Libraries   Source RPM: libcap-2.16-5.5.el6.src.rpm

Size        : 64437                            License: LGPLv2+ or BSD

Signature   : RSA/SHA1, 2011년 12월 09일 (금) 오전 05시 15분 52초, Key ID 0946fca2c105b9de

Packager    : CentOS BuildSystem <http://bugs.centos.org>

URL         : http://ftp.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/

Summary     : Library for getting and setting POSIX.1e capabilities

Description :

libcap is a library for getting and setting POSIX.1e (formerly POSIX 6)

draft 15 capabilities.

/lib64/libcap.so.2

/lib64/libcap.so.2.16

/lib64/security/pam_cap.so

/usr/sbin/capsh

/usr/sbin/getcap

/usr/sbin/getpcaps

/usr/sbin/setcap

/usr/share/doc/libcap-2.16

/usr/share/doc/libcap-2.16/License

/usr/share/doc/libcap-2.16/capability.notes

/usr/share/man/man1/capsh.1.gz

/usr/share/man/man8/getcap.8.gz

/usr/share/man/man8/setcap.8.gz


usage:

 > setcap

    권한을 주거나, 빼앗을수 있다.

ex> setcap 'cap_net_bind_service=+ep' filename

설명1 : setcap 명령어를 통해

        : cat_net_bind_service를 설정한다

        : 권한은 허가/효과/상속 중 허가, 권한을 부여한다 (+ep)

        : 이것은 filename 설정

 설명2 : cap_*

         : 기존 root권한으로 실행되는것(?)들을 부여할수 있다. (상세 하단 man page url 참조)

 설명3 : + or -

         : 권한을 빼앗거나, 주거나

 설명4 : eip

          : Permitted / Inheritable / Effective

    

 > getcap

    설정된 값을 확인 할 수 있다.

 ex> getcap filename


===================================================================================================

[root@kki bin]# setcap 'cap_net_bind_service=+epi' t4imapd

[root@kki bin]# getcap t4imapd

t4imapd = cap_net_bind_service+eip

===================================================================================================


man page : http://man7.org/linux/man-pages/man7/capabilities.7.html

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/i. Theory2009.07.27 14:18
리눅스에서는 자동적으로 모든 램의 빈 공간을 버퍼 캐쉬로 사용하여 메모리를 효율성을 높이고있으며 프로그램에서 많은 메모리를 필요로 하는 경우에는 자동으로 캐쉬의 크기를 줄인다. 리눅스에서 실제로 사용 가능한 메모리는 ‘free+buffers+cached’ 이다.
[root@linux net]# free
             total       used       free     shared    buffers     cached
Mem:         95648      93048       2600      65132      20824      36688
-/+ buffers/cache:      35536      60112
Swap:       201560        108     201452

사용가능 메모리량 : ( 2600+20824+36688 )/1024 = 58M

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/i. Theory2009.07.27 14:15
서버의 부하량 측정 관련하여서 정리하다가 문득 생각이 들어서 적은 내용이다.
사실상 서버의 부하를 정확하게 측정하기란 너무나 애매한 상황이 많이 발생되어지기 마련이고, 이러한 상황속에 엔지니어들은 이 부하가 어디서 발생이 되어지는지, 그리고 최적화 작업을 어떻게 진행할것인지에 대해서 많은 고민을 하고 있고 해결책을 내 놓는다.
 
가장 좋은것은 돈으로 발라주는 서버...=_=;; (사실 돈으로 안되는게 어디있냐)
 
서버안에 5만원권 지폐로 가득 채워봐라.......아마도 서버는 쌩쌩 날라다닐것이다.
(설마 정말로 하시는분은 없을거라고 생각을 하지만.)
 
서버 부하가 높으면 서비스 지연, 혹은 장애 커지면 OS가 뻑가는일까지 발생되어지게 마련이다.
그래서 서버 담당자들은 항상 CPU, IO관련되어진 상황을 예의 주시를 하기 마련이다. 그중에서 중요한 부분은 TIME, I/O TIME, %USER, %SYSTEM등의 수치는 매우 중요한 수치이며 대부분의 프로세서 job중 가장 많이 차지하는 부분이기도 하다.
 
예를 들면 특정 사이트에 mysql demon을 찾아보면 아래와 같이 나타난다.
ps auxw|grep mysql
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     17294  1.3  3.7   3654  1192 pts/4    S    13:35   0:00 /bin/sh /home/tims63/mysql/bin/mysqld_safe --defaults-extra-file=/home/tims63/mysql/my.cnf --user=mailadm -P 3306
mailadm  17323  54.3  43.7   603654  211192 pts/4    Sl   13:35   0:00 /home/mysql/libexec/mysqld --defaults-extra-file=/home/tims63/mysql/my.cnf --basedir=/home/mysql --datadir=/home/mysql/data --user=mailadm --pid-file=/home/mysql/data/kki.pid --skip-external-locking -P 3306
 
여기서 중요하게 봐야할 부분은 %CPU, %MEM, VSZ, RSS
실제 메모리사용율도 높을뿐더러, CPU job역시 높게 나타나진다 여기 상태에서 sar data를 한번 살펴보면 아래와 같이 나타난다. (실 서버가 이렇게 나타나는것은 아니고, 인의적으로 작성자가 수정을 한 값이다)
 
sar 1 100
              CPU     %user     %nice   %system   %iowait    %steal     %idle
               all      12.40      0.00      34.33      50.00      0.00     43.27
               all      12.37      0.00      35.69      54.47      0.00     41.47
               all      12.84      0.00      38.06      55.00      0.00     39.10
               all      13.74      0.00     33.28      51.00      0.00     35.98
 
이럴경우 엔지니어는 과연 어떤 부분에 대한 문제를 찾겠는가? 답은 RSS (실제 물리메모리)가 부족하다는 답을 내릴것이다 (물론 여기서 이 정보만으로는 부족하다, free, top, vmstat 등과 같은 정보도 확인해야한다)
 
그후 메모리 증설을 하였고, 결과는 iowait가 확인히 줄수 있다는것을 알게 되었다. 만약 물리적인 메모리를 늘렸음에도 불구하고 io가 올라간다면 해당 서버에 IO job이 서버가 허용할수 있는 범위를 넘어선다는 의미이다.
 
이럴경우에는 서버 이중화, 혹은 부하분산을 해야하게 되어지는 작업까지 진행될수가 있다. (그렇지 않다면 위 처럼 서버안에 5만원권 지폐를 넣어두어도 된다...)하지만 모든 문제들이 하드웨어에서만 집약 되어지지는 않고, 소프트웨어적으로 튜닝을 어찌 하느냐에 따라서 판도는 달라질수도 있는 부분도 존재하다보니 개발자와 투닥거리도 해야할일도 종종 생긴다.
 
예를 들면 무식하게 큰 query문을 하루에 몇번씩이고 하고 불필요한 update까지 더해지게 되어진다면 이 무식하게 큰 query문때문에 CPU부하뿐만 아니라 메모리 사용율까지 높아지게 되어지는 부분을 찾을수 있다면 서버안에 돈을 넣어두는일을 찾을수가 있다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/i. Theory2008.09.08 23:30
windows와 같은경우는 마운트 라는 표현을 쓰지 않고, 붙인다...라고 표현을 많이 하는것으로 알고 있습니다.
실제로 저도 그렇게 사용을 하고 있구요...

디스크를 추가하거나, cdrom에 cd를 넣거나, 혹은 usb를 연결하거나 할때 linux에서 마운트작업을 한다고 합니다.

대체적으로 unix에서 마운트작업은 번번히 일어나는 작업이고, 또한 신중한 작업이기도 합니다.
backup, restore, 추가 등등의 작업이지요...

mount작업은 간단하면서도 까다로운 작업임이 틀림 없습니다.

일반적인 cd mount 방법
mount -t iso9906 /dev/cdrom /media/cdrom

iso이미지 마운트 방법
mount -o loop ./RHEL5.2_x86/rhel5.2_dvd_x86.iso /마운트포인트

위와 같은 형식으로 cdrom의 형식을 맞추어 마운트를 하게 되어집니다.
linux의 일반적인 filesystem은 ext2 혹은 ext3형식으로 갖추어져 있고, fdisk -l로 해당 부분을 확인하실수가 있습니다.

하지만 사용자의 관건은 windows 드라이브를 마운트하기를 원하시는 사용자분들도 있을것입니다 (분명!)
windows의 파티션 방식은 FAT32 (혹은 16)과 NTFS방식으로 일반적인 linux에서는 지원을 하지 않는것이 일반적입니다. 하지만 ntfs-3g라는 모듈을 올리고 난 후에는 ntfs를 마운트를 할수는 있지만, ext2나 ext3에 비해서는 솔직히 속도가 느린것이 문제입니다. 이 부분은 나중에 시간이 나는데로 다시한번 이야기를 하도록 하겠습니다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
TAG mount
01. operation/i. Theory2008.09.08 23:21
컴퓨터는 파워스위치만 켜면 켜집니다..
끌때는 그냥 파워스위치만 누르면 꺼집니다...정말 편리하지만, ext2혹은 ext3와 같은경우는 disk에 곧장 write를 하지 않고 일종의 buffer(혹은 cache)에 넣어두고 이 buffer에서 disk에 실질적으로 write를 하게 되어집니다.
그렇다 보니 급작스러운 정전, 혹은 예기치못한 사고가 발생할수 있습니다..
그래서 shutdown작업전에는 항상 sync명령을 내려 buffers에 있는 내용을 모두 disk write를 한 후 shut가 되어지는것이 정석입니다.

poweroff 명령어>
shutdown
  -k : 실제로 종료하지는 않고 사용자에게 경고 메세지를 뿌립니다.
  -r : reboot                 (==reboot 명령어와 동일합니다)
  -h : halt (종료)           (==halt와 동일합니다.)
  -f : fsck를 실행하지 않습니다.
  -c : 종료명령 취소
  time : 몇 분(!)후 시스템을 종료할것인지 ...

shutdown 명령어 외에도 reboot, halt, poweroff과 같은 명령어도 있으니 이 부분은 man페이지를 참조하시면 충분히 이해가 가능할것이라고 생각합니다.

리눅스는 최초 start단계에서 몇가지의 단계로 나누어 집니다...
single모드, 네트워크를 지원하지 않는 CLI모드, 네트워크를 지원하는 CLI모드, GUI를 지원하는 모드...
일반적으로 이 단계는 runlevel이라고 불리며 이 runlevel은 init와 대응합니다. (1:1 매칭)
runlevel 0 (init 0) : poweroff (==halt, shutdown -h)
runlevel 1 (init 1) : 싱글모드
runlevel 2 (init 2) : NFS를 지원하지 않는 멀티유저모드
runlevel 3 (init 3) : NFS지원하는 멀티유저모드
runlevel 4 (init 4) : 사용하지 않는 runlevel
runlevel 5 (init 5) : GUI모드 (xwindows)
runlevel 6 (init 6) : reboot, shutdown -r

runlevel 1과 같은경우는 superuser mode로써 작업을 할때 종종 사용이 되어질것입니다. (disk가 풀찼을경우나, 혹은 패스워드 분실과 같은 이유로...)
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
TAG init, runlevel
01. operation/i. Theory2008.06.07 16:49

linux file disk를 살펴보면 항상 새로운 파티션의 root에 해당 하는 부분에 보여지는 lost+found라는 디렉토리의 정체에 대해서 궁금증을 무심결에 넘겼을지도 모른다..

이 디렉토리는 fsck또는 e2fsck등과 같은 파일 시스템 체크 및 복구 유틸리티 실행시에 연결이 끊어진 inode들이 숫자 파일형태로 존재하는곳이다.
텍스트파일경우에는 여러가지 명령어를 통해 내용을 확인후 복구할수도 있다.
중요하다면 중요한 디렉토리이니 가급적 삭제 하지 않는것이 옳바르다..

가끔 보면 삭제해도 될까요? 라고 하는데....
정말 disk공간이 부족하다면 뭐 별수 없을것 같지만...그래도 삭제 하지 않는것이
정답이지 않을까?

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/i. Theory2007.11.18 17:56

뭐 rpm으로 직접 설치하시는 분들에게는 별로 도움이 안되는 정보입니다.


리눅스의 퍼포먼스와 자신의 컴퓨터가 펜티엄급이다...라는 조건을 갖추고 "난 퍼포먼스 중심의 사나이다"라고 하시는분들만 사용하시면 되겠습니다.(응?) 그리고 하드웨어가 조금 뒷받침이 되어져야 pgcc가 이상없이 돌아가는것으로 알고 있습니다..


(근데 pgcc 최근 버전이 2000년도입니다...뭐야 이거)


일단 pgcc를 다운로드 받아봅시당

http://www.goof.com/pcg/binaries-linux.html


뭐 여적까지 제 포스팅을 봤으면 압축 풀기는 기본으로 아실것이라고 생각이 되어집니다..

(모르시면 빽하세요...pgcc설치전 리눅스 책 한권 읽고 오시길 권장해드립니다)


음...설치할시에 전 prefix로 /usr/local/로 해줬음을 미리 밝혀드립니당..-ㅠ-;


그리고 각종 mysql/apache/php등등을 컴파일 할시에 CC="/usr/local/bin/pgcc" 와 CFLAGS의 세팅 CXX의 세팅등이 필요합니다.


Mysql Configure...<---->

CC="/usr/local/pgcc/bin/pgcc"
CFLAGS="-O6 -mpentiumpro -mstack-align-double -fomit-frame-pointer -march=pentiumpro"
CXX="/usr/local/pgcc/bin/pgcc"
CXXFLAGS="-O6 -mpentiumpro -march=pentiumpro -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"


밑에 부분은 어디선가 발취 해온 내용입니다만...정확한 출처는 어딘지 까먹었습니다..(죄송합니다)


#PGCC 컴파일용 최적화 옵션 ( C Shell ):

setenv CC "/usr/local/bin/gcc"
setenv CFLAGS "-O6 -mpentiumpro -mstack-align-double"
setenv CXX "/usr/local/bin/gcc"
setenv CXXFLAGS "-O6 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"

#GCC 컴파일용 최적화 옵션 ( C Shell ) :
setenv CC "/usr/local/bin/gcc"
setenv CFLAGS "-O6 -mpentiumpro"
setenv CXX "/usr/local/bin/gcc"
setenv CXXFLAGS "-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"


PGG를 사용하면 퍼포먼스에 영향을 주긴 주는걸로 알고 있습니다. (먼 학원 강사 선생님이 써놓은 글을 보니 그렇다...라고 써 있었습니다) 하지만 64bit체계에 맞춰지지 않았고, HT기술에도 맞는지는 확실히 모르겠습니다. (저도 HT컴퓨터로 할때는 pgcc나 gcc나 퍼포먼스의 차이를 그다지 못느낄정도였습니다)


뭐 결론은 걍 그래서 그렇다구요 (퍽!)은 아니고, 서버가 조금 구형이신분들에게는 유용할수 있는 정보이지 않을까 생각되어 포스팅을 해보았습니다..

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/i. Theory2007.11.18 17:55

아 그러고보니 가장 기본적인 포스팅을 까마득하게 잊어 버리고 있었습니다..-_-;

대부분 집에서는 ms windows하고 linux를 같이 쓰게 되는 경우가 많을것이라고 생각됩니다.

그래서 알려드리는 멀티부팅과의 관계...+_+


일단 ms와 linux를 멀티부팅이 가능하다는 점은 상당히 매력적인 일입니다. 솔직히 vmware를 통한 guest-os로써는 서버의 역활도 충실하지 못할뿐더러, 기본 시스템보다 현저히 느린 컴퓨팅을 하게 되는게 일반적입니다..하지만 자신의 컴퓨터 프로세스를 통체로 리눅스가 사용한다면 그 속도는 상당히 매력적인 부분일것입니다. 그래서 하는것이 grub를 통한 멀티부팅

(예전엔 lilo였다지만 지금은 grub로 바뀌였습니다)


system 분석

일단 메인 pc에 windows 가 설치되어있다는 전제하로 시작하겠습니다.

보통 리눅스를 설치하실려면 하드디스크중 windows 파티션으로 ntfs로 설치를 하셨을테고 (혹은 fat32방식일테죠?) 그리고 아직 세팅되지 않은 리눅스 영역이 분명히 존재하리라고 생각되어집니다. 적정 비율은 사용자에 따라 틀리니 자기가 사용할 pc의 파티션은 자기가 알아서 스스로 해답을 찾으셔야 할듯싶습니다.


그리고 리눅스 CD로 부팅을 합니다. (부팅이 안되시면 disk booting을 이용하시길...-_-;;;)

그럼 일반적인 설치 절차가 진행되고 그중에 grub에 관한 부분이 보일것입니다. 이 부분을 기본 디폴트로 넘어가시는분들은 분명 (*linux가 디폴트로 5초후에 linux로 부팅되어진다...로 됩니다)

(가물가물해서 생각이 잘 나지는 않지만, 페도라 기준 파티션작업후 곧장 나오는작업이 grub로 알고 있습니다)


MS 제품은 mbr을 독점을 하려고 노력을 하기 때문에(?) grub를 설치하셔야지 무리없이..그리고 이상없이 리눅스로 설치되는것을 보실수 있습니다.


그리고 linux가 설치된후 grub화면으로 부팅이 되고 선택을 하게 되있습니다.


******************************************************************************************

이것이 일반적인 linux설치 절차에서 발생되는 일입니다.


자 그럼 linux를 재설치 할경우의 문제가 발생합니다.

뭐 ...linux의 재설치와 같은경우는 그다지 문제가 발생되지 않습니다. linux 세팅하는중 grub를 재설치 하기때문에 그다지 문제가 되진 않습니다만...

문제는 멀티부팅이 되있는 상태에서 windows를 새로 설치할때의 문제가 발생합니다.


위에서 말했다 싶이 MS제품은 mbr(Master Boot Record ->스페링이 맞나?)을 독점할려고 합니다. 그러므로 자연스럽게 grub는 뒤로 물러나 -_- (흐어엉) 멀티부팅은 되어지지 않고 windows의 로고를 구경할수 있게 될것입니다. grub가 삭제되고 난후 리눅스가 날라간게 아닌가 하고 fdisk로 확인해보면 분명 남아 있는것을 알수가 있습니다.


그렇다면 해결책은?!


리눅스 CD(or 부팅디스크)에 있습니다.

리눅스 CD로 부팅하시면 'Rescue System' 이라는 항목이 있습니당. 그렇습니당 말 그대로 복구용이지요...


Rescue login모드로 들어갑니다. 그후 뭐라뭐라 솰라솰라 거리는 부분이 나온후 prompt가 껌뻑이고 있는걸 보고 있을겁니다.


chroot /mnt/sysimage를 해봅시다


그렇게 되면 부팅한 cd의 파티션이 아니라 예전에 자신이 지니고 있던 리눅스 파티션으로 이동을 하게 됩니다..아하하하 그럼 복구를 재설치를(?)해봅시당


cd /boot/grub

/sbin/grub

root (hd0,5)

install /boot/grub/stage1 d (hd0) /boot/grub/stage2 p /boot/grub/menu.lst

quit


이렇게 하면 됩니다..

당췌 주인장이 먼 개소릴 하는지 모르겠다 하시는분들을 위한 섭스...(응?)


1) 자신의 linux시스템에 마운트가 되고 /boot/grub로 이동

2) grub실행

3) grub command상에서 복구 시작(hdx >> 디스크를 말합니다 일반적 IDE방식의 하드 첫번쨰 숫자는 MBR을 말하는것이고 두번째 숫자 5는 자신의 리눅스 파티션을 뜻합니다)

4) grub를 설치합니다. (menu.lst는 무엇인고 하면 과거에 자신이 가지고 있던 grub의 백업(?)쯤으로 생각하시면 될듯 싶습니다.

5) 끝났습니다...-_-;


음...이정도만 하면 grub복구는 쉬울듯 싶습니다..아하하하 파티션을 못찾으시는분들은 ... 모릅니다...-_- 알아서 한번 해보세요...(뭐 나름 꽁수가 있다면 정 모르겠다 싶으면 ext2 or ext3 or 디스크저글러? jxt? jst인가? 파티션을 찾으시면 될듯 싶습니다)


뭐 자신은 lilo로 설치 했다...하시는분들은 다른 문서 찾아보세요...(뭐 비슷할꺼라고 생각은 합니다만, 아마도 lilo는 예전방식이라 지금은 사용하지 않는다고 생각을 하고 있습니당)


즐거운 주말에 IDC에서 쿡 박혀서 딩가딩가 하고 있습니다. 어제 대항해시대 4PK하느라 새벽 6시에 자고 출근 했습니다...-_ㅠ 아 졸립군요..즐거운 주말~일 되시길...꾸뻑

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군

티스토리 툴바