우분투(리눅스) 시스템을 운영중에 있다. 얼마전 하드디스크 에러가 생겨 시스템을 이전하려 한다. 이런 하드에러도 있고, 하드디스크를 큰 용량으로 바꾸려고 할 경우도 있다.
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 로 설정해 놓는 것이 편하다.
재부팅후에 BIOS 설정에서 새 하드디스크로 부팅순서를 바꿔서 부팅해 본다. 정상적으로 부팅되는지 확인해본다. 이상이 있으면 기존의 하드로 다시 바꾸면 된다. 하드디스크 위치나 바이오스 설정 등의 차이로 인해 부팅에 이상이 있는 경우가 있으니 설정을 다르게 바꿔가면서 테스트 해본다.
내 경우는 보드의 SATA (sda) , SCSI 컨트롤러, SATA 컨트롤러(sdb) 이렇게 되어 있었다. 바이오스에서 각각의 부팅순서를 바꾸지 못하고, PCI 인터페이스인 SCSI , SATA 가 묶여서 바뀌게 되었다. 그래서 PCI 인터페이스의 맨 처음으로 바꿔야 했다. SATA 에서는 primary 로 변경하고, SCSI 는 보드에서 SATA 를 보드의 안쪽으로 바꿔서 SATA -> SCSI 컨트롤러 순으로 변경하고 서야 제대로 부팅할 수 있었다.
YDN 키 발급을 위해 참 여러가지 테스트를 하게되었다. 발단은 http://blog.1day1.org/333 여기서부터 시작인데, 최소한 상황을 재현(?)할 수 있게 되었다. 정확한 원인이 내쪽에서 찾을 수는 없을 것 같고, 최종적으로 YDN 쪽에서 답을 줘야 할 듯 하다. 아무튼 상황재현과 그 간의 시도를 리포트 한다.
일단 이전 상황은 http://t.1day1.org/post/177433640 여기까지 진행했었다. 즉, 도메인을 체크할 때, 제대로 데이터를 가져가는 것을 확인할 수 있었다. 그런데, 왜 안될까? 뭔가 파일 체크 이외에 더 확인하는 작업이 있다는 것인데... 여기서 부터 상상의 나래(?)를 펼치며 테스트하게 된다.
몇가지 가능성을 따져봤다. 1. 웹서버의 문제. 2. 서버 자체의 문제 혹은 OS(배포판) 문제. 3. 그외의 알 수 없는 문제.
1,2 는 여러서버를 바꿔가면서 테스트 해보기로 했다. apache2 , lighttpd , nginx 를 바꿔가면서 테스트 했다. 서버는 웹호스팅, 서버호스팅 등 계정을 바꿔가며 테스트 해보았다.
제일먼저 웹서버를 변경하면서 테스트 해봤다.
웹서버 테스트. 각각의 헤더를 살펴보면서 체크를 했다. (동일서버에서 웹서버를 변경하여 테스트 했다.)
HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Mon, 07 Sep 2009 15:49:38 GMT Server: Apache P3P: CP='NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE' X-Powered-By: PHP/5.2.5 Connection: close Content-Type: text/html Length: unspecified [text/html] Saving to: `JwiHkHpJfCXx1KeHgs7FfA--.html'
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 에 설정되어있다. 둘의 설정상의 차이가 뭐일까? 살펴봤다.
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. 현재 최종테스트를 위해 네임서버를 변경해 두었다. 적용되려면 최소한 반나절,하루 정도가 걸리기 때문에 아직 테스트 할 수 없다.
기존에 qmail + vpopmail(with cdb) 를 사용했었다. pop3 는 vpopmail 을 이용했다. 그리고, imap 은 bincimap 을 사용했다. 그런데, squirrelmail 을 사용하려고 테스트 하는 중 bincimap 1.2.x 버전에 없는 기능때문에 사용할 수 없다. 1.3.x 버전은 사용이 가능한 듯 하지만, 컴파일 에러가 생겨서 dovecot 을 쓰기로 했다. 요즘 추세(?)가 dovecot 인것 같다. (bincimap 도 가벼워서 괜찮긴한데)