파티션이 없는 디스크를 어떻게 데이터 손실 없이 "파티션"할 수 있습니까?

파티션이 없는 디스크를 어떻게 데이터 손실 없이 "파티션"할 수 있습니까?

백업용으로 사용하는 1TB 휴대용 하드 드라이브가 있습니다. 전체 드라이브( /dev/sdb)가 파일 시스템으로 포맷되었습니다 ext4.

btrfs백업에 대한 의 이점(체크섬, 자동 복구 등) 에 대해 읽어 왔으며 이 디스크를 ext4에서 btrfs.

나는 여전히 디스크 크기( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdb또는 그 정도)를 조정할 수 있다고 확신합니다. 그러나 시작할 파티션이 없는 장치에 파티션을 "도입"하는 방법을 잘 모르겠습니다.

이것이 가능합니까? 그렇다면 어떻게 해야 합니까?

(파일 시스템 자체( ext4, btrfs등)는 거의 관련이 없습니다. 문제는 순전히 파티션 없이 처음에 생성된 장치를 파티셔닝하고 기존 파일 시스템을 잃지 않고 그렇게 하는 것에 관한 것입니다.)

답변1

파티션 테이블(적어도 MBR 또는 GPT 스타일)은 디스크의 시작 및/또는 끝 부분에 있으므로 필요한 공간을 확보할 수 있으면 이를 도입할 수 있습니다.

테라바이트 디스크로 작업하면 다음과 같이 진행됩니다.

  1. ext4 파일 시스템의 크기를 499G로 조정합니다(안전한 측면에서 오류가 발생함). 이렇게 하면 모든 데이터, 파일 시스템 구조 등이 디스크의 첫 번째 499G 블록에 맞는지 확인할 수 있습니다. 이상적으로는 파일 시스템을 최대한 줄여 후속 단계에서 복사해야 하는 데이터의 양을 줄여야 합니다.
  2. dd또는 유사한 도구를 사용하여 블록을 디스크의 두 번째 절반에 복사합니다 .
  3. 디스크를 분할하여 파일 시스템(500G)보다 약간 큰 하나의 파티션을 만듭니다. 이를 위해 GPT를 사용하십시오. 디스크 시작과 끝 부분의 블록을 덮어쓰게 되므로 이제 디스크 시작 부분의 파일 시스템 복사본이 토스트됩니다.
  4. dd또는 이와 유사한 것을 다시 사용하여 디스크의 두 번째 절반에 있는 원시 블록을 새로 생성된 파티션에 복사합니다 . 2단계에서 수행한 작업을 기반으로 오프셋과 크기를 계산해야 하지만 대상은 쉽습니다( /dev/sdX1).
  5. 모든 파티션을 차지하도록 파일 시스템의 크기를 다시 조정합니다.

다음과 같은 도구를 사용하여ddrescue역방향으로 복사할 수 있으므로 이를 약간 단순화할 수 있습니다.

  1. 소스 파일 시스템의 크기를 최대한 조정합니다.
  2. 첫 번째 파티션이 시작될 위치를 계산합니다(실제로 파티션 테이블을 생성하지 않고).
  3. 첫 번째 파티션이 시작되는 곳에서 시작되도록 소스 파일 시스템을 구성하는 블록을 이동합니다. (이때부터 복사를 시작해야 합니다.)
  4. 디스크를 분할합니다.
  5. 파일 시스템의 크기를 조정합니다.

관련된 복사 양을 고려하면 데이터를 다른 곳에 백업하고 복원하는 것이 더 쉬울 것입니다! ext4 파일 시스템의 시작 부분을 저장하고 나머지 데이터를 복원하여 복사 양을 제한할 수 있지만, 이를 위해서는 더 주의 깊게 장부를 관리해야 합니다.

답변2

데이터 손실 없이 2TB 드라이브를 성공적으로 다시 파티션했습니다. GNU/Linux 상자와 Windows 상자에서 백업을 수행하고 싶었기 때문에 EXT4 파티션을 1TB로 줄이고 NTFS 파일 시스템으로 포맷한 새 1TB 파티션을 만들었습니다.

내가 해야 할 일은 우분투에서 GUI 디스크 앱을 사용하는 것뿐이었습니다. 다른 배포판에도 파티션 관리를 위한 유사한 GUI 앱이 있어야 합니다. NTFS 대신 BTRFS를 사용해도 괜찮을 것 같습니다.

물론 터미널에서도 파티션 재분할을 수행할 수 있어야 합니다.

답변3

혼란스러워요.

디스크가 ext4로 포맷되었다고 하셨는데,가지고 있다파티션. 디스크의 파티션 테이블이 gpt이고 fdisk가 이를 지원하지 않기 때문에 fdisk가 이를 표시하지 않을 수도 있습니다. 이 경우에는 parted를 사용할 수 있습니다.

sudo parted -l /dev/sdb

이 외에도 ext4를 btrfs로 변환할 수 있습니다.이 아치 리눅스 가이드에서 말했듯이.

관련 정보