저는 이 dd
도구를 사용하여 Raspberry Pi SD 카드 이미지를 로컬 컴퓨터에 백업하고 있습니다. 카드 중 하나를 복제할 때 시스템 드라이브에 여유 공간이 부족합니다. 내 컴퓨터에는 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
두 가지 변형이 어떻게 다른지 확인하세요.(128GB, 119GiB).
파일 시스템에는 202G - 79G = ~ 123GiB의 여유 공간이 있으며 그 중 일부는 예약되어 있습니다. root
이는 열에 112G(iB)라고 표시된 이유를 설명하므로 Avail
장치의 119GiB를 수용하기에 충분합니다.
성공 하면 프로세스 dd
에만 사용할 수 있음에도 불구하고 여전히 202G - 199G = ~ 3GiB의 여유 공간이 있음을 알 수 있습니다 root
(따라서 열 0
) Avail
.