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

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
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,