我有一个 Rasperry Pi,我在它的 SD 卡上运行 Ubuntu。该设置运行“无头”,这意味着我已将 Ubuntu 安装在单独 PC 上的 SD 卡上,然后通过 SSH 连接到机器来配置其余部分。
上次我通过 SSH 连接时,因为我在机器上运行的一些应用程序非常慢,我尝试“apt get update”并收到消息说我的系统是“只读”系统。
在互联网上的一些挖掘让我相信,当文件系统出现问题时,Ubuntu 会切换到只读。
然后我所做的就是尝试重新启动系统,结果是它无法正常启动,现在我什至无法再通过 ssh 登录到机器了。由于 Ubuntu 是无头运行的,我也无法通过连接键盘+显示器来修复它。
预感我唯一的机会是通过将 SD 卡安装到另一个系统上来修复系统。
这是我的问题:
修复我的 Ubuntu 的最佳策略是什么,这样至少我可以再次 ssh 进入它(最好不必从头开始设置 Ubuntu)任何想法如何找出我的系统进入只读模式的原因,以便我将来可以防止这种情况发生?非常感谢大家的帮助!
当我曾经遇到过这个问题时,我重新格式化了 SD 卡并重新安装了所有内容。但这不可能是最好的解决方案。我想了解如何最好地“治愈”这个问题,以及如何首先预防它P
答案1
在互联网上的一些挖掘让我相信,当文件系统出现问题时,Ubuntu 会切换到只读。
存储设备损坏的典型症状。
这在 RP 上很常见。原因很简单:消费类 SD 卡旨在以人类拍摄照片和视频的速度写入照片和视频,而不是用于写入日志、数据库和配置文件的系统。
dmesg
通过查看并查找mmc
相关错误,您会注意到这种情况。
SD卡中的控制器做了它能做的事情,但最终,这种使用模式会快速磨损某些SD卡的物理存储,如果写入量足够高,磨损均衡就无能为力。
如果是这样的话,即使外部安装SD卡也无法恢复其写入数据的能力。
然而,不是如果您想保留任何原始数据,尝试在 RPi 中再写入它是一个非常好的主意。
当我曾经遇到过这个问题时,我重新格式化了 SD 卡并重新安装了所有内容。但这不可能是最好的解决方案。我想了解如何最好地“治愈”这个问题,以及如何首先预防它P
没有治愈方法;唯一的选择是购买专为这种使用模式设计的 SD 卡,但这很难。即使是合法的生产商包同一产品的芯片截然不同,并且存在大量灰色市场和假冒产品,甚至在西方零售市场也是如此。
最好的解决方案是确保您有一种快速的方法来准确组装您需要的 SD 卡;一个常见的解决方案确实是在 SD 卡上安装一个基本的 Ubuntu + SSH 服务器,然后拍摄图像。这将是您未来设置的基础。
为了避免您未来的 SD 卡快速退化,我建议您执行以下操作:
即使是快速的 SD 卡在 Raspberry Pi 中也很慢。即使是最新 RPi 4 中最好的 SD 卡随机写入速度低于 4 MB/s。对于现代闪存来说,这简直是小得可笑!您的 RPi 的 USB2(如果是 RPi4:USB3)比这快得多。选择将除 /boot 分区之外的所有内容存储在外部(我认为现在可以在 debian 安装期间完成,不确定!即使您必须手动将 / 卷移动到外部存储,更改 /etc/fstab 并重新生成 initrd,您只需要成功一次:您可以想象该状态并将其用作将来的基础!),USB 连接的内存将使您的系统运行得更快。速度极快的 USB 存储设备价格惊人地便宜 – 与台式机一起使用100GB 以上 SATA SSD 运行价格低于 10 欧元,以及用于这些的外部 USB 盒也低于10欧元,如果您有存储密集型工作负载,则没有理由依赖 SD 卡等防写介质。但是:即使是中档 USB“拇指驱动器”也会很快 - 但要注意巨大的质量差异,就像 SD 卡一样,甚至是成本最低的部门中的更多底层设备。
无论您是否决定将大部分系统转移到 USB 存储,您还需要确保您对系统所做的任何操作都可以通过一次调用进行复制,而不是花费数小时来安装相同的内容事情又来了。安西布尔是一个常见的工具 - 你编写一个“剧本”,说明要安装哪些 apt 软件包、要从 PC 复制哪些文件、要添加哪些用户、要修改哪些配置文件……然后它就会执行此操作新建立的系统。它所需要的只是通过 SSH 访问该系统。
答案2
首先,非常感谢您抽出时间并提供有用的指导。
我通过将显示器连接到 Raspberry Pi,然后访问控制台来运行 fsk 命令来解决我的问题。诀窍是在机器运行之前连接显示器(热插拔不起作用),这给我留下了错误的印象,即“无头”系统甚至不提供控制台(实际上它们提供了控制台,这就是我可以解决我的问题)。
我在这里还了解到,将应用程序保留在 SD 卡上是一个坏主意,我会考虑将系统的某些部分移至 USB 驱动器上,并将 SD 卡上的核心操作系统保持为只读模式。
谢谢你们