부팅 파티션을 변경한 후 MBR에 grub을 다시 설치해야 합니까?

부팅 파티션을 변경한 후 MBR에 grub을 다시 설치해야 합니까?

클라우드 환경에 Centos 6 서버가 있고 루트 파티션을 기존 하드 드라이브에서 다른 하드 드라이브로 이동하고 싶습니다.

/var원래 하드 드라이브(/dev/xvda1)에는 , , 와 같은 다른 폴더가 있는데, /usr이들을 이동하고 싶지 않아서 dd기존 하드 드라이브 전체를 새 하드 드라이브(/dev/ xvdh1).

이제 위에서 언급한 내용을 제외한 rsync모든 내용을 다른 하드 드라이브(/dev/xvdg) 에 저장했습니다. 새 UUID를 사용하기 위해 새 하드 드라이브에서 다음 파일을 수정했습니다.//dev/xvdh1/var /usr

  • /etc/fstab
  • /boot/grub/grub.conf

출력은 다음과 같습니다 blkid.

/dev/xvdh1: UUID="9b84e28c-5a12-4889-804a-753e56645333" TYPE="ext4"

/etc/fstab설치를 수행하는 라인 /:

UUID="9b84e28c-5a12-4889-804a-753e56645333" /   ext4    defaults        1 1

/boot/grub/grub.conf:

default=0
timeout=1
title CentOS 6 (2.6.32-573.18.1.el6.x86_64)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.32-573.18.1.el6.x86_64 ro root=UUID=9b84e28c-5a12-4889-804a-753e56645333 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 crashkernel=auto SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
        initrd /boot/initramfs-2.6.32-573.18.1.el6.x86_64.img

또한 다음의 dd부팅 섹터 코드 도 있습니다./dev/xvda/dev/xvdh1

dd if=/dev/xvda of=/dev/xvdh bs=446 count=1

두 개의 하드 디스크 메타데이터 출력:

# file -s /dev/xvda
/dev/xvda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 16775168 sectors, code offset 0x48

# file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)

# file -s /dev/xvdh
/dev/xvdh: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 4192256 sectors, code offset 0x48

# file -s /dev/xvdh1
/dev/xvdh1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)

위의 모든 단계를 완료한 후 기존 HDD를 분리하고 새 HDD를 장착 /dev/xvda1하고 부팅했습니다. 그러나 머신을 부팅할 때 grub 오류가 발생합니다.

Booting from Hard Disk... 
Geom Error

/dev/xvda1크기가 다르므로 /dev/xvdh1분명히 UUID도 다릅니다. 그래서내 질문예: 부트 섹터 코드에 grub-install수정 사항을 기록하려면 작업을 수행해야 합니까 ? grub.conf아니면 부팅 코드가 동일하고 루트 파티션 정보가 거기에 저장되지 않고 grub.conf추가 단계 없이 부팅 코드를 읽어 정보를 얻을 수 있기 때문에 이것이 필요하지 않습니까?

grub이 서버를 시작하도록 하기 위해 다른 파일을 변경해야 한다면 설명해 주세요. 감사합니다. (그럽 버전: 0.94)

답변1

grub-install예, 위치(아래 설명 참조)는 2단계가 포함된 파일 시스템에 따라 다르기 때문에 실행해야 한다고 생각합니다 .

이전 디스크( /dev/xvda) 의 부트 섹터를 /dev/xvdh1새 디스크( )의 첫 번째 파티션에 복사했다고 말씀하셨습니다. 파티션이 아닌 새 디스크의 첫 번째 섹터에 코드를 배치할 필요가 없나요?

제안한 대로 초기 단계에는 이 답변의 그래프에 표시된 두 번째 단계에 대한 포인터가 포함되어 있습니다.https://unix.stackexchange.com/a/258867/216116

게다가 데비안은 정기적인 소프트웨어 업데이트 중에 실행되도록 설정되어 있으므로 솔루션이 원하는 대로 작동하도록 grub-install하는 것이 문제가 되지 않습니다 (물론 적절한 매개변수를 사용하여).grub-install

관련 정보