우분투(리눅스) 시스템을 운영중에 있다.
얼마전 하드디스크 에러가 생겨  시스템을 이전하려 한다.
이런 하드에러도 있고, 하드디스크를 큰 용량으로 바꾸려고 할 경우도 있다.

rsync, tar 등을 이용하는 방법도 있지만, 간단하게 cp -a 를 이용하려고 한다.
/var , /usr  등이 별도의 파티션으로 나뉘어져 있는 경우  해당 디렉토리를 뺀 / (루트) 를 복사해야 한다.
별도파티션으로 나뉘어 있던 디렉토리는 나중에 옮겨도 된다.

일단 새 하드디스크를 연결한다.
기존 시스템 하드는 /dev/sda 이고,  연결한 새 하드디스크는 /dev/sdb 라고 가정한다.
/ 는 sda1 ,  /usr 는 sda2 , /var 는 sda3  이라고 한다면,  우선 sda1 을 먼저 옮겨도 되고 다 같이 옮겨도 된다.

sda1 은 sdb1 으로 옮길것이다. 데이터를 이동한다.
현재 시스템이 가동한 상태에서 옮겨도 되긴 하지만, 고려할 사항이 많다.
dev , proc 등 시스템 관련 디렉토리를 주의해야 한다.

별도로 마운트 하고 옮긴다.
mount /dev/sda1 /mnt/sda1
mount /dev/sdb1 /mnt/sdb1
이런식으로 마운트 시키고 데이터를 옮긴다.
cp -a /mnt/sda1/* /mnt/sdb1/
이렇게 하면 따로 dev , proc , var/run , var/lock 등을 신경쓰지 않아도 된다.

새하드디스크로 부팅하려면 어떤값을 바꿔야 하나?
fstab 을 새하드디스크의 설정값으로 변경한다.
이때 복사한 fstab 의 값을 변경한다. 즉 /mnt/sdb1/etc/fstab 을 바꿔준다.
fstab 은 UUID 로 설정해 놓는 것이 편하다.

blkid 명령을 내리면
/dev/sdb1: UUID="{새하드UUID값}" SEC_TYPE="ext2" TYPE="ext3"
새로운 하드의 UUID 값을 얻을 수 있다.
fstab 의 해당 값을 바꿔준다.
UUID={기존UUID값}  / ext3 defaults,errors=remount-ro 0 1
이 설정만 바꾸면 되는가?

새 하드디스크에 grub 을 인스톨한다.
grub-install  /dev/sdb
이런식으로 되면 편하겠는데, 아마 안될 것이다.
grub 쉘로 들어가서 직접 바꿔준다.
grub 명령을 내리면  grub >  이렇게 grub 쉘을 사용할 수 있다.
grub >  find /boot/grub/stage1
stage1 은 하드디스크의 MBR 영역에 설치된다.
find /boot/grub/stage1
 (hd0,0)
 (hd1,0)
이런식으로 나오게 된다. 기존 하드는 hd0 , 새 하드디스크는 hd1  이다.
다음처럼 새 하드디스크에 grub 을 설치한다.
grub >  root (hd0,0)
grub >  setup (hd0)
특별히 에러메세지가 없으면 정상적으로 설치가 되었을 것이다.

이제 grub 의 menu.lst 를 변경한다. 여기서도 fstab 처럼 UUID 를 변경해준다.
/boot/grub/menu.lst 

# kopt=root=UUID={새하드UUID값} ro console=tty0
이 부분과
title           Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic Default
root            (hd0,0)
kernel          /boot/vmlinuz root=UUID={새하드UUID값} ro console=tty0 quiet splash
initrd          /boot/initrd.img
이 부분의 UUID 값을 바꿔준다.


이제 새 하드디스크로 부팅순서를 바꾸고 부팅한다.

재부팅후에 BIOS 설정에서 새 하드디스크로 부팅순서를 바꿔서 부팅해 본다.
정상적으로 부팅되는지 확인해본다. 이상이 있으면 기존의 하드로 다시 바꾸면 된다.
하드디스크 위치나 바이오스 설정 등의 차이로 인해 부팅에 이상이 있는 경우가 있으니 설정을 다르게 바꿔가면서 테스트 해본다.

내 경우는  보드의 SATA (sda) , SCSI 컨트롤러, SATA 컨트롤러(sdb)  이렇게 되어 있었다.
바이오스에서 각각의 부팅순서를 바꾸지 못하고, PCI 인터페이스인  SCSI , SATA 가 묶여서 바뀌게 되었다. 그래서 PCI 인터페이스의 맨 처음으로 바꿔야 했다.
SATA 에서는 primary 로 변경하고,  SCSI 는 보드에서 SATA 를 보드의 안쪽으로 바꿔서 SATA -> SCSI 컨트롤러 순으로 변경하고 서야 제대로 부팅할 수 있었다.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
YDN 키 발급을 위해 참 여러가지 테스트를 하게되었다.
발단은 http://blog.1day1.org/333  여기서부터 시작인데, 최소한 상황을 재현(?)할 수 있게 되었다.
정확한 원인이 내쪽에서 찾을 수는 없을 것 같고, 최종적으로 YDN 쪽에서 답을 줘야 할 듯 하다.
아무튼 상황재현과 그 간의 시도를 리포트 한다.

일단 이전 상황은 http://t.1day1.org/post/177433640  여기까지 진행했었다.
즉, 도메인을 체크할 때, 제대로 데이터를 가져가는 것을 확인할 수 있었다.
그런데, 왜 안될까? 뭔가 파일 체크 이외에 더 확인하는 작업이 있다는 것인데...
여기서 부터 상상의 나래(?)를 펼치며 테스트하게 된다.

몇가지 가능성을 따져봤다.
1. 웹서버의 문제.
2. 서버 자체의 문제 혹은 OS(배포판) 문제.
3. 그외의 알 수 없는 문제.

1,2 는 여러서버를 바꿔가면서 테스트 해보기로 했다.
apache2 , lighttpd , nginx 를 바꿔가면서 테스트 했다.
서버는 웹호스팅, 서버호스팅 등 계정을 바꿔가며 테스트 해보았다.

제일먼저 웹서버를 변경하면서 테스트 해봤다.
웹서버 테스트. 각각의 헤더를 살펴보면서 체크를 했다.
(동일서버에서 웹서버를 변경하여 테스트 했다.)

여기까지 바꾸면서 발급을 시도해도 계속 실패가 되었다.


그래서 서버자체의 문제인가 싶어, 다른 계정에서 테스트 해보기로 했다.
실패하던 서버는 Ubuntu(우분투) 이고, 따로 테스트하려는 계정은 Centos 이다.

다른 계정 Centos 에서는 되는 것이었다.
둘다 우분투쪽도 apache 인데, 웹서버가 아니라 OS 배포판의 문제였단 말인가?
좀 생각을 해봤다.

그래서 둘의 apache 설정이 다른 부분이 있어서일까? 헤더를 보면서 차이점을 살펴봤다.
Keep-alive 문제일까?  charset 문제일까? 등등 차이가 있는 부분은 설정을 바꿔가며 테스트 해봤다.


Centos 계정이외에 다른 계정은 모조리 실패하는 것이었다.
아! OS 의 문제로 결론을 내려야 하나? 뭔가 간과하는것이 있지 않을까?
뭔가 놓치고 있는 것이 있을거야! 곰곰히 생각한다.

어! 혹시!

안되는 계정은 모두 1day1.org 의 서브도메인 이었다.
되는 계정인 Centos 는 OOO.com 과 YYY.kr 의 도메인을 사용했었다.
설마 org 도메인이 안되는 것일까?  그래서 교차실험을 했다.

안되는 계정에  OOO.com 의 서브도메인으로 되는 계정에는 ooo.1day1.org 의 서브도메인으로 테스트 했다. 결과는  안되던 계정에 OOO.com 이 제대로 발급이 되었다. 또 되던 계정은 ooo.1day1.org 는 안되는 것이었다.

OTL

정말 그 문제란 말인가? 키 발급시에 도메인 자체도 테스트를 하는 것인가?
nslookup 또는 whois , dig 등을 체크해서 유효한 값을 체크하는 것인가?

그런데, 직접 쿼리를 날려봐도 별다른 차이점을 발견할 수 없었다.
org 도메인의 네임서버 설정이 잘못된 것일까? apache 로그를 보면 파일을 찾아서 가져가는(GET) 것을 볼 수 있다. 설정이 잘못되었다면 파일을 찾지 못할 것인데 말이다.

미궁에 빠지게 된다. 왜! 인지 알 수 없게 되었다.
상황을 재연까지는 하게 되었지만, 왜! 인지는 모르겠다.


여기서 끝내려 했다. 그런데 뭔가 이상했다.
이유가 뭐란 말인가?
안되는 1day1.org 와 되는 OOO.com 은 똑같이 dnsever.com 에 설정되어있다.
둘의 설정상의 차이가 뭐일까?  살펴봤다.

설마!
OOO.com 은
1차: ns1.dnsever.com
2차: ns2.dnsever.com
1day1.org 는
1차:     ns16.dnsever.com
2차:     ns34.dnsever.com
3차:     ns83.dnsever.com
4차:     ns231.dnsever.com
5차:     ns259.dnsever.com
의 각각 다른 네임서버로 설정되어 있다는 차이가 있었다.

YDN 측에서 org 자체를 막거나 하지는 않았을 것이고, dnsever 쪽에서 네임서버 쿼리를 막도록 설정되어 있는 것일까? nslookup , dig 로 테스트 해보면 이상이 없는데 이상하다.
특정 IP 대역에 대해서 막아놨을까? (그럴지도 모르겠다.)
dnsever 가 기존 ns1,ns2 에서  ns16~ns259 등으로 분리를 시켜놓은게 예전 DDOS 공격을 당했을때 공격을 분산,회피 하기 위한 조치였던 것으로 알고 있다. 그렇다 보니 새로운 네임서버에 대해서 쿼리 권한을 제한했을 가능성이 많을 듯 하다.(org 가 막혔다는 것 보다 좀더 설득력이 있어 보인다)

최종 테스트는 되는 다른 도메인을 ns16,ns34 등으로 바꿔보고, 1day1.org 를 독립네임서버로 바꿔보거나 ns1,ns2 의 예전 네임서버로 바꿔서 교차 테스트를 해보면 명확한 답이 나올 듯 싶다.
최종 테스트가 예상대로 나오게 된다면 ns16~ns259 의 어떤 설정 문제일 듯 하다.

dnsever 쪽 문제라고 해도 좀 이상한 부분이 있다.
YDN 쪽에서 검증파일(?) 만 체크하는 것이 아닌 듯 한데, 그에 대한 언급이 있어야 할 듯 하다.
분면 검증파일을 확인했으면서 체크오류를 내는 것은 문제가 있어 보인다.
그 확인사항이 정확히 무엇인지 모르겠지만, API KEY 발급상에서는 그에 대한 언급이 없다.


ps. 현재 최종테스트를 위해 네임서버를 변경해 두었다. 적용되려면 최소한 반나절,하루 정도가 걸리기 때문에 아직 테스트 할 수 없다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
squirrelmail , 일명 다람쥐메일 이라는 웹어플이다.
http://squirrelmail.org
imap 기반으로  imap 서버가 설정되어 있으면 간단하게 사용할 수 있다.

Centos 는 패키지로 설치하면 된다.(다른 배포판도 비슷하다)
yum install squirrelmail
설치후에 apache 를 재실행해준다.

접속은  http://{메일서버주소}/webmail  으로 하면 된다.
(설정은  /etc/httpd/conf.d/squirrelmail.conf 파일에 있다)

imap 서버를 dovecot 을 사용하기 때문에 그에 대한 설정으로 바꿔준다.
http://squirrelmail.org/docs/admin/admin-13.html#ss13.9
설정은 /etc/squirrelmail/config.php 를 바꿔준다.

다음부분만 주의하면 된다.
$imap_server_type       = 'dovecot';
$optional_delimiter     = detect;

한글 사용자는
$squirrelmail_default_language = 'ko_KR';
$default_charset          = 'utf-8';
처럼 바꿔준다.


혹시 이런 에러가 발생한다면
ERROR: Could not complete request.
Query: CREATE "Sent"
Reason Given: Unknown namespace.
다음 부분을 확인한다.
$default_folder_prefix          = 'INBOX.';
/etc/squirrelmail/config.php 에서 config_local.php 를 불러오기 때문에
config_local.php 를 바꿔준다.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
기존에 qmail + vpopmail(with cdb) 를 사용했었다.
pop3 는 vpopmail 을 이용했다. 그리고, imap 은 bincimap 을 사용했다.
그런데, squirrelmail 을 사용하려고 테스트 하는 중 bincimap 1.2.x 버전에 없는 기능때문에 사용할 수 없다. 1.3.x 버전은 사용이 가능한 듯 하지만, 컴파일 에러가 생겨서 dovecot 을 쓰기로 했다.
요즘 추세(?)가 dovecot 인것 같다. (bincimap 도 가벼워서 괜찮긴한데)

http://www.dovecot.org/download.html

소스 RPM 을 이용.(vpopmail 적용이 안되나?)

vpopmail 을 적용하기 위해서는 직접 소스컴파일을 해야 하는 듯 하다.
SRPM , spec 을 수정해서도 할 수 있겠지만, 고칠 부분이 많아서 별 의미가 없을 듯 함.


직접 소스 컴파일
wget http://dovecot.org/releases/1.2/dovecot-1.2.4.tar.gz
configure --with-vpopmail
make
make install

설정은 다음과 같이 한다.
http://wiki.dovecot.org/#Dovecot_installation
http://wiki.dovecot.org/BasicConfiguration

dovecot  계정을 생성한다.
useradd -d /usr/local/libexec/dovecot -s /sbin/nologin dovecot

기본적으로 /usr/local/etc 에 설정 파일이 저장된다.
mv dovecot-example.conf dovecot.conf
로 샘플설정파일을 기준으로 자신의 환경에 맞게 설정한다.(주석을 해제해 준다)

protocols = imap
pop3 를 쓸경우 pop3 도 추가

disable_plaintext_auth = no
ssl = no
SSL 을 쓰지 않고, 평문으로 인증하는 것을 허용한다.

auth default {
}
부분의 vpopmail 부분을 해제/추가한다
userdb vpopmail{
}
passdb vpopmail{
}
user = vpopmail
vpopmail 계정 uid, gid 설정
# id -u vpopmail
# id -g vpopmail
를 확인해서 아래 처럼 설정값을 넣어준다.
first_valid_uid = 100
last_valid_uid = 100
first_valid_gid = 101
last_valid_gid = 101

dovecot 실행하기
dovecot 실행스크립트를 복사한다.
cp {소스디렉토리}/doc/dovecot-initd.sh  /etc/init.d/dovecot
chmod 755 /etc/init.d/dovecot




[추가 - 18-06-20]  centos 6 에서 추가

1. centos 6 에서 package 로 설치해봤다. 설정은 검색해서 참조.

2. telnet localhost 143  해보면 원하는 메시지가 안나온다.

* OK Waiting for authentication process to respond


원래 기대하던 메시지는

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN]  Dovecot Ready

로그 메시지를 확인해보니.

Jun 20 05:46:01 auth: Fatal: Support not compiled in for passdb driver 'vpopmail'

Jun 20 05:46:01 master: Error: service(auth): command startup failed, throttling

패키지가 vpopmail 지원되도록 컴파일 되지 않은 듯 하다.

즉, 소스로 설치해야 할 듯 함. ㅜㅜ

yum groupinstall "Development Tools"


몇가지 imap 체크 방법


LOGIN [username] [password] LIST [flags] [folder separator] [search term] STATUS [mailbox] [flags] SELECT [mailbox] FETCH [first]:[last] flags FETCH [mail number] body[header] FETCH [mail number] body[text] LOGOUT


로그인시 혹시 이런 메시지가 나온다면, vpopmail 사용시

NO [AUTHENTICATIONFAILED] Authentication failed

/home/vpopmail/domains/도메인/vpasswd

이 파일의 권한을 체크해본다. ( vpopmail 으로 되어 있어야 한다) - 원인중 하나일 수 있다.

또는 vpasswd {메일계정}  으로 암호를 재설정 해준다.
(domains 를 복사한 경우 - 재설정이 필요한 듯 하다)

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
우분투 hardy 로 업그레이드 한 후에 이런 에러가 뜨기 시작했다.
현상은 아래와 같은 메세지가 나온다. 별다른 문제는 없지만, 종료하려고 하면 한참후(20~30초)에 종료팝업(재시작,종료,로그아웃 등의 메세지창)이 뜬다.
Internal error failed to initialize HAL
내부 오류.
HAL  기반(?) 으로 동작되는 프로그램에 이상이 있는 듯 하다.

https://bugs.launchpad.net/ubuntu/+source/dbus/+bug/81670
hardy 의 버그인듯 싶다.

/etc/rc2.d 의 부트스크립트들을 살펴보면.
S12dbus
S13gdm
S24hal
의 순서로 되어 있다. gdm 이 뜨기 전에 hal 이 먼저 실행되어야 하는데, 잘못되어 있다.

위 순서를 바꿔준다.  S13gdm 을 S30gdm 으로 바꿔준다.




반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,