산 사진

산 사진

1TB HD에 설치된 FreeBSD의 img(dd로 제작)가 있습니다.

이번에는 더 작은 디스크(500GB)를 사용해야 하며, 물론 동일한 이미지를 복원하려고 하면 작동하지 않지만 파티션 테이블과 MBR을 수동으로 조정하려고 해도 시스템이 부팅되지 않습니다.

내가 뭘 한거지:

뒤쪽에DDing, 내가 직접 갔어플로피 디스크MBR 끝 섹터를 조정하기 위해 다음을 사용합니다.헤어졌다파티션을 올바른 경계로 축소합니다.

내 계산에 따르면 파티션이 500GB 디스크의 섹터 2048에서 시작한다는 점을 고려하면 끝 섹터를 976771120(총 976773168)으로 설정하는 것이 맞습니다.

그런 다음 새 파티션은 2048 -> 976771120이고 새 MBR도 이 논리를 사용합니다. 실제로 FreeBSD 부팅 관리자 1단계로 이동할 수 있지만 부팅 프롬프트에서 멈춥니다(오류 66). 어쩌면 다음 부트로더 단계가 어떻게 작동하는지 모르고 FreeBSD 부팅을 위해 파티션 구성표와 MBR을 수정하는 것만으로는 충분하지 않을 수도 있습니다. 어쩌면 수정이 필요한 미리 읽기 conf 파일도 있을 수 있나요? 내 기본 OS가 아니므로 시행착오 과정을 거치고 있습니다. 감사해요

편집: 출력이 추가되었습니다. 사진이 아쉽지만 유일한 옵션입니다. 실제 데이터가 정말 작다는 사실을 기억하지 마세요(<2GB).

첫 번째 디스크, 500GB 계획(작동하지 않음) 두 번째 디스크, 1TB 원래 계획(작동 중)

나는 이것을 받아들이고 내 작업을 계속할 수 있었지만 무엇이 잘못되었는지 이해하는 것이 여전히 흥미로울 것이라고 생각했습니다. 현재 상황

답변1

첫째, 문제가 발생할 경우를 대비해 백업 복사본이 필요합니다. 어떤 파일 시스템을 사용하든 도구가 필요합니다.

먼저, 사용 중인 파일 시스템의 파티션을 논리적으로 축소할 수 있는 프로그램이 필요합니다. 이전에 ntfs와 ext3를 사용하여 이 작업을 몇 번 수행한 적이 있지만 아이디어는 각 파일 시스템에 대해 동일합니다.

sda1.img귀하의 이미지가 파티션( )의 이미지 라고 가정합니다 . 전체 디스크( sda.img)인 경우 파티션을 "추출"하거나 전체 이미지를 물리적 디스크(1TB 이상)에 넣고 처리합니다. 나중에 작업 내용을 새 500GB 디스크에 복사합니다. 그 이유는 크기 조정 프로그램이 전체 디스크 이미지의 경우와 같은 오프셋 파티션을 지원하지 않을 수 있기 때문입니다.

your old disk (sda):
+--------+----------------+---...
| mbr... | sda1 (system)  | sda2...
+--------+----------------+---...

1. ntfsresize//((물리적 디스크에서)/(이미지에서))를 사용하여 파티션 파일 시스템을 축소합니다. (파티션) 이미지의 파일 시스템 크기가 조정됩니다.tune2fswhatever-fs-resizer/dev/sda1sda1.img

2. 크기가 조정된 시스템 파티션과 추가 메가바이트를 수용할 수 있는 새(500GB) 디스크( )에 새 파티션 테이블을 생성하여 /dev/sdb파일 시스템이 새 파티션( /dev/sdb1)에 맞도록 합니다. 그것을 사용하십시오 fdisk/cfdisk/(g)parted/whatever-you-like. 부팅 가능 하게 만드는 것을 잊지 마십시오 /dev/sdb1.

기술적으로 필요한 양을 정확히 계산할 수 있지만 걱정하지 마십시오. 리사이저가 파일 시스템의 크기를 조정하여( 에서 /dev/sdb1) 전체 파티션을 채울 수 있어야 합니다(나중에 자세히 설명).

3. 조정된 크기를 sda1.img새 대상에 복사합니다 /dev/sdb1( dd또는 cat: 사용 $ cat sda1.img > /dev/sdb1).

4. /dev/sdb2|3|4...필요에 맞게 다른 파티션을 포맷합니다.

5. 일을 즐겨라.

답변2

옛날 방식으로 고쳐보겠습니다.

newfs /dev/ada1s1
mount /dev/ada1s1 /mnt
cd /mnt
dump -0a -f - /dev/ada0s1 | restore -rf -
gpart bootcode -b /boot/mbr -p /boot/boot1 ada1

이렇게 하면 새 파일 시스템이 생성되어 마운트되고 복구가 필요한 대상 디렉터리로 이동합니다. UFS에서는 절대 실패하지 않는 기존 백업 도구를 사용하여 전체 파일 시스템을 복사합니다. 마지막 명령은 부팅 코드를 작성합니다.

면책조항: 항상 명령을 확인하십시오. 매개변수 중 일부가 잘못된 경우 결과는 물론 파괴적일 수 있기 때문입니다! ! 여기서 무슨 일이 일어나고 있는지 이해해야합니다.

답변3

이것은 나에게 약간 마조히즘적인 것 같습니다.

개인적으로는 백업을 해두고 싶습니다 dd. 그런 다음 이동하기 전에 축소하고 작동하는지 확인합니다(축소->다시 시작->확인->최종 dd).

귀하의 데이터가 500GB 미만이라고 가정합니다. 그러나 디스크에서 그것이 어떻게 구성되어 있는지는 알 수 없습니다.

sfdisk그렇다면 파티션을 사용 하고 수정한 적이 있습니까 parted? 하지만 파일 시스템을 보호하기 위해 무엇을 합니까? 파티션을 간단히 변경해도 파일 시스템의 데이터 순서가 바뀌지 않으며 잘린 파일 시스템의 레이아웃도 관리되지 않습니다.

그래서 당신이 놓치고 있는 것은 파일 시스템을 처리하는 것입니다. FreeBSD에서는 일반적으로 UFS 또는 ZFS를 사용합니다. UFS의 경우 다음을 살펴봐야 합니다.성장(8)(바라보다FreeBSD에서 UFS /root 파티션 크기 조정). ZFS를 사용하면 볼륨 관리자와 파일 시스템의 조합이기 때문에 모든 것이 완전히 다릅니다!

따라서 귀하의 직접적인 질문에 답변하기 위해서는 많은 추가 정보가 필요합니다. 그러나 데이터를 얻는 방법에 대한 암시적인 질문은 훨씬 쉽습니다. 새 디스크에 부팅 가능한 FreeBSD 설치를 설정합니다. 그런 다음 데이터를 복사합니다.

산 사진

디스크의 dd 이미지가 있으면 이를 마운트할 수 있습니다. 다른 시스템에서 이 작업을 수행하거나 휴대용 USB 디스크/네트워크 드라이브를 사용하십시오.

/dev/ada0따라서 as의 완전한 원본 복사본이 있는 경우 ada0.dd해당 이미지를 가상 메모리 디스크로 사용할 수 있습니다.

# mdconfig -a -t vnode -u 0 -f /home/realpclaudio/ada0.dd

/dev/md0그러면 완전한 디스크가 제공됩니다 .

그러면 모든 것이 잘 보이는지 확인할 수 있습니다.

# fdisk /dev/md0

이것은 이전 디스크와 정확히 같아야 합니다. 그런 다음 데이터 보기를 시작할 수 있지만 이는 파일 시스템에 따라 다릅니다.

초고속 파일 시스템

UFS 파일 시스템을 디스크에 마운트합니다.

# mount -t ufs -o ro /dev/md0s1a /mnt

이는 첫 번째 슬라이스의 루트 파일 시스템일 가능성이 높습니다. 슬라이스가 더 있으면 마운트할 수도 있습니다.

# mount -t ufs -o ro /dev/md0s1e /mnt/var
# mount -t ufs -o ro /dev/md0s1g /mnt/home

ZFS

ZFS를 사용하는 경우 ZFS 도구를 사용하여 디스크를 관리할 수 있습니다(참조:zpool 관리.

# zpool import -o altroot=/mnt mypool
# zfs list

관련 정보