뭘 이런걸..

Posted
Filed under Tech/Tip & Trick
Windows 10 사용중에 마우스만 움직이고 다른 기능은 다 멈추는 문제가 종종 발생했는데 찾아보니 "DynamicTick" 기술의 충돌 때문이라고 하네요. 자세한 건 하단의 "출처" 참고 하시고, 관리자 권한으로 cmd 실행해서

bcdedit /set disabledynamictick yes

실행한 후, rebooting 하시면 된다고 합니다.

출처: http://foxcg.com/246
2017/07/19 14:36 2017/07/19 14:36
Posted
Filed under Tech/프로그래밍
LePuTTY의 ZMODEM 기능을 iPuTTY에 포팅을 했습니다.

일단, 동작은 잘 하는 것 같네요. 좀 더 사용해 보고 문제가 없으면 0.69.1 로 릴리즈 할 예정 입니다. 그전에 PuTTY 0.70이 나오면 0.70으로 릴리즈 될 것이고요 :-)

https://github.com/iPuTTY/iPuTTY/pull/25

참고 하세요.
2017/06/12 03:40 2017/06/12 03:40
Posted
Filed under Tech/프로그래밍
어쩌다 보니 iPuTTY maintaing을 하게 되었습니다. 기존 관리자였던 김준기님이 작년에 project를 더이상 하지 않겠다고 project site에 공지를 올렸고, 비공식적으로 PuTTY 업데이트를 반영해서 사용하다가 그냥 제가 맡아서 하기로 하였습니다.

어쩌다 보니, 뒷처리 담당자로서 우뚝선 느낌입니다. :-)

어쨌든 4/29에 릴리즈된 PuTTY 0.69의 대응 버전을 릴리즈 했으며, 추가적으로 기능을 좀 더 강화 했습니다. 솔직히 GUI programing이 처음이고 PuTTY 코드를 제대로 본 것도 아니라서 잘 유지할 수 있을지 모르겠지만, 나서는 사람이 없어 일단 제가 총대를 매게 되었습니다. (아쉬운 사람이 해야 하는 관계로 T.T)

project 사이트는 bitbucket에서 GitHub로 이전을 했으며, https://github.com/iPuTTY/iPuTTY/wiki 를 이용하면 되겠습니다.

0.69 에서 제공하는 기능은 다음과 같습니다.

  • 한글 UI 제공
    • 다시 한글 UI를 제공 하며, pagent, puttygen, pscp, psftp 등 모든 프로그램에서 한글 UI를 제공 합니다.
  • 이제 64bit binary를 제공 합니다.
  • psftp 와 pscp 에서 UTF-8을 사용할 수 있습니다.
  • 한글 입력 모드에서 Esc를 누르면 자동으로 영문 입력 모드로 변경이 됩니다.
  • 서버 호스트키 체크 여부 옵션이 추가 되었습니다.
  • Cygterm backend 가 추가 되었습니다.
  • psftp 에서 ls 명령으로 개별 file 목록을 볼 수 없는 버그를 수정했습니다.

자세한 사항은 https://github.com/iPuTTY/iPuTTY/wiki 를 참고 하세요.
2017/05/17 01:34 2017/05/17 01:34
Posted
Filed under Tech/Tip & Trick
방금전, openvpn-gui 의 한글 번역이 review 를 통과 했습니다. 대충 번역만 해서 pull request를 날렸더니 까다롭게 하나하나 짚어 내는 군요.

그래서 좀 신경써서 테스트도 해 보고 해서 다시 제출을 하니 방금 approve가 되었습니다.

아마 다음 버전 릴리즈시에는 openvpn-gui 에서 한글을 보실 수 있을 겁니다. (단, 번역 품질은 ㅎㅎ)

https://github.com/OpenVPN/openvpn-gui/pull/155

사용자 삽입 이미지
사용자 삽입 이미지
2017/04/26 00:30 2017/04/26 00:30
Posted
Filed under Tech/Tip & Trick
금일 Xen Server 7.1로 업그레이드를 한 이 후에, oops.org VM 이 아래의 메시지를 뿌리면서 load가 되지 않는 문제가 있었습니다.

Failed Starting VM 'oops.org'

This operation cannot be performed because the specified virtual disk could not be found

정말 당황 스러웠습니다. 검색을 해 봐도 뾰족한 수는 없고, VM host에 로그인 해서 LVM partition을 봐도 제대로 인식은 되어 있었고..

oops.org는 기존에 Xen Server 7.0으로 운영을 하고 있었으며, Disk는 LVM으로 다음과 같이 사용을 하고 있었습니다.

Pysical disk:
  • /dev/sda   SSD 150G
  • /dev/sdb   SATA 500G

Logical disk:
  • oops.org
  • an2.pkg.oops.org
  • an2.x86.pkg.oops.org
  • test.oops.org

그런데, 다른 VM은 모두 load가 되는데, 하필 oops.org VM만 load가 되지 않는 것이었습니다. 특정 가상 disk를 인식을 할 수 없다는데, VM host에서 아무리 확인을 해 봐도 oops.org partition은 살아 있고, 실제로 다른 VM에 attach를 해서 확인을 해 봐도 잘 살아 있더군요.

2017년 1월 경에 장비 fault 나면서 복구 한지 이제 2달 정도 지났고, 정신 없이 지내다 보니 백업도 2017년 1월달 까지 밖에 없고, 좀 난감하더군요. 그래서 어쩔 수 없이 있는 파티션 날릴 각오를 하고 최후의 꽁수를 진행해 보았습니다.

  1. Detach oops.org virtual disk
  2. oops.org VM 제거
  3. oops.org VM 재생성
  4. Reattach oops.org virtual disk
  5. VM 재생성시에 생성된 가상 disk 제거
  6. boot 옵션을 Hard Disk로만 되도록 설정 변경
  7. rebooting

이 작업 이 후에, 다시 인식을 하여 oops.org VM load를 성공했습니다.

살짝 암담했었는데, 겨우 복구하고 한숨 한번 쉬어 주고, 이 글을 작성 합니다. --;
2017/03/29 04:24 2017/03/29 04:24
김정균

하.. 1년반이 지나서야 이 문제의 원인을 알았습니다.

아마 정말 virtaul disk 가 깨진 것이 아니라면 대부분 virtaal cdrom mount 를 한 상태에서 rebooting 을 했고, 부팅 시에 virtual cdrom을 eject 시킬 경우 이 문제가 발생을 합니다.

이 경우, XenCenter Console tab에서 DVD Drive를 xs-tools.iso (Xen 6) 또는 guest-tool.iso (Xen7) 로 선택한 후에 부팅을 하시면 됩니다. 그리고 OS가 부팅이 되어 있는 상태에서 eject 를 해 줘야 다음에 booting 이 정상적으로 진행이 됩니다.

Posted
Filed under Tech/안녕리눅스
안녕 리눅스 2.x 의 RPM-GPG-KEY 변경 공지 입니다.

혹시 YUM으로 /etc/yum.repos.d/AnNyung.repo 에 등록되어 있는 패키지 업데이트가 되지 않은 경우에는, 다음 사항을 참고 하여 조치를 하십시오.

  1. 대상

    안녕 리눅스 2 x86_64, i686

  2. 증상

    /etc/yum.repos.d/AnNyung.repo 에 등록된 repository의 패키지 업데이트가 되지 않는 증상이 발생할 수 있음

  3. 원인

    2017.01.16 OOPS.org 서버 이전 중 서버 노후화에 의한 HDD, memory 손상. 특히 HDD 파손으로 인하여 RAID 10이 깨져서 데이터 복구 불가능하여, 안녕 리눅스 2의 패키지 빌드 private key를 손실 하여, 새로운 키를 생성해서 모든 패키지를 resign 함.

  4. 해결책

    업데이트가 되지 않을 경우에는, 수동으로 annyung-release package 업데이트를 해야 함. 기존의 패키지들을 신규 생성한 private key로 다시 sign 을 하였기 때문에 예전의 공개키로는 verify 를 할 수 없습니다. 그러므로 공개키를 갱신시키기 위하여, 공개키를 포함하고 있는 annyung-release package를 수동으로 재설치 해 주어야 합니다.

    [root@host ~]$ rpm -Uhv --force http://mirror.oops.org/pub/AnNyung/2/inst/annyung-release.rpm


    깨끗이 정리를 위해서는 분실된 이전 공개키를 제거해 주십시오.

    [root@host ~]$ rpm -e gpg-pubkey-0eff2026-4eedfee5

OOPS.org 서버는 Xen server 6.5에 4개의 VM (oops.org, an1.pkg.oops.org, an2.pkg.oops.org, an2.x86.pkg.oops.org)으로 구성이 되어 있습니다. 이번 사건은 RAID를 너무 맹신했던 것이 가장 큰 문제였으며, 2번째로는 장비의 노후화 및 서버 부품 조달 비용에 대한 문제가 있었습니다.

RAID 복구 시에 깨끗하지 못한 여분 하드를 사용한 것이 RAID가 깨진 가장 큰 원인이었으며, 여분 하드 역시 다른 RAID 정보를 가지고 있어 발생한 문제 입니다. 더군다나 RAID 10을 맹신하여, VM 2대에 key가 분산이 되어 있어 외부 백업을 하지 않은 것이 가장 큰 원인 입니다.


2017/01/22 20:11 2017/01/22 20:11
Posted
Filed under 주절주절
2017년 1월 16일에 OOPS.org 서버를 이전하다가 HDD가 망가지면서 모든 데이터가 날라가는 상황을 맞이 했습니다.

다행이 백업 데이터가 있어 현재와 같이 임시로 복구를 하기는 했지만, 웹상의 데이터만 복구를 했지 실제로 background에서 작업을 하던 데이터들을 모두 날려 버린 상황이 되었습니다.

머리속에 얼마간 저장되어 있는 것들은 하나씩 새로 만들어 나가고 있기는 한데, 잘 기억이 나지 않는 것들과 심지어는 기억속에서 사라진 작업들이 복구를 하다 보니 나타나기 시작합니다. 참 난감합니다.

올해로 OOPS.org 를 운영시작한지 20 주년인데, 20주년의 시작이 아주 멋지게 시작 합니다. 해당 장비가 2006년에 중고 서버를 기증 받은 것인데, 10년동안 잘 사용하고 퇴역을 하기는 했지만, 데이터까지 같이 가지고 가버린 상황이 되었습니다.

일단은, 박진우님께서 제공해 주신 임시 장비로 웹 서비스만 일단은 올렸지만 난감한 상태이기는 합니다. (정말 감사합니다. _o_, 복구 때문에 정신이 없어서 미쳐 감사의 말씀도 전하지 못했네요.)

가장 큰 문제는 현재, 안녕 리눅스 2의 패키지 사인을 한 key를 소실했다는 점입니다. 이 부분이 해결이 안되면 모든 안녕 리눅스 2 서버의 안녕 2 패키지 공개키를 업데이트 해야 하는 사태가 발생하게 됩니다. 아직 안녕 2 빌드 환경을 구성하지 못해서 확실하게 이렇다고는 못하지만 예상으로는 50% 이상이 키를 교체해야 하지 않을까 예상 합니다.

현재 OOPS.org 환경의 복구율은 40% 정도 진행이 된 상태 입니다. 20여년을 운영을 하다 보니 상당히 복잡한 시스템이 되어 버렸었네요. 솔직히 이번 서버 이전을 해야 하는 상황과 장비가 죽었을 때는 이젠 그만 해야 할 때가 되었나 싶기도 했었습니다.

어찌 되었든 운영은 계속 하게 되었지만, 복구 문제와 서버 장비 문제는 여전히 골치 거리 이네요. --;
2017/01/20 23:37 2017/01/20 23:37
mapoo

안녕하세요. mapoo.net 블로그 주인장입니다. 오래전부터 김정균님의 행보를 KDLP와 oops.org 에서 먼발치에서 보아 왔는데요.. oops.org가 구글에서 검색이 잘 안된 이유가 있었군요. 간만에 oops.org 사이트에 방문했다가 댓글 남겨봅니다. ^^

Posted
Filed under Tech/안녕리눅스
2016년 12월 31일 24:00 에 윤초가 추가될 예정입니다. (UTC 기준이니 우리나라 기준으로는 2017년 1월 1일 9시가 8시 59분 60초가 되겠네요.)

윤초에 대해서는 2012년에 요란을 떨 정도로 큰 장애(LinkedIn, Reddit  등의 Java로 운영을 하는 시스템들의 장애)가 있었습니다.

가장 마지막 윤초는 2015년 6월 30일에 있었으며, 2012년 사건 이후로 OS level과 time server들이 잘 대응을 해서 별 문제 없이 넘어간 듯 싶습니다.

그리고, 2016년 12월 31일에 또 윤초가 추가되게 됩니다.

여기서 논할 것은, 2012년의 문제가 잘 해결이 되어 있더라도, 또 다른 버그로 인하여 이 문제가 발생하는 것을 원천적으로 제거하는 방법에 대해서 논합니다. 물론 이론적인 것들은 인터넷 상에서 잘 논한것들이 있으니 여기서 다루지는 않습니다. 여기서는 이 이론들을 실무에 어떻게 적용을 하느냐 입니다.

윤초에 영향을 받는 서비스가 없거나 윤초 따윈 안중에 없어.. 하시는 분들은 사뿐이 브라우져를 즈려 밟으시고 무시하시면 되겠습니다.

2012년 사태 이후로, Google에서 1초를 그냥 확 추가하는 것이 아니라 대략 20여시간에 걸쳐서 1초를 추가하는 Leap Smear 를 적용한 public NTP를 제공 합니다.

이 글에서는 Leaf Smear를 NTP와 chrony에 어떻게 적용을 해서 운영을 할 수 있는지에 대하여 기술 합니다.

일단, 별도로 Time server를 운영하지 않는다면, Goolge Public NTP를 사용하는 것을 고려하십시오. (물론 난 윤초랑 관련이 없어 하시는 분들은 그냥 사뿐이 무시 하시면 됩니다.)

제가 ubuntu machine의 경우에는 다양한 버전이 없어서, CentOS/RHEL 을 기준으로 설명 합니다.

  1. CentOS / RHEL 4 or 5
    CetnOS 5 이하처럼 EOL이 종료된 배포본의 경우에는 문제를 해결할 수 있는 방법은 Goolge Public NTP 처럼 leap smear를 제공하는 time server를 이용하여 시간 동기화를 하는 방법 밖에는 없습니다.
    .
  2. time server에 시간 동기화를 하지 않는 경우
    time 동기화를 하지 않는 경우에는, tzdata package를 최신으로 갱신해 주어야 합니다. yum을 이용하여 tzdata 를 최신 상태로 업데이트를 하는 것으로 해결이 됩니다.
    .
  3. ntp 또는 chrony를 이용하여 외부 time 서버에 동기화 하는 방법
    1. Goolge Public NTP로 동기화 대상을 변경
    2. 또는 leap smear를 제공하는 time server로 동기화 대상 변경.
    3. 또는 아래의 방법(4,5번)을 이용하여 ntpd 또는 chrony로 time server를 구성하여 동기화.
    4. 또는 각 서버에 4,5번의 설정을 반영
      .
  4. ntpd를 이용하여 time server 운영 시
    ntpd를 구동할 때 command line option으로 -x 옵션을 주어 구동을 합니다. RHEL 6.6 이하의 ntp에서는 ***-x*** 옵션이 정상적으로 동작하지 않는 버그가 있습니다. NTP를 최신으로 업데이트 해 주십시오.
    [root@host ~]$ yum update ntp
    [root@host ~]$ service ntpd stop
    [root@host ~]$ ntptime -s 0 -f 0
    [root@host ~]$ # ntpd의 OPTIONS 변수에 -x 를 추가해 줍니다.
    [root@host ~]$ cat /etc/sysconfig/ntpd
    # Drop root to id 'ntp:ntp' by default.
    OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"
    [root@host ~]$ service ntpd restart
  5. chronyd를 이용하여 time server 운영 시
    chorny를 최신 버전으로 업데이트 합니다. 다음 옵션은 chrony >= 2.0 의 조건에서 사용이 가능 합니다. RHEL 7.0 에는 chrony 1.3이 포함이 되어 있습니다. yum 으로 chrony를 최신으로 업데이트 해 주십시오. 업데이트 이후, 다음의 설정을 chrony.conf에 추가 한 다음, chrony를 재시작 합니다.
    # slew mode for leap second
    leapsecmode slew
    maxslewrate 1000
    smoothtime 400 0.001 leaponly

Reference:
  1. https://srad.jp/~marusa/journal/608570/
  2. https://srad.jp/~marusa/journal/593599/
  3. http://www.criticalworld.co.kr/?p=281
2016/12/28 23:41 2016/12/28 23:41
Posted
Filed under Tech/안녕리눅스
협업 프로젝트시에 여려명이서 코드를 같이 생성하다 보면 각자의 코딩 스타일 때문에 코드가 난장판이 되는 문제가 있습니다. 이 문제 때문에 대부분의 프로젝트들은 각각의 코딩 규칙을 생성하여 사용 합니다.

여기서는 이 난장 중에서 tab과 space가 섞여서 있는 경우에 대한 체크를 위한 팁을 작성해 봅니다. 특히 이 경우는 Pythonindent에서 가장 큰 특징으로 나타납니다.

일단, 구분을 하기 위해서는 vim의 syntax 를 이용합니다. python 파일을 예로 들겠습니다.

먼저, python에 적용될 syntax 파일을 생성합니다.

[oops@an3 ~]$ # vim syntax directory를 생성 합니다.
[oops@an3 ~]$ mkdir -p ~/.vim/syntax
[oops@an3 ~]$ # tab의 바탕색을 푸른색으로 하는 syntax color를 설정 합니다.
[oops@an3 ~]$ cat <<EOF > ~/.vim/syntax/python.vim
syn match Tab "\t"
hi def Tab guifg=blue ctermbg=blue
EOF
[oops@an3 ~]$

위와 같이 작업을 한 후에, python file을 vim으로 열면 tab이 푸른색 바탕으로 보이게 됩니다. space와 tab이 섞여 있을 경우 쉽게 구분이 되어지게 됩니다.

여기까지는 인터넷에서 검색만 잘하면 찾을 수 있는 내용입니다. 그럼 이 글을 포스팅 하는 이유는 다음과 같습니다.

제가 사용하다 보니, 일단 언어마다 syntax 파일을 생성해 줘야 하는 불편함과, 항상 이렇게 보고 싶지 않다는 점 입니다. 즉, 필요할 때만 구분을 하고 싶은데, 위의 팁은 vim 설정 파일을 변경하면서 사용을 해야 한다는 것이죠. 그래서 이 불편함들을 해결하기 위하여, 이 기능을 vim function으로 만들고 특정 키에 bind 해서 사용하도록 합니다. (물론 안녕 리눅스의 VIM package에 포함될 기능 입니다.)

여기서 부터의 내용은, 위의 내용을 싹 잊어 버리시면 됩니다. (일단 위의 내용을 적용했다면, 싹 원복 하라는 의미입니다.) 일단, AnNyung LInux VIM plugin project site에서 TabDistinct plugin을 다운로드 받습니다.

[oops@an3 ~]$ curl -o tabdistinct.vim \
https://raw.githubusercontent.com/AnNyung/VIM_plugins/master/TabDistinct/tabdistinct.vim
[oops@an3 ~]$

다운로드 받은 tabdistinct.vim 을 root 권한이 있을 경우에는 $VIM/vimfiles/plugin 디렉토리에 저장을 하고, root권한이 없을 경우에는 ~/.vim/plugin 에 저장을 합니다. 아래의 예는 일반 계정의 예 입니다.

[oops@an3 ~]$ # vim plugin directory를 생성 합니다.
[oops@an3 ~]$ mkdir -p ~/.vim/plugin
[oops@an3 ~]$ mv tabdistinct.vim ~/.vim/plugin/
[oops@an3 ~]$

이 작업을 마친 후에, 아무 파일이나 열어서 command mode에서 언더바(_)키('shift' + '-')를 누르시면 of/off toggle이 가능해 집니다.


자세한 사항은 https://github.com/AnNyung/VIM_plugins/tree/master/TabDistinct 를 참고 하세요
2016/12/23 21:26 2016/12/23 21:26