![我在哪里访问了不可见的 SD 卡缓存?](https://linux22.com/image/150290/%E6%88%91%E5%9C%A8%E5%93%AA%E9%87%8C%E8%AE%BF%E9%97%AE%E4%BA%86%E4%B8%8D%E5%8F%AF%E8%A7%81%E7%9A%84%20SD%20%E5%8D%A1%E7%BC%93%E5%AD%98%EF%BC%9F.png)
我正在尝试清除通过 USB 加密狗连接的 SD 卡。
这就是我所做的:
# dd if=/dev/zero of=/dev/sdb bs=$((1024*4))
dd: error writing '/dev/sdb': No space left on device
1002267+0 records in
1002266+0 records out
4105281536 bytes (4.1 GB, 3.8 GiB) copied, 2.10549 s, 1.9 GB/s
我看到的奇怪的事情是:这是一张 SD HC I 卡,因此传输速度永远不会达到 1.9GB/s。该卡为 16GB,并在 中正确报告dmesg
。
好的,我们来检查一下它的写法:
# head -c 4105281536 /dev/zero | sha1sum
a1750724bfbf0ada57d986f16b26e789a6c61a1d -
(reverse-i-search)`': ^C
# head -c 4105281536 /dev/sdb | sha1sum
a1750724bfbf0ada57d986f16b26e789a6c61a1d -
看起来还可以。但是当我拔出并再次插入时,它神奇地具有与以前相同的文件系统。当我安装它们并更改文件时,修改也会保留,即使sha1sum
仍然显示为零。
该设备绝对是/dev/sdb
:
[ 9895.437518] scsi 4:0:0:0: Direct-Access Mass Storage Device PQ: 0 ANSI: 0 CCS
[ 9895.439248] sd 4:0:0:0: [sdb] 30318592 512-byte logical blocks: (15.5 GB/14.5 GiB)
[ 9895.439398] sd 4:0:0:0: [sdb] Write Protect is off
[ 9895.439404] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 9895.439557] sd 4:0:0:0: [sdb] No Caching mode page found
[ 9895.439564] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 9895.441922] sdb: sdb1 sdb2
[ 9895.443517] sd 4:0:0:0: [sdb] Attached SCSI removable disk
这里发生了什么事?
在内核上运行4.20.3
。
答案1
我注意到,dd
当驱动器为 14.5 GiB 时,它仅复制 3.8 GiB。所以你写入的内容很可能不是 SD 卡。拔掉SD卡然后检查ls -lh /dev/sdb
。
我怀疑您不小心在/dev
名为 的上创建了一个常规文件/dev/sdb
。既然/dev
是 RAM 磁盘,这就解释了为什么你可以以 2GBps 的速度写入它
完成dd
命令后,请记住sync
以防万一。这将告诉内核刷新它拥有的所有缓存。