"No space left on device" 使用 dd 创建磁盘映像时
"No space left on device" when using dd to create a disk image
我正在尝试使用 dd 将我的 Raspberry Pi Model 3 B+ 的磁盘映像创建到 USB 驱动器上。我知道在 Raspberry Pi 上有更简单的方法来执行此操作,但我想尝试在 'sacrificial' 系统上测试该过程,我希望它能在另一台 linux 计算机上使用运行 一个更大的 Ubuntu 磁盘来创建备份。 OS 是 Raspbian 克星 10。
我一直在遵循我在此处的一篇文章中找到的程序:https://www.makeuseof.com/tag/easily-clone-restore-linux-disk-image-dd/
USB 驱动器具有 64GB 容量并已格式化,最初为 exFAT,但我也尝试过 NTFS,我认为这可能是问题所在。该命令以相同的错误结束,但是每次我尝试此操作时,传输的文件大小都不同,错误发生前的大小为 2-8GB。
这是为了识别我的驱动器 - SD 卡是 "mmcblk",我的 USB 驱动器是 "sda",名为 "NINJA":
pi@raspberrypi:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 57.9G 0 disk
└─sda1 8:1 1 57.9G 0 part
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14.6G 0 part /
这是我尝试使用的命令:
pi@raspberrypi:~ $ sudo dd bs=4M if=/dev/mmcblk0 of=/media/pi/NINJA/raspibackup.img
这是输出:
dd: error writing '/media/pi/NINJA/raspibackup.img': No space left on device
605+0 records in
604+0 records out
2535124992 bytes (2.5 GB, 2.4 GiB) copied, 325.617 s, 7.8 MB/s
sda1
未安装在 /media/pi/NINJA/
中,因此您创建的映像存储在 mmcblk0p2
分区中。
由于 mmcblk0
根据定义大于 mmcblk0p2
,因此从逻辑上讲 运行 超出了 space。
解决方案:
您需要先使用 sudo mount /dev/sda1 /media/pi/NINJA/
挂载 sda1
,然后再次尝试您的 dd 命令。
检查目标设备上 "Avail" 有多少磁盘 space。
示例:
[jack@server1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 41M 456M 9% /dev/shm
tmpfs 496M 6.9M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root 6.2G 6.2G 172K 100% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 100M 24K 100M 1% /run/user/1000
/dev/sr0 552M 552M 0 100% /run/media/jack/CentOS 7 x86_64
术语:
- df: DiskFree
- -h:人类可读大小(例如:6.2G 而不是 6485900)
在这个例子中,假设我想备份引导驱动器 (/dev/sda1) 并将其保存在我的根驱动器 (/dev/mapper/centos-root) 上的本地用户主文件夹中。
当我这样做时,我会收到如下所示的错误:
[jack@server1 ~]$ sudo dd if=/dev/sda1 of=boot.img
dd: error writing 'boot.img': No space left on device
1736905+0 records in
1736904+0 records out
889294848 bytes (889 MB) copied, 4.76575 s, 187 MB/s
术语:
- sudo:超级用户执行
- dd:磁盘重复
- if:输入文件(来源)
- of: 输出文件(目标)
系统正在尝试将所有 /dev/sda1(包括免费 space)复制到 boot.img,这是不可能的,因为 /dev/sda1 是 1014M,并且那里在 /dev/mapper/centos-root.
上只剩下 172K space
话虽如此,/dev/sda的实际大小实际上是16G!也就是说还有8G没有分配。
我的 /dev/sda1 应该是 1G 而我的 /dev/sda2 (centos-root) 应该是 15G... 目前是 6.2G
[jack@server1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 15G 0 part
├─centos-root 253:0 0 6.2G 0 lvm /
└─centos-swap 253:1 0 820M 0 lvm [SWAP]
sr0 11:0 1 552M 0 rom /run/media/jack/CentOS 7 x86_64
可以通过执行以下操作扩展此分区:
[jack@server1 ~]$ sudo lvextend -L +8G /dev/mapper/centos-root
[jack@server1 ~]$ sudo xfs_growfs /dev/mapper/centos-root
现在我的分区已扩展,我可以执行另一个 DiskFree 命令来仔细检查。
[jack@server1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 33M 463M 7% /dev/shm
tmpfs 496M 6.9M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root 15G 7.0G 7.3G 49% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 100M 24K 100M 1% /run/user/1000
/dev/sr0 552M 552M 0 100% /run/media/jack/CentOS 7 x86_64
我的根分区现在是15G!现在我可以执行 /dev/sda1 分区的备份了!
[jack@server1 ~]$ sudo dd if=/dev/sda1 of=boot.img
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 5.59741 s, 192 MB/s
任务完成!
我正在尝试使用 dd 将我的 Raspberry Pi Model 3 B+ 的磁盘映像创建到 USB 驱动器上。我知道在 Raspberry Pi 上有更简单的方法来执行此操作,但我想尝试在 'sacrificial' 系统上测试该过程,我希望它能在另一台 linux 计算机上使用运行 一个更大的 Ubuntu 磁盘来创建备份。 OS 是 Raspbian 克星 10。
我一直在遵循我在此处的一篇文章中找到的程序:https://www.makeuseof.com/tag/easily-clone-restore-linux-disk-image-dd/
USB 驱动器具有 64GB 容量并已格式化,最初为 exFAT,但我也尝试过 NTFS,我认为这可能是问题所在。该命令以相同的错误结束,但是每次我尝试此操作时,传输的文件大小都不同,错误发生前的大小为 2-8GB。
这是为了识别我的驱动器 - SD 卡是 "mmcblk",我的 USB 驱动器是 "sda",名为 "NINJA":
pi@raspberrypi:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 57.9G 0 disk
└─sda1 8:1 1 57.9G 0 part
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14.6G 0 part /
这是我尝试使用的命令:
pi@raspberrypi:~ $ sudo dd bs=4M if=/dev/mmcblk0 of=/media/pi/NINJA/raspibackup.img
这是输出:
dd: error writing '/media/pi/NINJA/raspibackup.img': No space left on device
605+0 records in
604+0 records out
2535124992 bytes (2.5 GB, 2.4 GiB) copied, 325.617 s, 7.8 MB/s
sda1
未安装在 /media/pi/NINJA/
中,因此您创建的映像存储在 mmcblk0p2
分区中。
由于 mmcblk0
根据定义大于 mmcblk0p2
,因此从逻辑上讲 运行 超出了 space。
解决方案:
您需要先使用 sudo mount /dev/sda1 /media/pi/NINJA/
挂载 sda1
,然后再次尝试您的 dd 命令。
检查目标设备上 "Avail" 有多少磁盘 space。
示例:
[jack@server1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 41M 456M 9% /dev/shm
tmpfs 496M 6.9M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root 6.2G 6.2G 172K 100% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 100M 24K 100M 1% /run/user/1000
/dev/sr0 552M 552M 0 100% /run/media/jack/CentOS 7 x86_64
术语:
- df: DiskFree
- -h:人类可读大小(例如:6.2G 而不是 6485900)
在这个例子中,假设我想备份引导驱动器 (/dev/sda1) 并将其保存在我的根驱动器 (/dev/mapper/centos-root) 上的本地用户主文件夹中。
当我这样做时,我会收到如下所示的错误:
[jack@server1 ~]$ sudo dd if=/dev/sda1 of=boot.img
dd: error writing 'boot.img': No space left on device
1736905+0 records in
1736904+0 records out
889294848 bytes (889 MB) copied, 4.76575 s, 187 MB/s
术语:
- sudo:超级用户执行
- dd:磁盘重复
- if:输入文件(来源)
- of: 输出文件(目标)
系统正在尝试将所有 /dev/sda1(包括免费 space)复制到 boot.img,这是不可能的,因为 /dev/sda1 是 1014M,并且那里在 /dev/mapper/centos-root.
上只剩下 172K space话虽如此,/dev/sda的实际大小实际上是16G!也就是说还有8G没有分配。
我的 /dev/sda1 应该是 1G 而我的 /dev/sda2 (centos-root) 应该是 15G... 目前是 6.2G
[jack@server1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 15G 0 part
├─centos-root 253:0 0 6.2G 0 lvm /
└─centos-swap 253:1 0 820M 0 lvm [SWAP]
sr0 11:0 1 552M 0 rom /run/media/jack/CentOS 7 x86_64
可以通过执行以下操作扩展此分区:
[jack@server1 ~]$ sudo lvextend -L +8G /dev/mapper/centos-root
[jack@server1 ~]$ sudo xfs_growfs /dev/mapper/centos-root
现在我的分区已扩展,我可以执行另一个 DiskFree 命令来仔细检查。
[jack@server1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 33M 463M 7% /dev/shm
tmpfs 496M 6.9M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root 15G 7.0G 7.3G 49% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 100M 24K 100M 1% /run/user/1000
/dev/sr0 552M 552M 0 100% /run/media/jack/CentOS 7 x86_64
我的根分区现在是15G!现在我可以执行 /dev/sda1 分区的备份了!
[jack@server1 ~]$ sudo dd if=/dev/sda1 of=boot.img
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 5.59741 s, 192 MB/s
任务完成!