시스템이야기2015. 6. 29. 13:16

왜 FreeBSD는 2015년 7월의 윤초(Leap Second)에 대한 얘기가 없을까 싶을 것이다. 얼마전에 쓴 '2015년 윤초(Leap second) 삽입 관련 서버 점검사항'(2015.6.22.)에서도 리눅스(Linux)만 언급했다. 얘기가 없는 건 문제가 없기 때문이다.



2012년 윤초 삽입 때, 저는 FreeBSD서버에서 아무 것도 한 것이 없다.

윤초로 발생하는 문제가 없기 때문에 서버는 단지 1초의 시간차만 맞춰주면 된다.
이미 서버들은 시간동기화가 셋팅되어 있기 때문에 1초는 자동으로 맞춰진다. 따로 할 것이 없는 것이다.


(1) 상위 NTP 서버들(당신의 서버 아님) <-> (2) 내부 NTP서버 (당신이 관리하는 서버) <-> (3) ntpdate를 실행하는 다수의 서버들


위에서 나와 관련된 서버는 2번과 3번.


(2) ntpd 데몬을 돌리는 서버는 자동으로 상위 NTP 서버로 부터 윤초 삽입이 되어 시간동기화된다.
(3) 나머지 서버들은 내부 NTP서버를 통해 자동 동기화된다. (ntpdate 명령)


FreeBSD에서 윤초는 신경쓰지 말고, 편히 운영하세요.

FreeBSD 문서에 윤초를 다룬 'FreeBSD Support for Leap Seconds' 글이 하나 있는데 참고로 읽어보세요.


We believe and expect that FreeBSD, if provided correct and stable NTP service, will work as designed during this leap second, as it did during the previous ones.
... 생략 ...
In practice, leap seconds are usually not a problem on FreeBSD. We hope that this overview helps clarify what to expect and how to make the leap second event proceed more smoothly.



Posted by 좋은진호

댓글을 달아 주세요

시스템이야기2013. 5. 20. 18:56

로컬에서 root ID를 얻을 수 있는 커널 취약점이 발견되었다. 해당 커널 버전은 2.6.37~3.8.9 이다.
그러나 CentOS 6.x(또는 RHEL)의 커널 2.6.32버전은 2.6.27에서 백포팅된 것이 있는데 해당 취약점까지 백포팅된 것으로 알려졌다.



CentOS 6.x버전을 사용중이면 커널 업데이트(지난주에 커널패치가 나옴)를 반드시 해야한다.

* CentOS 6.x에서 취약점없는 버전 : 2.6.32-358.6.2.el6.x86_64 <-- 패치 번호 -358.6.2가 문제 없음.

* Linux PERF_EVENTS Local Root

http://packetstormsecurity.com/files/121616/semtex.c
http://downloads.securityfocus.com/vulnerabilities/exploits/59846.c

커널 취약점 테스트 결과다. gcc 컴파일할 때 반드시 -O2 optimize 옵션을 넣고 테스트해야 한다.

[ 커널 패치 전 ]

$ gcc semtex.c
$ ./a.out
2.6.37-3.x x86_64
sd _at_ fucksheep.org 2010
a.out: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8 )' failed.
중지됨
$ gcc -O2 semtex.c  <-- -O2 옵션 넣고 컴파일
$ ./a.out
2.6.37-3.x x86_64
sd _at_ fucksheep.org 2010
-sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),501(true)  <-- root권한 획득
-sh-4.1# exit
logout


[ 커널 패치 후 ( yum update kernel* 명령 후 ) ]

$ uname -r
2.6.32-358.6.2.el6.x86_64
$ ./a.out
a.out: a.c:51: sheep: Assertion `!close(fd)' failed.
중지됨
$

※ expolit 소스를 링크하고 싶지 않았다. 하지만 이미 공개가 많이 되었고, SE가 직접 취약성을 테스트하도록 링크를 걸었다.

Posted by 좋은진호

댓글을 달아 주세요

  1. 아 ㅜㅠ 해야되는데 이 귀차니즘은 어쩔수가없네요 ㅜㅠ

    2013.05.21 00:11 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 귀찮죠.
      쉘접근이 가능한 서버를 운영하는 곳들, 특히 호스팅 업체들은 고생하실 것 같아요. ^^

      2013.05.21 08:55 신고 [ ADDR : EDIT/ DEL ]

IT이야기2012. 10. 8. 08:50

신용카드 크기만한 라즈베리 파이(Raspberry Pi)에 xbmc( http://www.raspbmc.com/download/ )를 설치한다.
설치 시간은 20~30분 정도 소요가 된다. xbmc 설치 후에 기본적으로 '시스템' -> '설정'에서 언어, 시간대 등을 변경해야 한다.

라즈베리 파이(Raspberry Pi)[ 라즈베리 파이. 인터넷은 유선 대신에 USB 무선랜카드로 연결했다. ]


라즈베리 파이를 리눅스 장난감(?)과 영화감상용 PC용으로 사용하기 위해서 구매했다.

  • 리눅스 장난감으로 쓸 때는 데비안 기반의 Raspbian + 모니터 구성으로 사용하고,
  • 영화감상으로는 xbmc + 프로젝터로 사용한다.


1. 라즈베리 파이 xbmc에서 설정하기

시스템 -> 설정 -> 서비스 -> 웹서버를 선택한다. 포트는 기본포트 대신에 8888으로 변경을 했다. ID와 비밀번호를 설정한다.
IP로 원격제어하므로 라즈베리 파이가 같은 네트웍이 아니어도 상관없다.

xbmc[ xbmc의 웹서버 설정 화면 ]



2. 스마트폰에서 설정하기

스마트폰에는 xmbc remote 어플을 설치한 후 Manage XBMC Hosts에 접속할 라즈베리 파이 xbmc서버를 추가한다.

xmbc remote[ xmbc remote어플에서 접속할 xmbc 서버를 추가하는 화면 ]



라즈베리 파이의 IP를 모를 경우에 라즈베리 파이 xbmc의 '시스템' -> '시스템 정보'에서 확인할 수 있다.
라즈베리 파이 xbmc에서 IP를 DHCP로 할당받는다면 부팅할 때 IP가 바뀔 수도 있다. IP가 바뀔 때마다 스마트폰에서 접속할 IP를 설정한다면 불편할 것이다. 공유기에서 '라즈베리 파이의 MAC주소'에 대해서는 '고정 IP'를 할당받도록 설정하는게 좋다.


xbmc remote[ 추가한 xbmc 서버 목록 ]


접속하면 다음과 같은 화면을 볼 수 있다. Remote Control를 터치한다.


xbmc remote[ xbmc에 연결된 어플 화면 ]


리모콘 버튼은 세부분으로 나누는데 크게 불편함이 없다.

1. 비디오, 음악, 사진, TV 등 바로 실행 버튼
2. play/stop 등의 재생 관련 버튼
3. 상하좌우 이동, 선택 버튼


xbmc remote[ xbmc remote 리모콘 ]


xbmc remote어플에서 'Now Playing'를 선택하면 다음과 화면을 볼 수 있다.


xbmc remote[ xbmc remote어플의 Now Playing ]


다음은 라즈베리파이 xbmc + 유선 USB 랜카드 + 프로젝터 + 스마트폰 xbmc remote 어플 조합으로 조작하는 xbmc화면이다.



xbmc[ 프로젝터로 본 xbmc 화면 ]


xbmc[ xbmc 영화 화면 ]


xbmc[ xbmc 음악 감상 ]





라즈베리 파이와 xbmc remote어플로 즐거운 영화감상하세요.

Posted by 좋은진호

댓글을 달아 주세요

  1. kaien

    그냥 노트북에 HDMI 로 연결해서 프로젝터로 보는게 편할듯 -0-; 저도 저거 알아봤는데 가격 메리트 빼곤 실사용 할 땐 오히려 돈이 더 들어갈거 같더라구요 ㅠㅠ

    2012.10.08 23:06 [ ADDR : EDIT/ DEL : REPLY ]
    • 맞아요. 편리함이나 안정성 따지면 노트북이 낫겠죠.
      하지만 이건 재미죠. 재미 요소가 정말 강해요.
      해볼 것도 많구요.

      2012.10.09 09:01 신고 [ ADDR : EDIT/ DEL ]
  2. 제 티스토리로 퍼감니다. ^-^

    2012.10.20 04:05 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 오! 이런 귀여운 장난감이 다 있네요.

    2012.11.13 20:29 [ ADDR : EDIT/ DEL : REPLY ]
    • ㅋㅋ 예. 재미난 장난감입니다.
      작지만, 뭐든 될 수 있는 줄기세포같은 존재 ^^

      2012.11.14 23:00 신고 [ ADDR : EDIT/ DEL ]
  4. 라즈베리파이를 아주 유용하게 활용하고 계시네요. 재미있게 봤습니다. 앞으로 더 좋은 활용을 기대합니다.

    http://www.nulsom.com/modules/board/bd_view.html?id=board_notice&p=1&or=bd_order&al=asc&no=6

    에서 라즈베리파이와 microSD 어댑터 공구 진행하고 있으니 참고하세요. ^-^

    2012.11.24 00:57 [ ADDR : EDIT/ DEL : REPLY ]
  5. 익명

    비밀댓글입니다

    2012.12.04 11:11 [ ADDR : EDIT/ DEL : REPLY ]
  6. 익명

    비밀댓글입니다

    2013.02.06 10:03 [ ADDR : EDIT/ DEL : REPLY ]

시스템이야기2012. 9. 12. 18:38

SAN 스위치는 설치 후에 버전상의 문제가 없다면 펌웨어를 업그레이드 할 일이 거의 없다.
저는 SAN 스위치(SAN Switch)를 운영하지만 스토리지 전문 엔지니어가 아니다. SAN에서 CLI명령을 조금 사용하는 정도다. 이번에 펌웨어 업그레이드할 기회가 생겼고, 직접 해보고 싶어서 전문 엔지니어에 맡기지 않고 해봤다.



참고로 Brocade SAN 스위치의 Febric OS는 리눅스 기반으로 만들어졌다. OS적 관점에서 몇가지 특징을 이야기 하면 다음과 같다.

  • 패키지는 rpm으로 되어 있다.
  • CLI접속시 restricted bash(rbash)가 동작한다.
  • CLI용 명령은 쉘스크립트로 이뤄진 것이 많다. (memshow, version, ... 등)
  • CLI는 admin ID로 접속하지만 리눅스 기반이니 root ID도 있을 것이다. 하지만 ssh접속은 admin만 가능하게 제한되어 있을 것이다. (추측)


1. 현재 SAN 스위치 정보 확인하기

version, firmwareshow 등으로 버전 정보를 미리 확인한다.

SAN2:admin> firmwareshow
Appl     Primary/Secondary Versions
------------------------------------------
FOS      v6.4.2a                       <-- Primary   버전
         v6.4.2a                       <-- Secondary 버전
SAN2:admin>

SAN2:admin> version
Kernel:     2.6.14.2                   <-- 기반 OS인 리눅스 커널 버전
Fabric OS:  v6.4.2a                    <-- OS버전
Made on:    Mon Jul 18 22:27:42 2011
Flash:      Tue Feb 21 18:35:31 2012
BootProm:   1.0.9
SAN2:admin>



2. FTP 설정

펌웨어 v6.4.2a -> v6.4.2b로 업그레이드 한다고 가정하자. 펌웨어 파일 v6.4.2b.zip을 FTP서버에 풀어놓는다.


FTP 서버 종류는 다양하므로 FTP서버 셋팅은 따로 설명하지는 않겠다.
저는 /data/brocade/v6.4.2b/ 디렉토리에 펌웨어가 있고, /data/brocade/ 를 FTP의 root 디렉토리로 지정했다.


3. SAN 스위치 펌웨어 업그레이드 (CLI 환경)

firmwaredownload 명령 하나로 쉽게 업그레이드할 수 있다.


SAN2:admin> firmwaredownload -s
Server Name or IP Address: 10.10.10.10       (FTP 서버의 IP를 지정)
User Name: ftpuser
File Name: /v6.4.2b/release.plist            (FTP의 release.plist 파일 경로를 지정한다. 경로 지정 주의. 아래에 별도 설명)
Network Protocol(1-auto-select, 2-FTP, 3-SCP) [1]: 2
Password:
Do Auto-Commit after Reboot [Y]: y           (리부팅 후 auto commit 여부)
Reboot system after download [N]: y          (download후 자동으로 rebooting 여부)
Server IP: 10.10.10.10, Protocol IPv4
Checking system settings for firmwaredownload...
System settings check passed.

You are running firmwaredownload with auto-reboot and auto-commit enabled. After the firmware is downloaded the system will reboot and commit firmware automatically.


Do you want to continue (Y/N) [Y]: y
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Start to install packages...
dir                         ##################################################
ldconfig                    ##################################################
... 생략 ...
awk                         ##################################################
ipsec                       ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.

All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.
HA Rebooting ...


위에서 'File Name: '에 release.plist 경로를 지정할 때 주의가 필요하다.
release.plist 파일은 /v6.4.2b/ 아래에 스위치 타입 디렉토리(SWBD??/)마다 존재한다. 업그레이드시에 타입은 자동으로 파악된다. 따라서 /v6.4.2b/SWBD83/release.plist 로 지정하지 않고 /v6.4.2b/release.plist 처럼 지정해야 한다.


리부팅 후에 version, firmwareshow 등으로 버전 정보를 다시 확인한다.
펌웨어 업데이트시에 auto commit을 선택하지 않았을 경우에 리부팅 후 firmwarecommit 을 한번 해주면 commit이 된다.

GUI화면에서 업그레이드 방법 등 자세한 것은 '커피닉스에 올려둔 글'을 확인하기 바란다.

Posted by 좋은진호

댓글을 달아 주세요

시스템이야기2009. 2. 26. 09:30

FreeBSD 7.0부터는 오픈솔라리스의 ZFS(Zettabyte File System)을 사용할 수 있다. ZFS는 파일시스템과 볼륨관리자가 통합되어 있는 장점을 최대한 살려 한두개의 과정만으로 파일시스템을 바로 사용할 수 있다. 또한 마치 찰흙을 붙였다 떼었다 하는 듯한 느낌으로 볼륨 관리의 유연성을 맛 볼 수 있다. 그러나 FreeBSD에서는 아직 실험적으로 동작중이며, IO 성능 또한 만족스럽지 못하다. 결국 FreeBSD에서 만큼은 미래를 위해 맛보기용 파일시스템로 즐기면 될 듯 싶다.

간단한 ZFS의 특징을 정리하면.

- 파일시스템 + 볼륨관리자가 통합되었다.
- 128비트 파일시스템이며, 디렉토리와 파일의 갯수에 제한이 없다.
- 미러링, 그리고 RAID기능에 해당하는 raidz를 지원한다.
- 물리적 disk를 쉽게 스토리지 풀에 추가할 수 있다.
- 상태 모니터링이 효과적이다. (iostat, status, history, get 등)
- 스냅샷 기능을 지원한다.

1. ZFS 풀과 파일시스템 생성 (zpool create, zfs create, zpool list, zfs list)

# zpool create data mfid0s1h
# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
data                   31.8G    110K   31.7G     0%  ONLINE     -
# df -t zfs
Filesystem    1K-blocks    Used    Avail Capacity  Mounted on
data           32771968       0 32771968     0%    /data

zpool create 명령만으로 쉽게 '스토리지 풀'을 생성했다. 이 명령 하나만으로 바로 파일시스템을 이용할 수가 있다. 매우 간단하지 않는가?
리눅스의 LVM과 비교해보자. LVM은 PV 생성 -> VG 생성 -> LV 생성의 3과정을 거쳐야 한다. 1) 디스크나 파티션을 LVM으로 사용하겠다고 선언하는 PV(Physical Volume) 생성(pvcreate) 과정. 2) 이후 PV를 하나의 큰 덩어리로 묶는 VG(Volume Group) 생성(vgcreate) 과정. 3) 필요한 만큼만 떼어 내어 실제 사용가능한 파일시스템으로 만드는 LV(Logical Volume) 생성 과정. 이와 비교하면 zfs는 정말 간단하다.

이제 하나의 풀에 여러 파일시스템을 만들어보자.

# zfs create data/backup
# zfs create data/log
# zfs create data/photo
# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
data          182K  31.3G    22K  /data
data/backup    18K  31.3G    18K  /data/backup
data/log       18K  31.3G    18K  /data/log
data/photo     18K  31.3G    18K  /data/photo

data 풀에 data/backup, data/log, data/photo 파일시스템을 생성했다. 그런데 마운트포인트가 모두 /data 아래로 생성되었는데, 다른 곳으로 할 수는 없을까? zfs set 명령 하나면 바로 변경 가능하다. 또는 생성할 때 -o mountmpoint=/backup 옵션으로 지정할 수 있다.
(※ zfs get all 또는 zfs get mountpoint로 속성 정보를 얻을 수 있다.)

# zfs set mountpoint=/backup data/backup
# zfs list /backup
NAME          USED  AVAIL  REFER  MOUNTPOINT
data/backup    18K  31.3G    18K  /backup
# df -h -t zfs
Filesystem    1K-blocks    Used    Avail Capacity  Mounted on
data              31G      0B     31G     0%    /data
data/log          31G      0B     31G     0%    /data/log
data/photo        31G      0B     31G     0%    /data/photo
data/backup       31G      0B     31G     0%    /backup

위의 파티션을 보면 용량이 모두 31GB로 표시되었다. zfs의 각 파티션이 '스토리지 풀'의 최대 용량까지 함께 사용하기 때문이다. data/photo 파티션은 5G만 사용하라고 쿼터를 할당해보자. 이 쿼터는 허용치만큼 늘릴 수도 줄일 수도 있다. 리눅스의 LVM이 확장하는 것만 가능(lvextend)한 것과 비교하면 상당히 유연한 자세를 취하고 있다.

# zfs set quota=5g data/photo
# zfs list data/photo
NAME         USED  AVAIL  REFER  MOUNTPOINT
data/photo    18K  5.00G    18K  /data/photo
#
# zfs set quota=3g data/photo
# zfs list data/photo
NAME         USED  AVAIL  REFER  MOUNTPOINT
data/photo    18K  3.00G    18K  /data/photo
#
# df -h data/photo
Filesystem    Size    Used   Avail Capacity  Mounted on
data/photo    3.0G    128K    3.0G     0%    /data/photo

만약 다른 파티션에서 용량을 사용하게 되면 그 양만큼 다른 파티션은 사용할 공간이 줄게 된다. 아래를 보면 /data/log가 11G를 사용중이다. 그래서 다른 파티션은 31GB-11GB 뺀 용량이 전체 사이즈로 표현된다.

# df -h -t zfs
Filesystem     Size    Used   Avail Capacity  Mounted on
data            20G      0B     20G     0%    /data
data/log        31G     11G     20G    35%    /data/log
data/photo     3.0G    128K    3.0G     0%    /data/photo
data/backup     20G      0B     20G     0%    /backup

ZFS는 자체에 데이터 안정성을 높을 높이는 mirror와 RAID-Z 기능을 제공한다. mirror기능으로 풀을 만들어 보자.

# zpool create backup mirror mfid1 mfid3
# df -h -t zfs
Filesystem    Size    Used   Avail Capacity  Mounted on
backup         66G      0B     66G     0%    /backup

디스크는 SAS 73GB짜리이다. ufs 또는 zfs로 1개의 파일시스템을 만들면 66GB가 나온다. 2개 디스크인데, 132GB가 아닌 66GB로 표시되는 것은 mirror로 생성되었음을 보여준다. mirror로 설정되어 있는지 확인하는 방법은 뒤에서 다시 얘기하겠다.

2. zfs는 당신이 한 일을 모두 알고 있다. (zfs history)

# zpool history
History for 'data':
2009-02-16.18:32:06 zpool create data mfid0s1h
2009-02-16.18:33:23 zfs create data/backup
2009-02-16.18:33:31 zfs create data/log
2009-02-16.18:33:50 zfs create data/photo
2009-02-16.18:35:19 zfs set mountpoint=/backup data/backup
2009-02-16.18:41:17 zfs create -o mountpoint=/work data/work
2009-02-16.18:51:07 zfs set quota=5g data/photo
2009-02-16.19:00:09 zfs set quota=3g data/photo
2009-02-16.19:16:41 zfs set quota=5g data/photo
2009-02-16.19:21:36 zfs set quota=3g data/photo
2009-02-16.19:28:49 zfs destroy data/work

'data' 풀에 적용된 작업이 모두 나왔다.

3. 상태 살펴보기 (zpool iostat, zpool status)

# zpool iostat 2
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
data        11.4G  20.4G      8     63   881K  1.58M
data        11.6G  20.1G      0  1.75K  32.0K   128M
data        11.9G  19.9G      0  1.88K  64.0K   133M
data        12.1G  19.7G      0  2.09K  32.0K   128M
data        12.3G  19.4G      0  2.17K  64.0K   131M
data        12.6G  19.2G      0  2.20K  32.0K   137M
data        12.8G  18.9G      0  2.33K  32.0K   139M
data        12.9G  18.9G    610  1.49K  75.8M  77.8M
data        12.9G  18.9G    521  1.61K  65.0M  89.7M
data        12.9G  18.9G    615  1.35K  76.5M  71.2M

IO 상태를 2초간격으로 살펴본 것이다. 리눅스나 FreeBSD에서 iostat를 해봤을 것이다. iostat는 디스크별로 IO를 보는 것이며, zpool iostat는 '스토리지 풀'별로 살펴보는 것이다. 'data' 풀의 ONLINE상태를 확인할 수 있다.

# zpool status
  pool: data
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          mfid0s1h  ONLINE       0     0     0

다음은 'backup'풀이 mfid1, mfid3 2개 disk를 사용하여 mirror되어 있는 것을 볼 수 있다.

# zpool status
  pool: backup
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        backup      ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            mfid1   ONLINE       0     0     0
            mfid3   ONLINE       0     0     0

errors: No known data errors

4. ZFS 풀과 파일시스템 unmount & 지우기 (zpool destroy, zfs umount, zfs destroy)

파일시스템를 umount하기 위해서는 'zfs umount 파일시스템' 형태로 하며, 완전 제거는 'zfs destroy'로 한다. 파일시스템이 사용중이지 않으면 바로 unmount와 제거가 가능하다.

# cd /data/log
# zfs umount  data/log
cannot unmount '/data/log': Device busy
# cd /
# zfs umount  data/log
# zfs mount   data/log
# zfs destroy data/log

스토리지 풀 전체를 제거할 때도 마찬가지로 zpool destroy로 하면 된다.

# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
data                   31.8G   10.9G   20.9G    34%  ONLINE     -
# zpool destroy data
cannot unmount '/backup': Device busy
could not destroy 'data': could not unmount datasets
# cd /
# zpool destroy data
# zpool list
no pools available

5. FreeBSD에서는 ZFS를 서비스에 적용할 수 있을까? (성능 및 기타 사항)

ZFS는 최소 1GB이상의 메모리를 권장한다. 그러나 ZFS는 실제 많은 메모리를 사용하는 경우가 있다. 파일시스템 성능 체크를 하는 동안 panic: kmem_malloc(16305): kmem_map too small: 332353536 total allocated 같은 메시지를 뿌리면서 몇 번 다운되었다. i386 환경에서는 kmem address space(vm.kmem_size_max)의 최대값이 320M으로 되어 있다. 그러나 이 수치는 ZFS을 사용하기에는 낮은 수치이므로 기본값을 그대로 사용할 경우에는 커널 패닉이 발생할 수 있다고 한다. 그래서 나도 다운이 된 것이었다. vm.kmem_size는 read only값이므로 /boot/loader.conf 에 다음 2줄을 추가한다. 그리고 부팅을 하고, 필요시 이 수치는 더 늘리면 된다.

vm.kmem_size="512M"
vm.kmem_size_max="512M"

[ 부팅 전 ]
# sysctl -a|grep kmem
vm.kmem_size_scale: 3
vm.kmem_size_max: 335544320
vm.kmem_size_min: 0
vm.kmem_size: 335544320

[ 부팅 후 ]
# sysctl -a|grep kmem
vm.kmem_size_scale: 3
vm.kmem_size_max: 536870912
vm.kmem_size_min: 0
vm.kmem_size: 536870912

bonnie++로 Sequential Output/Input/Create, Random, Random Create의 성능 비교를 했다. ufs 파일시스템과 비교했을 때 각 항목별로 대략 2~5배 이하의 만족스럽지 못한 성능이 나왔다. zfs 기본 생성외에 mirror로 이뤄진 풀, raidz 로 이뤄진 풀도 낮은 수치인 것은 마찬가지였다.

그리고, 부팅 후 ZFS를 처음 create할 때는 다음과 같은 메시지가 나온다.

This module (opensolaris) contains code covered by the
Common Development and Distribution License (CDDL)
see http://opensolaris.org/os/licensing/opensolaris_license/
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

'WARNING' 부분이 보이는가? FreeBSD에서는 실험적인 상태이고, 성능 또한 상당히 낮으니, 편리함과 유연함을 높이 산다고 하더라고 서비스에 적용하기는 무리가 있다. 아직 FreeBSD에서는 재밌게 즐기면 된다. 즐기다 보면 미래에 적용해도 괜찮을 때가 오겠지...

6. 참고 자료

* ZFS 시작하기
* ZFS Tuning Guide
* FreeBSD 7.1 달라진 것 몇가지 (2009.1.20, 글 좋은진호)
* FreeBSD 7.0 사용기 (2008.3.7, 글 좋은진호, ZFS 사용기 일부 포함)



Posted by 좋은진호

댓글을 달아 주세요

  1. I'mSolarisMan

    오픈솔라리스의 zfs를 쓰세요. 아주 안정적이고 훨씬 나은 성능을 보여줍니다.

    2009.02.27 16:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 예. 그렇겠죠. 오픈솔라리스에서 나온 것인데, 보다 나은 성능과 안정성을 갖는 것은 당연한 것일겁니다. 아무튼 오픈솔라리스의 zfs, dtrace등 좋은 기능을 다른 OS에서도 만나볼 수 있다는 것은 큰 기쁨입니다. ^^

      2009.02.28 00:30 신고 [ ADDR : EDIT/ DEL ]
  2. 오픈솔라리스의 zfs에 반해서 리눅스 native zfs 쪽에 관심을 가지고 있습니다. 그런데 기업입장에서 쓰려고 하니 CDDL가 눈에 밟힙니다. CDDL 문서를 봤을 때는 기업이 써도 문제가 없어 보이기는 하는데, 왠지 뒤통수가 근질근질 합니다.

    기업 입장에서 CDDL을 사용함으로써 문제가 될 만한게 있을 까요 .

    2012.05.24 11:08 [ ADDR : EDIT/ DEL : REPLY ]
    • 개발자나 기업입장이라면 GPL보다는 CDDL이 더 나을 겁니다. GPL보다는 완화된 면이 있으니깐요. 자사SW와 CDDL소스간에 결합도 나을테구요.

      2012.05.25 13:38 신고 [ ADDR : EDIT/ DEL ]

IT이야기2009. 2. 3. 19:37
리눅스에서는 GQview( http://gqview.sourceforge.net/ ), gThumb 등으로 Exif 정보를 쉽게 살펴볼 수 있다.

01


사진의 Exif 정보에는 찍은 시간, 어떤 디카를 갖고 있는지 등 너무 상세한 정보가 적나라게(?) 드러난다. '아~ 이사람 그시간에 저기에 있었군'이라는 느낌을 받기 싫다면 gimp에서 Exif 정보를 지우고 저장할 수 있다. 저장할 때 Exif 정보를 함께 저장할 것인지 선택('Save EXIF data')할 수 있는데, 체크만 해제(기본값은 체크되어 있음)하면 된다.


Exif정보가 말끔히 사라졌다.

Posted by 좋은진호

댓글을 달아 주세요

  1. 결국 진호님 저시간에 어디서 뭘하고 계셨던건지 알리고 싶지 않았다는거죠~ ㅋㅋㅋㅋ

    2009.02.03 23:05 [ ADDR : EDIT/ DEL : REPLY ]
    • 사진을 찍는 경우도 별로 없어 그다지 숨길만한 것은 없어요.
      혹 모르겠네요. 나중에는 ㅋㅋ

      gimp에서 exif정보를 저장하지 않는 기능이 있고, exif를 수정하는 툴도 있는 것을 보면 exif를 감춰야할 필요가 있다는 것을 의미하는 것 같습니다. 이런 기능을 찾는 이들이 있다는 것이니깐요.

      아~ 근데, 이제 블로그에 글 쓰실 때도 되셨는데.. ㅋㅋ

      2009.02.04 00:31 신고 [ ADDR : EDIT/ DEL ]
  2. ㅎㅎ 제 삶에대해 좀더 생각해보고, 정의가 되면 슬슬 글을 쓰려구요....
    사람을 움직 일 수 있는 글들을 쓰고싶어서, 요즘 글쓰기 학이나 씨나리오 작성법 쪽 공부중이에요 ㅋㅋㅋㅋ

    2009.02.04 01:14 [ ADDR : EDIT/ DEL : REPLY ]
    • 멋지게 그려진 글이 아니여도 미르님 생각만 보여주셔도 충분히 좋아요. 어여~~ 드러내주세요. ^^

      2009.02.07 00:09 신고 [ ADDR : EDIT/ DEL ]
  3. 요런 재미난 기능이 있었군요.

    2009.02.04 01:49 [ ADDR : EDIT/ DEL : REPLY ]
  4. 다행이도 Exif를 수정하는 기능은 없는것 같군요.
    요즘 이 정보를 수정해서 악용하는 사람들도 있다고 합니다. ^^

    2009.03.01 23:26 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • Exif 수정해서 악용하는 경우도 있군요. 좋은 목적으로 나온 기능인데, 왜 이를 악용하는지... 안타깝네요.

      2009.03.02 12:37 신고 [ ADDR : EDIT/ DEL ]
  5. 리눅스에도 저런 방법이 있었군요..저는 EXIF값을 지우고 싶어서 지우는 것은 아니지만. 모 캡처 프로그램 같고
    수정만 하고 저장하니까 없어지던군요..오늘 좋은것 알아 갑니다.

    2009.03.05 20:06 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 감사합니다. 저도 덕분에 오페라는 기본 기능으로 Exif 정보를 볼 수 있다는 걸 알았네요.

      2009.03.05 23:12 신고 [ ADDR : EDIT/ DEL ]

시스템이야기2008. 7. 28. 21:23
2주전의 일인 것 같다. 문득, 리눅스에서는 인터페이스명이 eth0, eth1 처럼 사용하는데, 반드시 eth로 시작해야할까라는 생각이 들었다. 서버에 있는 2개의 랜카드중 하나만 설정을 변경해봤다. /etc/sysconfig/network-scripts/ifcfg-eth1을 ifcfg-coffeenix0을 변경하고, 설정값 중 DEVICE=coffeenix0로 설정한 다음 리부팅했다. (CentOS 기준)

DEVICE=coffeenix0
BOOTPROTO=static
BROADCAST=192.168.XX.XXX
HWADDR=00:0F:XX:XX:XX:XX
IPADDR=192.168.XX.XXX


아~ 임의로 인터페이스명을 지정해도 된다.

# ifconfig
coffeenix0 Link encap:Ethernet  HWaddr 00:0F:XX:XX:XX:XX
          inet addr:192.168.XX.XXX  Bcast:192.168.XX.XXX  Mask:255.255.XXX.XXX
          inet6 addr: ...생략.../64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:832 (832.0 b)  TX bytes:47862 (46.7 KiB)
          Interrupt:217
eth0      Link encap:Ethernet  HWaddr 00:0F:XX:XX:XX:XX
... 생략 ...

'그럼 변경해서 뭐하냐? 쓸모 없는 것 같고...'라고 한다면, 인터페이스명을 보고 직관성을 높일 수 있다. 미러링을 하는 포트라면 mir0 처럼 인터페이스를 설정하면 보다 직관적으로 확인이 가능할 것 같다. 랜카드가 3개이상이고, 그 중 하나는 meta data 통신용이라면 meta0처럼 지정하면 보다 쉽게 알 수 있을 것이다. 참고로 ifcfg-eth1 파일명을 그대로 두고 안의 DEVICE= 설정만 변경해도 된다. 단지 파일명은 직관적으로 보기위한 용도일뿐이다.

주의할 것은 몇몇 프로그램은 eth로 시작하지 않는 것은 인식하지 못할 수도 있다는 것. mii-tool은 eth0~eth7의 인터페이스만 자동으로 체크하므로 다른 인터페이스일 경우 별도로 지정해줘야 한다. sysctl로 'net.ipv4.conf.인터페이스명' 설정시 인터페이스별로 설정하여  사용해왔다면 이부분도 수정이 필요하다.

# mii-tool
eth0: negotiated 100baseTx-FD, link ok
# mii-tool coffeenix0
coffeenix0: negotiated 100baseTx-FD, link ok

고정관념이 무섭다. ^^

Posted by 좋은진호

댓글을 달아 주세요

  1. 아~ 그렇군요.
    정말 아무 의심없이 ethxx 로 사용하곤 하는데, 필요에 따라서 바꿔서 사용하면 좋겠네요 ^^

    2008.07.29 16:35 [ ADDR : EDIT/ DEL : REPLY ]

IT이야기2008. 4. 22. 00:52
CrossOver Office로 잘 알려진 CodeWeavers에서 리눅스와 Mac에서 윈도우즈 게임을 할 수 있는 CrossOver Games 7.0.0 을 발표했다. 발표한지는 시간이 좀 지났는데, 국내 리눅스 관련 커뮤니티나 블로그에서는 조용해서, 얘기를 끄집어 낸다.

사용자 삽입 이미지

CrossOver Games은 최신 Wine을 만들어졌으며, 맥 OS X는 Tiger와 Leopard에서 모두 잘 동작한다. 그리고, 리눅스는 우분투(Ubuntu) 7.10과 데비안(Debian) Etch에서 테스트가 되었다. 2개의 배포판에서 테스트되었다는 뜻이지 다른 배포판에서 안되는 것은 아니다. 공식 홈페이지에는 없는 내용이지만, FreeBSD와 FreeBSD기반의 데스크탑BSD인 PC-BSD, DesktopBSD에서도 운영되는 것으로 알려졌다. ( ./ 의 'CrossOver Games for FreeBSD' 참고)

지원하는 게임은 World of Warcraft(WoW), EVE Online, Guild Wars, Prey, Half-Life 2, Team Fortress 2, Counterstrike 등 다양하며, 전체 게임 목록은 CrossOver Games의 Compatibility 페이지에서 확인할 수 있다.

사용자 삽입 이미지
사용자 삽입 이미지

[ 이미지 출처 : CrossOver Games 에서 ]

Linux, Mac 버전 모두 39.95달러이며, trial 버전을 홈페이지에서 받아볼 수 있다.

구글의 리눅스용 피카사(Picasa)가 Wine을 최적화하여 만들어진 것인데,  윈도우즈보다는 느리게 동작한다. CrossOver Games도 Wine기반이다보니, 게임할 때 느려지는 문제가 있을 건데, 게임에 지장이 없을 만큼 속도감을 주느냐가 CrossOver Games의 가치 판단 기준이 될 것 같다.

Posted by 좋은진호

댓글을 달아 주세요

  1. 알 수 없는 사용자

    Crossover... Mac용을 써 봤습니다만 아주 이가 갈리지요. 특히 한글 입출력 문제는 답이 없음...OTL... XP는 확장완성형, OSX는 첫가끝 유니코드를 사용하는게 문제이지요. 거기다 인터넷 익스플로러도 아주 심각하게 오작동합니다. 널리 알려져있다시피 한글 워드 2000년 이후 버전들은 Wine에서 안 굴러가고 말이지요.

    2008.04.22 01:43 [ ADDR : EDIT/ DEL : REPLY ]
    • CrossOver Mac(CrossOver Mac, Linux로 이름이 바뀌 전에는 Office)은 리눅스에 비해 상당히 심한가보네요. 오래전이긴 한데, 리눅스에서 IE에 한글 폰트를 설치해서, 그런대로 IE를 사용했거든요.

      2008.04.22 02:20 신고 [ ADDR : EDIT/ DEL ]
  2. 결국 와인의 문제점을 그대로 가지고 있다는 이야기군요. 음...

    2008.04.22 01:56 [ ADDR : EDIT/ DEL : REPLY ]
  3. 알 수 없는 사용자

    아직 와인은 와인인가...

    2008.04.22 07:36 [ ADDR : EDIT/ DEL : REPLY ]
  4. 예전에 WINE으로 스타크래프트 돌릴 때 오버로드 대각선으로 정찰보내고 점심먹고 왔더랬죠. :(

    2008.04.22 11:17 [ ADDR : EDIT/ DEL : REPLY ]
    • 정일님이 전에 리눅스 사용하셨구나.. 와우~~

      2008.04.23 22:59 신고 [ ADDR : EDIT/ DEL ]
    • 알 수 없는 사용자

      10년 정도 된 오래전 이야기죠.
      슬랙웨어 버전 8인가? 처음으로 접하고 리눅스의 매력에 빠져 거의 한동안 다른 것은 안하던 때가 있었죠.

      한 때 그걸로 밥벌어 먹고 살기도 했는데...
      후후~

      지금은 그냥 쉬엄쉬엄 천천히 살고 있습니다.

      2008.04.23 23:29 [ ADDR : EDIT/ DEL ]
  5. 가상화가 있는데 호환성도 떨어지고 속도도 떨어지면 안 되겠죠.
    편의성은 좋을 듯 한데. 어떨지 궁금합니다.

    2008.04.22 11:25 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • CrossOver Games 사용하신분은 별로 없어서 어떨런지는...

      Cross...의 목표는 정상 실행이 되도록 하는 것이니깐, 실행은 잘 것 같은데, 아무래도 속도가 관건일 것 같습니다.

      2008.04.23 23:01 신고 [ ADDR : EDIT/ DEL ]
  6. 결국 아직은 해결되지 못한 먼나라 이야기... ㄱ-

    2008.04.23 07:00 [ ADDR : EDIT/ DEL : REPLY ]
  7. ㅡ.ㅡ 한번 설치해 봐야겠네요...ㅎㅎㅎ

    2008.04.23 23:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 삐꾸강아쥐님 잘 지내시고 계셨네요.
      저는 설치 안해볼겁니다. ㅎㅎ 윈도우에서도 게임을 거의 안하거든요. 설치해보시면 결과라도 말씀해주시면 감사.. ^^

      2008.04.24 00:10 신고 [ ADDR : EDIT/ DEL ]
  8. 한번 써보고 싶군요^^
    안그래도 우분투 새버전 나와서 업데이트도 해야하고~
    근데 아쉽게도 Blizzard Entertainment 스타크래프트가 안되네요..

    2008.04.28 00:09 [ ADDR : EDIT/ DEL : REPLY ]
    • 우분투 매니아? 하기야 잡지에 기고도 했으니.
      새로운 것 자주하는 너 모습 보기 좋다. 어여~ 해봐~~ (압박 ㅋㅋ)

      2008.04.29 00:14 신고 [ ADDR : EDIT/ DEL ]
  9. CrossOver Games 를 통해 EvE-Online 이 mac 에서 돌아가죠.
    성능이 떨어지는 (특히 VGA) 시스템은 고작 화면만 보는수준이라고 해야 되구요.
    VGA 성능이 좋은(macbook pro 8600m 512m) 같은 시스템에선그럭저럭 할만하네여..
    (다만 PvP 이나 Mission 불가능.. Leg으로 인한 플레이어 사망에 이름..)
    근데 결정적으로 2byte 지원이 안되서 챗팅이 안되는것이 가장 큰 불만..

    2008.09.29 14:09 [ ADDR : EDIT/ DEL : REPLY ]

IT이야기2008. 4. 1. 14:29
아침부터 구글의 사투리 번역( http://www.google.co.kr/landing/saturi/ )과 티스토리의 '샨새교 교주'검색( http://tistory.com/AF/searchAF/ )등으로 떠들썩하다. 4월은 늘 이렇게 떠들썩하게 시작한다.

사용자 삽입 이미지

kernel.org도 만우절 이벤트(?)에 동참하기 위해 재밌는 메일링을 발송했다. 발송시간이 'Tue, 01 Apr 2008 01:01:17'. 제목 또한 눈에 띤다. 'Kernel.org Downtime Notice - Please read *very* important'. mirror 서버, 공개된 서버, 백엔드 마스터 서버 등 kernel.org의 모든 서버를 OS 업그레이드를 이유로 서버를 내린다는 것이다. 그것도 'Linux Kernel Organization'에서 리눅스를 안쓰고 FreeBSD를 쓰겠다는 얘기를 꺼낸다. FC5에서 FreeBSD 7.0로 ^^. 메일의 뒷부분에는 SlashDot의 링크 등을 걸어놓으며, 이러한 결정하게된 근거를 써놨다. 가볍게 결정하지 않은 것 처럼 말이지...

메일링 전체 내용 : http://lkml.org/lkml/2008/3/31/367

I and the other Kernel.org admins would like to announce downtime for
ALL kernel.org machines (this includes all of the mirror machines, the
public machines and the backend master).  The downtime is scheduled to
start on or around April 2nd, 2008 on or around 0001 UTC.

After much deliberation, research and argument in #korg (along with
screaming matches between HPA and I over dinner) we are upgrading the
kernel.org machines from Fedora Core 5 to FreeBSD 7.0.  This decision
does not come lightly to the Kernel.org admins, and we would like to
point out several key things that helped us form our decision:

이 메일링에 대한 답변( http://lkml.org/lkml/2008/3/31/369 ) 또한 재밌다.

Highly commendable.  You should take this opportunity to also upgrade
network facilities to meet the requirements as laid out in RFC1149 (CPIP).

매우 훌률하다고 칭찬의 말로 띄워준다. 이번에 RFC1149(CPIP) 서술된 요구사항을 만족시키기 위해, 네트웍 설비 또한 업그레이드할 기회를 가져야 한다고 덧붙인다. 여기서 재밌는 것은 RFC1149다. RFC1149(Standard for the transmission of IP datagrams on avian carriers, 조류를 이용한 IP datagrams 전송 표준)는 RFC 유머중에 하나로, 공식 RFC문서가 아니다. CPIP는(Carrier Pigeon Internet Protocol)는 얘기 안해도 이해가 될 것이다.

Posted by 좋은진호

댓글을 달아 주세요

  1. 정말로 FreeBSD 7.0 쓰게 되면 재밌겠네요.

    2008.04.01 19:59 [ ADDR : EDIT/ DEL : REPLY ]
    • 작년 여름에 대표 OS 벤더사(?)의 사이트는 어떤 OS를 사용하는지 살펴본 적이 있습니다. ( http://coffeenix.net/bbs/viewtopic.php?t=2397 ) 다들 자신의 것을 사용하고 있었죠.
      서버도 여러대일텐, 몇대는 랜던여신님의 말씀대로 FreeBSD 7.0을 사용해도 재밌을 것 같습니다. 거기에다가 실제로 4월 2일에 변경. ^^ '거짓말인 줄 았았는데 진실이더라'.. ^^

      2008.04.01 23:35 신고 [ ADDR : EDIT/ DEL ]
  2. 알 수 없는 사용자

    CPIP가 뭔가요?

    2008.04.02 16:32 [ ADDR : EDIT/ DEL : REPLY ]
    • CPIP(Carrier Pigeon Internet Protocol), 말 그대로, 비둘기가 IP datagrams를 전송하는 것을 말합니다. RFC 1149 유머와 동일한 것으로 보면 됩니다.
      이젠 만우절 이벤트는 필수인 것 같네요. ^^

      2008.04.02 22:15 신고 [ ADDR : EDIT/ DEL ]
  3. 참고로 2008.4.18 현재 kernel.org는 Fedora로 잘 운영되고 있다. ^^

    2008.04.18 23:08 신고 [ ADDR : EDIT/ DEL : REPLY ]

시스템이야기2008. 2. 11. 23:22
리눅스 커널 2.6.17부터 2.26.24.1 까지의 vmsplice() 콜의 버그로 로컬에서 root 권한을 획득할 수 있다. KLDP에도 나와있듯이, milw0rm에는 2개의 local root exploit 코드가 공개되어 있다. 테스트결과 너무 쉽게 root 권한이 획득되었다.

$ uname -r
2.6.18-8.1.8.el5
$ ./exploit
-----------------------------------
 Linux vmsplice Local Root Exploit
 By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7ee1000 .. 0xb7f13000
[+] root
# id
uid=0(root) gid=0(root) groups=501(truefeel)
#

개인사용자나 외부 접근이 제한된 시스템은 그나마 다행인데, 커널 2.6.x을 사용하는 호스팅업체나 공동 사용 서버는 빨리 대처해야할 것이다. 커널 패치를 적용하여 리부팅을 해야할 것이나 재부팅할 수 없는 서버도 있을 것이다. 이 땐 임시 메모리 패치hkpco님의 방어 커널 모듈을 이용하면 된다.

* 관련글


------------------------------------------------------------------
[ 내용 추가 ]

*2.13(수) 현재 RHEL5, Cent5 패치 커널 나옴
http://lists.centos.org/pipermail/centos-announce/2008-February/014684.html
https://rhn.redhat.com/errata/RHSA-2008-0129.html

==================================================================== Package                 Arch       Version          Repository        Size
==================================================================== Installing:
kernel                  i686       2.6.18-53.1.13.el5  updates            13 M
kernel-devel            i686       2.6.18-53.1.13.el5  updates           4.7 M
Updating:
kernel-headers          i386       2.6.18-53.1.13.el5  updates           785 k
====================================================================

Posted by 좋은진호

댓글을 달아 주세요

  1. xaswe

    관련글에 hkpco님은 hkpco.kr 관련 링크가 되야하는듯 o - o

    2008.02.12 00:57 [ ADDR : EDIT/ DEL : REPLY ]
    • 방어 소스코드는 hkpco.kr에 링크되어 있는데, 글은 블로그(car...)에 쓰여 있어서 저 URL로 링크했습니다.

      2008.02.12 12:10 신고 [ ADDR : EDIT/ DEL ]
  2. 알 수 없는 사용자

    앞으로 또 어떤 버그가 발견될지 기대됩니다. :-)
    역시 오픈소스인 커널이라 버그 패치가 상당히 빨리 이루어질수 있었겠죠.

    2008.02.12 12:56 [ ADDR : EDIT/ DEL : REPLY ]
    • exploit이 너무 많이 돌아다녀서, 스크립트 키드들이 득세하는 꼴이 되어버렸어요. 호스팅업체들은 바쁜 하루 보냈을 것 같아요. ^^
      그래도 커널 버전이 빨리 업되어서 다행입니다. 배포판별로 커널 패치가 적용된 패키지를 제공하지 않는 곳도 있지만, 임시 해결책으로 숨은 고를 수 있으니 천만 다행. ^^

      2008.02.12 18:49 신고 [ ADDR : EDIT/ DEL ]
  3. 익명

    비밀댓글입니다

    2008.07.08 21:31 [ ADDR : EDIT/ DEL : REPLY ]