V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
qqqasdwx
V2EX  ›  Linux

断电后 ubuntu 文件系统损坏?

  •  
  •   qqqasdwx · 2017-10-30 16:28:35 +08:00 · 9538 次点击
    这是一个创建于 2575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    我这边有一些设备,每天都要强制断电,有的时候就会出现无法进入系统的情况。

    解决方案选择

    1. 预防
    2. 解决

    问题

    1. 如果是预防的话,方案是将系统设置为只读,领导提供的方案是 Overlayroot,我没接触过,网上也没找到什么例子,有大神接触过的请不吝赐教,拜谢!
    2. 如果是解决的话,看了一下,用 fsck 应该是可以的,但是领导说系统都崩了,根本找不到 fsck 命令的,但我有点疑问,如果 fsck 是在系统启动之后才能运行的话,那设置/etc/default/rcS下的FSCKFIX = yes有什么用呢?

    附加

    不考虑 ups,设备多,成本太高

    34 条回复    2017-11-04 12:33:07 +08:00
    514146235
        1
    514146235  
       2017-10-30 16:45:02 +08:00
    btrfs 你值得拥有
    ryanking8215
        2
    ryanking8215  
       2017-10-30 16:45:14 +08:00
    我给你出个馊注意吧,借鉴嵌入式系统,用 ramfs, cramfs, squashfs 等只读文件系统,数据挂 ext4, xfs 日志文件系统。
    ToughGuy
        3
    ToughGuy  
       2017-10-30 17:41:35 +08:00
    如果能改接受系统重启后数据还原就直接使用 aufs 弄成类似 LiveCD 那种格式。
    hcymk2
        4
    hcymk2  
       2017-10-30 17:49:14 +08:00
    不能提前关机么?
    py2ex
        5
    py2ex  
       2017-10-30 17:52:22 +08:00
    以前用过 ubuntu 11.04 每次机房断电,恢复供电后启动系统,这时看到各个分区都变为只读挂载了。
    难道只读这个过程不是自动的?
    AttufliX
        6
    AttufliX  
       2017-10-30 18:03:55 +08:00 via Android
    万年 ext4,断电也没坏过。btrfs 千万别用
    qqqasdwx
        7
    qqqasdwx  
    OP
       2017-10-30 18:05:11 +08:00
    @hcymk2 不能 [手动捂脸] ,时间不定 0.0
    Osk
        8
    Osk  
       2017-10-30 18:16:00 +08:00 via Android
    我手上一块开发板现在当家庭 server 也是,每次都起不来,每次都得手动取卡执行 fsck,其实是我懒,只要配置好 initramfs,在 initramfs 阶段中完成 fsck 就没这些问题了,但配置方法我弄丢了(主要是 ubbot 启动脚本),想着反正一年就几次而已就没管。

    或者像嵌入式系统那样,原始的 rootfs 分区挂载为只读,然后数据分区挂载读写,最后挂载 OverlayFS 做为真正的 /
    gwind
        9
    gwind  
       2017-10-30 21:52:20 +08:00
    Linux 这种需求不为过,可以满足,但是如果想做到安全,需要定制。
    另外,应用内存数据不考虑保护吗?
    ashong
        10
    ashong  
       2017-10-30 21:59:43 +08:00
    我的软路由刷 LEDE 也是这个问题, 掉电后重新启动就是只读挂载, 搜了一下应该是 linux 常见的问题
    flynaj
        11
    flynaj  
       2017-10-30 22:03:39 +08:00 via Android
    断电之前先关机,
    Ehend
        12
    Ehend  
       2017-10-30 23:37:40 +08:00 via Android
    表示我的树莓派也是这样,目前解决方案是常年接个充电宝。。。
    likuku
        13
    likuku  
       2017-10-30 23:43:25 +08:00
    经常断电,力荐 xfs

    硬盘足够多,那么数据盘使用带冗余策略的 ZFS 也是很好的选择

    btrfs ... 那玩意还是算了吧
    HMSQQbA
        14
    HMSQQbA  
       2017-10-31 00:53:37 +08:00 via Android
    @Ehend 求充电宝型号?一直找不到满足要求的:1.能边放边充。2.断电时供电不会短时断开
    yingfengi
        15
    yingfengi  
       2017-10-31 01:09:42 +08:00 via Android
    每天强制断电是什么场景
    twl007
        16
    twl007  
       2017-10-31 01:18:02 +08:00 via iPhone
    禁用硬盘自带缓存
    Ehend
        17
    Ehend  
       2017-10-31 02:06:55 +08:00 via Android
    ashong
        18
    ashong  
       2017-10-31 02:39:10 +08:00
    @HMSQQbA 我也在找,tb 上有些宿舍路由器 ups,不知道常通电会不会有安全隐患
    likuku
        19
    likuku  
       2017-10-31 02:48:55 +08:00
    @yingfengi 上学时候,宿舍 23:30 准时断电... 那时我用 freebsd 6 和 debian,crontab 设置了 23:25 自动关机,然后就听着楼道里各种咒骂断电的例行吐槽。
    tamlok
        20
    tamlok  
       2017-10-31 06:57:46 +08:00 via Android
    买个 ups 护着?起码有时间关机。
    atz
        21
    atz  
       2017-10-31 09:10:32 +08:00
    支持楼上 ups,强制断电也会损耗电脑,还不如先关机别老想者用复杂的办法
    doubleflower
        22
    doubleflower  
       2017-10-31 09:18:03 +08:00
    @atz 损耗哪个部件?
    qqqasdwx
        23
    qqqasdwx  
    OP
       2017-10-31 09:57:42 +08:00
    @yingfengi 客户那边的需求 0.0 而且断电时间不定
    qqqasdwx
        24
    qqqasdwx  
    OP
       2017-10-31 10:05:22 +08:00
    @twl007 嗯,这方面也在考虑,但性能会受到一定的影响
    qqqasdwx
        25
    qqqasdwx  
    OP
       2017-10-31 10:07:38 +08:00
    @gwind 对啊,现在就发愁呢,只能在内存里少放数据
    wxg4net
        26
    wxg4net  
       2017-10-31 10:13:10 +08:00
    Overlayroot 方案不错
    qqqasdwx
        27
    qqqasdwx  
    OP
       2017-10-31 10:15:26 +08:00
    @wxg4net 嗯,看了一下,不难配置,就是更改系统设置的时候得从 grub 重新引导比较烦,有什么经验传授一下么大神
    wxg4net
        28
    wxg4net  
       2017-10-31 10:16:55 +08:00
    @wxg4net 但是仍然有问题需要处理。数据分区也可能断电损坏
    qqqasdwx
        29
    qqqasdwx  
    OP
       2017-10-31 10:38:44 +08:00
    @wxg4net 那就 overlayroot+开机自动 fsck ?
    yingfengi
        30
    yingfengi  
       2017-10-31 11:04:55 +08:00 via Android
    @qqqasdwx 极域可以联动关机,仅供参考
    scofieldpeng
        31
    scofieldpeng  
       2017-10-31 11:24:10 +08:00
    之前家里的上网本当 server 也遇到这个问题,不过好在有电池,于是写了个脚本,发现断电并且电量不够了自动关机,2333
    qqqasdwx
        32
    qqqasdwx  
    OP
       2017-10-31 13:34:43 +08:00
    @scofieldpeng 我这要有电池就没问题了 233
    iwtbauh
        33
    iwtbauh  
       2017-11-02 10:28:32 +08:00 via Android
    问题 2:开机时调用的 e2fsck 是在 内存闪存盘 /内存文件系统 中的,并不是系统根文件系统中的那个
    系统启动前,会在内存中创建一个内存闪存盘或内存文件系统,内部解压进去一个最小的文件系统(由 busybox,启动脚本和一些必要的工具,例如 e2fsck )。
    因此只要保证这个镜像(例如 /boot/initrd-xxxxx.img )可以就可以在开机之前检查文件系统
    henglinli
        34
    henglinli  
       2017-11-04 12:33:07 +08:00 via iPhone
    1,可以尝试把 /分区 remount 挂载成只读,应用需要迁移到单独分区,而且应用还要支持 recovery 等特性。(补充下:内核启动参数默认就是 ro 的,systemd 会 remount / 为 rw )。
    2,fsck 修复文件系统,如果断电的时候正在写文件,该文件可能会已经损坏了,fsck 也许能修复改文件。

    btrfs 推荐使用分区如下:/rw_root_fs 这是原系统根文件系统 ,/ro_root_fs 这是只读的 rw_root_fs 的 snapshot 子卷 ,/usr/local/ 或者 /otp 这是应用分区 ;从 ro_root_fs 只读启动或者启动后 remount 成只读。btrfs 理论上不需要 fsck。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:41 · PVG 15:41 · LAX 23:41 · JFK 02:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.