'01. operation'에 해당되는 글 33건

  1. 2014.08.06 awk script 기초
  2. 2014.07.23 1024 이하 포트를 일반 사용자로 서비스 (setcap / getcap)
  3. 2012.09.19 iso 이미지를 통해 yum update 방법 (yum repository)
  4. 2012.09.12 lvm 구성
  5. 2012.09.12 linux network bonding
  6. 2012.05.08 synergy를 통한 키보드 마우스 모니터 공유 (KVM)
  7. 2012.03.23 iostat 모니터링 및 튜닝 포인트 잡기
  8. 2011.10.11 CentOS 5.5 버전 이상에서 sata를 잡지 못하는 경우우
  9. 2010.07.15 리눅스 램 드라이브 (램 디스크)
  10. 2010.07.01 HA를 구성하기위한 이야기..(스토리지)
  11. 2010.04.08 단순한 Active - Stand by 구조..
  12. 2010.04.08 고가용성 글을 시작하면서....(HA)
  13. 2010.04.06 서버 이중화? HA? 이것들은 뭥미? (1)
  14. 2010.04.02 Fedora 10에서 Nateon 한글이 입력되지 않아요?
  15. 2009.08.24 듀얼모니터 부활을 경축 하며...(응?)
  16. 2009.08.11 xwindow 혹은 gnome, kde에서 듀얼모니터 잡기.
  17. 2009.08.10 kernel 에러를 뿜어내 Fedora
  18. 2009.08.06 현재 사용하고 있는 Fedora 10 Version 바탕화면 스크린샷!
  19. 2009.07.27 awk로 합계를 뽑아내보자.
  20. 2009.07.27 문자열 변경
  21. 2009.07.27 linux 메모리 계산
  22. 2009.07.27 Server 부하량 측정 및 성능 검토
  23. 2009.07.27 ps
  24. 2009.07.27 sar
  25. 2008.09.08 linux 일반 (mount)
  26. 2008.09.08 Linux 일반 (system shutdown, runlevel)
  27. 2008.06.07 lost+found 디렉토리는 무엇을 하는 녀석인고?
  28. 2008.05.27 linux disk swap 늘리기
  29. 2008.05.27 mke2fs 사용방법? (이런것도 포스팅해도 되려나?)
  30. 2008.05.27 linux hdparm 사용과 fdisk 명령어

Awk 자주 쓰게 되는 쉘상에서 데이터 조작이 필요 경우 입니다. (물론 awk, sed, grep 등등 조합으로 쓰기도 하지만)

 

히스토리는 관련 검색을 하면 많이 나오므로, 실무에서 사용 가능한 부분만 정리합니다.

 

알아야 단축어

FS

필드 분리자

awk -f "FS"

print

인쇄명령 (화면 출력)

Awk '{print $0}'

printf

Print 확장 (깔끔한 출력?) - 여타 다른 언어와 마찬가지로 char=c, int=d 제공

echo "awk" |awk '{printf "|%-15s|\n",$1}'

echo "awk" |awk '{printf "|%15s|\n",$1}'

OFMT

숫자 포맷 제어 (output format) : default %.6g (소수점 6자리 혹은 위로 6자리)

 

NR

레코드 번호

awk '{print NR" "$0}'

NF

현재 레코드에서 전체 필드

awk '{print NF}'

FNR

현재 파일의 전체 레코드

Awk '{print FNR}'

IGNORECASE

대소 무시

Awk -F: "{IGNORECASE=1}"

 

 

 

 

사용방법

 #>awk 'pattern' filename'

 

샘플 파일 (1.txt)

Kim 123 11/1/2 333

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

  1. Awk 기본 구분자

Tab 문자열 혹은 공백입니다.

 

예제 > awk 1.txt '{print $1}'

          Kim

          Wang

Kim

123

11/1/2

333

Wang

321

33/2/12

222

$1

$2

$3

$4

 

처럼 컬럼이 나눠져 들어갑니다.

 

  1. 특정 패턴을 구분자로 경우

예제 > awk -F"/" 1.txt '{print $1}'

         Kim 123 11

 Wang 321 33

Kim 123 11

1

2 333

Wang 321 33

2

12 222

$1

$2

$3

 

시스템 명령어 조합으로 사용하기 ( | :파이프라인을 사용)

예제 > df|awk '{print $6}'

Mounted

/

/dev/shm

/data

/home

df 정보가 아래 처럼 나오는데 여기서 문자열을 구분해 $6번째 컬럼을 보여주는 예제입니다.

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             28898428   2552004  24878472  10% /

tmpfs                  1027296         0   1027296   0% /dev/shm

/dev/sda3             10321208   3427544   6369376  35% /data

/dev/sda2             61927420  42257352  16524340  72% /home

 

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

Awk 라인단위로 읽어 $0라는 내부변수에 담습니다. ( awk '{print $0' filename 라인 전체 출력)

 

awk -f 사용법

 awk -f (awk명령어 파일) filename

 

 예제> awk.run

{print $1" Hello~~~~"}

{print $1 $2}

 실행 > awk -f awk.run 1.txt

awk -f awk.run 1.txt

Kim Hello~~~~

Kim123

Wang Hello~~~~

Wang321

  라인에 대해 예제의 awk.run 파일을 적용하여 나타나도록 합니다.

 

grep 명령어 대용으로 awk 사용

예제> awk '/Kim/ {print $1 "   :" NR}' x

Kim   :1

        / / 부분은 정규식 표현이 가능하다

예제> awk '/^[K1]/ {print $1 "   :" NR}' 1.txt

Kim   :1

1Kim   :3

예제 > awk '/Wang/,/1Kim/ {print $0}' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

Awk 필드 매치 (~)

예제> awk '$1~/Kim/{print $0 ":" NR}' 1.txt

Kim 123 11/1/2 333:1

1Kim 222 33/11/33 333:3

$1필드에서 Kim 포함된 라인전체와 줄번호 출력

예제> awk '$1!~/Kim/{print $0 ":" NR}' 1.txt

Wang 321 33/2/12 222:2

$1필드에서 Kim 들어가 있지 않은 라인 전체와 줄번호 출력

 

비교연산 (클까? 작을까? 같을까? 아니면 정규표현식? 위에 필드 매치 ~ 참조)

예제 >awk '$2 > 200' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

 

If

 usage: (A ? B : C;)

{

if ($1 > $2)

x=$1

else

x=$2

}

 

예제> awk '{x=($2 > $4) ? $2 : $4; print x}' 1.txt

333

321

333

  1. $2번과 $4필드값을 비교
  2. $2 필드가 $4보다 크면
  3. 물음표 ? $2값을 x 할당
  4. 그렇지 않으면 : 뒤의 $4값을 x 할당

 

특정 컬럼 전체 SUM하기

예제> awk '{sum+=$2} END {print sum}' 1.txt

특정 컬럼끼리 SUM하기

예제> awk '{sum=$2+$4; print sum}' 1.txt

Awk에서 특정 변수 선언해서 사용하기

예제> awk1.run (파일생성)

         {print $var}

        awk -f awk1.run -v var=2 1.txt

123

321

222



아직은 기초입니다...기초..=_=;;Awk 자주 쓰게 되는 쉘상에서 데이터 조작이 필요 경우 입니다. (물론 awk, sed, grep 등등 조합으로 쓰기도 하지만)

 

히스토리는 관련 검색을 하면 많이 나오므로, 실무에서 사용 가능한 부분만 정리합니다.

 

알아야 단축어

FS

필드 분리자

awk -f "FS"

print

인쇄명령 (화면 출력)

Awk '{print $0}'

printf

Print 확장 (깔끔한 출력?) - 여타 다른 언어와 마찬가지로 char=c, int=d 제공

echo "awk" |awk '{printf "|%-15s|\n",$1}'

echo "awk" |awk '{printf "|%15s|\n",$1}'

OFMT

숫자 포맷 제어 (output format) : default %.6g (소수점 6자리 혹은 위로 6자리)

 

NR

레코드 번호

awk '{print NR" "$0}'

NF

현재 레코드에서 전체 필드

awk '{print NF}'

FNR

현재 파일의 전체 레코드

Awk '{print FNR}'

IGNORECASE

대소 무시

Awk -F: "{IGNORECASE=1}"

 

 

 

 

사용방법

 #>awk 'pattern' filename'

 

샘플 파일 (1.txt)

Kim 123 11/1/2 333

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

  1. Awk 기본 구분자

Tab 문자열 혹은 공백입니다.

 

예제 > awk 1.txt '{print $1}'

          Kim

          Wang

Kim

123

11/1/2

333

Wang

321

33/2/12

222

$1

$2

$3

$4

 

처럼 컬럼이 나눠져 들어갑니다.

 

  1. 특정 패턴을 구분자로 경우

예제 > awk -F"/" 1.txt '{print $1}'

         Kim 123 11

 Wang 321 33

Kim 123 11

1

2 333

Wang 321 33

2

12 222

$1

$2

$3

 

시스템 명령어 조합으로 사용하기 ( | :파이프라인을 사용)

예제 > df|awk '{print $6}'

Mounted

/

/dev/shm

/data

/home

df 정보가 아래 처럼 나오는데 여기서 문자열을 구분해 $6번째 컬럼을 보여주는 예제입니다.

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             28898428   2552004  24878472  10% /

tmpfs                  1027296         0   1027296   0% /dev/shm

/dev/sda3             10321208   3427544   6369376  35% /data

/dev/sda2             61927420  42257352  16524340  72% /home

 

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

Awk 라인단위로 읽어 $0라는 내부변수에 담습니다. ( awk '{print $0' filename 라인 전체 출력)

 

awk -f 사용법

 awk -f (awk명령어 파일) filename

 

 예제> awk.run

{print $1" Hello~~~~"}

{print $1 $2}

 실행 > awk -f awk.run 1.txt

awk -f awk.run 1.txt

Kim Hello~~~~

Kim123

Wang Hello~~~~

Wang321

  라인에 대해 예제의 awk.run 파일을 적용하여 나타나도록 합니다.

 

grep 명령어 대용으로 awk 사용

예제> awk '/Kim/ {print $1 "   :" NR}' x

Kim   :1

        / / 부분은 정규식 표현이 가능하다

예제> awk '/^[K1]/ {print $1 "   :" NR}' 1.txt

Kim   :1

1Kim   :3

예제 > awk '/Wang/,/1Kim/ {print $0}' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

Awk 필드 매치 (~)

예제> awk '$1~/Kim/{print $0 ":" NR}' 1.txt

Kim 123 11/1/2 333:1

1Kim 222 33/11/33 333:3

$1필드에서 Kim 포함된 라인전체와 줄번호 출력

예제> awk '$1!~/Kim/{print $0 ":" NR}' 1.txt

Wang 321 33/2/12 222:2

$1필드에서 Kim 들어가 있지 않은 라인 전체와 줄번호 출력

 

비교연산 (클까? 작을까? 같을까? 아니면 정규표현식? 위에 필드 매치 ~ 참조)

예제 >awk '$2 > 200' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

 

If

 usage: (A ? B : C;)

{

if ($1 > $2)

x=$1

else

x=$2

}

 

예제> awk '{x=($2 > $4) ? $2 : $4; print x}' 1.txt

333

321

333

  1. $2번과 $4필드값을 비교
  2. $2 필드가 $4보다 크면
  3. 물음표 ? $2값을 x 할당
  4. 그렇지 않으면 : 뒤의 $4값을 x 할당

 

특정 컬럼 전체 SUM하기

예제> awk '{sum+=$2} END {print sum}' 1.txt

특정 컬럼끼리 SUM하기

예제> awk '{sum=$2+$4; print sum}' 1.txt

Awk에서 특정 변수 선언해서 사용하기

예제> awk1.run (파일생성)

         {print $var}

        awk -f awk1.run -v var=2 1.txt

123

321

222

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > iii. Shell Script' 카테고리의 다른 글

awk script 기초  (0) 2014.08.06
awk로 합계를 뽑아내보자.  (0) 2009.07.27
문자열 변경  (0) 2009.07.27
Posted by 신머루군
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 신머루군

우연히 본 글인데...


서버에 gcc설치가 안되었을경우 이걸 설치하기 위해서 별별짓을 다해야한다..

(의존성 문제....결국 설치는 했으나 삽질에 소요되어진 시간은 약 1시간 넘게..)


그러다가 발견한 방법 iso를 통해 yum을 사용해보자..


1. iso이미지 마운트

# yum install createrepo (#구버전에서는 yum-arch 였다)

# mkdir -p /media/1

# mount -o loop /path/to/os.iso /media/1


2.  repodata 데이터 생성을 위한 작업 (rpm정보를 취합해 xml형태로 변환)

# cd /media/1

# createrepo . #read-only의 경우는 createrepo가 되어지지 않을수도 있습니다.


3. 레파토리지 생성

# vi /etc/yum.repos.d/iso.repo


아래 내용 추가

[My ISO Repository]

baseurl=file:///media/1

enabled=1

#gpgcheck=0 #checksum 오류시 해당 주석을 풀어주세요

4. yum 관련되어진 캐쉬 날리고~

# yum clean all


5. yum쓰기..

# yum install package-name


제길 미리 알았다면 이 삽질 안했어도 되었는데...

사실 yum이 편하긴 하지만, 자주 쓰지도 않다보니 그저 삽질만 했었다.. 근데 순서가 맞나?

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

iso 이미지를 통해 yum update 방법 (yum repository)  (0) 2012.09.19
lvm 구성  (0) 2012.09.12
리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
Posted by 신머루군

※경고 : 아래 명령어들은 디스크를 초기화할수 있으니 사전에 충분한 인지가 필요합니다.


※본 문서는 Redhat 5.x 버전이 기준이 되어집니다

redhat 4.x 버전부터는 LVM2를 지원하고 있으며 글을 쓰는시점에서 LVM1 언급하지 않습니다. (http://www.redhat.com/magazine/009jul05/features/lvm2/)

 


(참고 : https://access.redhat.com/knowledge/docs/ko-KR/Red_Hat_Enterprise_Linux/5/pdf/Cluster_Logical_Volume_Manager/Red_Hat_Enterprise_Linux-5-Cluster_Logical_Volume_Manager-ko-KR.pdf)


LVM구축시 사용되어지는 용어와 명령어


physical medi) : 물리적 하드 디스크를 말한다. (/dev/hda, /dev/sda)

*PV(Physical Volume) : 파티션을 나눈 것을 말한다(/dev/ hda1, /dev/sda2)

PE(Physical Extents) : 하드 디스크를 제어할 때 블럭(PE) 단위로 제어한다.(PV의 크기가 1G이고 PE 블록의 크기가 4M 이면 PE는 모두 250개)

*VG(Volume Group) : PV로 되어 있는 파티션을 그룹으로 설정한다. (PV를 LVM에 쓸려면 LINUX에서는 8e type이다)

*LV(Logical Volume) : 마운트 포인트로 사용할 실질적인 파티션이다.


위에서 * 되어진 부분이 실제로 LVM작업시에 사용되어지는 부분들이다.


LVM1과 LVM2의 차이.

1. 허용용량 차이입니다. LVM1은 테라바이트, LVM2는 엑사바이트 지원이 가능합니다.

※키로 -> 메가 -> 기가 -> 테라 -> 페타 -> 엑사 -> 제타 -> 요타

2. GPFS 파일 시스템 지원 여부

3. 스트라이핑 저장 방식

4. 최대 PV 개수


SoftRaid + LVM 구성

LVM에서 미러기능을 제공을 한다(!) - 그런데 왜 softRaid가 별도로 존재하는것일까? (보통 /dev/md0가 softRaid이다) 

데이터의 보존을 이유로 SoftRaid + LVM을 같이 사용하기도 한다.

 

LVM 논리적 볼륨

선형 (linear) : 서로용량이 틀린 PV를 결합하여 사용 (가장 일반적인 방법)

스트파이프 (striped) : 디스크에 저장시 RR방식을 채택하여 저장 (*I/O 분산에 유리 : 즉 개별적인 PV에 저장)

미러 (mirrored) : 하나의 미러 leg에 장애가 발생할 경우, 논리 볼륨은 선형 볼륨으로 되어 액세스 가능



LVM 마운트 따라하기


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

물리 볼륨 관리 (PV)

파티션 유형 설정 : pvcreate를 사용할수 있도록 setting

fdisk명령을 통해 Id type를 8e로 변경하는 작업 (#8e = Linux LVM)


#>fdisk /dev/sdb


The number of cylinders for this disk is set to 79408.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

  (e.g., DOS FDISK, OS/2 FDISK)


Command (m for help): n

Command action

  e  extended

  p  primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-79408, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-79408, default 79408):


Command (m for help): t

Partition number (1-4): 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks. 


위 처럼 작업을 하고 나와 fdisk로 확인하면 아래 처럼 보여질겁니다.

# fdisk -l


Disk /dev/sda: 40.9 GB, 40982151168 bytes

16 heads, 63 sectors/track, 79408 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes


  Device Boot    Start      End    Blocks  Id  System

/dev/sda1            1      389    196024+  8e  Linux LVM 


그럼 실제 pv를 생성합니다.

#>pvcreate /dev/sda1

vgscan -- reading all physical volumes (this may take a while...)

vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created

vgscan -- WARNING: This program does not do a VGDA backup of your volume group 


pvcreate -- ERROR: "/etc/lvmtab" doesn't exist; please run vgscan 혹시 오류가 나면 아래 명령어를 통해 PV를 만들어줍니다.

#>touch /etc/lvmtab

#>vgscan

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

볼륨 그룹 (디스크 묶기)

#>vgcreate vg01 /dev/sda1 (vg01이라는 볼륨그룹을 생성합니다, 묶는 파티션은 sda1만 생성합니다)

vgcreate -- INFO: using default physical extent size 4 MB

vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte

vgcreate -- doing automatic backup of volume group "vg01"

vgcreate -- volume group "vg01" successfully created and activated 


#>vgdisplay (볼륨 생성 확인)

--- Volume group ---

VG Name              vg01

VG Access            read/write

VG Status            available/resizable

VG #                  0

MAX LV                256

Cur LV                0

Open LV              0

MAX LV Size          255.99 GB

Max PV                256

Cur PV                2

Act PV                2

VG Size              500 MB #실제 VG에서 사용되어질 용량

PE Size              4 MB

Total PE              92

Alloc PE / Size      0 / 0

Free  PE / Size      92 / 368 MB

VG UUID              Ywc9nQ-8tzD-vPdN-1LR2-iVcz-1b65-OJ6ssO 

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

로지컬 파티션(마운트 포인트 만들기)

#>lvcreate -L 500M -n data01 vg01

lvcreate -- doing automatic backup of "vg01"

lvcreate -- logical volume "/dev/vg01/data01" successfully created 


#lvcreate에서 미러링, 스트라이핑, 선형 방식 선택이 가능하며 "-n" 옵션을 따른다

미러링 : cluster에 한....

선형 : 일반적인 익스텐드 맵핑

스트라이핑 : RR방식의 데이터 저장

ex> 스트라이핑 : lvcreate -n stripedlv -i 2 -l 64 -L 500M data01 vg01



#>lvscan 확인하기 

lvscan -- ACTIVE            "/dev/vg01/data01" [500 MB]

lvscan -- 1 logical volumes with 500 MB total in 1 volume group

lvscan -- 1 active logical volumes


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

포맷팅 (실제 마운트 하기 위해서 ext3 혹은 ext4로 포맷팅합니다)

#>mkfs.ext3 /dev/vg01/data01

#>mount /dev/vg01/data01 /data

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

파티션 추가 (볼륨추가)

순서는 아래와 같습니다.

1. PE를 잡아주고 (맨 처음 fdisk작업)

2. VG에 extend

 #>vgextend vg01 /dev/sdc1

vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte

vgextend -- doing automatic backup of volume group "vg02"

vgextend -- volume group "vg02" successfully extended 

3. vg확인 

 #>vgscan에서 VG Size확인

4. lv 늘리기

 #>lvextend -L 용량 /dev/vg01/data01

lvextend -- extending logical volume "/dev/vg02/lvol1" to 500 MB

lvextend -- doing automatic backup of volume group "vg02"

lvextend -- logical volume "/dev/vg02/lvol1" successfully extended 

#>resize2fs /dev/vg01/data01#왜 이것에 대해서 설명한곳이 그다지 없는지는 모르겠다.

5. lv용량 줄이기
#>lvreduce -L 용량 /dev/vg01/data01

============================================================================================
pvcreate : 물리적 볼륨을 생성 (pvcreate /dev/sdc1)
pvmove : 명령으로 데이터를 다른 물리 볼륨으로 옮겨면서 지운다
vgscan : 디스크 볼륨을 검색하여 lvmtab 생성
vgcreate : 볼륨그룹을 생성한다. (vgcreate vg01 /dev/sdc1 /dev/sdc2)
vgdisplay : 볼륨그룹 속성과 정보를 보여준다
vgextend : 볼륨을 확장할때 사용되어진다 (vgextend vg01 /dev/sdd1)
vgcfrestore : 볼륨 그룹에 있는 아카이브에서 모든 물리 볼륨으로 볼륨 그룹의 메타 데이터를 복구
vgrename : 기존의 볼륨 그룹 이름을 변경
vgreduce : vg에서 pv를 제거한다 (vgreduce /dev/sdd1) #선행작업으로 pvmove를 필히 해야한다
vgchange 볼륨그룹 속성을 변경한다 (vgchange -a y vg01 : 볼륨그룹 활성화 vgchange -a n vg01 : 비활성화 vgchange -l 100 vg01 LV의 개수를 100개로 늘린다)
lvcreate : 볼륨그룹안에 LV를 생성한다 (lvcreate -L+500M -l 200 -n data01 vg01 : vg01이라는 VG그룹에서 data01이라는 이름으로 만든다)
lvscan : LV를 찾는다
lvdisplay : LV의 정보를 표현해준다
lvextend : 볼륨그륩을 확장한다 (lvextend -L 300M /dev/vg01/data01)
lvreduce : 볼륨그룹을 축소한다 (lvreduce -L 300M /dev/vg01/data01 ※테스트를 더 해봐야겠지만, 실제로 축소가 되어지지 않는다?) 
vgs : vg정보
lvs : lvm 정보
pvs : pv 정보
============================================================================================
LVM version 1과 LVM version 2 호환은 vgconvert를 통해 가능하며 메타데이터를 변환한다 (단 스냅샷, 클러스터 지원은 제외) 
============================================================================================

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

iso 이미지를 통해 yum update 방법 (yum repository)  (0) 2012.09.19
lvm 구성  (0) 2012.09.12
리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
Posted by 신머루군

linux 네트워크 본딩 (bonding)


본딩의 필요성

 - 본딩을 구성하는 이유는 네트워크 확장(RR) 혹은 네트워크 안정성 향상(AB) 둘중 하나의 목적을 가지고 있습니다.


1. 본딩시 설정을 해야할 파일

/etc - modprobe.conf

/etc/sysconfg - network

/etc/sysconfig/network-scripts - ifcfg-eth0

                                 ifcfg-eth1

                                 ifcfg-bond0



2. modprobe.conf 설정 (추가)

alias bond0 bonding

options bonding mode=1 #mode 1, Active-backup 0, Round-Robin

options bond0 miimon=100 


3. network 설정 (추가)

GATEWAY=게이트웨이주소

GATEDEV=bond0


4. ifcfg-bond0 설정 (일반적으로는 파일을 새로 생성)

DEVICE=bond0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.21.25.148

NETMASK=255.255.252.0


5. ifcfg-eth* 설정 (추가)

MASTER=bond0

SLAVE=yes


※주의사항

1. BONDING device의 MAC는 Master (eth0)의 디바이스를 가지고 올라온다 (MAC체크하는곳에서는 뻘짓할 확률이 높다)

 -> FAIL OVER시에는 MAC이 변경이 되어진다.


2. 1Gb에서는 eth0 -> eth1의 순서대로 service startup 되어지는데 이 경우 AB가 정상동작을 하지 않을수도 있습니다.

 /etc/sysconfig/network-script/ifdown-eth에서 stop script중 "| tac"를 추가함으로써 처리가 가능합니다.


3. bonding device에 MAC를 박아도 되나 tac를 통한 처리를 해야 나중 mac체크로 인한 오류가 없습니다.


※확인 사살

/sys/class/bond0/net 에서 bonding 관련되어진 내용 확인이 가능합니다.

위 파일 수정시에는 vi는 적용되어지지 않으며 echo "1" > net 을 통한 명령어만 가능합니다.



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/v. Gnome2012.05.08 13:24

이번 기회에 synergy를 통한 공유를 하고자 포스팅을 올립니다.


GNU GENERAL PUBLIC LICENSE이며 어디서라도 사용이 가능하리라 볼수가 있을것 같습니다.


환경 : windows 7 x64 , CentOS 5.6 x64

네트워크 : 동일 대역

모니터 : windows 7 듀얼모니터, CentOS 5.6 듀얼모니터도 가능하나 모니터가 부족하여 싱글 모니터를사용

          : 해상도는 각각 모두 틀림


Master Synergy : Windows 7

Client : Linux


마스터설정은 스크린샷



그리고 클라이언트에서는 아래 처럼 실행이 되어집니다.

/usr/bin/synergyc --daemon --name Linux IP주소 (몇가지 옵션이 있습니다)


rc.local로 등록을 하여 restart시에도 붙을수 있겠끔 설정을 해두었습니다.


사용되어진 synergy 버전은 windows 7은 1.3.8 linux는 gcc lib문제로 1.3.2 버전을 사용하였습니다.



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/iv. Kernel2012.03.23 10:58

어플리케이션을 운영하면서 메모리 튜닝, db튜닝, 어플리케이션 튜닝, network 튜닝....까지는 종종 해보았는데 디스크튜닝은 사실상 방치해둔 상태였습니다.

이번에 서비스장비중 디스크쪽 문제가 있어서 디스크 모니터링 방법과 튜닝 포인트를 잡아보려고 합니다...

iostat 값을 보는 모니터링방법
1. iostsat -x 를 통한 모니터링 (사실 -x 옵션이 없어도 되나 보기에 -x가 편합니다)

Device 장치 이름 영문 설명
rrqm/s 초당 읽기 요청 수. 이 메트릭스는 읽기 전송을 위한 병합 요청을 측정합니다. read request per second
wrqm/s 쓰기 요청 수입니다. write request per secend
r/s 초당 읽기 요청 수. number of read
w/s 초당 쓰기 요청 수. write requests 
rsec/s device 초당 읽은 섹터 수. sectors read per second
wsec/s device 초당 기록한 섹터 수. sectors written per second
rkB/s device 초당 읽은 데이터(KB/초). read KB size
wkB/s device 기록된 데이터(KB/초). write KB size
avgrq-sz 읽기 요청의 평균 크기(섹터). average number of sectors per request (for both reads and writes). ie (rsec + wsec) / (r + w)
avgqu-sz 요청 대기열의 평균 길이. avgqu-sz – average queue length in the monitoring interval (in this case 42.79) 
await 이 장치에 대한 I/O 요청의 평균 경과 시간(밀리초). 서비스 시간과 대기열의 대기 시간을 합한 시간입니다. average time that each IO Request took to complete. 
svctm 장치의 평균 서비스 시간(밀리초). average time each IO request took to complete  during the monitoring interval
%util ((Write operation 개수 + Read operation 개수) * 평균 처리 시간)  / 측정 interval util<5%: white
5%<util<35%: green
35%<util<65%: amber
65%<util: red

굳이 영문을 써둔 이유가 번역이나 오역이 생길것 같아서 영문의 간략한 코멘트형식으로 달아둡니다.

문제는 %util값입니다.
영문에 써둔 부분을 보면 65% 이상이면 시스템 부분에 대한 전반적인 점검이 필요하다는 의미이며, 현재 운영하는장비들중 몇몇곳이 디스크 사용량이 늘어나며 util값이 90%를 유지하며 서비스가 되어지고 있습니다.

이에 대한 튜닝포인트는 한글로 설명이 되어져 있는 kernel로 read/write 요청건수와 raid 컨트롤러 관련 메모리 cache를 사용하는 부분입니다.

리눅스 디렉토리 구조를 보게 되어지면 /proc와 /sys 아래에 시스템 정보 및 현재 상황을 얻을수가 있으며 간략하게 튜닝 작업이 가능합니다.

/sys/block/device/queue 에서 설정 변경이 가능합니다
아직까지 정확한 파라미터를 찾지는 못하였으며 변경을 해가며 확인을 해봐야할것 같습니다.

커널관련 옵션들및 환경을 조금 살펴봐야지 할것 같습니다.
커널 관련 문서 : http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/ko/
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/iv. Kernel2011.10.11 08:23

음...사무실에서 노트북이 나와서 기존 데스크탑을 밀고 linux로 다시 복귀 하던중 발견되어진 증상입니다.

문제는 sata가 sdx device로 잡히지 않고, hda로 잡혀지면서 발생이 되어진 부분으로 Centos의 버그로 보여집니다.
(뭐 단순 device이니 무슨 문제가 있느냐 하시겠지만 실제로 데이터 전송률이 헌저히 떨어집니다)

아래는 실제 hda로 잡힌후 hdparm을 돌려보았을때 나타난 수치입니다.

/dev/hda5:
 Timing cached reads:   16028 MB in  2.00 seconds = 8028.10 MB/sec
 Timing buffered disk reads:   14 MB in  3.34 seconds =   4.20 MB/sec
[root@propop /]# hdparm -tT /dev/hda5

참...환장할만한 속도가 나옵니다...

그래서 구글링을 해보니 해결방법을 2가지를 제시하고 있습니다.
1. sata모드로 인식되게끔 CMOS를 변경하라
 -> HDD mode중에 compatible ( 스페링이 맞나? 헷갈린다) 혹은 ahci 모드가 있는데, 기존 compatible가 kernerl 버전이 올라가면서 정상 인식을 못하는 경우가 있다고 한다 (945? 965? mainboard에서 문제가 발생되어진다고 한다)
 -> 나이 케이스는 ahci 모드로 변경하니 쉽게 해결되어진 케이스

2. kernel수정을 하라
-> 커널 컴파일까지는 아니고 kernel 옵션중에 뭔가 두가지를 추가해야하는데 예전에 cdrom 못잡았을때 잡아주는 거였는데 기억이 가물가물하다... 나중에 생각나면 포스팅...

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
램 드라이브 설정 방법..

1. 대충 폴더 만들기
2. 마운트 하기
mount -t tmpfs -o size=10m /대충폴더 /대충폴더

근데 리눅스에서 램 디스크 사용할일이 많을지는 의문..
속도 테스트 해봤는데 뭐 리눅스나 윈도우나 비슷하더라....
dos 시절에는 유용하게 잘 사용했었는데..
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

iso 이미지를 통해 yum update 방법 (yum repository)  (0) 2012.09.19
lvm 구성  (0) 2012.09.12
리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
Posted by 신머루군

블로그를 보시면 알겠지만, 저는 메일쪽을 관련하는 일을 하고 있는 엔지니어입니다.
메일 (simple mail transfer protocol) 이라고 하면 정말 단순 명확했으면 좋겠지만,
전혀 심플하지도 않고, 복잡하기만 합니다. (는 잡설이구요...)

자 오늘 해볼 이야기는 HA를 구성하면 가장 문제가 되어질수 있는 스토리지단입니다.
(흠 오늘글은 조금 즉흥적인글이니 양해를 부탁 드리겠습니다)

일본 헤테나를 예를 들면 NFS를 통해서 스토리지 공유를 한다...(라고 써 있더군요)
근데 이 스토리지라는게 정말 광범위해서 어떻게 쓰이느냐에 따라서 어떻게 구성을 해야할지가 정말 중요합니다.

만약! db서버 이중화를 한다면 db이중화도 결국은 스토리지를 이중화 할것이냐 (물론 db이중화가 스토리지:파일시스템 으로 이중화가 되어질수만 있다면 정말 획기적이겠지만 그렇지 못합니다) 이부분은 차츰 나중에 이야기를 해보도록 하겠습니다 (갑자기 db이중화 이야기가 나오니 어려워지는군요)

저는 엔지니어 커뮤니티 사이트를 운영하고 있습니다.
이것은 엔지니어들만의 공간으로 많은 자료를 담고 있는데 이제 운영을 하다보니 상당히 중요한 위치에 서게 되었습니다. 그러다보니, 자연스럽게 이중화 이야기가 나왔습니다.

자 서버는 있습니다. 하지만 A서버가 죽었을때 B서버에서 어떻게 해당 내용을 전달할것이냐가 문제입니다.

방법은 여러가지가 있습니다.
1. rsync로 주기적으로 동기화를 시킨다던지
2. lsync로 실시간으로 동기화를 시킨다던지....(rsync의 변형형태로 좁은범위내에서는 상당히 유용합니다. 단! rsync와 비슷하므로 100% 동기화라고 보장하지 못합니다)
3. 디스크를 공유시키던지 (NFS던 GFS던...무엇이든 파일 시스템을 만든다면)

여기서 가장 중요한건 A서버가 죽었을때 B서버는 놀고 있다는 의미입니다.
이런경우에는 1/2번이 가장 저렴한 방법으로 HA를 구성할수 있는 방법일것입니다.

하지만, A/B서버가 동시에 job을 처리한다면 2번과 3번을 예의 주시해야합니다.
2번과 같은경우는 network상황이나, 서버의 상황에 따라 틀리지만, 1분 이내 (사이즈가 작고 사용량이 없다면) 2번케이스를 사용이 가능할것입니다.

하지만 진심으로 한다면 무엇인가 다른 File System이 필요하다는 결론입니다.
HA가 Active-Stand by의 구조도 있지만 정말 고가용성이 되어지는 active-active구조가 되어질것입니다.

앞단 두대의 서버에는 레알(?) 서비스 데몬들만 올라가고 최소한의 디스크로 서비스가 되어집니다. (앞단 장비 퍼포먼스가 빵빵하겠지요? 저같으면 SSD넣겠습니다.) 그리고 이 서버들은 SAN, NAS등의 디스크를 서로 공유하여 사용합니다.

3번의 경우가 발생되었습니다.
이러한 경우에 파일시스템 선택과, 공유스토리지운영 방법이 이슈가 되어질것입니다.
그리고 앞서 말했던 DB이중화 이야기도 슬슬 나올수가 있습니다.

디스크는! 단순 데이터를 저장하는 매체입니다.
하지만 앞단 서비스가 단순 apache를 통해서 html만 보여주는것이라면 상관이 없겠지만, 뭔가를 양쪽 서버에서 동시 다발적 한 파일에 write를 해야합니다.

"응? 그까이꺼 그냥 write하면 되지?"

라고 생각하시면 안됩니다.
nfs서버에는 nfslock라는 데몬이 있습니다. 이것이 바로 file lock을 컨트롤 하는 녀석입니다. (NAS역시 동일하기때문에 생략합니다, 단 SAN은 네트워크 스토리이지 공유스토리지가 아님을 명심해야합니다)

그럼...............
A서버에서 서로 다른 데몬이 a.out의 파일에 write하는 경우의 kernel이 하는짓과
A서버 B서버에서 서로 다른 데몬이 공유스토리지에 a.out의 파일에 write하는짓의 차이점중 둘중 하나만 이해하시면 제가 말하고자 하는 스토리지와 파일 시스템의 정의가 무엇인지 알게 되어질것입니다.

(To Be continue)
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군

도대체 고가용성이 뭐냐?
라고 묻는 분들이 있습니다. 그런 분들을 위해서 가장 간단하고도 심플한 구조에 대해서 언급을 하고자 합니다.

제일 단순한 구조는 Active - Stand by구조입니다.
몇몇가지 demon과 script만 짤 능력이 한번쯤은 해볼만한 작업일것입니다.

1. 가장 단순한 구조

인터넷 망----------Active Server (운영서버)
                    |
                    ------Stand by Server (휴면상태의 서버)

단순합니다... 위 구조가 Active - Stand by서버의 기본입니다.

조건은 아래와 같습니다.
1. 사용자는 운영서버로 접근을 하여 일을 처리한다.
2. 휴면상태 서버는 평소때에는 놀고 있다. (결국은 놀고 있다는 소리)

이 구조일때 Active Server에서 자기 자신의 헬스체크를 주기적으로 합니다.
만약 apache가 올라가져 있는 서버라고 할때, curl툴을 사용하여 정상적인 응답을 주는지에 대한 확인을 하면 되어집니다. (curl 툴이 아니라 script로 짠 프로그램도 가능합니다) - 나중에 이야기가 되어지겠지만 이 부분은 대부분은 L4에서 되어집니다. (DNS가 될수도 있습니다)

Active-Stand by의 Fail Over
1. 누군가는 헬스 체크를 하고 있어야 한다. (운영서버이던, 휴면서버이던)
2. 헬스 체크를 하여 Fail (장애)가 발생되어지면 Active Server는 모든 서비스를 중단하고 휴면상태 서버가 Active로 올라가야한다.
3. Active Server가 내려갈때 IP addr주소가 변경되어져야 한다 (임시 아이피?식으로)
4. Stand By가 올라갈때에는 IP addr주소가 Active 서버의 주소를 가져온다

FailOver만 보았을때 어떤 프로그램을 사용해야하고, 어떤 스크립트가 필요한지 감이 올것이라고 생각합니다.
순서는 아래와 같습니다.

1. Active Server Fail(장애발생)
2. Active Server Service stop && IP ADDR 변경
3. 1/2번 동작이 완료가 되어지면 Stand by서버는 Event값을 받아 IP Addr 주소 인계 (Active서버의)
4. 여기부터 Stand by서버가 Active서버가 되어지면서 Service up

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

단순하게 생각하면 위 구조가 HA가 되어지는 가장 기본적인 구조일것입니다.

여기에는 사실 많은 문제가 존재하고 있습니다.
1. data의 공유는 어떻게 처리할것인가?
2. IP주소 인계는 어떻게 할것인가? (서비스 이전)
3. Service Fail check는 어떻게 할것인가?

말씀 드리지만 이것은 가장 기본적인 구조를 설명하기 위한 방법입니다.
이러한 식으로 고가용성(HA) 구성을 진행해 나가는것입니다.

이에 대한 script / demon 는 별도로 제공하지 않겠습니다.
왜냐하면 추후에 위 관련되어진 데몬들, configure, Service health Check에 관련되어진 내용이 나타나기때문입니다.

한줄 요약하자면 이렇습니다.
서비스 장비가 죽어버리면 휴면상태 서버가 서비스를 진행하면 된다!

잠깐짬을 내어 Active - Stand By에 대해서 언급을 하였습니다. 가장 기본이 되어지는 구조이니 이해될때까지 3번만 반복하시면 될것입니다
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군

고가용성을 확인하면서 여러가지를 고민을 했습니다.
사실 고가용성....말부터가 야리꾸리 한것이 쉽게 접근할수 없는것이 사실이고...

장비도 비싸면서 평소때에는 개뿔도 없고...(응?)
장애 터지면 더 단일서버보다 더 골치 아픈것이 고가용성입니다.

안정화가 되어진 시스템에 고가용성을 도입한답시고, 더 큰장애를 일이키는곳을 보아온지라, 만약 단일장비로도 충분한 여유가 있다면 단일장비로 버티는것이 어떨까하는 의견입니다...
(이 부분은 개인적인 견해이므로 무시하셔도 됩니다. 그냥 제 경험이 그렇다는것이니까요)

고가용성 cata.는 Network, Kernel, Application, Prog. 등 여러가지가 복합적으로 결합되어져 나타는 부분인지라, 카타를 설정을 해두고, 실제 운용글들은 각각에 맞는 Cata.에 넣을것입니다.

그 중 몇가지 사전 지식을 확인을 하는 차원입니다.

1. Network 지식 (L4, L7이 무슨짓을 하는녀석인지)
2. Linux Network를 주무를수 있는지 (VIP)
3. demon setting가능 여부 (IPVS, keepalivecd 등과 같은것들) - 아파치, 삼바, mysql, Java등도 포함됩니다.
4. 그리고 잡식 (....잡다한 지식....이건 답이 없네요...낄낄)

등의 지식을 알고 진행이 되어집니다.

첫번째로, Network부분부터 진행이 되어질것이며, 네트워크로부터 모든 고가용성이 시작이 되어진다고 생각하여도 과언이 아닐것으로 판단이 되어집니다.

두번째로, config수정 부분 (각종 프로그램 설치 가이드는 제공여부가 확실치 않습니다. 저도 테스트 환경이 부족한것은 사실이며, 이 부족한 테스트 환경을 벗어날수가 없기에)

세번째로, 잡식입니다.
사실 위 두가지를 진행하다보면 Kernel을 수정해야하는 경우도 생길것이고 (튜닝이던 혹은 프로그램 수정이던간에), 꼬우면 프로그램도 짜야합니다. (script language던 C이던) 에러코드에 대한 정확한 원인 분석도 해야합니다. 이 에러코드를 찾다보면 또 다시 원점으로 돌아가 Kernel을 뜯어본다던지 하는 불행한 경우가 생기거나, Network Packet를 분석해야할일도 분명 생길것입니다.

순서는 랜덤으로 진행을 하며 저도 "서버/인프라를 지탱하는 기술"과 제 잡식을 섞어가면서 글을 올릴수 있도록 하겠습니다. 진행은 총 3~6개월정도가 되어질것으로 보여집니다.
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군

고가용성으로 넘어가면서 이중화 구성이니(?), HA구성이니(?), L4가 어쩌구 저쩌구......

사실 실전으로 투입되어지기 전까지는 알기가 어려운 내용이기도 이중화와 관련되어진 이야기는 여러군데에서 나온다

1. 장비 이중화 (H/W)
2. 어플리케이션 이중화 (APP)
3. data이중화 (...? mysql이나 oracle과 같은?)

HA구성역시도 마찬가지이다..

여러가지 구성방안이 있고, 사실 실습전에는 뭐라고 이야기하기도 어려운 내용인지라 어찌 풀어나가야할지 고민스럽기도 한 부분이지만, 내가 아는 범위 ~ 혹은 책자를 통해서 이중화 이야기를 써 내려가볼려고 한다.

아직 분류도 없어서 뭐라고 쓰기에 어렵지만..
요즘 다들 고가용성에 눈을 돌리다보니 한번 읆어 내려가봐야겠다.

어떤 이중화 방법이 있는지와, 어떤 구성이 가능한지에 대해서
(사실 나도 책을 보고 공부를 하면서 하는부분이라...-_-;)
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/v. Gnome2010.04.02 12:05
내가 너를 위해 구글링 해주마?
으응?

이건 아니고....

Fedora 11, 12버전을 죄다 설치 해봤는데 에러를 뿜으면서 정상적으로 안되어진 부분이 너무 많았다..-_-;
(x86, x64둘다 ...-_-;)

가상머신이 안올라온다던지 (1)
프린터 드라이버가 설치가 안되어진다던지(2)
그래픽카드가 안잡혀 듀얼모니터 세팅이 안된다던지 (3)

-_- 결국 다시 fedora 10 x86으로 돌아와 세팅을 했다...

네이트 한글이 안써지길래 qt가 설치가 안되었나 보니 정상적으로 설치가 되어져 있다..
scim-qtimm인가? 싶어서 확인해봤는데 이미 설치가 되어져 있단다...

........................
-_- 한참을 머리를 부여 잡고 찾아냈다..
scim-bridge-qt3

제길....잊어 버리지 말자...nateon 한글 타이핑 scim-bridge-qt3

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/v. Gnome2009.08.24 08:32

지난주에 보냈던 모니터님이 돌아오셨다 .... (사실 지난주에 도착했더라..-_-;)

바로 설치해서 활용하니 컴백한 듀얼모니터 님하의 름름(?)한 모습을 보면서 기뻐하고 있었다..
작업하기도 불편하기도 했었고, .... 아무래도 OS가 두개 올라가다보니 불편한점이 이만저만이 아니였던것은 사실...

그리고, "아기 다리 고기 다리" 휴가 출발 D-day 2이다.
사실 휴가보다는 다음달에 있을..........꽃게먹으러가는게 사실 더 기대되는건 사실...(응?)

듀얼모니터 부활 기념으로 모니터 생존 스크린샷을 올려본다

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/v. Gnome2009.08.11 15:57

듀얼모니터의 활용방안으로 두가지...아니 세가지가 있다. 하나는 클론 다른 하나는 투인뷰, 다른하나는 리파트(티?) 내가 사용하고 있는 fedora의 xorg.conf파일을 올려두니 참고를 하여 사용하면 될것 같다.

그래픽 카드 : Ndivia 8500
특이사항 : reparate를 사용한다면 큐브를 볼수가 없다..ㄱ- (당연한걸지도 모른다)

============================================================
xorg.conf.reparate (모니터1과 모니터2에 각각의 창을 띄우고, 서로 공유가 되어지지 않는다)

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildmeister@builder63)  Tue Nov  4 14:08:09 PST 2008

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder63)  Tue Nov  4 14:07:17 PST 2008

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "us"
    Option         "XkbModel" "pc105"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Bit 3 220M"
    HorizSync       30.0 - 80.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "LG LX753"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8500 GT"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8500 GT"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Screen"

# Removed Option "TwinView" "1"
# Removed Option "metamodes" "CRT: nvidia-auto-select +1680+0, DFP: nvidia-auto-select +0+0"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP: 1680x1050_60 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"

# Removed Option "metamodes" "CRT: 1400x1050_60 +0+0"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "CRT: 1280x1024 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


============================================================
xorg.conf.twinview (모니터1의 확장이 모니터2가 되어지는 격)
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildmeister@builder63)  Tue Nov  4 14:08:09 PST 2008

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder63)  Tue Nov  4 14:07:17 PST 2008

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "us"
    Option         "XkbModel" "pc105"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "LG LX753"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8500 GT"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "metamodes" "CRT: nvidia-auto-select +1680+0, DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/iv. Kernel2009.08.10 18:06

Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Sense Key : Medium Error [current]
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] ASC=0x10 <<vendor>> ASCQ=0x90
Aug 10 17:14:16 kki kernel: end_request: I/O error, dev sr0, sector 8
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 1
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 2
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 3
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 4
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 5
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 6
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 7
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 8
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 9
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Sense Key : Medium Error [current]
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] ASC=0x10 <<vendor>> ASCQ=0x90
Aug 10 17:14:16 kki kernel: end_request: I/O error, dev sr0, sector 0
Aug 10 17:14:16 kki kernel: __ratelimit: 6 callbacks suppressed
Aug 10 17:14:16 kki kernel: Buffer I/O error on device sr0, logical block 0
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] Sense Key : Medium Error [current]
Aug 10 17:14:16 kki kernel: sr 3:0:0:0: [sr0] ASC=0x10 <<vendor>> ASCQ=0x90

이것은 무엇인가..ㄱ- 갑자기 커널에서 알수 없는 에러들이 발생하기 시작했다..ㄱ-;;;
부팅하는데 대략 2분 넘도록 소요되어지고, 갑작스러운 원인을 찾아 헤메기 시작했다..

1. DEV sr0 -> 이녀석의 정체가 궁금하다
dev sr0.....가 일단 뭔지 몰랐다..; 갑자기 에러를 뿜어내는 이유도 모르겠고, system log분석

2. Buffer I/O에러?
Buffer I/O라면 물리 disk의 IO를 말하는것일텐데 라는 의심..

3. Sense Key?
->넌 뭐냐? 무슨 센서키?

------> CD-ROM의 디바이스명이 sr0로 잡혔다..이유는 S-ATA로 연결을 했기때문에 발생되어지면서 device명이 틀렸다

원인은 알겠는데 갑자기 왜?
->결국 업무중에 poweroff를 내리고 컴퓨터 케이스를 까보았다.
후끈한 그래픽 카드의 열기와 더불어 CD와 연결되어지는 S-ATA이 그 뜨거웠던 그래픽카드와 딱 붙어 있다..ㄱ- 원인은 이 케이블이 원인....; 아까 발로찬게 화근이였나보다

3번의 센서 키는 아마도 열 감지 부분이였던것같다...

케이블을 원상 복귀 시켜놓으니 멀쩡해지는 Fedora...=_=;
흐음..; 뭐 이런 대략 난감한 경우가...;
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
01. operation/v. Gnome2009.08.06 19:50


현재 리눅스 시스템을 사용하고 있는 바탕화면 스크린샷

리눅스는 리눅스인데....업무상 별수 없이 XP까지 포팅을 해서 사용을 하고 있다...

좌절스러운건 내 듀얼모니터중 한녀석이 맛이 갔다는 사실이다..OTL;;

집에도 안가고 회사에서 죽치고 있다.

최근에 포스팅이 좀 뜸하기도 하였고, 내가 사용하고 있는 시스템도 자랑할겸사 포스팅을 올려본다.

다들 XP를 많이 사용하지만, 원채 마우스를 싫어하는 탓에 콘솔맛이 쏠쏠한 리눅스를 데스크탑으로 사용한지 대략 1년이라는 시간이 흘렀다.
(역시 구시대적인 인간일수도 있다..-_-;;; 하지만 어쩌랴..; 마우스보다는 키보드가 편한걸)

xwindow를 잘 사용하지 못하고 있을때 config맞춘다고 하루종일 삽질하고, 회사 사람들한테 눈치도 상당히 보였지만, 지금은 사무실 분위기가 리눅스로 넘어오고 있는 대세를 타고있다.

리눅스 시스템에 맛을 들이기 시작하면 xp보다는 리눅스 시스템의 매력에 푹 빠질수가 있을것이다. 여러가지 바탕화면 효과와 조금만 손보면 최고의 퍼포먼스를 보여주는 리눅스 시스템

기본적으로 Fedora를 설치하니, 예전에 삽질했던 그래픽카드 세팅이라던지, 프린터드라이버등이 필요 없이 XP보다 더 깔끔하게 처리가 되어진다.

기본적으로 바탕화면 효과같은건 나에게는 맞지 않아 기본 옵션을 사용을 하며 각종 단축키로 도배가 되어져 있어, 무슨 작업을 하던지 단축키화 되어져 버려 마우스가 굳이 필요가 없는 장점도 있다 (물론 일부사람들에게는 이것이 단점이 될수있다는건 안다)

일단 리눅스 시스템에 맛을 들이면 무엇이든지 가능하다... 불가능이란없다.
일단 시도해보라. 그리고 구글신에게 물어물어보면서 자기만의 시스템을 꾸며보라..

그러면 당신도 어느덧 어엿한 리눅서가 되어있을것이다
(근데 요즘 리눅스라는 단어를 사용하는지는 모르겠다)
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신머루군
1. sample aaa10이라는 파일의 $1 (2번째 열에는 숫자로만 되어져 있다)
aaa 10
bbb 10
ccc 20

2.위에서 awk를 통해서 합계를 뽑아내는 awk 구문

cat aaa10 |awk '{sum+=$1} END {print sum}'
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > iii. Shell Script' 카테고리의 다른 글

awk script 기초  (0) 2014.08.06
awk로 합계를 뽑아내보자.  (0) 2009.07.27
문자열 변경  (0) 2009.07.27
Posted by 신머루군
TAG awk, Shell, 합계

find . -name "userinfoetc.conf" -exec perl -pi -e 's/aaaa/bbbb/g' {} \;
find . -name *.zone | awk '{ print "cat "$1" | sed "s/aaaa/bbbb/g" >"$1 }' | sh
perl -pi -e 's//mrtg/hub//mrtg/mrtg3/mrtgdata/g'

Linux system shell에서 변경하는 방법과 perl을 통해서 변경하는 방법
카타로그를 perl로 해야할지, shell로 해야할지...난감한 명령어들
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > iii. Shell Script' 카테고리의 다른 글

awk script 기초  (0) 2014.08.06
awk로 합계를 뽑아내보자.  (0) 2009.07.27
문자열 변경  (0) 2009.07.27
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 신머루군

ps

ps 명령어
 
ps 명령어는 BSD계열과, linux계열로 argv를 줄수 있으며 일반적 BSD계열보다는 linux계열의 argv를 많이 사용하게 되어진다. (BSD는 argv 뒤에 -가 붙지않는것이 일반적이다)
 
사실상 ps에 대해서 활용방안은 그때그때마다 man page를 참조하는것이 가장 바람직할것으로 생각이 되어진다.
 
process status정보를 나타내고 기본적으로 많이 사용하는 옵션은 -ef 정도이다.
 
ps auwx|grep mta
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     16969  0.0  0.0   5372   720 ?        S    13:05   0:00 /tims/bin/tmtad -s -b /tims
mailadm  16970  0.4  1.2  57588 25964 ?        Sl   13:05   0:00 /tims/bin/tmtad -s -b /tims
root     16995  0.0  0.0   5512   796 pts/3    S+   13:07   0:00 grep mta
 
user : 사용자 권한
PID : Process Number
%CPU : CPU 사용률
%MEM : 물리메모리 사용률
VSZ : 가상 메모리 영역의 크기 (페이징 개념)
RSS : 물리 메모리 영역크기
TTY : 콘솔 system
STAT : 프로세서 상태
TIME : CPU 사용시간 (실제 올라온 시간이 아니라, CPU에서 job을 실행하고 경과 시간 혹은 JOB을 잡고 실행되어진 시간을 의미한다)

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

lvm 구성  (0) 2012.09.12
리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
Posted by 신머루군
TAG Linux, PS

sar


sar 명령어
sysstat rpm 패키지에 존재하고 있다. 
sar는 기본적인 system에 관한 정보를 남길수 있도록 되어져 있고, 설치하는것을 추천한다
 
sar 1 10 (system activiry report를 1초에 한번씩 총 10회 보여준다)
CPU     %user     %nice   %system   %iowait    %steal     %idle
%user : 사용자 어플리케이션 CPU 사용률
%nice : nice로 스케쥴링의 우선도를 변경한 프로세스가 사용자 모드에서 CPU를 소비한 비율
%system : user에서 요청한 부분을 처리하기 위한 system사용률 (ex:system call)
%iowait : I/O 관련되어진 대기율
%steal : xen등과 같이 가상CPU에 관련되어진 CPU사용률
%idle : CPU의 응답 시간, 혹은 유휴시간 측정되어진 값
 
멀티 CPU / 가상화되어진 CPU사용률 체크
sar -P ALL
 
CPU 사용률
sar -U
 
LoadAvg 값
sar -q
 
메모리 사용률
sar -r
 
스왑 발생 확인
sar -W
 
일반적은 서버의 부하를 측정할때 sar을 많이 사용하고, 실제로 많이 사용되어지고 있는 프로세서들에 대해서 trace는 top의 정보와 함께 확인을 해야한다. sar명령어는 기본적으로 일주일간의 system activiry report를 보관하고 있고, 해당 dir은 /var/log/sa 에 포함을 하고 있다.
 
특정일의 통계를 보고싶다면 sar -f sadd (dd는 날짜)를 확인하면 된다.
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

리눅스 램 드라이브 (램 디스크)  (0) 2010.07.15
ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
Posted by 신머루군
TAG Linux, sar, syssate
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 신머루군
swap는 일반적으로 시스템 성능이 많이 저하되어질때 스왑을 늘리는 방법이 있습니다.

현재 메모리의 정보나 swap의 정보를 보시고 싶다면
free / swapon -s 명령을 사용하여 보시면 됩니다.

첫번째 방법>
disk partition으로 남은 공간 활용하기
물론 이 방법은 disk를 완전히 사용하고 있다면 서용이 없습니다. (일반적으로 disk에 남은 공간을 두지는 않겠죠?) 그리고 이 부분에 대해서는 fdisk만 잘 보시면 충분히 해답을 얻을수 있을것이라고 생각합니다 (t....이라고 말하진 않겠습니다..^^;) -->물론 이 작업이 행해진다면 fstab에도 잊지말고 등록을 해주셔야 합니다.

두번째방법>
파일을 사용하는 방법입니다.
touch로 swap이라는 빈 파일을 만들어 줍니다.
cmd>touch swap_tmp
cmd>dd if=/dev/zeron of=/swap_tmp bs=숫자 count=숫자   (bs * count는 실질적인 스왑용량이 됩니다)
cmd>mkswap /swap_tmp   (swap파일로 포맷)
cmd>swapon /swap_tmp    (스왑 마운트라고 해야할까요?)

두번째 방법은 rc.d쪽에 등록을 해주셔야 합니다...저와같은경우는 rc.local에 등록을 하여 사용합니다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
linux system disk 추가 하기  (0) 2008.05.27
Posted by 신머루군
TAG swap, swapon
mke2fs에는 상당히 많은 정보를 가지고 있습니다.
Block size, Fragment size, inode수, 슈퍼블록, 첫번째 데이터 블록...........등등등 (적기 귀찮으므로 패스)

사용방법>
ex>mke2fs -t ext2 /dev/sda1
ext2시스템 형식으로 포맷을 합니다.

option
-t ext2 (ext2형식의 포맷)
-j (ext3형식으로 포맷 - 저널링 기술이 적용이 되어졌습니다)
-b 숫자 (블록크기를 지정합니다)
-c (배드블록을 검사합니다, 상당한 시간이 걸립니다)
-f 숫자 (Fragment를 등록합니다. 가급적 비추천해드립니다->디스크장애요인이 될수 있습니다)
-i 숫자 (inode당 바이트수 지정 티폴트는 4096입니다)
-m 숫자 (root의 예비블록을 남겨줍니다 -m 20  >>20%의 root를 위한 슈퍼블록)


..............
단순히 포맷만으로 끝난다고 생각하시면 오산..
mkfs명령어가 있습니다.

option
-V 자세한 정보를 보여줍니다.
-v 생성할 파일시스템 타입을 지정합니다 (ext2, ext3)
-c 배드블록을 검사합니다
-l 지정된 파일명으로부터 배드블록 목록을 읽습니다
-v 작업상태를 자세히 표시합니다.

ex>mkfs -t ext3 /dev/sda1 (== mkfs.ext3 /dev/sda1)

이보다 더 자세한것을 원하신다면 man페이지를 참조...>_<;;
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
linux system disk 추가 하기  (0) 2008.05.27
Posted by 신머루군
TAG fdisk, mke2fs, mkfs
hdparm
디시크의 속도와 성능을 테스트하는 툴로써 사용되어지고 뿐만 아니라 일부의 튜닝도 가능합니다.
hdparm -t /dev/sda
와 같은 형식으로 사용을 할수있고, "-t"옵션은 버퍼링이 전혀 되지 않은 데이터를 실제로 얼마나 빠르게 읽을수 있는지 확인하는것입니다.
옵션
-t : 버퍼링 되어지지 않은 데이터를 읽을때
-T : 버퍼링 되어진 테이터를 읽을때 (cache)


fdisk
일단 리눅스 시스템에서 장치명을 어느정도는 익히 알아두셔야 할것입니다.
예를들면 IDE방식의 HDD는 /dev/hda와 같은 형식으로 생기고 파티션작업을 해서 나눈다면 /dev/hda1이라고 생성이 되어질것입니다. 물론 물리적인 디스크는 hda가 맞습니다.
SCSI장비와 같은경우는 sda의 형식을 따르고, 파티션을 나눈다면 sda1와 같은형식으로 나타납니다.

a 부팅파티션으로 설정
b BSD로 디스크 라벨 설정
c DOS호환가능한 플래그
d 파티션 삭제
l 설정가능한 파티션 타입
m 도움말 (help와 동일)
n 새로운 파티션 생성
o 새로운 dos파티션 테이블 생성
p 설정된 파티션 정보를 알려줌
q 설정된 정보를 저장하지 않고 끝냄
s SUN 디스크 라벬ㅇ성
t 파티션 타입을 변경할수 있음
u unit 정보를 열람하거나 변경
v 지정된 파티션 검사
w 저장후 빠져나감
x 전문가모드 (이 모드는 HDD의 실린더, 헤드, 트랙당 섹터수 변경까지 가능합니다 ->잘못 하시면 disk badblock생성을 유발합니다)

기본적인 설정은 CMOS의 low disk관련부분과 밀접하게 보실수 있을것입니다.(물론 시스템마다 틀립니다.^^)

fdisk /dev/sdb
Unable to open /dev/sdb
이런경우는 disk가 존재하지 않는다는것입니다.

1>fdisk /dev/hdd
      cmd>n
      cmd action
             e extended
             p primart partition (1-4)
       Partition number (1-4) :             (hdd1)과 같이 입력이 되어질것이라면 1번을 입력합니다
       First Cylinder (1-xxxxx default 1) : 1
       Last cylinder or +SIZEM or +SIZEK (1-xxxxx, default xxxxx):+1000M (1기가 할당)
      cmd>p          (파티션 정보 확인)
위와 같은 형식으로 작업을 진행하시면 됩니다.

특정파티션 삭제하는 방법
1>fdisk /dev/hda
      cmd>p
      cmd>d
        Partition Number (1-4) : 2      (hda2 파티션 삭제)
      cmd>w

이것으로 작업이 끝났습니다

그후에는 mke2fs로 filesystem 을 포맷을 진행하시면 됩니다.
mke2fs는 다음회로~
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'01. operation > ii. base command' 카테고리의 다른 글

ps  (0) 2009.07.27
sar  (0) 2009.07.27
linux disk swap 늘리기  (0) 2008.05.27
mke2fs 사용방법? (이런것도 포스팅해도 되려나?)  (0) 2008.05.27
linux hdparm 사용과 fdisk 명령어  (0) 2008.05.27
linux system disk 추가 하기  (0) 2008.05.27
Posted by 신머루군

티스토리 툴바