当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 从ext4转换到btrfs会导致文件系统随机变为只读
帖子发表于 : 2018-01-05 0:50 
头像

注册: 2009-07-18 0:14
帖子: 485
送出感谢: 1
接收感谢: 0 次
跟着官方这个指示来做的:https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3
大致操作如下:
1.fsck原ext4文件系统 没问题
2.btrfs-convert 把原文件系统转换成btrfs 没报错,成功。
3.btrfs subvol delete ext2_saved 删掉转换后留下的子卷
4.
btrfs fi defrag -r
btrfs balance start
整理碎片,banlance一下?不懂具体干嘛,按官方的指示照做了。(把文件系统变清真一点?)
5.btrfs filesystem defragment -r -v -clzo 对文件系统做全盘压缩(这是我用btrfs的原因,透明压缩)
以上操作均没报错
代码:
fstab:
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=de31e48a-a9d4-4cfe-9864-2a8265ee20ea /               btrfs   defaults,compress=lzo,[email protected] 0       1

(我就加了个compress)

变成readonly炸掉时dmesg能看到如下错误信息:
代码:
[  587.019825] WARNING: CPU: 1 PID: 56 at /build/linux-bNGTuE/linux-4.4.0/fs/btrfs/inode.c:2931 btrfs_finish_ordered_io+0x7da/0x7f0 [btrfs]()
[  587.019828] Modules linked in: nvram msr joydev vboxsf(OE) snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_seq_midi snd_seq_midi_event vboxvideo(OE) crc32_pclmul snd_rawmidi ttm aesni_intel drm_kms_helper aes_i586 snd_seq xts lrw gf128mul ablk_helper cryptd snd_seq_device snd_timer drm snd input_leds serio_raw fb_sys_fops syscopyarea soundcore sysfillrect i2c_piix4 sysimgblt vboxguest(OE) 8250_fintek mac_hid binfmt_misc parport_pc ppdev lp parport autofs4 btrfs xor raid6_pq hid_generic usbhid hid video ahci libahci e1000 psmouse fjes
[  587.019876] Workqueue: btrfs-endio-write btrfs_endio_write_helper [btrfs]
[  587.019911]  [<f8755f6a>] ? btrfs_finish_ordered_io+0x7da/0x7f0 [btrfs]
[  587.019923]  [<f8755f6a>] ? btrfs_finish_ordered_io+0x7da/0x7f0 [btrfs]
[  587.019937]  [<f8755f6a>] btrfs_finish_ordered_io+0x7da/0x7f0 [btrfs]
[  587.019948]  [<f87562f0>] finish_ordered_fn+0x10/0x20 [btrfs]
[  587.019962]  [<f8784870>] btrfs_scrubparity_helper+0xd0/0x2d0 [btrfs]
[  587.019975]  [<f8784afd>] btrfs_endio_write_helper+0xd/0x10 [btrfs]
[  587.020024] BTRFS: error (device sda1) in btrfs_finish_ordered_io:2931: errno=-95 unknown


发现写入文件 尤其(也许)是大量小文件时,炸成readonly的概率非常大。基本上一打开Firefox开一个网页必炸。

btrfs check --repair没有报错(结果和官方https://btrfs.wiki.kernel.org/index.php/Btrfsck的类似,总之没报错,下面这段是摘自官方的):
代码:
Fixed 0 roots.
checking extents
checking free space cache
checking fs roots
checking csums
checking root refs
enabling repair mode
Checking filesystem on /dev/mapper/space
UUID: 77077815-4ca2-44cd-a83a-b1aeb4607df4
cache and super generation don't match, space cache will be invalidated
found 294976426877 bytes used err is 0
total csum bytes: 636680648
total tree bytes: 6981910528
total fs tree bytes: 5149491200
total extent tree bytes: 895369216
btree space waste bytes: 1860661732
file data blocks allocated: 651971338240
 referenced 676102934528
Btrfs v3.17


btrfs scrub也没报错
btrfs-zero-log试过了,无济于事。
再做balance、defrag也都无济于事。

我的一些主观判断:
1.应该不关压缩的事,我的另一台安装时就用的btrfs文件系统的ubuntu机器,也是用上面的方法做的全盘压缩,挂载的压缩选项也一样,一点问题也没有。
2.几乎可以断定是从ext4转换过来的锅,
因为,Google ext4 btrfs readonly 或者 btrfs errno=-95 unknown能找到一大堆和我情况相似的,全都是从ext4转过来的,然后自动炸成只读的。dmesg报的错都一样!
但是,翻遍google,都无解。

只能在中文社区问问看有没有大神有什么办法了。。


_________________
Linux爱好者,只为效率,有空会常来灌水。
——————
强推:WebQQ桌面化方案,体验很好
稻草软件论坛
Strawing Blog


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 从ext4转换到btrfs会导致文件系统随机变为只读
帖子发表于 : 2018-01-10 22:22 
头像

注册: 2008-09-18 13:11
帖子: 2797
送出感谢: 1
接收感谢: 456
看起来是4.4的内核,那么你用的是16.04了?16.04里的btrfs-tools是4.4版,里面的转换代码是有问题的。4.6和之后版本的btrfs-tools把转换代码重写过,修正了很多bug。4.4之后的内核也有很多btrfs相关的修正,不知道移植回4.4内核没有。
现在16.04应该可以安装4.13内核了,你先装新内核试一下呗。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译