LogBase 순차데이터 저장소

필요이유:
데이터의 형태에 따라 퇴적의 데이터 저장소가 있다. 요즘처럼 RDBMS의 용량을 초과할 정도의 대량의 데이터가 나오는 경우에는 이 필요성이 더 커진다.
순차데이터저장소는 증권,날씨,시스템 로그 등처럼 순차적으로만 조회되고
그냥 로그를 쌓는것과 형태는 같다. 단지 이것을 관리해주는 기능만 추가될 뿐이다.
나와있는 오픈소스들의 기능과 연동해서 사용한다면 만들어야 할 기능은 많지 않다. 아예 없을지도…?
마이크로소프트 아치브데이터와 같은 것을 사용하지 않는 것은 하둡 클러스터에 얹는것을 기본 목표로 하기 때문.
hbase가 충분한 성능만 보여준다면 여기에 그냥 입력하는 입력기 정도만 만드는 수준으로 끝내도 될지도 모르겠다.

적합한 데이터의 형태 :
각 데이터별로 확실한 스키마가 있고
대량의 데이터가 실시간으로 쏟아져나오며
조회시에도 중간중간의 몇몇 값을 조회하는게 아니라 전체적으로 순차적으로 분석을 해야하는
증권데이터가 가장 적합하다.

파일의 저장형태:
yyyymmdd(hh)정도까지면 충분하지않을까? 확장가능하도록 처리하는게 좋을듯하다. 스키마/시간 – 계층형 디렉토리 구분
스키마의 루트에 dtd파일로 스키마 정의, 시작시에 스키마를 메모리에 로딩
key-value, 구분자
배치처리를 이용한 중복데이터 제거.
MQ를 이용한 데이터 수신

Script:DDNS로 연결된 도메인 IP에 대해 iptables포트 열기

출처 : http://unix.stackexchange.com/questions/91701/ufw-allow-traffic-only-from-a-domain-with-dynamic-ip-address
IP테이블에서 사용하는 방법

#!/bin/bash
#allow a dyndns name

HOSTNAME=HOST_NAME_HERE
LOGFILE=LOGFILE_NAME_HERE

Current_IP=$(host $HOSTNAME | cut -f4 -d' ')

if [ $LOGFILE = "" ] ; then
  iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
  echo $Current_IP > $LOGFILE
else

  Old_IP=$(cat $LOGFILE)

  if [ "$Current_IP" = "$Old_IP" ] ; then
    echo IP address has not changed
  else
    iptables -D INPUT -i eth1 -s $Old_IP -j ACCEPT
    iptables -I INPUT -i eth1 -s $Current_IP -j ACCEPT
    echo $Current_IP > $LOGFILE
    echo iptables have been updated
  fi
fi

UFW에서 사용하는 스크립트.. 위의 쉘스크립트에서 명령어만 바꿔줬다.
UFW에서 도메인을 기반으로 등록해주는 기능은 없다. 그럴 수 밖에 없는게… 접속이 들어올 때 마다 도메인의 IP를 확인할수도없는 노릇이니까

#!/bin/bash
#allow a dyndns name

HOSTNAME=HOST_NAME_HERE
LOGFILE=LOGFILE_NAME_HERE

Current_IP=$(host $HOSTNAME | cut -f4 -d' ')

if [ $LOGFILE = "" ] ; then
  ufw allow from $Current_IP
  echo $Current_IP > $LOGFILE
else

  Old_IP=$(cat $LOGFILE)

  if [ "$Current_IP" = "$Old_IP" ] ; then
    echo IP address has not changed
  else
    ufw delete allow from $Old_IP
    ufw allow from $Current_IP
    echo $Current_IP > $LOGFILE
    echo iptables have been updated
  fi
fi

Ubuntu GPT disk 등록하기

파티션 만들기
2T이상은 gpt로 만들어야된다. fdisk로 안된다는 얘기… 설치할 때 한번에 하는게 편하지만 하드를 중간에 추가할 경우에는 이 작업이 필요하다.

$ sudo fdisk -l
$ sudo parted /dev/sdb
(parted) mklabel gpt
(parted) unit TB
(parted) print
1번방법-
(parted) mkpart
name 알아서
filesystem 다시포멧할거니까그냥엔터 아니면 ext4
start 0
end 위에서 print할 때 봤던거 하드끝까지 3.0TB
2번방법-
(parted) mkpart primary 0 0
3번방법-
(parted) mkpart primary 0.00TB 3.00TB
위에1,2,3번방법 아무거나 맘에드는대로 해주면되고
(parted) quit

파일시스템만들기 – 포멧
mkfs –type ext4 /dev/sdXY

마운트하기
$ sudo mkdir /data
$ sudo mount /dev/sdb1 /data
이렇게 하면 부팅할 때 마다 다시 등록해줘야한다.

영구적으로 마운트하기위해서 fstab 등록하기

$ sudo blkid
uuid확인
붙여넣기를 해야되니 ssh로 접속하는게 좋다
/etc/fstab에 위의 정보들을 보고 따라 잘 등록

UUID=39489af1-0f3z-7777c-djen-69a03jf93afd0 /data ext4 errors=remount-ro 0 1
UUID는 blkid했을 때 나온 주소
/data는 파일 마운트 경로
파일시스템타입ext4

$ sudo mount -a
전체 마운트 재등록하라는 뜻. 설정이 제대로 됏다면 오류없이 완료.

끝. 재부팅해본다.
제대로 등록되지 않았다면 컴퓨터가 안 켜질거다. 그렇다면 재설치