2012년 11월 23일 금요일

iperf를 사용해서 리눅스 시스템 네트워크 성능 측정하기

iperf라는 심플하지만 유용한 툴을 소개합니다. 두 linux  서버간 네트워크 성능을 측정할 때 사용할 수 있습니다. 한 쪽은 서버역할, 한쪽은 클라이언트 역할을 수행합니다.

설치/테스트 순서는 아래와 같습니다.

1. 양 서버에 iperf 설치
2. A서버에서 서버모드로 iperf 시작
3. B서버에서 클라이언트모드로 A서버에 접속 및 측정

1. 양 서버에 iperf 설치
아래 내용에 따라 A,B 두 서버에 iperf를 설치합니다. 서버로 사용할 A서버와 클라이언트로 사용할 B서버 모두 동일한 패키지를 설치합니다.

바로 아래에 있는 페이지에서 iperf-VERSION.tar.gz파일을 받습니다.
* iperf download page : http://sourceforge.net/projects/iperf/files/

아래 명령들을 차례대로 실행합니다.
>tar xzvf iperf-VERSION.tar.gz
>cd iperf-VERSION
>./configure
>make && make install

./configure명령에서 gcc 및 gcc-c++ 패키지가 필요합니다. 빌드 패키지가 없다면 "yum install gcc gcc-cc++"를 실행하고, 다시 위 명령들을 실행합니다.

2. A서버에서 서버모드로 iperf 시작
서버모드를 실행하기 전 IP를 확인 합니다. RHEL6 이후에는 "ip addr show"를 권장합니다. IP만 확인할 경우 ifconfig 명령을 사용해도 상관없습니다.

>ip addr show
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:18:8b:77:2d:30 brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.230/24 brd 192.168.5.255 scope global eth0
    inet6 fe80::218:8bff:fe77:2d30/64 scope link
       valid_lft forever preferred_lft forever



A서버에 설치가 완료되면 아래 명령을 실행합니다. 아래와 같이 출력하고 대기상태가 됩니다.
>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------


3. B서버에서 클라이언트모드로 A서버에 접속 및 측정
B서버에 설치가 다 되었다면 아래 명령을 실행합니다. IP는 위 2번에서 확인한 IP입니다. 명령을 실행하면 A 서버에도 접속한 B서버의 IP등 정보가 나오고 측정이 시작됩니다.

B서버
>iperf -c 192.168.5.230
------------------------------------------------------------
Client connecting to 192.168.5.234, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 192.168.5.230 port 38093 connected with 192.168.5.234 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   115 MBytes  96.3 Mbits/sec

A서버
>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.5.234 port 5001 connected with 192.168.5.230 port 38093
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec   115 MBytes  94.1 Mbits/sec

위 결과는 100Mbps에 연결된 두 서버간의 측정결과 입니다.

서버모드로 실행한 A서버는 계속 Client를 기다리고 있습니다. Ctrl+c로 나올 수 있습니다.

아래는 유용한 옵션들입니다.

-s 서버 모드
-c <server ip or domain> 클라이언트 모드
-u UDP 사용 (기본 TCP)
-p port (기본포트는 5001)
-w TCP Window 크기(socket buffer 사이즈)(ex -w 10M, -w 10K)
-t 측정시간(초)
-P parallel 모드, LACP 테스트 등 동시에 여러 connection이 필요할 경우 사용

Updates
. parallel 모드 설명 추가 (2016. 4. 7)

2012년 11월 22일 목요일

yum history 사용하기

yum history 명령을 사용해서 그동안 사용했던 yum  명령들을 확인할 수 있다.
(아래 예제들은 CentOS 6에서 테스트 되었지만 RedHat계열(Fedora, RHEL 등)에서 똑같이 동작한다. 5버전에는 적용되지 않았다.)

>yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    47 | root              | 2012-08-25 16:09 | Install        |    1
    46 | root              | 2012-08-20 17:00 | Install        |    1
    45 | root              | 2012-08-20 09:07 | Install        |    1
    44 | root              | 2012-08-20 09:06 | Install        |    3
    43 | root              | 2012-08-20 09:05 | Install        |    8
    42 | root              | 2012-08-05 15:51 | Install        |    1
    41 | root              | 2012-08-05 15:47 | Install        |    1
    40 | root              | 2012-08-05 15:41 | Install        |    2
    39 | root              | 2012-08-05 15:24 | Install        |    1
    38 | root              | 2012-08-05 15:18 | Install        |    1
    37 | root              | 2012-08-05 15:14 | Install        |    3
    36 | root              | 2012-08-05 14:53 | I, U           |  195 EE
    35 | root              | 2012-08-05 14:52 | Install        |    3
    34 | root              | 2012-01-19 11:20 | I, U           |   42 EE
    33 | root              | 2012-03-07 15:22 | Install        |    8
    32 | root              | 2011-12-26 14:04 | Install        |    1
    31 | root              | 2011-12-26 13:11 | Install        |   18
    30 | root              | 2011-12-26 11:31 | Install        |    1
    29 | root              | 2011-12-26 11:18 | Install        |   12 EE
    28 | root              | 2011-12-21 17:59 | Install        |    1
history list

yum 명령을 사용해서 패키지를 설치하거나 업데이트를 하면 ID가 하나씩 증가한다. 각 항목의 세부사항을 알고 싶은면 info 옵션을 사용한다.

>yum history info 47
Loaded plugins: fastestmirror
Transaction ID : 47
Begin time     : Sat Aug 25 16:09:43 2012
Begin rpmdb    : 586:e318ebe25b7f3c641234d8aec7f55b25e005ba00
End time       :                           (0 seconds)
End rpmdb      : 587:870ce250959935e6a5968fbb5928c1378daedda7
User           : root
Return-Code    : Success
Command Line   : install dosfstools
Transaction performed with:
    Installed     rpm-4.8.0-27.el6.x86_64                       @base
    Installed     yum-3.2.29-30.el6.centos.noarch               @base
    Installed     yum-plugin-fastestmirror-1.1.30-14.el6.noarch @base
Packages Altered:
    Install dosfstools-3.0.9-4.el6.x86_64 @base
history info

만약 실행했던 yum 명령에 실수가 있었다면 rollback 옵션으로 되돌릴 수 있다. 위에서 확인한 항목중 ID 47에서 46으로 되돌릴 경우 아래와 같이 한다.

>yum history rollback 46
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.tt.co.kr
 * extras: centos.tt.co.kr
 * updates: centoso4.centos.org
base                                                     | 3.7 kB     00:00
extras                                                   | 3.5 kB     00:00
nodejs-stable                                            | 2.9 kB     00:00
updates                                                  | 3.5 kB     00:00
updates/primary_db                                       | 4.0 MB     00:08
Rollback to transaction 46, from Mon Aug 20 17:00:17 2012
  Undoing the following transactions: 47
    Install dosfstools-3.0.9-4.el6.x86_64 @base
Resolving Dependencies
--> Running transaction check
---> Package dosfstools.x86_64 0:3.0.9-4.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================
 Package             Arch            Version               Repository      Size
=======================================================================
Removing:
 dosfstools          x86_64          3.0.9-4.el6           @base          197 k

Transaction Summary
=======================================================================
Remove        1 Package(s)

Installed size: 197 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : dosfstools-3.0.9-4.el6.x86_64                                1/1
  Verifying  : dosfstools-3.0.9-4.el6.x86_64                                1/1

Removed:
  dosfstools.x86_64 0:3.0.9-4.el6

Complete!

yum 으로 설치한 패키지를 rpm -e 명령으로도 삭제할 수 있다.
>rpm -e dosfstools

하지만 패키지 관리를 잘 하려면 yum의 도움을 받는 것이 더 편하다고 생각된다.

주의 : 
  1. 패키지에 따라 의존성 문제로 되돌릴 수 없는 경우가 있다.
  2. 설정파일들은 패키지 설치/삭제 시 되돌리지 못할 수 있으므로 백업을 받아 놓는다.
  3. RHEL, CentOS 5버전은 적용 안됐다. 6이상에서만 사용가능.

2012년 11월 20일 화요일

Local yum Repository로 RHEL 업데이트 하기

RedHat Enterprise Linux는 RedHat의 RHN(RedHat Network)을 등록하지 않으면 공식 업데이트 서비스를 받을 수 없다. RHN은 1년에 백만원정도 하는 유지보수 계약을 통해서 받을 수 있는데 이는 소프트웨어 구입비용과 달리 공식 업데이트 사용과 문제 발생시 지원관련된 비용이다. 유지보수비용이 문제라면 Local Network에 최신 상태로 업데이트 할 수 있는 yum Repository를 구축할 수 있다. 소프트웨어 자체는 무료이기 때문에 이는 합법적이다.
하지만 한가지 아쉬운 점은 RHEL의 최신 ISO를 받을 수 있는 기간이 계정별로 30일밖에 안된다는 것이다.

Local Repository의 이점
Local Repository를 구축하면 다음과 같은 장점이 있다.

1. 최초 설치시 설치하지 않은 패키지를 쉽게 설치할 수 있다.
만약 http패키지를 최초 설치시 빼먹었다면 RHN에 등록된 것 같이 "yum install httpd" 명령으로 쉽게 설치 가능하다. Repository가 없다면 DVD를 사용하거나 RPM파일을 복사해서 설치를 해야한다. 또한 의존성을 따지면서 추가로 많은 RPM들을 깔아야 할테지만 yum명령을 쓰면 의존성이 걸린 패키지까지 알아서 설치해 준다.

2. 업데이트가 있다면 RHN에 등록하지 않고 쉽게 업데이트 할 수 있다.
추가 패키지 설치와 마찬가지로 yum명령을 사용해서 의존성 문제를 쉽게 해결할 수 있다. 단 Local Repository에 최신 버전이 올라가 있어야 한다.

3. 꼭 최신 패키지가 필요하지 않을 때 버전을 고정시킬 수 있다.
최신 RHEL이 6.3버전이고, 안정성 문제로 6.2에서만 머무르고 싶을 때 Local Repository를 6.2 버전으로 만들어 놓는다면 "yum update"를 사용하더라도 6.2버전으로만 업데이트 할 수 있다. 또한 2개 버전을 올려놓고, 업데이트할 서버에서 .repo파일의 baseurl옵션의 타겟만 바꿔서 사용할 수 있다. (repo파일 관련내용은 아래 구축.4 내용 참고)

RHEL 외 CentOS, Fedora도 같은 방법으로 Local Repository를 구축하고, 쉽게 yum명령을 사용할 수 있다. Local Repository는 RHN등록을 피하면서, yum 명령을 사용할 수 있는 유용한 수단이다.

Local Repository 구축단계
구축 단계는 아래와 같다.

1. 최신 RHEL Binary DVD ISO 다운로드
2. 업데이트할 서버가 접속가능한 네트워크에 http 또는 ftp 서버 구성
3. http 또는 ftp 홈 디렉토리 아래에 새 디렉토리를 만들고 1번에서 다운로드 받은 ISO를 mount 또는 풀어서 옮김
4. 업데이트 받을 서버의 /etc/yum.repos.d/ 디렉토리에 새로 구축한 yum Repository 설정파일 생성 및 "yum repolist" 명령으로 확인
5. 업데이트 실행

1. 최신 RHEL Binary DVD ISO 다운로드

업데이트 하려는 RHEL의 최신 버전의 Binary DVD ISO파일을 RedHat Software & Download Center에서 다운로드 받아야 한다. 계정별로 30일간 다운로드 가능하며, 다운로드 방법은 다음 링크를 참조한다.

* RHEL ISO Download 방법

2. 업데이트할 서버가 접속가능한 네트워크에 http 또는 ftp 서버 구성

어떤 네트워크(Public or Private)든 상관없이 업데이트할 서버가 접속한 네트워크에 http 또는 ftp 서버를 구축한다. ftp 프로토콜이 더 빠르긴 하겠지만 http서버 구성이 더 간단하다. 이미 http 또는 ftp서버가 구축되어 있다면 이번 단계는 넘어간다.

httd서버를 구성할 경우 서버역할을 할 서버에서 아래와 같이 명령을 실행한다.
>yum -y install httpd

iptables를 사용한다면 iptables에 http포트 예외 추가
>iptables -A INPUT -p tcp --dport 80 -j ACCEPT


3. http 또는 ftp 홈 디렉토리 아래에 새 디렉토리를 만들고 1번에서 다운로드 받은 ISO를 mount 또는 풀어서 옮김

2번과 같이 했다면 httpd의 홈 디렉토리는 /var/www/html이다. 아 디렉토리 아래에 아래와 같이 디렉토리를 생성한다.
>mkdir -p /var/www/html/rhel

1번에서 다운로드 받은 ISO를 위에서 만든 디렉토리에 mount 또는 풀어서 복사 한다.


mount할 경우(ISO파일이 /root에 있다고 가정)
>mount -o loop /root/rhel-server-VERSION-x86_64-dvd.iso /var/www/html/rhel

복사할 경우
>mount -o loop /root/rhel-server-VERSION-x86_64-dvd.iso /mnt
>cp -r /mnt/* /var/www/html/rhel


웹브라우저에서 "http://SERVER-IP/rhel"주소로 들어가면 복사한 파일들을 확인할 수 있다. 파일이 보이지 않는다면 아래 사항을 점검한다.

A. 2번 방법으로 httpd서버를 새로 구성했다면 파일이 제대로 복사되지 않았을 것이다. cd /var/www/html/rhel로 이동해서 파일들이 제대로 있는지 확인한다.
B. 이미 http 또는 ftp가 구축되어 있던 서버에 파일을 복사했다면 설정파일에서 브라우징 가능하게 설정되어 있는지 확인한다. httpd의 경우 /etc/httpd/conf/httpd.conf파일에서 아래 부분을 수정한다. (Indexes 추가)

<directory "/var/www/html">
#  Options FollowSymLinks
  Options Indexes FollowSymLinks
</directory>

C. 방화벽을 점검한다. "iptables -F"와 "setenforce 0"명령을 실행 후 파일들이 보인다면 방화벽 설정 문제다. 방화벽에 대해 잘 모른다면 앞의 두 명령을 실행해서 업데이트 한다. 방화벽 복구 방법은 "service iptables restart"와 "setenforce 1"이다.

4. 업데이트 받을 서버의 /etc/yum.repos.d/ 디렉토리에 새로 구축한 yum Repository 설정파일 생성 및 "yum repolist"명령으로 확인

업데이트 할 서버의 /etc/yum.repos.d/ 디렉토리 아래에 새로 구축한 yum Repository 정보를 만들어 준다. Repository 정보를 가진 파일은 .repo 확장자를 가져야 한다. 아래는 예시를 따라 .repo파일을 만든다.

>vi /etc/yum.repos.d/local.repo
[LOCAL]
name=Local Repo
baseurl=http://serverip/rhel
enabled=1


  • [LOCAL] : repo id로 공백없이 마음에 드는 값을 넣어준다.
  • name : repo name으로 공백 상관없이 간단히 Repository를 설명한다. 업데이트에 영향을 주지 않는다.
  • baseurl :  ftp를 사용할 경우 http대신 ftp로 시작하는 url을 넣어 준다. serverip는 2번에서 구성한 서버의 ip 또는 domain name을 넣어준다.
  • enabled : [LOCAL] Repository 사용 여부를 결정하는 항목이다. RHN에 등록되지 않았다면 같은 디렉토리에 있는 공식 업데이트 Repository 관련 파일내용에서 enabled 항목이 0으로 되어 있는 것을 확인할 수있다. (0:사용안함, 1:사용)

위 파일을 생성했다면 아래 명령으로 제대로 설정 되었는지 확인한다.
>yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
LOCAL                                                 | 4.0 kB     00:00
repo id                  repo name                                        status
LOCAL                  Local repo                                        3,585
repolist: 3,585

repo id와 repo name이 파일에 설정한대로 나왔다면 OK
제대로 나오지 않는다면 브라우저에서 baseurl을 넣어본다. 파일들이 보이면 설정파일에 오타가 있는지 확인하고, 파일이 보이지 않으면 3번 과정을 확인한다. iptables 또는 SELinux가 포트를 막을 수 있으므로 "iptables -F" 또는 "setenforce 0" 명령으로 방화벽을 모두 제거하고 다시 시도해 본다.

5. 업데이트 실행

4번까지 제대로 되었다면 업데이트를 실행한다.
>yum -y update

kernel등 일부 패키지는 재부팅해야 적용이 된다.
>yum -y update kernel && reboot

daemon등 일부 패키지는 서비스를 재시작해야 적용이 된다.
>yum -y update httpd && servece httpd restart

2012년 11월 19일 월요일

MS Defender와 Security Essentilas의 차이

MS에서 제공하는 백신은 Defender와 Security Essentials가 있습니다. Defender가 Security Essentials보다 먼저 나왔습니다. Defender가 설치되어있는 PC에 Security Essentilas를 설치, 시작하면 자동으로 이미 설치된 Defender를 멈추게 됩니다.
두 개를 놓고 고민중이시라면 Security Essentials만 설치하시면 됩니다. 정품 Windows만 사용 가능합니다.

* MS Security Essentials 다운로드 페이지 : http://windows.microsoft.com/ko-KR/windows/security-essentials-download

2012년 11월 15일 목요일

Samba Error : 'Address aleady in use'

아무런 이유없이 이런 메시지를 볼 수 있다. 난 정말 제대로 했다고 믿는데 말이다. 심호흡 10,000번으로 마음을 가라앉히고 서버에서 아래 명령을 실행하자!

>smbpasswd -a user_name

1. 위와같이 samba 사용자를 추가해서 된다면 Address와는 전혀 관련 없다. 
2. Samba사용자는 useradd로 server사용자 계정을 추가한다고 자동적으로 추가되지 않는다. 위 명령으로 꼭 추가해 주어야 한다.
3. Samba만 사용하는 사용자를 추가하려면 보안을 위해 콘솔이나 ssh 접속을 못하게 만들자. 추가하는 방법은 "useradd -s /sbin/nologin user_name"이다. 

끝~

MacBook Air는 메모리 업그레이드 불가능(SSD업그레이드는 가능)

MacBook Air 2011을 중고로 사서 Parallels를 써보려고 했다. 적어도 8GB 메모리는 있어야 겠다 해서 업그레이드 방법을 google에서 열심히 뒤졌는데 안나오는거다.

결론은 MacBook Air는 메모리가 보드에 납뗌이 되어있다. 그래! 난 바보였다. @,.@ 메모리 업그레이드 불가능.

참고로 SSD는 2012도 업그레이드 가능하다. 업그레이드 하느라 떼어낸 SSD까지 케이스에 넣어서 사용할 수 있단다.

링크1 : 2011 맥북에어 SSD업그레이드 하기
링크2 : OWC, 업계 최초로 2012 맥북에어 전용 SSD 업그레이드킷 선보여

2012년 11월 12일 월요일

Red Hat Enterprise Linux 6에서 /boot 파티션으로 LVM 볼륨 사용 안됨

RHEL6의 부트로더는 grub이다. 근데 RHEL6의 grub이 lvm파티션을 읽지 못한다. 때문에 설치시 LVM 볼륨만 만들면 다음으로 진행하지 못한다. 또한 ext2,3,4 파일포맷만 지원한다. 정리하면

1. RHEL6의 부트로더는 grub이다. (grub2가 아니다.)
2. RHEL6의 grub은 lvm을 지원하지 않는다.
3. RHEL6의 grub은 ext2,3,4 파일시스템만 지원한다.
4. RHEL6의 /boot파티션 최소용량은 250MB를 권장한다.
5. /boot는 ext4로 만들고, 나머지는 lvm 파티션으로 사용한다.

참고 :
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-diskpartrecommend-x86.html

2012년 11월 5일 월요일

RHCE Rapid Track Course with RHCSA and RHCE Exams(RH300)과정에 대한 생각

2012년 10월말 RHCE Rapid Track Course with RHCSA and RHCE Exams(RH300)과정을 수료하였습니다. 과정 마지막날 RHCSA와 RHCE 시험까지 포함된 5일 과정입니다. (수업4일 + 시험1일)

수업 첫 시간 강사님께서 이과정은 정말 어려운 과정이니 될수 있으면 다른 과정을 들으라고 하셨습니다. 정말 그렇습니다. 시험에 강의 때 배우지 않은 내용도 많이 나오고.. ㅠㅠ

아래 내용을 궁금해 하실 것 같아 올립니다. RH300 과정에 관한 내용입니다.

1. 리눅스 정말 잘 아시는 분이 아니면 RH300과정은 듣지 마시길. 다른 과정 먼저 들으세요.
2. 시험보는 날 오전에 RHCSA, 오후에 RHCE를 한꺼번에 봅니다.
3. RHCSA를 합격해야 RHCE도 인정되며, RHCSA만 합격시 RHCE(EX300)만 비용을 지불하고 다시볼 수 있습니다. RHCE는 합격하고, RHCSA는 떨어질 확률은 거의 없어 보입니다.
4. 시험내용 등을 인터넷에서 찾기 힘듭니다. 그 이유는 시험 시작 전 시험문제를 유출하지 않는 것과 유출시 책임(자격 박탈 등)을 묻는데에 동의하기 때문입니다.
5. 각 자격증에 합격하셨다면 RedHat 홈페이지에서 ID를 만들고, Certification Central에 자격증의 고유번호를 등록합니다.
6. 자격증으로 주어지는 혜택은 크게 자격증 로고를 명함에 새길 수 있고, 고객의 신뢰가 올라가고, 임금이 올라간다고 되어있는데 그닥 크게 와닿지는 않습니다. 우리나라 IT 엔지니어 임금이 뭐 그렇죠..

시험 내용 외에 궁금하신 사항을 댓글에 남겨주시면 아는 만큼 대답해 드리겠습니다.

FIX :: ssh 접속이 느리고, /var/log/messages에 systemd-logind.service failed. 메시지가 남을 때

ssh 접속이 느릴 때가 있습니다. 보통은DNS가 제대로 설정되지 않았는데 /etc/ssh/sshd_config에 UseDNS가 yes로 되어 있을 때 발생합니다. 위와 같을 경우 /etc/ssh/sshd_config파일에서 아래와 같이 수정 후 ...