블로그 이미지
OSSW(Open Source System SoftWare

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Notice

1. 에러 메시지:

kernel: NOHZ: local_softirq_pending 100

 

2. 원인:

- 시스템이 어떤 소프트웨어 interrupt 를 처리하는 대신 CPU sleep 상태로 만드는 것

- 메시지 마지막의 숫자는 hexadecimal 로 표현되며, ‘100’ HRTIMER_SOFTIRQ 를 의미

- HRTIMER_SOFTIRQ High Resolution Timer(HRT) 에 대한 소프트웨어 interrupt(HRT에 대한 상세정보는 아래 참조 URL 참고)

- 커널 버전 2.6.22 이후부터 add debug 메시지

 

3. 조치 방안:

- /etc/grub.conf 파일에 nohz=off 옵션을 설정하여 disable 가능(, 커널 버전 2.6.32-431.el6 보다 상위 버전에서만 가능)

- 단순 정보성 메시지이므로 조치 필요 없음

 

4. 참조 URL:

http://kb.sp.parallels.com/en/119599

https://access.redhat.com/solutions/62637

http://studyfoss.egloos.com/viewer/5268468

 

posted by 박현명

Unix / Linux에서 프로세스가 사용 중인 Socket, FD를 확인 할 때 사용하는 lsof 명령어의 사용법에 대해서 알아보자.

* 특정 프로세스가 오픈한 파일 리스트 확인 : lsof -p <PID>

- PID 112를 가진 프로세스가 사용하는 파일들 확인

# lsof -p 143

COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME

inetd 143 root cwd VDIR 32,0 1024 2 /

inetd 143 root txt VREG 32,6 33492 310933 /usr/sbin/inetd

inetd 143 root txt VREG 32,6 10696 6352 /usr (/dev/dsk/c0t0d0s6)

....

....

inetd 143 root 4u inet 0x603cab38 0t0 TCP *:ftp (LISTEN)

inetd 143 root 5u inet 0x610b13c0 0t0 TCP *:telnet (LISTEN)

inetd 143 root 6u inet 0x610b1240 0t0 TCP *:pop3 (LISTEN)

......


* 특정 포트로 접속한 리스트 확인

# lsof -i @tmax.co.kr:23

COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME

in.telnet 104 root 2u inet 0x612df850 0t152 TCP cert:telnet->172.16.2.159:1176

(ESTABLISHED)

in.telnet 28462 root 0u inet 0x61aee578 0t71 TCP cert:telnet->172.16.2.146:4250

(ESTABLISHED)

.....


* 특정 user가 오픈한 프로세스를 확인 : lsof -u 혹은 lsof -u

[cert:root]:/> lsof -u kong

COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME

csh 21309 kong cwd VDIR 32,4 1536 223602 /user/kong/lsof_4.56

csh 21309 kong txt VREG 32,6 158608 298136 /usr/bin/csh


by 이환호

posted by lovelywas

WEB/WAS 설치 시 꼭 확인해야 하는 OS 정보들이 있다. 이를 확인하는 명령어를 정리해 보자.

[CPU]

AIX 

 lsdev -Cc processor 

HP-UX 

 ioscan -fnc processor 

SOLARIS

 psrinfo -v

LINUX

 cat /proc/cpuinfo

[메모리]

AIX

 bootinfo -r

HP-UX

 grep -i Physical /var/adm/syslog/syslog.log

SOLARIS

 Prtconf

LINUX

 free

[커널 bit]

 AIX

 bootinfo -K

 HP-UX

 getconf KERNEL_BITS

 SOLARIS

 isainfo -kv

 LINUX

 getconf WORD_BIT

[NIC 카드 정보]

 AIX

 ifconfig -a

 HP-UX

 lanscan -v

 SOLARIS

 ifconfig -a

 LINUX

 ifconfig -a

by 이환호


posted by lovelywas

Windows 시스템에서 프로세스 PID, 파라미터, 프로세스가 사용 중인 Socket 등의 정보가 필요한 경우가 있다.

이럴 경우 windows에서 기본적으로 제공해 주는 taskmgr 툴 만가지고는 부족하다 라고 느끼면 Process Explorer 툴을 사용해 보자.


다운로드 사이트 : http://technet.microsoft.com/en-us/sysinternals/bb896653 (2014.12.02 최신버전 v16.04)


1. 다운로드 받은 파일의 압축 해제

2. procexp.exe 를 실행한다.

3. Process Explorer 메인 화면 (JAVA PID 4360 확인)

4. 프로세스 리스트 중 JAVA에 마우스 커서를 두고 마우스 오른쪽 버튼 > properties > 탭메뉴 TCP/IP 선택

    프로세스의 각종 상세 정보와 해당 프로세스가 사용 중인 SOCKET의 번호를 확인할 수 있다.


 

by 이환호



posted by lovelywas

1. 에러 메시지:

JBD: barrier-based sync failed on xvda1-8 - disabling barriers

 

2. 원인:

- RedHat 이나 CentOS 등의 Linux 계열에서는 journaling 파일시스템을 사용하는데, journaling 파일시스템 중 ext4 파일시스템에는 기본적으로 Write Barrier 라는 커널 매커니즘이 enable 되어 있음(barrier=1)

- ext3 파일시스템은 Write Barrier 기능을 사용 가능하나, 기본 disable 되어 있어 위와 같은 메시지가 발생하지 않음

- Write Barrier 는 파일시스템의 메타데이터가 올바르게 기록되고 디스크에 제대로(심지어 디스크 전원이 나갈 지라도) 반영되게 하기 위한 커널 매커니즘

- 스토리지 드라이버나 스토리지 디바이스가 transaction barrier 를 지원하지 않을 때 위와 같은 메시지 발생

- 메시지의 의미: 커널이 barrier disable 하고 barrier=0 인 상태처럼 write 를 실행

 

3. 조치 방안:

- 단순 경고성 메시지이므로 조치 필요 없음

- RHEL 6 에서는 barrier 기능 disable 을 추천하지 않음. Write Barrier 기능으로 인한 성능 저하는 약 3% 정도이며, 그 기능을 disable 하는 것보다 enable 했을 때의 성능 benefit 이 더 큼

- nobarrier 옵션은 VM(Virtual Machine) 에서 구성된 스토리지에서는 사용되지 않음

 

4. 참조 URL:

http://www.novell.com/support/kb/doc.php?id=3907838

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/writebarrieronoff.html

http://lunatine.tistory.com/8

http://community.arm.com/groups/processors/blog/2011/04/11/memory-access-ordering-part-2--barriers-and-the-linux-kernel

http://se.uzoogom.com/m/post/204

posted by 박현명

1. 문제 개요

 

boot level에 따른 데몬 설정을 보려고,, chkconfig --list 를 한 순간..!

외계어가 나온다.

 

 

뭐가 on이고 뭐가 off 라는건지... 도무지 알 수 없음.

[root@Server ~]# chkconfig --list

abrt-ccpp 0:?댁젣 1:?댁젣 2:?댁젣 3:?쒖꽦 4:?댁젣 5:?쒖꽦 6:?댁젣

abrt-oops 0:?댁젣 1:?댁젣 2:?댁젣 3:?쒖꽦 4:?댁젣 5:?쒖꽦 6:?댁젣

abrtd 0:?댁젣 1:?댁젣 2:?댁젣 3:?쒖꽦 4:?댁젣 5:?쒖꽦 6:?댁젣

acpid 0:?댁젣 1:?댁젣 2:?쒖꽦 3:?쒖꽦 4:?쒖꽦 5:?쒖꽦 6:?댁젣

atd 0:?댁젣 1:?댁젣 2:?댁젣 3:?댁젣 4:?쒖꽦 5:?쒖꽦 6:?댁젣

auditd 0:?댁젣 1:?댁젣 2:?쒖꽦 3:?댁젣 4:?쒖꽦 5:?쒖꽦 6:?댁젣

cgconfig 0:?댁젣 1:?댁젣 2:?댁젣 3:?댁젣 4:?댁젣 5:?댁젣 6:?댁젣

cgred 0:?댁젣 1:?댁젣 2:?댁젣 3:?댁젣 4:?댁젣 5:?댁젣 6:?댁젣

chef-client 0:?댁젣 1:?댁젣 2:?댁젣 3:?댁젣 4:?댁젣 5:?댁젣 6:?댁젣

cpuspeed 0:?댁젣 1:?쒖꽦 2:?쒖꽦 3:?쒖꽦 4:?쒖꽦 5:?쒖꽦 6:?댁젣

crond 0:?댁젣 1:?댁젣 2:?쒖꽦 3:?쒖꽦 4:?쒖꽦 5:?쒖꽦 6:?댁젣

haldaemon 0:?댁젣 1:?댁젣 2:?댁젣 3:?쒖꽦 4:?쒖꽦 5:?쒖꽦 6:?댁젣

ip6tables 0:?댁젣 1:?댁젣 2:?쒖꽦 3:?댁젣 4:?쒖꽦 5:?쒖꽦 6:?댁젣

iptables 0:?댁젣 1:?댁젣 2:?댁젣 3:?댁젣 4:?댁젣 5:?댁젣 6:?댁젣

irqbalance 0:?댁젣 1:?댁젣 2:?댁젣 3:?쒖꽦 4:?쒖꽦 5:?쒖꽦 6:?댁젣

 

 

2. 문제 해결

 

1) 서버의 언어설정($LANG) 확인

[root@Server ~]# echo $LANG

ko_KR.UTF8

 

서버 OS 설치 시 영어로 설치되었는데, 설정은 한글로 되어있다. 그러니 깨질 수 밖에..  

영어로 바꿔보자.

 

2) 현재 세션 언어 설정 바꾸기.

[root@Server ~]# LANG=en_US.UTF-8

[root@Server ~]# chkconfig --list

abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off

abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off

abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off

acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off

atd 0:off 1:off 2:off 3:off 4:on 5:on 6:off

auditd 0:off 1:off 2:on 3:off 4:on 5:on 6:off

cgconfig 0:off 1:off 2:off 3:off 4:off 5:off 6:off

cgred 0:off 1:off 2:off 3:off 4:off 5:off 6:off

chef-client 0:off 1:off 2:off 3:off 4:off 5:off 6:off

cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off

ip6tables 0:off 1:off 2:on 3:off 4:on 5:on 6:off

iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off

 

자, 이제 on/off 를 읽을 수 있겠다.

 

하지만 아래 이 설정은 그저 현재 세션에만 적용 될 뿐, 세션이 끊긴 후 재접속 해보면 그대로이다.

[root@Server ~]# LANG=en_US.UTF-8

 

영구적으로 언어를 변경해주자.

 

3) 언어 설정 변경 (영구)

/etc/sysconfig/i18n 파일에 LANG="en_US.UTF-8"을 추가해 준다.

[root@Server ~]# vi /etc/sysconfig/i18n

#LANG="ko_KR.UTF-8"

LANG="en_US.UTF-8"

SYSFONT="latarcyrheb-sun16"

 

기존 설정은 주석 처리를 하고, en_US.UTF-8로 변경 하였다.

하지만, 여전히 언어 설정은 한글로 보인다.

[root@Server ~]# echo $LANG

ko_KR.UTF8

 

설정을 바로 적용해보자.

[root@Server ~]# source /etc/sysconfig/i18n

[root@Server ~]# echo $LANG

en_US.UTF-8

 

이제 설정이 제대로 변경 되었다. =)

 

 posted by 김소령

 

 

 

 

posted by DB,MW,OS OSSW(Open Source System SoftWare

1. 문제개요

 

작업으로 인한 서버의 리부팅 이후 백업 시도를 했으나, NFS Server 및 NFS Client의 백업이 실패함.

백업 로그를 살펴 봤더니, NFS Server였던 호스트에 NFS 용 파일시스템 및 몇몇 파일시스템이 umount 되어 실패한 상황.

 

[NFS-Server 백업로그]

[Critical] From:VBDA@NFS-Server.cs11cipc.com "/data_nstep" Time: 2014-11-23오후 11:21:13

[81:52] /data_nstep

Not a valid mount point => aborting.

[Critical] From:VBDA@NFS-Server.cs11cipc.com "/data_icis" Time: 2014-11-23오후 11:21:28

[81:52] /data_icis

Not a valid mount point => aborting.

 

[NFS-Server disk mount 현황]

[root@NFS-Server ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

47G 5.4G 40G 12% /

tmpfs 3.9G 0 3.9G 0% /dev/shm

/dev/xvda1 485M 51M 409M 12% /boot

/dev/mapper/VolGroup-lv_home

34G 9.8G 23G 31% /home

 

/etc/fstab 파일을 살펴 봤지만, umount 되었던 파일시스템 설정 기 완료 되어있음. (BOLD체 확인)

 

[NFS-Server의 /etc/fstab 파일]

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=5b163395-2568-4f35-81a1-cf90e7f22c9a /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/xvdc1 /data ext3 default 1 1

/dev/xvdb /osbackup ext4 default 1 1

/dev/xvde /data_nstep ext4 default 0 0

/dev/xvdf /data_icis ext4 default 0 0

 

이로인해 NFS-Client01, NFS-Client02 에서 NFS mount fail로 동일 에러 메시지 계속 뿌림.

nfs disk를 계속 찾음으로 인해 서버 성능에 부하가 옴.

 

[NFS-Client log]

Nov 24 08:28:19 nfs-client kernel: nfs: server 172.27.213.90 not responding, still trying

Nov 24 08:29:19 nfs-client kernel: nfs: server 172.27.213.90 not responding, still trying

Nov 24 08:30:19 nfs-client kernel: nfs: server 172.27.213.90 not responding, still trying

Nov 24 08:31:19 nfs-client kernel: nfs: server 172.27.213.90 not responding, still trying

 

2. 문제 해결 하기

 

일단 임시 방편으로 umount 됐던 파일시스템 mount 시킴

[root@NFS-Server ~]#  mount /dev/xvdc1 /data

[root@NFS-Server ~]# mount /dev/xvdb /osbackup

[root@NFS-Server ~]# mount /dev/xvde /date_nstep

[root@NFS-Server ~]# mount /dev/xvdf /data_icis

[root@NFS-Server ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

47G 5.4G 40G 12% /

tmpfs 3.9G 0 3.9G 0% /dev/shm

/dev/xvda1 485M 51M 409M 12% /boot

/dev/mapper/VolGroup-lv_home

34G 9.8G 23G 31% /home

/dev/xvdb 50G 19G 28G 41% /osbackup

/dev/xvdc1 690G 19G 636G 3% /data

/dev/xvde 985G 712M 934G 1% /data_nstep

/dev/xvdf 985G 666M 934G 1% /data_icis

 

NFS Server에서 Client 파일 시스템 공유를 위해 다시 한 번 export를 해줌

[root@NFS-Server ~]# exportfs -a

[root@NFS-Server ~]# exportfs -v

/data_nstep 172.27.62.108(rw,wdelay,no_root_squash,no_subtree_check)

/data_nstep 172.27.92.252(rw,wdelay,no_root_squash,no_subtree_check)

/data_icis 172.27.62.108(rw,wdelay,no_root_squash,no_subtree_check)

/data_icis 172.27.92.252(rw,wdelay,no_root_squash,no_subtree_check)

 

이로써 NFS 설정 문제는 해결 되었지만, /etc/fstab 에도 설정 되어있던 Disk 들이 리부팅 후 umount 된 원인은 아직 찾지 못함.

 

3. 문제 원인 찾기

 

NFS-Server의 syslog를 살펴보니 아래와 같은 에러 로그가 있음.

"default" 가 인식할 수 없는 option이라네요.... 잉???  

 

[NFS-Server의 /var/log/messages]

Nov 23 22:53:16 NFS-Server kernel: EXT4-fs (xvda1): mounted filesystem with ordered data mode. Opts:

Nov 23 22:53:16 NFS-Serverkernel: EXT3-fs (xvdc1): error: unrecognized mount option "default" or missing value

Nov 23 22:53:16 NFS-Serverkernel: EXT4-fs (xvdb): Unrecognized mount option "default" or missing value

Nov 23 22:53:16 NFS-Serverkernel: EXT4-fs (xvde): Unrecognized mount option "default" or missing value

Nov 23 22:53:16 NFS-Serverkernel: EXT4-fs (xvdf): Unrecognized mount option "default" or missing value

 

default... 어디서 많이 보던건데... 이건 /etc/fstab 에서 mount 설정 할때 사용하는건데...!!!

다시 한 번 /etc/fstab 파일을 살펴 보자..

 

 

[NFS-Server의 /etc/fstab 파일]

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=5b163395-2568-4f35-81a1-cf90e7f22c9a /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/xvdc1 /data ext3 default 1 1

/dev/xvdb /osbackup ext4 default 1 1

/dev/xvde /data_nstep ext4 default 0 0

/dev/xvdf /data_icis ext4 default 0 0

 

위에서도 봤던 동일한 파일인데, 다들 눈치 채셨나요?

default와 defaults의 숨은그림 찾기를 ;;

 

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=5b163395-2568-4f35-81a1-cf90e7f22c9a /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

/dev/xvdc1 /data ext3 default 1 1

/dev/xvdb /osbackup ext4 default 1 1

/dev/xvde /data_nstep ext4 default 0 0

/dev/xvdf /data_icis ext4 default 0 0

 

설정의 오타로 인한 NFS-Server 의 Disk umount , NFS-Client 의 NFS 설정 불가의 문제가 발생.

=> /etc/fstab 수정 후 문제 근본 원인 해결. 끝!!

 

posted by 김소령

 

 

 

posted by DB,MW,OS OSSW(Open Source System SoftWare




TOP 명령어는 PostgreSQL 운영자에겐 아주 유용한 명령어입니다.
TOP 명령어를 통해 시스템 리소스 사용량을 확인 할 수 있고, 어느 부분에서 문제가 발생되는지 파악이 편리합니다.


[사용법]
$ top [옵션]

[화면 내용들]
top - 14:16:52 up 4 days,  5:25,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.4%us,  0.3%sy,  0.0%ni, 97.0%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8140668k total,  7900820k used,   239848k free,  3074544k buffers
Swap:  8349692k total,    13476k used,  8336216k free,  3792984k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND


- 각 라인별 내용 
현재 시간, uptime (서버 uptime), 현재 로그인 유저수 , 로드 에버리지 1분 5분 15분
top - 14:16:52 up 4 days,  5:25,  3 users,  load average: 0.00, 0.01, 0.05


- 로드 에버리지(load average)
 작업의 대기시간 , 값이 1이라면 1분동안 평균 1개의  프로세스가 대기상태임을 나타낸다.
보통 5이면 서버가 부하를 받는다고 생각함, 10~15면 과부하
load average: 0.00, 0.01, 0.05

- 전체 프로세스 수 
현재 실행중인 프로세스, 유휴상태 프로세스, 정지상태 프로세스, 좀비 프로세스
Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie 

- CPU
사용자가 사용중인 CPU 사용률(us), 시스템이 사용하는 CPU 사용률(sy), NICE 정책에 의해 사용되는 CPU 사용률(ni), 사용되지 않은 CPU의 미사용률(id), 입출력 대기상태의 사용률(wa)
Cpu(s):  2.4%us,  0.3%sy,  0.0%ni, 97.0%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st


- Memory
전체 물리적인 메모리, 사용중인 메모리(used), 사용되지 않는 여유 메모리(free), 버퍼된 메모리(buffers)
Mem:   8140668k total,  7900820k used,   239848k free,  3074544k buffers 

전체 스왑 메모리, 사용중인 스왑 메모리, 남아있는 스왑메모리, 캐싱메모리
Swap:  8349692k total,    13476k used,  8336216k free,  3792984k cached 


세부정보 필드명
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    * PID : 프로세스 ID (PID)
    * USER : 프로세스를 실행시킨 사용자 ID
    * PRI : 프로세스의 우선순위 (priority)
    * NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
    * VIRT : 가상 메모리의 사용량(SWAP+RES)
    * RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
    * SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
    * S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]
    * %CPU : 프로세스가 사용하는 CPU의 사용율
    * %MEM : 프로세스가 사용하는 메모리의 사용율
    * COMMAND : 실행된 명령어
 

[명령 실행 후 사용하는 옵션들]
1 :  cpu 갯수별 사용량 보기
shift + m : 메모리 사용량이 큰 순서로 정령
shift + p : CPU 사용량이 큰 순서로 정렬
shift + t : 실행시간이 큰 순서로 정렬
k : 프로세스  kill  - k 입력 후 종료할 PID 입력 signal을 입력하라고 하면 kill signal인 9를 입력
c : 명령인자 표시/비표시
space bar : refresh
u : 입력한 유저의 프로세스만 표시 - which u




Posted by 김득은

posted by DB,MW,OS OSSW(Open Source System SoftWare

1. 에러 메시지:

daemon[PID]: warning: can't get client address: Connection reset by peer


2. 원인:

- C/S 구조에서의 TCP 통신은 기본적으로 3-way handshake 방식을 통해 서로 세션을 연결하게 되는데, SYN/ACK 시퀀스가 Connection 이 완료되기 전에 torn down(해체) 되어 daemon source system 을 확인할 수 없을 때 발생


- unauthorized user  daemon 을 통해 해당 시스템에 접근하려 했다가 정상적인 절차로 Connection 이 맺어지기 전에 세션이 terminate 되면 발생

- 서버에서 취약점 확인을 위한 스캔 시 발생


3. 조치 방안:

- 단순 경고성 메시지이므로 조치 필요 없음


4. 참조 URL:

http://www.linuxvoodoo.com/resources/security/enemy2

http://h30499.www3.hp.com/t5/System-Administration/warning-can-t-get-client-address-Connection-reset-by-peer/td-p/4397085#.VFq0_fmDDNA

posted by 박현명

1. segfault 의미

- segmentation fault

- the application is trying to access a memory area that belongs to the OS or some other program. The memory management unit in the CPU stops the operation and triggers an exception. The standard segfault exception handler in the kernel kills the program.

- the program probably tried to use an uninitialized pointer, which has a value NULL


2. segfault 예

- scagent[1569]: segfault at 7f2ecca29fc8 ip 00000039ff64432a sp 00007f2ecca29fd0 error 6 in libc-2.12.so[39ff600000+18a000]

- epi_alert_svr[26620]: segfault at 0 ip 00000000004142db sp 00002af6e33efd20 error 4 in epi_alert_svr[400000+1c000]


3. segfault 원인

- 잘못된 메모리 공간에 쓰기 시도(허용되지 않은 메모리 영역에 접근을 시도, 허용되지 않은 방법으로 메모리 영역에 접근을 시도). 예를 들어, 읽기 전용 영역에 어떤 내용을 쓰려고 시도하거나, 운영 체제에서 사용하는 영역에 다른 내용을 덮어쓰려 하는 경우

- 메모리 문제

- 하드디스크에 배드 섹터가 있어도 발생

- 개발 소스 아키텍처 관련 문제


4. segfault 항목의 의미

- ip(rip): instruction pointer. ie. where the code which is trying to do this lives

- sp(rsp): stack pointer

- at: address. (it's likely that 10 and 11 are offsets from a pointer we expect to be set to a valid value but which is instead pointing to 0)

- error: value of page fault error code, ie. last error code which was reported by a syscall

- [39ff600000+18a000]: starting address and size of virtual memory area where offending object was mapped at the time of crash


5. segfault error 넘버의 의미

- 4: The cause was a user-mode read resulting in no page being found.(also known as a null pointer dereference)

     4 is EINTR (interrupted system call)

- 6: The cause was a user-mode write resulting in no page being found.


6. segfault 조치 방법

If possible, have your application developer produce a version of the application that includes debug information. If the application is compiled using gcc, this is as simple as adding the "-g" option to the compilation commands. 


Before starting the application, run "ulimit -c unlimited". This allows the segfault handler to produce a core dump file when the segfault handler is triggered. This file contains all the memory used by the application, so it might be very big.


Then your application developer needs to run a debugger program on the application and the core file. If the application was compiled with debug information, the debugger can identify exactly on what line of the source code the error happened. The developer can also use the debugger to examine the values of any variables at the time of the error. The debugger has many other features which might be useful too. If your developer does not know how to use a debugger, he/she should definitely learn it.


For Linux, the most common debugger program is named "gdb" and it is available in most Linux distributions. It is usually in the "development tools" category of the distribution's package collection.


7. 참조 URL

- http://rgeissert.blogspot.kr/2013/07/explaining-segmentation-fault-errors.html

- http://rgeissert.blogspot.kr/p/segmentation-fault-error.html

- http://stackoverflow.com/questions/2549214/interpreting-segfault-messages

- http://adnoctum.tistory.com/387

posted by 박현명
2014.10.31 21:01 3. OS이야기

grub.conf

 


grub 관련 파일은 아래와 같다.

/boot/grub/grub.conf      #GRUB 설정파일
/sbin/grub                #GRUB 명령어 쉘

이중에서 /boot/grub/grub.conf 에 대해서 알아보자.

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title SULinux Server (2.6.18-92.el5PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ vga=771
        initrd /initrd-2.6.18-92.el5PAE.img
title SULinux Server-base (2.6.18-92.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ vga=771
        initrd /initrd-2.6.18-92.el5.img

위내용 무엇을 의미하는지 알아보도록 하자.

default=0

초기 grub 화면에서 아무런 선택을 하지 않았을 경우에 어느 쪽으로 부팅을 할 것인지 정하는 것이다.
이 경우에는 0 이 SULinux Server (2.6.18-92.el5PAE) 이고 1이 SULinux Server-base (2.6.18-92.el5) 이다.

timeout=5

초기 grub 화면에서 default를 자동으로 적용시키기 전에 바꿀 수 있는 시간을 지정할 수 있다. 초 단위로 적을 수 있으며 보다시피 5초를 기다릴 수 있게 되어있다.

splashimage=(hd0,0)/grub/splash.xpm.gz

splashimage는 grub화면에서 메뉴와 함께 보여지는 이미지를 선택하는 것이다.

(hd0,0)/grub/splash.xpm.gz 란?

앞에 기재되어 있는 (hd0,0) 은 hd0 즉 0번디스크를 의미한다. 그리고 뒤의 0은 0번 파티션, 리눅스는 0번부터 시작한다.
0번디스크의 0번파티션은 무엇일까? 우리는 리눅스를 설치하며 진행한 파티션 설정에서 무엇을 가장 먼저 잡는가?
십중팔구는 /boot 를 먼저 잡을 것이다. (hd0,0) 은 바로 /boot 를 의미하는 것이다.
이제 (hd0,0)/grub/splash.xpm.gz 란 /boot/grub/splash.xpm.gz 라는 것을 알 수 있을 것이다.

hiddenmenu

위 설정을 하게 되면 기본적으로 grub 부트로더를 보여주지 않는다.
부팅시 grub 화면에서 대기시간만 나오고 따로 다른화면들은 나오지 않는다. 설정을 하려면 아무키나 누르라고 한다.
그 화면을 출력시키는게 이 설정인 것이다. timeout 설정과 동시에 사용되어야 한다.

title SULinux Server (2.6.18-92.el5PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ vga=771
        initrd /initrd-2.6.18-92.el5PAE.img
title SULinux Server-base (2.6.18-92.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ vga=771
        initrd /initrd-2.6.18-92.el5.img

이 것은 같은 설정이 2번 반복된 것이므로 한번만 설명한다.

title SULinux Server (2.6.18-92.el5PAE)

grub 화면에서 이미지와 함께 보이는 메뉴이다. OS 를 선택시에 출력되는 글을 지정하는 것이다.

        root (hd0,0)

부트 이미지가 어디에 존재하는지 에 대한 설정이다.
GRUB가 리눅스로 부팅하기 위해 필요한 파일들을 읽어들이기 위해 /로 인식할 파티션을 의미하며
앞서 말한바와 같이 (hd0,0) 은 /boot 라고 보면 된다. 0번디스크의 0번 파티션.

        kernel /vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ vga=771


커널 이미지가 저장된 위치(/boot 파티션에서 확인가능)와 최상위 루트파티션(/)의 디바이스명을 등록한다. vga 는 해상도를 의미한다.

        initrd /initrd-2.6.18-92.el5PAE.img

/boot 디렉토리에 저장되어 있는 initrd 파일을 지정하는 것이다.


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1745

 

write by 허시영

posted by DB,MW,OS OSSW(Open Source System SoftWare

1. lsof 란??

 list open files 란 의미로, 말그대로 열려진 파일을 보는 명령어 이다.

 Unix,Linux 에서 시스템에서 구동되고 있는 프로세스에 의해서 열려진 파일을 확인 할수 있다.

 유닉스 계열의 OS 는 모든걸 파일로 관리 하기때문에, 소켓 및 port 도 가능하다

 

2. lsof 옵션 및 사용법

lsof --help 를 치면 아래와 같이 옵션 및 사용법을 볼수 있다. 
  usage: [ -?abChlnNOPRstUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-f [cfgGn] ] 

            [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t] ] 
            [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]


    lsof 의 옵션 
        -?, -h    list help
        -a        AND selections (OR)
        -d        s select by FD set
        -D        D ?|i|b|r|u[path]
        +|-f        -files +filesys
        -l        list UID numbers
        -n        no host names
        -N        select NFS files
        -s        list file size
        -t        terse listing
        -T        disable TCP/TPI info
        -v        display version info
        -V        verbose search
        -F [f]    select fields;-F? for help
        -o o        o 0t offset digits (8)
        -S [t]    t second stat timeout(15)
        -i i        select by IPv4 address: [proto][@host|addr][:svc_list|port_list]
        +|-r [t]    repeat every t seconds (15);
                + until no files, - forever
        -b        avoid kernel blocks
        -c c        list command c
        -P        no port names
        -i        select IPv4 files
        -p s        select by PID set
        -C        no kernel name cache
        +|-w        Warnings (+)
        -R        list paRent PID
        -k k        kernelsymbols (/dev/ksyms)
        -U        select Unix socket
        -u s        exclude(^)/select login/UID s
        -m m        kernel memory (/dev/kmem)
        +|-M        portMap registration (-)
        --         end option scan
        -g [s]    select by process group ID set and print process group IDs
        names    select named files or files on named file systems 

 

3. lsof 이용방법

 

 특정 file 을 액세스 하는 프로세스 확인

 # lsof /var/log/messages
        COMMAND  PID  USER   FD   TYPE     DEVICE SIZE     NODE   NAME

        rsyslogd  17648    root  1w    REG      202,6   1263 1229982  /var/log/messages

 

  특정 디렉토리를 엑세스 하는 프로세스 확인

 # lsof /var

COMMAND     PID      USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

dhclient   1149      root    3w   REG  202,6     1525  491525 /var/lib/dhclient/dhclient-eth0.leases

pcbind    1202       rpc    3r   REG  202,6        0 1269785 /var/run/rpcbind.lock

rpc.statd  1238   rpcuser  cwd    DIR  202,6     4096  491594 /var/lib/nfs/statd

rpc.statd  1238   rpcuser    5w   REG  202,6        5 1269788 /var/run/rpc.statd.pid

hald       1358 haldaemon  mem    REG  202,6   325120 1294337 /var/cache/hald/fdi-cache

automount  1424      root    9u  FIFO  202,6      0t0 1269796 /var/run/autofs.fifo-misc

automount  1424      root   15u  FIFO  202,6      0t0 1269797 /var/run/autofs.fifo-net

rpc.mount  1470      root  cwd    DIR  202,6     4096  491590 /var/lib/nfs

rpc.mount  1470      root    6r   REG  202,6      294  491859 /var/lib/nfs/etab

httpd      1530      root    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd      1530      root    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

crond      1546      root    3u   REG  202,6        5 1269802 /var/run/crond.pid

httpd     14221    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14221    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14222    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14222    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14223    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14223    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14224    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14224    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14225    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14225    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14226    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14226    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14228    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14228    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

httpd     14229    apache    2w   REG  202,6      245 1236995 /var/log/httpd/error_log

httpd     14229    apache    7w   REG  202,6   110412 1236994 /var/log/httpd/access_log

rsyslogd  17648      root    1w   REG  202,6     1263 1228892 /var/log/messages

rsyslogd  17648      root    2w   REG  202,6  4024612 1228854 /var/log/cron

rsyslogd  17648      root    4w   REG  202,6    46463 1228894 /var/log/secure

rsyslogd  17648      root    5w   REG  202,6    22173 1228880 /var/log/maillog

 

 

 

 특정 프로세스가 엑세스 하는 file 확인

  # lsof -p 17648

COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF       NODE NAME

rsyslogd 17648 root  cwd    DIR              202,3     4096          2 /

rsyslogd 17648 root  rtd    DIR              202,3     4096          2 /

rsyslogd 17648 root  txt    REG              202,3   391968    1171619 /sbin/rsyslogd

rsyslogd 17648 root  mem    REG              202,3   156872      32775 /lib64/ld-2.12.so

rsyslogd 17648 root  DEL    REG              202,3               32862 /lib64/libz.so.1.2.3

rsyslogd 17648 root  mem    REG              202,3   145720      32836 /lib64/libpthread-2.12.so

rsyslogd 17648 root  mem    REG              202,3    22536      32843 /lib64/libdl-2.12.so

rsyslogd 17648 root  mem    REG              202,3    47064      32847 /lib64/librt-2.12.so

rsyslogd 17648 root  mem    REG              202,3    93224      32839 /lib64/libgcc_s-4.4.7-20120601.so.1

rsyslogd 17648 root  mem    REG              202,3  1922152      32820 /lib64/libc-2.12.so

rsyslogd 17648 root  mem    REG              202,3    26984      33148 /lib64/rsyslog/lmnet.so

rsyslogd 17648 root  mem    REG              202,3    65928      32797 /lib64/libnss_files-2.12.so

rsyslogd 17648 root  mem    REG              202,3   340568      33147 /lib64/rsyslog/imuxsock.so

rsyslogd 17648 root  mem    REG              202,3    27232      33141 /lib64/rsyslog/imklog.so

rsyslogd 17648 root    0u  unix 0xffff8804f2b2c080      0t0    6617655 /dev/log

rsyslogd 17648 root    1w   REG              202,6     1263    1228892 /var/log/messages

rsyslogd 17648 root    2w   REG              202,6  4026633    1228854 /var/log/cron

rsyslogd 17648 root    3r   REG                0,3        0 4026532299 /proc/kmsg

rsyslogd 17648 root    4w   REG              202,6    46463    1228894 /var/log/secure

rsyslogd 17648 root    5w   REG              202,6    22173    1228880 /var/log/maillog

  특정 포트를 사용하는 프로세스 확인

  # lsof -i TCP:22

COMMAND   PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME

sshd     2038     root    3u  IPv4 335060822      0t0  TCP *:ssh (LISTEN)

sshd     2038     root    4u  IPv6 335060824      0t0  TCP *:ssh (LISTEN)

sshd    11173     root    3u  IPv4 651519037      0t0  TCP c-apm-pk1-a01.csdfcloud.internal:ssh->10.222.111.2:60892 (ESTABLISHED)

sshd    11228 82022303    3u  IPv4 651519037      0t0  TCP c-apm-pk1-a01.csdfcloud.internal:ssh->10.222.111.2:60892 (ESTABLISHED)

sshd    19482     root    3u  IPv4 650944484      0t0  TCP c-apm-pk1-a01.csdfcloud.internal:ssh->10.222.111.2:56506 (ESTABLISHED)

sshd    19484 82022303    3u  IPv4 650944484      0t0  TCP c-apm-pk1-a01.csdfcloud.internal:ssh->10.222.111.2:56506 (ESTABLISHED)

 

  특증 데몬이 사용하는 file 확인

  #lsof -c httpd

 

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME

httpd    1530   root  cwd    DIR  202,3     4096         2 /

httpd    1530   root  rtd    DIR  202,3     4096         2 /

httpd    1530   root  txt    REG  202,5   354816    688396 /usr/sbin/httpd

httpd    1530   root  mem    REG  202,5     9488    213039 /usr/lib64/apr-util-1/apr_ldap-1.so

httpd    1530   root  mem    REG  202,3    65928     32797 /lib64/libnss_files-2.12.so

httpd    1530   root  mem    REG  202,5    10416    213157 /usr/lib64/httpd/modules/mod_version.so

httpd    1530   root  mem    REG  202,5    27312    213063 /usr/lib64/httpd/modules/mod_cgi.so

httpd    1530   root  mem    REG  202,5    22992    213130 /usr/lib64/httpd/modules/mod_disk_cache.so

httpd    1530   root  mem    REG  202,5    10384    213154 /usr/lib64/httpd/modules/mod_suexec.so

httpd    1530   root  mem    REG  202,5    39664    213124 /usr/lib64/httpd/modules/mod_cache.so

httpd    1530   root  mem    REG  202,5    14648    213146 /usr/lib64/httpd/modules/mod_proxy_connect.so

httpd    1530   root  mem    REG  202,5    39632    213144 /usr/lib64/httpd/modules/mod_proxy_ajp.so

httpd    1530   root  mem    REG  202,5    31472    213148 /usr/lib64/httpd/modules/mod_proxy_http.so

httpd    1530   root  mem    REG  202,5    35600    213147 /usr/lib64/httpd/modules/mod_proxy_ftp.so

httpd    1530   root  mem    REG  202,5    27160    213145 /usr/lib64/httpd/modules/mod_proxy_balancer.so

httpd    1530   root  mem    REG  202,5    85328    213143 /usr/lib64/httpd/modules/mod_proxy.so

httpd    1530   root  mem    REG  202,5    60464    213095 /usr/lib64/httpd/modules/mod_rewrite.so

 

 

4. 운영중에 특정 데몬(jboss등) 을 기동 하려고 하는데 port(5440)를 이미 다른 프로세스가 사용 중이여서 기동 할수 없다라는 메세지가 나오면 lsof 를 이용하여 해결 할수 있다.

(* lsof -i TCP:5440 )

 

 

write by 허시영

 

posted by DB,MW,OS OSSW(Open Source System SoftWare