티스토리 툴바


오늘 JACK 서버를 보니 swap 파티션이 맛이 가서 서버 메모리 부족으로 다운됐습니다.

JACK 서버는 software RAID 1 + LVM 으로 구성이 되어 있는데, LVM 에서 튕겼는지 어떻게 됐는지 모르겠지만 LVM 에서 다시 swap 파티션을 만들고 활성화를 하려고 하니 잘 되지 않았습니다.

분명히 vgdisplay 떄려보면 여유 공간이 5 기가 넘게 남아 있는데 lvcreate 으로 4G 로 swap 잡으려고 하면 무슨 이유인지 모르겠지만 용량이 부족하다고 해서 만들어지지 않는 것이었습니다... 2GB 으로는 만들어 지긴 하는데 swap 은 최소한 4G 이 필요한지라.. 일단 여유 공간을 좀 확보하기 위하여 home 파티션을 현재 345G 에서 340G 로 줄이고 여유 공간을 확보하고 다시 swap을 4G 로 잡자는 계획을 짰습니다.

구글링 및 삽질 끝에 다음과 같이 해결 봤습니다.

1. JACK 서버의 LVM 볼륨이 암호화 된 관계로 umount 하고 용량 조절하기 위해서 먼저 암호화를 해제하는 작업을 진행해야 한다. 먼저 apt-get install cryptsetup 명령을 통해 cryptsetup 를 설치하고 modprobe dm-crypt 를 통해 모듈을 로딩 한다.

2. cryptsetup luksOpen /dev/md0 crypt1 명령을 통해 암호화된 LVM 볼륨을 해제한다. 
여기서 /dev/md0 는 LVM 이 셋딘된 JACK 서버의 RAID1 볼륨이다.

3. umount /home 을 통해 /home 파티션을 언마운트 하고 e2fsck -f /dev/mapper/vg-home 명령을 통해 파티션 상태를 먼저 점검한다.

4. resize2fs -p /dev/mapper/vg-home 345G 명령을 통해 기존의 345G 파티션을 340G 로 줄인다.

5. e2fsck -f /dev/mapper/vg-home 디스크 상태 확인 한번 더 해본다.

6. lvdisplay 를 통해 LVN 볼륨에서 /home 에 할당된 용량이 어느정도인지 확인한다. 
LVM에는 355G가 할당되어 있는데 실제 파티션 크기가 340G 이면 -15G 를 해야 한다고 알수 있다.

7. 이제 LVM 볼륨의 용량을 줄어야 하는데, 이상한건 실제 하드를 340G 로 잡으려고 할때 LVM에서는 347G 를 잡아야 에러나지 않는다 ㅡㅡ;
LVM 관련 지식이 짧아서 왜 그런지는 아직 모르지만 일단 347G 로 잡으니까 에러가 안나서 -8G 줄이는 걸로 했다.
lvreduce -L -8G /dev/vg/home

8. 스왑 파티션을 만든다 lvcreate -L 4G -n swap vg. 문제 없이 생성된다.

9. 스왑 활성화 mkswap -L swap /dev/vg/swap. 이 명령어를 실행하면 UUID 가 나온다. fstab 설정을 위해 메모해 둔다.

10. /etc/fstab 에서 기존의 swap 파티션 정보를 삭제하고 새로운 UUID 를 가지고 스왑 마운트 정보를 입력한다.
UUID=c76392de-b716-4920-aef9-c0bfb70f992a none swap sw 0 0

그리고 재붓했더니 스왑파티션 복구 완료....






Posted by Hoya
이코노미스트

웹서비스 업체 창업한 강지호(경희대 국제경영학부 휴학)

“고등학교 때부터 창업 꿈꿨다”

“아이디어 하나를 만들어내는 건 사업이 아니죠. 이걸 해서 안 되면 다른 아이템으로 바꿔가며 끈기를 갖고 해나가는 게 진짜 창업이라고 생각합니다.”

강지호(26)씨는 꿈이 사업가였다. 그가 처음 창업한 건 고등학교 1학년 때다. 웹디자인을 따로 공부하던 강씨는 TV 뉴스에서 고등학교 2학년 벤처사업가를 보고서는 물어물어 함께 일을 하자고 연락했지만 거절 당했다.

강씨는 “한 살 차이인데 저렇게 자기 사업을 하는데 못할 것도 없다고 생각했다”며 “2001년 6월 고등학교 1학년 때 사업자등록을 내고 명함도 파 1년 정도 웹디자인 사업을 했다”고 말했다. 결과는 실패였다.

강씨는 대학 입학 후에도 창업의 꿈을 버리지 않았다. 2007년 대학생 공모전 지원시스템을 만들었다. 또 실패했다. 이번에는 그도 고민했다. 다시 실패하면 어쩌나 두렵기도 했다.

하지만 2008년 초 친구 6명과 베타스튜디오라는 회사를 만들었다. 이번에는 ‘휴팟’이라는 프로젝트 관리 웹서비스였다. 개발을 시작했지만 2009년 2월께 다른 친구들은 다 그만두고 친구 김환(광운대 경영학부·26)씨만 남았다.

기존의 소셜네트워크서비스가 친목 도모만을 위해 만들어졌던 것에서 탈피해 특정 프로젝트를 위한 인맥을 만들고, 실제로 해당 사이트 안에서 프로젝트에 유용한 콘텐트를 활용하도록 하는 서비스였다.

개발에 들어간 1억원은 대부분 펀딩을 받았다. 창업진흥원에서 중기청창업지원금으로 2700만원, 한국콘텐츠진흥원의 1인 창조기업 지원 사업에 뽑혀 4600만원, 서울시의 2030 창업 프로젝트로 월 70만원씩 12개월 총 840만원 지원을 받았다. 강남구 대치동 사무실은 평소 창업모임에서 알게 된 솔빅스테크놀로지에서 마련해줬다.

‘휴팟’은 여러 차례 실패 끝에 2009년 5월 개발에 성공했고 9월 정식 서비스를 시작했다. 강씨는 “우리 힘은 3분의 1이고 나머지는 외부의 도움이었다”고 말했다. 강씨는 특히 창업자금 전액을 지원받았다. 미국에서 중·고등학교를 다닌 그는 아직 한국의 창업지원 시스템이 자리 잡지 못했다고 평가했다.

한정연 기자, 함현근 인턴기자·jayhan@joongang.co.kr

[☞ 이코노미스트 구독신청] [☞ 이코노미스트 기사 구매]

[ⓒ 이코노미스트 & Joins.com, 무단 전재 및 재배포 금지]


사진 안습..... 
 

Posted by Hoya
ajax 자동 완성을 구현하는데 골머리 아팠던 점은 파폭에서 한글입력시 onkeypress 이벤트가 정상적으로 발생하지 않는다는 점이었다.... 요놈을 어떻게 해야 할지 고민 끝에 꽁수를 하나 생각해 내게 됐다.

input form 에 focus 가 들어간 경우 그 value 값을 반복해서 확인하여 변경 사항이 있을 경우 강제로 keyup 이벤트를 발생시키는 것이었다.

/*
 * on-key event fix for FF on Korean input
 * fires 'keyup' event when contents of input form change
 * requires jQuery 1.2.x
 * example: var watchInput = keyFix(inputId);
 * author: Hoya, hoya@betastudios.net http://hoya.tistory.com
 */

if (typeof(beta) == "undefined")
    _beta = beta = {};

if (typeof(_beta.fix) == "undefined")
    _beta.fix = {};
else
    alert("keyfix is already set!");

if(typeof(window.beta.instances) == "undefined")
    window.beta.instances = new Array();

_beta.fix = function(targetId)
{
    // this fix is only for mozilla browsers
    if(jQuery.browser.mozilla == false)
        return false;

    var thisClass = this;
    this.keyEventCheck = null;
    this.db = null;
    this.targetId = targetId;
    window.beta.instances[this.targetId] = this;

    var focusFunc = function()
    {
        if(!thisClass.keyEventCheck) thisClass.watchInput();
    };

    var blurFunc = function()
    {
        if(thisClass.keyEventCheck)
        {
            window.clearInterval(thisClass.keyEventCheck);
            thisClass.keyEventCheck = null;
        }
    };

    $("#" + this.targetId).bind("focus", focusFunc);
    $("#" + this.targetId).bind("blur", blurFunc);
};

_beta.fix.prototype.watchInput = function()
{
    if(this.db != $("#" + this.targetId).val())
    {
        // trigger event
        $("#" + this.targetId).trigger('keyup');
    }
    this.db = $("#" + this.targetId).val();

    if(this.keyEventCheck) window.clearInterval(this.keyEventCheck);
    this.keyEventCheck = window.setInterval("window.beta.instances['" + this.targetId + "'].watchInput()", 100);
};

beta.fix.js 로 저장을 해서

var keyFix = new beta.fix('input_search_all');

식으로 fix를 적용하고자 하는 input form 의 id 값을 넣어 주면 된다.
input form 의 value 가 변할 때 마다 keyup 이벤트를 발생시킨다. (다른 이벤트를 발생시키고자 하는 경우에 trigger 함수의 인자를 변경하면 된다)
jQuery 라이브러리와 함께 사용을 해야 정상작동한다.

happy coding :)
Posted by Hoya