Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

dd를 사용하여 VHD 파일을 물리적 하드 드라이브로 효율적으로 전송 - 실용 가이드

VHD(가상 하드 디스크) 파일은 VirtualBox 및 기타 가상 x86/x86_64 에뮬레이터에서 물리적 미디어 사용을 에뮬레이트하는 거대한 파일입니다. 이를 통해 Linux 배포판 내에서 Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS/2 또는 기타 Linux 버전을 실행할 수 있습니다. 이러한 파일을 사용하면 ISO로 동일한 작업을 수행할 수 있는 dd 명령을 통해 내용을 물리적 디스크에 직접 쓸 수 없지만 그렇게 하는 방법이 있습니다. 일부 가이드에서는 VHD 파일을 ISO로 변환해야 하지만 최신 버전의 Linux에서 VirtualBox를 실행하는 경우에는 이 작업을 수행할 필요가 없습니다. QEMU 사용자에게도 탈출구가 있지만 더 많은 노력이 필요합니다.

작업할 드라이브나 파티션이 부팅할 드라이브나 파티션이 아닌지 확인해야 합니다. 이 예에서는 분할된 NAND 메모리를 사용했지만, 그렇지 않은 경우에는 라이브 DVD 또는 USB 부팅을 사용하는 것이 좋습니다. 문제의 컴퓨터를 어떤 방식으로 부팅했는지에 관계없이 Ctrl, Alt, T를 누른 상태에서 Ubuntu Dash에서 검색하거나 Xfce4 또는 LXDE의 시스템 도구 하위 메뉴에서 열어 터미널 프로그램을 시작하세요.

방법 1:명령 프롬프트에서 VBoxManage 사용

이를 수행하는 가장 쉬운 방법은 기존 VirtualBox 설치를 사용하는 것입니다. 대상의 물리적 하드웨어에 있는 모든 데이터가 삭제되는 동시에 해당 프로세스에서 VHD 또는 VHDX 파일에 어떤 작업이 수행될 수도 있으므로 손실이 우려되는 모든 데이터를 먼저 백업했는지 확인하세요. 이는 다른 방법뿐만 아니라 이렇게 파괴적인 명령과 관련된 모든 방법에도 적용됩니다.

모든 것이 안전하고 대상 드라이브가 마운트 해제되었지만 여전히 시스템에 연결되어 있음을 확인한 후, 연결했지만 마운트되지 않았거나 프로세스에서 모든 내용을 잃어버리기 때문에 원시 하드 디스크일 수도 있는 외부 하드 디스크에 대해 VBoxManage clonehd freeBSD.VHDX –format RAW freeBSD.RAW를 실행하세요. freeBSD.VHDX를 가상 하드 디스크로 교체하는 동안. 테스트 목적으로 FreeBSD를 어느 정도 설치한 가상 하드 디스크 파일이 있어서 이런 이름이 붙었습니다.

이 명령이 완료되자마자 sudo dd if=freeBSD.RAW of=/dev/sde를 실행하세요. , RAW 파일 이름을 방금 생성한 RAW로 바꾸고 sde 블록 장치를 실제로 관심 있는 장치로 바꾸세요. 확실하지 않은 경우 언제든지 sudo fdisk -l을 실행할 수 있습니다. 올바른 파티션 이름을 알고 있는지 확인하십시오. 다른 용도로 dd를 사용할 때와 마찬가지로 잘못된 장치에 쓰고 싶지는 않습니다.

작은 장치에 큰 파일을 쓰려고 하는 것처럼 장치에 공간이 없다는 오류가 발생할 수 있지만 테스트에서는 문제가 발생하지 않았습니다. 이 과정에서 0이 추가되는 것 같습니다. 그렇지 않으면 최소한의 조작으로 단 두 단계만으로 가상 디스크를 물리 디스크에 복사할 수 있었습니다.

방법 2:QEMU 디스크 네트워크 블록 장치 서버 명령 사용

QEMU(Quick Emulator) 가상화 시스템에만 액세스할 수 있는 사용자는 VBoxManage 명령에 액세스할 수 있는 사용자보다 약간 더 복잡한 절차를 처리해야 합니다. 명령 프롬프트에서 sudo modprobe nbd를 실행합니다. qemu-nbd -r -c /dev/ndb0 -f vpc ourTest.vhd가 뒤따릅니다. , 작업 중인 실제 파일 이름을 반영하도록 파일 이름이 변경됩니다. 설치 구성 방법에 따라 qemu-nbd를 실행하려면 sudo가 필요할 수 있습니다. 여기에서 명령을 복사하여 붙여넣는 경우 실행하기 전에 명령을 변경해야 합니다. 대부분의 경우 여기서 걱정할 것은 ndb0 장치뿐이므로 아무런 문제도 발생하지 않습니다.

완료되면 qemu-nbd -P 2 -r -c /dev/nbd2 -f vpc ourTest.vhd를 사용하여 파티션을 작성할 수 있습니다. sudo ddrescure -v -f /dev/nbd2 /dev/sde2가 뒤따릅니다. 하지만 장치 파일을 실제로 사용하고 싶은 파일로 바꾸는 것을 잊지 마세요. 이를 복사하여 자신의 터미널에 붙여넣는 경우 해당 파일 이름과 파티션 번호를 쓰려는 이름으로 바꾸십시오. 우리의 /dev/sde 장치는 아무것도 손상시키지 않고 안전하게 테스트하기 위해 사용했던 중고 SDHC 카드였습니다. qemu-nbd를 실행하려면 sudo가 필요할 수 있지만 필요하지는 않습니다. 마찬가지로 구성에 따라 파티션 번호를 삭제해야 할 수도 있습니다. 이러한 이유로 QEMU 프로세스는 그다지 직관적이지 않습니다.

Hyper-V 사용자에게는 VHD 파일 대신 VHDX 이미지가 있을 수 있습니다. 이 경우 대신 qemu-nbd -c /dev/nbd0 -f VHDX ourTest.vhd를 실행해야 합니다. 파일 이름을 다시 한 번 바꾸면서. 이 형식은 가상화된 시스템에 더 큰 저장 용량을 추가하기 위해 Windows Server 2012에 추가되었지만 점점 더 많은 Linux 사용자가 VHD의 2TB 제한을 벗어나기 위해 이 형식을 사용하고 있습니다. 그렇지 않으면 이러한 지침은 문제의 실제 파일 크기에 관계없이 작동해야 합니다. GNU ddrescue 도구는 dd처럼 작동해야 하지만 가장 좋은 블록을 먼저 복사해야 합니다.

이 작업이 실행되면 VHDX 이미지로 작업하는 사용자는 sudo ddrescue -v -f /dev/nbd2 /dev/sde2를 실행해야 합니다. , 다시 위의 파일을 교체합니다. 그렇지 않으면 모든 유형의 VirtualBox 이미지를 가진 모든 사람이 qemu-nbd -P 2 -r -c /dev/nbd2 -f vpc ourTest.vhd를 사용할 수 있습니다. 문제의 파티션을 마치 오래된 디스크인 것처럼 마운트합니다. sudo mount /dev/nbd2 /cdrom을 사용해야 합니다. 또는 sudo mount /dev/nbd2 /mnt 그것을 마운트합니다. 시도하기 전에 /cdrom 또는 /mnt 디렉토리에 다른 것이 마운트되어 있지 않은지 확인하세요.

방법 3:파일 마운트 해제 후 연결 끊기

이미지를 마운트 해제하려면 sudo umount /mnt를 사용하면 됩니다. 또는 sudo umount /cdrom 그것을 분리하려면. 결국 Linux 커널 자체는 마치 다른 볼륨인 것처럼 처리하느라 바빴습니다.

하지만 여전히 QEMU 시스템에서 연결을 끊어야 하므로 qemu-ndb -d /dev/nbd2를 입력하세요. 연결을 끊으세요.

저자 소개

dd를 사용하여 VHD 파일을 물리적 하드 드라이브로 효율적으로 전송 - 실용 가이드

케빈 애로우

Kevin Arrows는 10년 이상의 업계 경험을 보유한 경험이 풍부하고 지식이 풍부한 기술 전문가입니다. 그는 MCTS(Microsoft Certified Technology Specialist) 인증을 보유하고 있으며 최신 기술 개발에 대한 최신 정보를 얻으려는 깊은 열정을 가지고 있습니다. Kevin은 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅과 같은 분야에서 자신의 전문 지식과 지식을 보여주면서 광범위한 기술 관련 주제에 대해 광범위하게 글을 썼습니다. 기술 분야에 대한 그의 공헌은 동료들로부터 널리 인정받고 존경받고 있으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 높은 평가를 받고 있습니다.