たとえば、190GBのパーティションがあり、その後に100GBのパーティション化されていないディスク空き容量があります。
分割されていない空き領域が左側になるように、このパーティションを100 GBの「右」(より高いセクタ番号に向かって)に移動したいと思います。
このパーティションは、次の理由でランダムにコピーできません。
- これには、保存する必要がある暗号化されたデータ(ブロックレベル)が含まれています。
- パーティションの古い場所と新しい場所が重なります。
私はGPartedがこの問題を処理できる必要があることを知っています。しかし、コマンドラインツールを使って自分でやりたいです。わかりましたsfdisk
何かがある次のようにパーティションを100M右に移動します。
echo '+100M,' | sfdisk --move-data /dev/sdc -N 1
私は2つを知りたいです:
- 同様の(または他の)ツールを使用してデータを手動で移動するには
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つのパーティションがあり、2番目のパーティションの後に空き領域があるように3番目のパーティションを削除しました。次に、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つの領域があります。最初の領域が必要です。次から始まるセクタの数...その後、その番号をパーティション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
。つまり、2 つの間にギャップはありません。