Jan 252011
 

1.테스트한 환경
Synology NAS DS710+
Mac OSX 10.6.6
iPhoto 9
LightRoom 2

2.개요
(1)사진 보관
NAS는 AFP로 Mac에 연결된 상태
사진 원본은 NAS의 photo 공유폴더에 저장하고 RAW는 photo가 아닌 별도의 공유폴더에 저장함
폴더구조는 "연도폴더 – [날짜]이벤트명 폴더" 형식으로 2단계 트리 구조로 관리함
RAW는 photo가 아닌 별도의 공유폴더에 "연도폴더 – [날짜]이벤트명 폴더" 형식으로 동일하게 보관함
저장작업 이후 회전처리 작업 필수 진행 – 사진 멀티 선택 후 맥 내장 프로그램인 미리보기로 회전처리 가능

(2)LightRoom 작업
폴더에 photo 공유폴더에서 연도폴더를 바로 추가함(하위 폴더를 일일이 추가하지 않아도 됨)
폴더에 RAW가 저장된 폴더도 연도폴더를 바로 추가함(하위 폴더를 일일이 추가하지 않아도 됨)
RAW 중 JPEG으로 변환할게 있으면 LightRoom에서 작업 후 내보내기 해서 NAS의 photo공유폴더 밑으로 폴더구조 유지하여 export함
photo 공유폴더로 export한 사진들을 다시 LightRoom의 폴더에 추가하여 LightRoom에 최신 상태 반영

(3)iPhoto 작업(라이브러리 위치는 맥의 로컬 하드)
iPhoto-환경설정-이벤트에서 이벤트 간격은 1주일, Finder에서 가져온 항목에 체크, 고급-iPhoto 보관함으로 가져오기 체크안함
연도폴더 하위의 "[날짜]이벤트명" 형식의 폴더를 선택 후 iPhoto로 Drag & Drop(연도폴더를 Drag & Drop하면 이벤트가 모두 분리되어 버리므로 주의할 것)
가져온 이후 무제 이벤트로 분리된 사진(이유 모르겠슴)은 "[날짜]이벤트명" 형식으로된 이벤트안으로 이동처리(무제 이벤트 선택 후 폴더명 이벤트쪽으로 Drag & Drop)

[참고사항]
iPhoto로 가져오기시에 인식할 수 없는 사진으로 나올 경우는 대부분 카메라 제조사에 넣은 Custom EXIF정보 때문으로 보임
LightRoom에서 해당 폴더의 사진을 다시 내보내기하는데, 내보내기 설정에서 메타데이타 최소화 옵션을 켜서 품질 100% 상태로 폴더로 내보내기 후 인식안되는 사진은 삭제
LightRoom에서는 파일로부터 메타데이타 읽기 수행해서 refresh하면 됨
다시 iPhoto로 가져오기하면 잘될 것임 ^^

(4)iPhoto에서 얼굴 인식 작업
이벤트에서 인식할 얼굴이 있는 사진 선택
하단 얼굴 아이콘 클릭해서 인식된 얼굴 이름 입력
메인 폴더에서 얼굴 클릭 후 인물 선택하면 자동추천된 사진들 목록이 나옴 -> 얼굴확인해서 추가하면 계속 반복됨
명시적으로 추가할 사진들은 이벤트에서 직접 얼굴 입력해주면 됨

(5)결론
원본이 모두 NAS의 photo 공유폴더에 보관됨 -> photo 스테이션을 통해 사진 전체 감상 가능
jpg 이외의 RAW는 photo 공유폴더가 아닌 곳에 보관됨 -> photo 스테이션에서 중복 사진 안봐도 됨
iPhoto로 아이폰/아이패드 등과 동기화하여 원하는 사진만 감상가능 & 얼굴별 앨범도 감상가능

LightRoom으로 Raw->jpeg변환용으로만 사용

Jan 232011
 

사용중인 Synology DS710+의 시스템 로그입니다.
오랜만에 시스템 로그를 확인해봤더니 약 5초간의 순간정전이 기록되어 있더군요.
2010년 4월에 구입 후 5월이던가 볼륨이 깨져서 다시 설치한 적이 있는데,
원인을 대충 순간정전이 아닐까 추정만 했었습니다.

그 이후 거의 6개월을 운영해오다 저렴한 UPS를 발견해서 구입(관련글 보기) 후 달아주었습니다.
그후 거의 한 달만에 UPS 덕을 보네요 ^^*

Jan 232011
 

2010년 4월에 DS710+ 구매 이후로 지금까지 8개월동안 운영하면서 안정화된 2.3-1157 버전을 버리고 펌웨어 업데이트를 감행한 것은 아이폰/아이패드, 안드로이드에서 DS Audio, DS Photo 어플을 사용하기 위해서입니다.
어플들이 3.0 이후만 지원하도록 업데이트가 되어버려서 어쩔 수 없었고 3.0 버전들도 어느 정도 안정화된듯 하더군요.

그런데 펌웨어 업데이트가 자동 업데이트가 되면 좋은데, 이거 잘 안되어서 애 먹었습니다.
몇 시간 동안 끙끙 대다가 결국 펌웨어 초기화 후 다시 설치하는 방법으로 해결했는데,
이 과정이 그리 쉽지도 않고 관련된 글들도 보이지 않아서 경험을 공유하기 위해 작성해 봅니다.

1.데이타 백업
펌웨어 업데이트 과정에서 데이타 훼손이 일어나지 않는다고는 하지만, 모든 데이타를 모아놓은 NAS의 특성상 1회의 데이타 소실이 주는 파급력이 상당합니다. 중요한 데이타의 경우 100% 데이타 백업 후에 시도하기를 권장합니다.
시놀로지 NAS 제품 대부분이 USB 외장하드로 백업을 지원합니다.
외장하드 연결해서 공유폴더 지정해서 백업 후에 펌웨어 업데이트를 시도해야 합니다.

2.구성백업
NAS의 구성 상태를 백업(공유폴더, 사용자 등등등)해뒀다가 복원하기 위해 구성백업을 해둡니다.

3.자동 펌웨어 업데이트 시도
관리자 페이지에서 시도해보고 잘 되면 좋습니다만 안될 가능성이 높을 듯 합니다.
같은 버전대의 펌웨어가 아니기도 해서 2.3->3.0으로 자동 업데이트로 잘 되었다는 글을 본적이 없습니다.
행여나 하고 몇 시간 동안 시도해보고, 브라우저 바꿔보고, 맥/윈도우 전환해가며 시도해봐도 100% 실패했습니다.

4.펌웨어 초기화 후 재설치 시도(아래의 과정은 모두 윈도우 PC 환경에서 진행됨)
후면의 리셋버튼(구멍)을 삐삐 소리가 날 때까지 4초 정도 누른다.

삐삐 소리나면 떼었다가 다시 리셋버튼(구멍)을 4초간 더 누르고 뗀다.

재부팅이 이뤄지는데, 녹색불이 한개가 아니라 더 뜰때까지 대기

Synology Assistant로 검색 -> 목록이 나오면서 상태가 구성 손실로 나오면 설치가능한 상태임

목록에서 오른쪽 마우스 눌러서 설치 선택

Storage 이름, 관리자 아이디, 아이피 등의 기본 정보는 기존과 동일하게 설정 후 진행

다행히 데이타 파티션은 포맷되지 않는듯 했다. 이 과정에서 심장이 쫄깃쫄깃해지더군요 ^^

구성기록이 1시간 40분 정도 진행되다가 실패했다고 나옴 ㅠ.ㅠ

다시 설치 시도하니 금방 끝남

백업된 설정백업 파일로 설정 복원시도

사용자, 공유폴더 등 기본적인 거 빼고는 각 서비스 등 설정정보는 전혀 복원되지 않음

하나 하나 살펴보다보니 photo 스테이션에서 앨범들이 모두 공용앨범으로 되어버림

photo 스테이션 로그인 후 공유여부를 모두 비공개로 일일이 설정함

윈도우즈 공유시 오프라인 파일 지원과 hdd 대기 시간 설정 변경 – 참고 : http://cafe.naver.com/synologynas/5283

5.후기
펌업의 목적이었던 DS Audio, DS Photo를 안드로이드/아이패드에서 확인해보니 모두 잘됩니다 ^^*
속도 향상이라던지 이런 것들은 아직 감흥이 없는데, 나빠진거 같지는 않습니다.

Dec 242010
 

드디어! …는 아니고 그동안 별러왔던 NAS를 위해 UPS를 달아주었다.
여름쯤에 정전으로 추정되는 재부팅 이후 파일시스템이 나가는 사고를 당한 이후 불안함 속에서도 잘 버텨준 것을 다행으로 여기고 있었다.
그런데 회사 일과 관련해서 UPS를 찾아서 테스트해보게 되었다.

쓸만한 저가형 UPS 중 모니터링이 가능한 모델을 찾아보았는데,
Powercom(PCM)사의 Black-Knight Pro BNT-500AP (500A는 시리얼 통신이 빠진 모델)
APC사의 Back-UPS CS 500(BK500EI모델, USB통신 가능)
두 가지였다.

그 중에 회사일을 위해서는 BNT-500AP를 구매했는데 NUT(네트워크 UPS 모니터링)와 연동될 가능성이 높아서였다.
기본적으로는 되질 않았지만, 간단히 분석해서 소스를 약간 고쳤는데, 운이 좋겠도 무사히 연동을 완료했다.

그래서 이번에는 APC사 제품을 써보기로 했다.
검색해보니 Synology NAS와 붙는다고 하는 거 같기도 하고 아닌듯 하기도 하고 애매했다.
일단 할인쿠폰 잘 먹여서 8만원 근처에 구매해서 붙여 보았다.

뜯자마자 특유의 고집으로 그냥 붙였더니 역시나 안되었다.
젠장! 꼭 메뉴얼을 보게 하는 제품들이 꼭 있다. ㅠ.ㅠ

살펴보니 배터리 접속단자를 연결해야 하는 것이었다.
그림이나 설명이나 허접해서 한숨이 나왔지만 겨우 대충 연결해서 다시 전원을 켜보았다.

잘 되었다.

NAS에 붙여보았다.
DS710+에는 후면에 2개의 USB단자와 전면에 1개의 USB호스트 단자가 있다.
백업을 위해 외장USB HDD를 1개 물려놓아서, 여분의 후면 USB에 UPS의 USB케이블을 연결해서 NAS를 켰다.
부팅 이후 관리자에 접속해보니 UPS메뉴에 제대로 모델명이 잡혀서 나온다. 성공인듯 하다.

위쪽의 UPS지원 활성화를 체크해서 배터리 부족시에 안전모드 진입이 되도록 하는 기능을 활성화했고, 시스템-전원 부분에서 전원차단시 자동 시작을 선택해서 완전한 정전 이후 전원이 재공급되면 NAS가 다시 시작되도록 해놨다.

이제 안심이다 ^^*

완충 이후 사용가능시간은 2677초(44분)으로 나오네요.
무슨 원리로 계산했는지 모르겠습니다만 일단은 안심이 됩니다. ^^*

Dec 072010
 

UPS 모니터링(Monitoring) 오픈소스 프로젝트인 NUT(http://www.networkupstools.org/) 설정방법입니다.
80개 가까운 UPS 모델을 지원해오고 있는 프로젝트입니다.
serial port나 usb port를 지원하는, 원격 모니터링 가능한 ups를 손쉽게 모니터링/제어하는 기능을 제공하며, 많은 viewer(client project) 및 라이브러리도 제공하고 있습니다.
또한 기존 기능에 통합할 수 있도록 daemon을 통해 통신방식으로 원격에서 직접 모니터링/제공할 수 있도록 프로토콜 문서도 공개되어 있습니다.
대부분의 UPS 제조 회사에서는 통신 프로토콜을 공개하지 않고 있는 상황에서도 일일이 테스트해가면 구축된 프로젝트라서 알게 된 게 너무 기분이 좋았습니다 ^^*

필드에 나가있는 서버에 UPS 달아주고 원격 모니터링 & 제어 부분을 솔루션에 통합시키기 위해 테스트해본 결과입니다.
BNT-500AP를 위해 Driver source도 수정해서 테스트해봤는데, 아직까지는 잘됩니다.
그래도 혹시나 싶어서 기존 드라이버 개발자에게 메일로 보내놨습니다.
반영이 되면 많은 분들이 더 편하게 BNT-500AP 모델(현재 시점에서 제일 저가임)을 사용할 수 있을 것입니다.

※설정
#그룹, 사용자 추가
groupadd nut
useradd -g nut ups

#컴파일 & 설치 : 소스 풀어놓은 위치에서 실행
./configure –with-user=ups –with-group=nut
make
make install

#상태 데이타 디렉토리 추가
mkdir -p /var/state/ups
chmod 0770 /var/state/ups
chown root:nut /var/state/ups

#serial 장치 권한 변경(실제 생성되는 장치명으로 해야함)
chmod 0660 /dev/ttyS0
chown root:nut /dev/ttyS0

#/usr/local/ups/etc/ups.conf
#BNT-500AP 인식이 추가된 소스 사용시에만 다음처럼 사용가능
#다른 모델의 경우 소스를 참조해서 설정파일을 만들어야 함
[BNT-500AP]
        driver = powercom
        port = /dev/ttyS0
        manufacturer = PowerCom
        type = BNT-500AP
        modelname = BNT-500AP
        serialnumber = Unknown

#/usr/local/ups/etc/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 192.168.1.251 3493

#/usr/local/ups/etc/upsd.users
[upsmon]
        password = 암호
        upsmon master

#/usr/local/ups/etc/upsmon.conf
MONITOR BNT-500AP@127.0.0.1 1 upsmon 암호 master
POWERDOWNFLAG /var/state/ups/killpower

#conf파일 권한변경
chown root:nut /usr/local/ups/etc/*.*
chmod 0640 /usr/local/ups/etc/*.*

#방화벽 개방 : 3493번 TCP 추가, 필요시 공유기 포트포워딩에도 추가해야함
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3493 -j ACCEPT

#방화벽 재기동
/etc/rc.d/init.d/iptables restart

※테스트
#ups용 driver 가동
/usr/local/ups/bin/upsdrvctl start

#upsd 실행/중단
가동 : /usr/local/ups/sbin/upsd
중단 : /usr/local/ups/sbin/upsd -c stop

#upsd 동작확인
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1

#upsmon 실행/중단
가동 : /usr/local/ups/sbin/upsmon
중단 : /usr/local/ups/sbin/upsmon -c stop

#외부 네트워크에서 upsd 동작 확인 : 자세한 명령어는 소스/docs/protocol.txt 참조
telnet 서버ip주소 3493
LIST VAR BNT-500AP –> BEGIN LIST VAR BNT-500AP ~ 데이타값 ~ END LIST VAR BNT-500AP

※부팅시 자동실행 설정 : /etc/rc.d/rc.local에 다음 내용 추가
chmod 0660 /dev/ttyS0
chown root:nut /dev/ttyS0
/usr/local/ups/bin/upsdrvctl start
/usr/local/ups/sbin/upsd
/usr/local/ups/sbin/upsmon

※동작확인
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=OL(On-Line : 전원 연결된 상태)
ups로 가는 전원 차단
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=OB(On-Battery : 배터리 상태), charge가  시간 경과함에 따라 줄어듬
일정 시간 경과 후
/usr/local/ups/bin/upsc BNT-500AP@127.0.0.1 -> status=LB(Low-Battery : 배터리가 Low상태, Low상태 진입시기는 ups마다 다름)
shutdown 시작됨

※참고사항
전원 공급 끊어지자마자 shutdown을 원하는 경우는 upsmon.conf에 NOTIFY관련 옵션 수정 및 upsched 통해서 가능하기는 하지만, 비싼 ups 쓰는 데 굳이 이래야 되냐?라는 FAQ 내용이 있슴, 그래서 OB되자마자 Shutdown되는게 아니라 LB가 되어야 shutdown되기 시작하는 것임
 

Jul 022010
 

jQuery를 통해 ajax 호출을 해서 다른 서버의 자료를 주기적으로 무한 리프레쉬해야 하는 부분이 필요할 경우 부딪히게 되는 문제가 SOP문제다.
SOP는 Single Origin Policy의 약자이고 그 뜻 그대로 javascript 호출시 동일한 domain(port포함)에 있는 url들만 호출 가능하다는 보안상의 제약이다.

이를 해결하는 방법의 하나가 apache의 mod_proxy 모듈이다. 특정한 패턴으로 들어오는 url을 다른 서버쪽으로 redirect해준 후 응답결과를 다시 되돌려주는 proxy기능을 제공해준다.  대충 찾아보니 다음처럼 httpd.conf를 고쳐주면 된다고 한다.

 

        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPass /cgi http://192.168.1.17:9000
        ProxyPassReverse /cgi http://192.168.1.17:9000

 
설치방법은 이전 게시물을 참고하세요
 

기본세팅은 어렵지 않았으나 실제로 무한 리프레쉬로 돌려보니 다음과 같은 apache쪽 에러가 발생하면서 리프레쉬가 되지 않는 경우가 계속 발생했다.
[Thu Jul 01 15:53:48 2010] [error] [client 192.168.1.1] proxy: error reading status line from remote server 192.168.1.17, referer: http://222.236.15.4:8080/…
[Thu Jul 01 15:53:48 2010] [error] [client 192.168.1.1] proxy: Error reading from remote server returned by ***.cgi, referer: http://222.236.15.4:8080/…

 

아~~또 다시 구글神의 도움을 간절히 구하여 다음과 같은 세팅을 일단락되었다.

 

        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
                SetEnv force-proxy-request-1.0 1
                SetEnv proxy-nokeepalive 1
                SetEnv proxy-initial-not-pooled 1

        </Proxy>

        ProxyPass /cgi http://192.168.1.17:9000
        ProxyPassReverse /cgi http://192.168.1.17:9000

 

아직까지는 동일한 에러가 발생하지 않고 있다 ^^*

Jun 152010
 

 

동일 도메인에 대해서만 ajax 호출이 되는 문제를 풀기 위한 해법 중의 하나인 mod_proxy 사용방법이다.
다양한 응용이 가능하지만 이것만 해도 행복한 기능이다. ^^

 

1.버전에 맞는 아파치 소스 다운로드

wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.0.63.tar.gz

 

2.압축 해제 후 module/proxy 디렉토리로 이동

tar xvzf httpd-2.0.63.tar.gz

/usr/local/src/httpd-2.0.63/modules/proxy

 

3.컴파일

/usr/local/apache/bin/apxs -i -a -c mod_proxy.c proxy_util.c

/usr/local/apache/bin/apxs -i -a -c mod_proxy_http.c proxy_util.c

/usr/local/apache/bin/apxs -i -a -c mod_proxy.c proxy_util.c

/usr/local/apache/bin/apxs -i -a -c proxy_connect.c proxy_util.c

/usr/local/apache/bin/apxs -i -a -c proxy_ftp.c proxy_util.c

/usr/local/apache/bin/apxs -i -a -c proxy_http.c proxy_util.c

 

4.httpd.conf 확인 & 수정

(1) 다음처럼 LoadModule에 추가되어있음을 확인

LoadModule proxy_module       modules/mod_proxy.so

LoadModule proxy_connect_module modules/proxy_connect.so

LoadModule proxy_http_module  modules/proxy_http.so

LoadModule proxy_ftp_module   modules/proxy_ftp.so

 

(2) 제일 하단에 다음처럼 추가

ProxyRequests Off

<Proxy *>

        Order deny,allow

        Allow from all

</Proxy>

 

ProxyPass /cgi http://127.0.0.1:9090

ProxyPassReverse /cgi http://127.0.0.1:9090

« 1 2 3 4 5 »