安卓系统启动/关闭过程中断电,会不会造成系统文件损坏? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
halk
V2EX    Android

安卓系统启动/关闭过程中断电,会不会造成系统文件损坏?

  •  
  •   halk 2024-09-04 09:16:32 +08:00 7170 次点击
    这是一个创建于 410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安卓工控机,有断电重启的业务需求。

    有三个时间点:

    1. 系统启动或关闭过程中
    2. 系统启动完成,业务 app 启动中
    3. 系统启动完成,且业务 app 启动完成

    哪一种风险更高? 不考虑系统/业务 app 版本升级 升级的场景

    20 条回复    2024-09-05 21:10:07 +08:00
    kokerkov
        1
    kokerkov  
       2024-09-04 09:25:39 +08:00
    安卓关于文件存储这种低级活动是内核 linux 处理的,所以应该等同于 linux 。

    这题我不会。请高人
    cheng6563
        2
    cheng6563  
       2024-09-04 09:27:26 +08:00
    写数据时还是可能会炸,需要你应用 App 做好处理,比如写备份数据库,App 启动时自动校验并使用备份数据
    paopjian
        3
    paopjian  
       2024-09-04 09:30:06 +08:00
    好多安卓手机都有双系统备份,一个系统更新炸了启动不起来就切备用的?
    LLaMA2
        4
    LLaMA2  
       2024-09-04 09:34:55 +08:00
    1.出问题概率最大.所以你编译系统的时候要做好容错恢复处理

    2.和 3. 基本不会,
    除非你能修改操作系统的某些配置.一般情况下自己 app 要做容错处理

    目前 android 系统有 a/b 机制.你得和供货厂家确认,和网友确认是不靠谱的
    PTLin
        5
    PTLin  
       2024-09-04 09:39:07 +08:00
    f2fs 这种带日志的说实话真彻底挂掉的概率是很小的,随时断电的场景下 100%没问题是不可能的,但就迭代了这么多年,加上个人的经验,99%没问题倒是可以。
    halk
        6
    halk  
    OP
       2024-09-04 09:46:26 +08:00
    安卓定制工控

    1. 发生过业务 app 文件( so 文件)损坏,导致应用无法启动的情况,没有定位到具体原因
    2. 还没有发生过系统文件损坏,导致系统无法启动的情况

    对于第 1 中,也比较奇怪,因为对应用对 so 文件只是加载,并不会修改
    luny
        7
    luny  
       2024-09-04 10:07:53 +08:00
    只要是基于通用文件系统,比如 ext4 ,都会存在掉电一致性问题,所以一般针对嵌入式场景,都会尽量减少可写入文件系统的占比,能用只读的比如 squashfs ,尽量用只读。另外像企业级固态硬盘,都会有很大的电容做掉电保护,也说明文件系统是不可靠的。
    jiabing520a
        8
    jiabing520a  
       2024-09-04 12:04:06 +08:00
    会出现问题基本是因为断电时正在读写,所以楼上说的搞成只读的,确实是一个方向
    location123
        9
    location123  
       2024-09-04 13:24:39 +08:00
    目前在做的 Android 屏关机方式就是直接断电 遇到过 直接断电后 数据库插入更新数据丢失 写完的文件丢失 现在解决方案就是在重要的节点调用 sync 同步、备份数据下次开始时检测文件完整性
    tool2dx
        10
    tool2dx  
       2024-09-04 13:29:25 +08:00
    别说安卓了,就算成熟的 PC 你直接断电,都有可能出现问题。

    有一种古老的技术叫 ramos ,那个不太怕掉电。当然数据安全要自己处理的。
    rb6221
        11
    rb6221  
       2024-09-04 13:55:12 +08:00
    安卓设备不是有电池吗?为什么会出现你说的这种情况?你们把电池拆了?
    如果拆了,最好的办法就是装电池
    yuchenr
        12
    yuchenr  
       2024-09-04 14:57:48 +08:00
    就不能用正常的重启吗?
    idealhs
        13
    idealhs  
       2024-09-04 15:04:04 +08:00
    不如加个 UPS
    R4rvZ6agNVWr56V0
        14
    R4rvZ6agNVWr56V0  
       2024-09-04 15:04:24 +08:00
    系统启动完成,且业务 app 启动完成后的风险
    我认为这个阶段的风险最高,主要原因:

    所有系统和应用都已完全运行。用户正在进行实际操作。
    数据库连接、网络通信等关键服务都已建立。
    用户正在执行各种业务操作,数据正在被读写。

    如果此时断电,很可能会导致数据丢失、事务中断等意外问题,会影响到业务系统依赖的环境。
    binsys
        15
    binsys  
       2024-09-04 15:08:26 +08:00
    工业应用考虑上只读文件系统+AB 分区。
    用一些手段提高可靠性。

    单纯 EXT4 问题肯定多。
    halk
        16
    halk  
    OP
       2024-09-04 17:05:51 +08:00
    @janus77 工控配有 UPS ,有些场景(例如设备无网络),需要进行断电重启处理
    Zy143L
        17
    Zy143L  
       2024-09-05 02:44:26 +08:00
    系统挂的概率不高 system 基本上都是只读的 你更多得考虑你的软件在写数据中断造成的文件异常
    Chinsung
        18
    Chinsung  
       2024-09-05 09:47:56 +08:00
    一般现在基于日志的文件系统都是按页来的,数据可能会丢
    那么出现文件损坏的情况,一般就是对文件完整性要求比较高(比如用大 json 存,保存时直接一段没保存上,json 格式被破坏了),或者存储方式没有使用日志,否则也应该只是丢数据而且不是文件直接损坏
    从这个角度看,业务 app 可以尽可能保持两种方式去保存数据:对文件完整性要求不高的、基于日志的存储(类似于 ext 的 log ,或者 mysql 的 redolog )
    halk
        19
    halk  
    OP
       2024-09-05 17:32:58 +08:00
    @Chinsung 遇到的问题,不是 json 等数据文件损坏,而是 apk 的 so 文件损坏了
    应用不会对这个文件进行 w ,只有 r
    fugu37
        20
    fugu37  
       2024-09-05 21:10:07 +08:00
    @halk #19

    存储设备出问题也会导致文件系统上文件损坏
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2270 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:19 PVG 09:19 LAX 18:19 JFK 21:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86