私はこのdd
ツールを使ってRaspberry Pi SDカードイメージをローカルコンピュータにバックアップしています。カードの1つを複製すると、システムドライブに空き容量がなくなります。私のコンピュータには112GBの空き容量があり、SDカードは128GBです。カードをコピーするために私が下したコマンドは次のとおりです。
sudo dd if=/dev/mmcblk0 of=pi_backup.img status=progress
dd
システム領域が不足すると、どのようなエラーや警告も生成されず、イメージ全体が自分のローカルコンピュータにコピーされたことを報告します。ディスクサイズは128GBを少し超えています。システムストレージが完全にいっぱいです。
dd
出力:
128126352384 bytes (128 GB, 119 GiB) copied, 1524 s, 84.1 MB/s
250347520+0 records in
250347520+0 records out
128177930240 bytes (128 GB, 119 GiB) copied, 1524.57 s, 84.1 MB/s
df -h
コピー前の出力(/dev/loop
簡潔にするためにデバイスを切り捨てる):
Filesystem Size Used Avail Use% Mounted on
udev 7.7G 0 7.7G 0% /dev
tmpfs 1.6G 3.0M 1.6G 1% /run
/dev/nvme0n1p7 202G 79G 112G 42% /
tmpfs 7.7G 34M 7.7G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/nvme0n1p1 186M 94M 93M 51% /boot/efi
tmpfs 1.6G 20K 1.6G 1% /run/user/125
tmpfs 1.6G 132K 1.6G 1% /run/user/1000
/dev/mmcblk0p1 253M 50M 203M 20% /media/tdarby/boot
/dev/mmcblk0p2 118G 15G 99G 13% /media/tdarby/rootfs
df -h
コピー後の出力:
Filesystem Size Used Avail Use% Mounted on
udev 7.7G 0 7.7G 0% /dev
tmpfs 1.6G 3.0M 1.6G 1% /run
/dev/nvme0n1p7 202G 199G 0 100% /
tmpfs 7.7G 34M 7.7G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/nvme0n1p1 186M 94M 93M 51% /boot/efi
tmpfs 1.6G 20K 1.6G 1% /run/user/125
tmpfs 1.6G 136K 1.6G 1% /run/user/1000
ls -lh pi_backup.img
コピー後:
-rw-r--r-- 1 root root 120G Jan 12 15:28 pi_backup.img
コピーしたら、ディスクに書き込んでみてください。
~$ echo "hello" >> out.txt
bash: echo: write error: No space left on device
しかし、dd
間違いは一度も発生しませんでした。実際、dd
後でもう一度実行すると、ディスクがいっぱいになっていないかのように、新しい画像をコピーしていきます!
ログに示すように、元のディスクの空き容量は112Gで、コピー後のファイルサイズは120Gでした。
私が理解したように、dd
出力ディスクがいっぱいになるとエラーが発生し、次dd: error writing ‘/dev/sdx’: No space left on device
の警告は生成されません。
dd
ディスク内の隣接するファイルやパーティションを上書きするのが心配です。今でもディスクはまだいっぱいです。dd
コマンドを再実行でき、ディスクがいっぱいだと文句を言うことなくコピーを続けます。
ここで予想される動作は何ですか?
答え1
ギガバイト(GB)はギガバイト(GiB、G)と同じではありません。
- 1GiB == 1GiB == 1024 3バイト== 2 30バイト== 1,073,741,824バイト
- 1GB == 1GB == 1000 3バイト == 10 9バイト == 1,000,000,000バイト
df
サフィックスは2つの変形の力を使用します。dd
2つのバリエーションがどのように異なるかを確認してください。(128GB、119GiB)。
ファイルシステムには202G - 79G =〜123GiBの空き容量があり、その一部は予約されています。root
これは列に112G(iB)とマークされている理由を説明しているため、Avail
デバイスの119GiBに対応するのに十分です。
成功すると、プロセスdd
でのみ使用できるにもかかわらず、まだ202G - 199G =〜3GiBの空き容量があることがわかりますroot
(したがって熱0
)Avail
。