예를 들어 190GB의 파티션이 있고 그 뒤에 100GB의 파티션되지 않은 디스크 여유 공간이 있습니다.
분할되지 않은 여유 공간이 왼쪽에 있도록 이 파티션을 100GB "오른쪽"(더 높은 섹터 번호 쪽으로)으로 이동하고 싶습니다.
이 파티션은 다음과 같은 이유로 임의로 복사할 수 없습니다.
- 여기에는 보존해야 하는 암호화된 데이터(블록 수준)가 포함되어 있습니다.
- 파티션의 이전 위치와 새 위치가 겹칩니다.
나는 GParted가 이 문제를 처리할 수 있어야 한다는 것을 알고 있습니다. 하지만 명령줄 도구를 사용하여 직접 수행하고 싶습니다. 알아요sfdisk
무언가가있다다음과 같이 파티션을 100M 오른쪽으로 이동합니다.
echo '+100M,' | sfdisk --move-data /dev/sdc -N 1
나는 두 가지를 알고 싶습니다:
- 유사한(또는 다른) 도구를 사용하여 데이터를 수동으로 이동 하려면
dd
어떻게 해야 합니까?나는 파티션의 끝을 시작하기 전에 복사해야 한다고 생각합니다. 마치 거꾸로 읽고 복사하는 것과 같습니다(물론 GPT 파티션 테이블도 편집해야 합니다). - 이를 사용하고 싶다면
sfdisk
디스크 반대편에 있는 파티션에 올바르게 "접촉"하도록 매우 정확한 섹터 번호를 이동하는 데 어떻게 사용할 수 있습니까? (이렇게 하면 서로 간격 없이 서로 옆에 위치하게 됩니다.)
답변1
원하는 경우
sfdisk
매우 정확한 섹터 번호를 이동하여 디스크 반대편에 있는 파티션에 올바르게 "접촉"하도록 하려면 어떻게 해야 합니까? (이렇게 하면 서로 간격 없이 서로 옆에 위치하게 됩니다.)
섹터 수를 입력으로 제공하여 이를 수행할 수 있습니다 sfdisk
.
echo '+NUM' | sfdisk --move-data /dev/sdc -N 1
첫 번째 파티션 섹터를 NUM
오른쪽으로 이동합니다.
설명서에 설명되어 있듯이
숫자 매개변수는 기본적으로 섹터 번호로 해석됩니다.
NUM
뒤에 곱셈 접미사(예: M
etc. )가 오는 경우에만 바이트 단위의 크기로 처리 KiB
됩니다 .sfdisk
+50GiB
섹터 수는 어떻게 알 수 있나요? 매우 간단하며 sfdisk
스위치를 통해 보고됩니다 -F
.
-F, --list-free [device...]
모든 또는 지정된 장치에서 분할되지 않은 사용 가능한 영역을 나열합니다.
샘플 출력(사용 가능한 영역의 섹터 수를 굵게 표시했습니다):
시작 및 끝 섹터 크기 114369428 324084628 209715200 100 그램
NUM
따라서 첫 번째 명령의 숫자를 사용하십시오.
echo '+209715200' | sfdisk --move-data /dev/sdc -N 1
사이에 간격 없이 첫 번째 파티션을 다음 파티션 옆으로 이동합니다.
기록을 위해 2GB SD 카드에서 실행한 내용은 다음과 같습니다(출력과 관련 없는 부분 제거).
4개의 파티션이 있었고 두 번째 파티션 뒤에 여유 공간이 있도록 세 번째 파티션을 삭제했습니다. 그런 다음 Go를 마지막 파티션 쪽으로 이동합니다. 먼저 기존 파티션을 나열합니다.
sfdisk -l /dev/sdc
[...]
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sdc2 2099200 2488319 389120 190M c W95 FAT32 (LBA)
/dev/sdc4 2693120 3966975 1273856 622M 7 HPFS/NTFS/exFAT
sdc2
이동하려는 파티션은 섹터로 끝나 2488319
므로 여유 공간은 섹터로 시작됩니다 2488320
. 그런 다음 여유 공간 영역을 나열합니다.
sfdisk -F /dev/sdc
Unpartitioned space /dev/sdc: 101,5 MiB, 106430464 bytes, 207872 sectors
[...]
Start End Sectors Size
2488320 2693119 204800 100M
3966976 3970047 3072 1,5M
여유 공간에는 두 가지 영역이 있습니다. 첫 번째 영역이 필요합니다. 다음에서 시작하는 섹터 수... 그런 다음 해당 숫자를 파티션 2 이동의 입력 으로 2488320
사용합니다 .204800
sfdisk
echo "+204800" | sfdisk /dev/sdc -N 2 --데이터 이동
Checking that no-one is using this disk right now ... OK
[...]
Old situation:
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sdc2 2099200 2488319 389120 190M c W95 FAT32 (LBA)
/dev/sdc4 2693120 3966975 1273856 622M 7 HPFS/NTFS/exFAT
New situation:
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sdc2 2304000 2693119 389120 190M c W95 FAT32 (LBA)
/dev/sdc4 2693120 3966975 1273856 622M 7 HPFS/NTFS/exFAT
Data move:
start sector: (from/to) 2099200 / 2304000
sectors: 389120
step size: 1048576 bytes
Moved 389120 from 389120 sectors (100%).
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
New situation:
출력 에 따르면 2
이제 파티션 끝 섹터는 2693119
이고 파티션 4
시작 섹터는 입니다 2693120
. 즉, 둘 사이에 간격이 없습니다.