충분한 공간이 있음에도 불구하고 dd가 무작위로 "장치에 남은 공간 없음" 오류를 발생시키는 이유는 무엇입니까?

충분한 공간이 있음에도 불구하고 dd가 무작위로 "장치에 남은 공간 없음" 오류를 발생시키는 이유는 무엇입니까?

SSD에 이미지를 플래시하려고 하는데 마침내 성공할 때까지 여러 번 시도해야 합니다.

이미지 크기는 3GB이고 SSD는 1.8TB입니다. 다른 사람들이 inode에 문제가 있는 것을 본 적이 있지만 여기서는 그게 원인이 아닌 것 같습니다. 모든 정보는 다음 로그에 있어야 합니다.

$ ls -lah raspios_out.img 
-rw-r--r-- 1 root root 3,0G Jun 20 19:02 raspios_out.img

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0  512M  0 part /boot/efi
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0 39,5G  0 part /
sdb      8:16   0  1,8T  0 disk 
├─sdb1   8:17   0  256M  0 part 
└─sdb2   8:18   0  1,8T  0 part 
sr0     11:0    1 50,6M  0 rom  

$ ls -la /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jun 20 19:27 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jun 20 19:25 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Jun 20 19:25 /dev/sdb2

$ df -i
Filesystem      Inodes   IUsed   IFree IUse% Mounted on
udev            227699     504  227195    1% /dev
tmpfs           251397     763  250634    1% /run
/dev/sda5      2588672  852421 1736251   33% /
tmpfs           251397       1  251396    1% /dev/shm
tmpfs           251397       5  251392    1% /run/lock
tmpfs           251397      19  251378    1% /sys/fs/cgroup
/dev/sda1            0       0       0     - /boot/efi
AustauschVM       1000 -999000 1000000     - /media/austauschVM2
tmpfs           251397      36  251361    1% /run/user/1000
none            251397       7  251390    1% /run/qemu

$ dd --version
dd (coreutils) 8.30
[...]

$ uname -a
Linux falste-linux-vm 5.15.0-75-generic #82~20.04.1-Ubuntu SMP Wed Jun 7 19:37:37 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

$ sudo dd bs=1M if=raspios_out.img of=/dev/sdb conv=fdatasync  status=progress
1045430272 bytes (1,0 GB, 997 MiB) copied, 115 s, 9,1 MB/s
dd: error writing '/dev/sdb': No space left on device
1095+0 records in
1094+0 records out
1147142144 bytes (1,1 GB, 1,1 GiB) copied, 114,823 s, 10,0 MB/s

$ sudo dd bs=1M if=raspios_out.img of=/dev/sdb conv=fdatasync  status=progress
702545920 bytes (703 MB, 670 MiB) copied, 79 s, 8,9 MB/s 
dd: error writing '/dev/sdb': No space left on device
698+0 records in
697+0 records out
730857472 bytes (731 MB, 697 MiB) copied, 79,0955 s, 9,2 MB/s

$ sudo dd bs=1M if=raspios_out.img of=/dev/sdb conv=fdatasync  status=progress
1944059904 bytes (1,9 GB, 1,8 GiB) copied, 205 s, 9,5 MB/s 
dd: error writing '/dev/sdb': No space left on device
1855+0 records in
1854+0 records out
1944059904 bytes (1,9 GB, 1,8 GiB) copied, 204,887 s, 9,5 MB/s

$ sudo dd bs=1M if=raspios_out.img of=/dev/sdb conv=fdatasync  status=progress
343932928 bytes (344 MB, 328 MiB) copied, 41 s, 8,3 MB/s
dd: error writing '/dev/sdb': No space left on device
355+0 records in
354+0 records out
371195904 bytes (371 MB, 354 MiB) copied, 41,5655 s, 8,9 MB/s

[...]

다른 오류가 더 걱정되기는 했지만 이 오류도 한 번 발생했습니다.

dd: fdatasync failed for '/dev/sdb': Input/output error

내가 시도한 것:

  • 가상 머신 다시 시작
  • SSD를 분리했다가 다시 삽입하세요.
  • 다양한 bs매개변수 설정
  • 명령을 여러 번 실행

나는 그 어떤 것도 문제와 관련이 없다고 생각합니다.

이 문제의 원인은 무엇입니까?

답변1

제공된 정보 sdb는 정확하며 이미지는 전체 디스크용입니다. 다음과 같이 작동합니다.

sudo -s    # Enter your password if prompted
cat raspios_out.img >/dev/sdb 
sync

하지만 로그를 해석해 보면 이 sdb장치는 여유 공간이 약 2GB밖에 없기 때문에 잘못된 장치입니다.

관련 정보