求助, lvm 卷 xfs 文件系统,在经过我一番操作后,提示输入输出错误

2018-07-14 00:53:30 +08:00
 yao990

今天手贱,先是用 lvreduce 命令将分区缩小至原来的一半,然后又用 lvextend 命令扩充至原来的大小,然后挂载,挂载可以正常挂载,当用 ls 列出文件时就提示无法打开目录,输入输出错误。 后执行 vgs.lvs.lvdisplay.pvdisplay.df.等命令均显示正常(或以我的水平还无法看出哪里有问题), 但想要进入分区查看文件时就提示输入输出错误,尝试 xfs_repair.xfs_metadump.xfs_growfs 等命令均提示输入输出错误。

现求助各位大侠该怎么办?

8298 次点击
所在节点    Linux
52 条回复
xcai
2018-07-14 03:09:17 +08:00
xfs 文件系统不支持缩小
yao990
2018-07-14 07:29:39 +08:00
@xcai 哎,我也是执行了操作以后才知道。所以现在还有没有什么办法能挽救?
defunct9
2018-07-14 08:25:15 +08:00
开 ssh,我也救不了了
heiher
2018-07-14 08:41:51 +08:00
默认情况下 lvreduce 不会在缩小分区时同时缩小分区中的文件系统呀,缩小后可能有元数据的写入释放的空间,文件系统的数据结构被破坏了。。。下次记得 lvreduce 加个 -r 参数。
tempdban
2018-07-14 08:42:32 +08:00
输入输出错误,把 dmesg 打出来我看一眼
yao990
2018-07-14 09:40:47 +08:00
@tempdban
由于完整信息太长,v2ex 无法回复,所以麻烦移步
https://s.cxice.com/thread-2974.htm
先谢谢了


@heiher 那这现在咋整?


@defunct9 嗯?开 ssh 然后呢?
heiher
2018-07-14 09:45:16 +08:00
@yao990 xfs_repair 试试看呢
tempdban
2018-07-14 09:51:09 +08:00
从你的 log 里没看到任何 umount 的操作,先 umount 再 xfs_repair
tempdban
2018-07-14 09:52:31 +08:00
[242061.505790] attempt to access beyond end of device

[242061.505799] dm-2: rw=7217, want=6444519751, limit=5862637568

[242061.505818] XFS (dm-2): metadata I/O error: block 0x1801f9145 ("xlog_iodone") error 5 numblks 64

[242061.505825] XFS (dm-2): xfs_do_force_shutdown(0x2) called from line 1222 of file fs/xfs/xfs_log.c. Return address = 0xffffffffc053ae20

[242061.505836] XFS (dm-2): Log I/O Error Detected. Shutting down filesystem

[242061.505839] XFS (dm-2): Please umount the filesystem and rectify the problem(s)

[242239.788000] sdc: sdc1
tempdban
2018-07-14 09:53:49 +08:00
dm-2: rw=7217, want=6444519751, limit=5862637568
把硬盘再 lv 再扩大吧,没有原来的的大。
还有你的数据大概率找不全了
yao990
2018-07-14 09:54:55 +08:00
@tempdban @heiher
# umount /home
umount: /home:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
# umount -l /home
# xfs_repair /dev/mapper/centos-home
xfs_repair: cannot open /dev/mapper/centos-home: 设备或资源忙
reus
2018-07-14 09:56:31 +08:00
lvextend 可能用到了其他的 extent,所以读不到原来的数据。如果使用原来的 extent,可能可以修复
应该先缩小文件系统,再缩小 lv 的,但你直接缩小 lv 了
lvextend 应该指定原来的 pv 和 extent,但你可能没有指定
lvm 是可以恢复原先的配置的,在 /etc/lvm/backup, archive 都有记录,而你选择了 lvextend ……
挂载之后 ls 出现错误,这时候就不应该做任何操作,但你还执行了 xfs_repair 等等,很可能造成进一步的破坏
连续几次失误……
yao990
2018-07-14 10:00:32 +08:00
@tempdban 这个应该怎么操作?之前执行的是 lvextend -l +100%FREE /dev/mapper/cenos-home
yao990
2018-07-14 10:10:23 +08:00
@reus 手贱阿,本来好好的,啥事没有,可是脑子一抽,就想试试缩小文件系统,结果一发不可收拾。。。。。这现在该怎么整?
reus
2018-07-14 10:11:53 +08:00
@yao990 放弃吧,以后重要文件做好备份
yao990
2018-07-14 10:13:18 +08:00
@reus 一点办法都没有了吗?😭
reus
2018-07-14 10:17:06 +08:00
@yao990 如果你能找到人现场帮你修,或者可以救回来。或者先放着不要动,等以后你知道怎么修了,再看看有没有救,不要再这里动一下那里动一下了……
reus
2018-07-14 10:19:42 +08:00
tempdban
2018-07-14 10:20:35 +08:00
@reus 他 lazy umount 的 之前压根没 repair 还有救
tempdban
2018-07-14 10:22:59 +08:00
要是想完全和以前一样,不是不能,但是超级难。
要是能忍受一点点的数据丢失那好办了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX