[리눅스(우분투) 시스템 하드 복사]
임광일. 2012. 04. 06.
기존 디스크가 두개 있는 시스템에
디스크를 하나 더 붙인 후 추가한 디스크에 시스템을 복사하고자함
sda는 데이터 디스크이고, sdb가 시스템 디스크
시스템 : Ubuntu 11.04, 2.6.38-13-generic x86_64
작업한 과정을 기억나는대로 순서대로 재구성한 내용입니다.
세밀한 설명 없이 러프하게 정리해놨습니다.
아마 맞는 내용이겠지만 빠진 부분이 있을 수도 있습니다.
해보고 안되는 부분은 각자 찾아서 작업 하시길
하드 추가하기 전 디스크 정보
# sudo -i
# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
Disk identifier: 0xae69ae69
Device Boot Start End Blocks Id System
/dev/sda1 1 60801 488384001 83 Linux
Disk /dev/sdb: 146.8 GB, 146815737856 bytes
Disk identifier: 0x000e4536
Device Boot Start End Blocks Id System
/dev/sdb1 1 13 96256 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sdb2 * 13 25 97280 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sdb3 25 17850 143179776 83 Linux
추가 디스크를 붙이니, 아래와 같이 기존 sdb는 sdc로 옮겨지고 추가된 디스크는 sdb로 잡힘
# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
Disk identifier: 0xae69ae69
Device Boot Start End Blocks Id System
/dev/sda1 1 60801 488384001 83 Linux
Disk /dev/sdb: 120.0 GB, 120034123776 bytes
Disk identifier: 0xed18e86a
Device Boot Start End Blocks Id System
Disk /dev/sdc: 146.8 GB, 146815737856 bytes
Disk identifier: 0x000e4536
Device Boot Start End Blocks Id System
/dev/sdc1 1 13 96256 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sdc2 * 13 25 97280 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sdc3 25 17850 143179776 83 Linux
fdisk로 sdb를 파티션 나누고 파일시스템 생성
# fdisk /dev/sdb
# mkswap /dev/sdb1
# mkfs.ext4 /dev/sdb2
# mkfs.ext4 /dev/sdb3
# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
Disk identifier: 0xae69ae69
Device Boot Start End Blocks Id System
/dev/sda1 1 60801 488384001 83 Linux
Disk /dev/sdb: 120.0 GB, 120034123776 bytes
Disk identifier: 0xed18e86a
Device Boot Start End Blocks Id System
/dev/sdb1 1 12 96358+ 83 Linux
/dev/sdb2 13 24 96390 83 Linux
/dev/sdb3 25 14593 117025492+ 83 Linux
Disk /dev/sdc: 146.8 GB, 146815737856 bytes
Disk identifier: 0x000e4536
Device Boot Start End Blocks Id System
/dev/sdc1 1 13 96256 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sdc2 * 13 25 97280 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sdc3 25 17850 143179776 83 Linux
sdb2 마운트 후 /boot 데렉토리 복사
# mount -t ext4 -o discard /dev/sdb2 /mnt
# cd /mnt/
# cp -avx /boot/* ./
# cd /; umount /dev/sdb2
sdb3 마운트 후 복사하지 않고 생성만 하는 디렉토리 및 링크 생성
(13.04에서는 ln -s lib lib64 없어도 됨, 13.04에서는 /lib /lib64가 링크가 아닌 실제 파일로 따로 존재)
# mount -t ext4 -o discard /dev/sdb3 /mnt
# cd /mnt/
# cp -av /initrd.img /initrd.img.old /vmlinuz /vmlinuz.old ./
# ln -s lib lib64
# mkdir boot mnt proc selinux sys
/ 파일 시스템 디렉토리 복사
(13.04에서는 디렉토리가 약간 다름. 잘 확인해서 작업)
# cp -avx /bin /build /cdrom /dev /etc /home /lib /lib32 /media /opt /root /sbin /srv /temp /tmp /usr /var ./
dev 파일시스템 링크 수정
(13.04에서는 이부분 필요 없음. /dev/에 ln -s sdb3 root 와 같은 링크 자체가 필요 없음)
# cd /mnt/dev/
# rm -f root
# ln -s sdb3 root
fstab 파일 수정
# blkid
/dev/sda1: UUID="21d93731-466c-4aa7-8d69-99c92385bc7f" TYPE="ext4"
/dev/sdb1: UUID="bcc1e001-07cd-4faa-95e8-e9c0d058a2b9" TYPE="swap"
/dev/sdb2: UUID="ca0adb92-0bed-4def-bd94-101cc681959f" TYPE="ext4"
/dev/sdb3: UUID="d0dc267e-258b-4d33-81d2-614654fe1e72" TYPE="ext4"
/dev/sdc1: UUID="63008eba-57ed-4775-ac32-9ccb43c19bc5" TYPE="swap"
/dev/sdc2: UUID="3ac66cec-4707-4687-b1a5-4351588622ad" TYPE="ext4"
/dev/sdc3: UUID="ec2a8ab5-6daf-49bb-a745-0d07c4a7b795" TYPE="ext4"
# vi /mnt/etc/fstab
---- /mnt/etc/fstab ---------------------------------------------------------------------------------
proc /proc proc nodev,noexec,nosuid 0 0
UUID=d0dc267e-258b-4d33-81d2-614654fe1e72 / ext4 errors=remount-ro 0 1
UUID=ca0adb92-0bed-4def-bd94-101cc681959f /boot ext4 defaults 0 2
UUID=bcc1e001-07cd-4faa-95e8-e9c0d058a2b9 none swap sw 0 0
UUID=21d93731-466c-4aa7-8d69-99c92385bc7f /home/kilim/DATA ext4 defaults 0 0
-----------------------------------------------------------------------------------------------------
sdb3 언마운트 후 sdb2 다시 마운트
# cd /; umount /dev/sdb2
# mount -t ext4 -o discard /dev/sdb2 /mnt
grub 설정 변경 및 MBR에 부트로더 생성
# cd /mnt/grub
# perl -p -i -e "s/3ac66cec-4707-4687-b1a5-4351588622ad/ca0adb92-0bed-4def-bd94-101cc681959f/g" grub.cfg
# perl -p -i -e "s/ec2a8ab5-6daf-49bb-a745-0d07c4a7b795/d0dc267e-258b-4d33-81d2-614654fe1e72/g" grub.cfg
# grub-install --root-directory=/mnt /dev/sdb
sdb2 언마운트 후 재부팅
# cd /; umount /dev/sdb2
# sync
# shutdown -r now
재부팅 과정에서 CMOS 세팅에서 부팅 디스크를 교체한 디스크로 세팅