Fra*_*ark 8 arm raspberrypi 14.04
好吧,这是一个非常奇怪的问题,发生在两个带有各自 8GB SD 存储卡的树莓派系统上:
简单的例子:当我将文件写入磁盘时,看起来文件已被写入。
我可以编辑文件vim test.dat,在其中输入文本,然后保存。
ll 将列出该文件。
cat 将显示文件的内容。重新启动后该文件将消失。
所以我认为正在发生的事情是 ubuntu 将文件写入 ubuntu 的磁盘缓存,但它不会将文件提交到磁盘。用户空间程序可以继续读取文件并使用它们,但缓存从内存返回目录列表和文件内容,而不是从磁盘。因为重启后磁盘上就没有新数据了。
另一个例子:
dd if=/dev/zero of=testfile.dat bs=1M count=1000
Run Code Online (Sandbox Code Playgroud)
它创建一个 1GB 大小的文件。ll 列出该文件。df -h 显示磁盘上的数据已多使用 1GB。但重新启动后,该文件消失了,并且 df -h 显示旧的可用空间。
有趣的事实:我知道 SD 卡的最大写入速度是 9MB/秒,这是我使用笔记本电脑将磁盘映像添加到 SD 卡上时得到的结果。但是在树莓派的SD卡上运行这个dd命令,dd报告写入速度为110MB/秒。不可能的。这就是为什么我认为操作系统只是写入 RAM 而不是提交到磁盘。
第三个例子:我有一个脚本,它编辑一个名为interfaces的文件,然后以root身份将其复制到/etc/network/interfaces文件中,以更改设备的IP。然后脚本重新启动。
#!/bin/bash
cp /var/project/scripts/interfaces /etc/network/interfaces
/sbin/reboot
Run Code Online (Sandbox Code Playgroud)
重启后,设备仍然使用旧的 IP 地址...奇怪...
第四个例子:Raspberry 运行一个 Percona 数据库。我有一个包含 186 个条目的表。我截断了表格。使用 php 代码和 webmin 查看数据 - 该表应该是空的。重启后数据又回来了。真的... 186 个条目。这让我很害怕。
我可能完全错了。有任何想法吗?
我一直致力于这个 ubuntu 安装,并在每次主要软件更新后通过克隆磁盘映像进行定期备份。我一直注意到奇怪的事情(比如运行脚本后 IP 没有改变),但直到今天我才意识到这个问题,似乎我所有的克隆磁盘映像都出现了这个问题。在某种程度上它一定工作得很好,然后 pi 上的 ubuntu 出了问题......
问:如何让ubuntu写入SD卡?
似乎对我有帮助的是使用同步命令:
sync
Run Code Online (Sandbox Code Playgroud)
来自帮助:
将更改的块强制写入磁盘,更新超级块。
换句话说,它刷新文件系统缓冲区。不过,我希望当您sudo reboot像我一样做正确的事情时,这不会有问题,因此同步可能不适合您。
我在安装 raspbian wheezy 时遇到了类似的问题。它有一个 ext4 分区,其中包含只读文件系统。还有一个 FAT32 的小型读写分区,其中包含一些配置文件。当我更改配置文件然后拔下电源插头重新启动时,更改不会持久。(请注意:如果没有只读 Pi,拔掉电源插头无论如何都不是明智之举)
小智 2
我的 Samsung EVO 18G MicroSD 卡也有同样的问题。许多人在树莓派论坛上讨论了这个问题:https://www.raspberrypi.org/forums/viewtopic.php ?t=21330#p992573
最有可能的是 SD 卡已损坏。
| 归档时间: |
|
| 查看次数: |
13340 次 |
| 最近记录: |