尽管有足够的空间,为什么 dd 会随机抛出“设备上没有剩余空间”错误?

尽管有足够的空间,为什么 dd 会随机抛出“设备上没有剩余空间”错误?

我正在尝试在固态硬盘上刷新图像,但必须开始多次尝试,直到最终成功。

镜像大小为 3 GB,ssd 为 1.8 TB。我见过其他人遇到索引节点问题,但这似乎不是这里的原因。所有信息都应位于这些日志中:

$ 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 可用空间

相关内容