请教一个问题,两块硬盘组成 lvm,假如一块硬盘损坏,另一块硬盘上的数据该如何读取/导出?

2018-07-12 22:41:25 +08:00
 yao990
9209 次点击
所在节点    Linux
26 条回复
likuku
2018-07-12 22:55:27 +08:00
LVM 缩放作的多,系统损毁以 LiveCD 挂载独立 LVM 也作过,

可惜 PV 损毁这种没有实操过,建议可以 virtualBox 开个多虚拟硬盘的实例快速作个实验。
msg7086
2018-07-13 00:01:22 +08:00
直接读啊,普通的 lvm 就是裸盘上面存数据再加点 meta data。
你知道每个 LV 的位置的话直接 dd 出来就是分区。
hellojinjie
2018-07-13 00:17:19 +08:00
lvm 有 strip 功能的吧,就是数据同时往两张盘写。和 raid0 一样, 一张盘坏了,估计数据就没了
@msg7086
msg7086
2018-07-13 00:52:48 +08:00
@hellojinjie 有,用了 md 条带的话没有办法的。所以我说 普通的 lvm 是可以的。
yao990
2018-07-13 01:07:07 +08:00
@likuku 等有机会吧,目前手头的机器暂时没条件让我试😁
yao990
2018-07-13 01:08:29 +08:00
@hellojinjie 这么恐怖?
yao990
2018-07-13 01:09:12 +08:00
@msg7086 那怎么区分普通 lvm 和用了 md 条带的 lvm ?
msg7086
2018-07-13 01:19:17 +08:00
@yao990
md 上的 lvm 直接看 lvm pv 所用的 md 设备类型即可。


以及如果用 lvm 自带的 stripe 功能的话:

https://sysadmincasts.com/episodes/27-lvm-linear-vs-striped-logical-volumes

# lvs --segments
LV VG Attr #Str Type SSize
root vol_e27 -wi-a---- 8 striped 5.82t

# lvdisplay -vm

--- Segments ---
Logical extent 0 to 1526183:
Type striped
Stripes 8
Stripe size 256.00 KiB
Stripe 0:
Physical volume /dev/xvdb
Physical extents 0 to 190772
Stripe 1:


#4 的回答有点问题。我原本记得 lvm 的条带用的是 md,似乎是记错了。他的条带应该是自己做的 mapper。
likuku
2018-07-13 01:33:12 +08:00
@yao990 家用虚拟机软件 virtualBox 快速装个 debian, 系统 8G 虚拟硬盘,1G 测试 pv x2,总计 10G 空间足以

我自己手里电脑倒是真没条件测,硬盘只剩 5G 可用空间... Orz
yao990
2018-07-13 01:35:16 +08:00
@msg7086 我刚看了下我的机器,发现 type 是 linear,请问这是属于那种类型的?
yao990
2018-07-13 01:37:08 +08:00
@likuku,,,,,这个可以有,赶明试试
msg7086
2018-07-13 02:37:19 +08:00
@yao990 普通。
yao990
2018-07-13 09:04:49 +08:00
@msg7086 那意思是不是说,就算其中一块盘不工作,直接挂上另一块,也能读取数据?
msg7086
2018-07-13 11:38:28 +08:00
@yao990 只能挂载其中完整的分区。
读取当然是可以的,但是如果文件系统不完整,就得扫描整块硬盘了。(类似分区被格式化后的样子)
yao990
2018-07-13 14:50:03 +08:00
@msg7086,,我这边的情况是,一个大分区占用了两个硬盘,换句话说,就是一旦有一块盘损坏,就需要扫描整块硬盘了?
msg7086
2018-07-13 15:24:41 +08:00
@yao990 是的。原始数据是可以读出来的,但是因为少了一半的原始数据,你的文件系统报废了。如果丢了一半的文件系统,那就必须要找专业恢复公司花巨额资金做手工扫描恢复。
yao990
2018-07-13 23:01:41 +08:00
@msg7086 今天手贱,进行了一个操作,导致 xfs 文件系统损坏,先是用 lvreduce 命令将分区缩小至原来的一半,然后又用 lvextend 命令扩充至原来的大小,然后挂载,挂载可以正常挂载,当用 ls 列出文件时就提示无法打开目录,输入输出错误。
yao990
2018-07-13 23:03:09 +08:00
@msg7086 通过 df -h 可以看到,内部的数据都还在
msg7086
2018-07-13 23:27:37 +08:00
@yao990 ermmm 没玩过这么高端的操作……
df 只是读取元数据信息。
数据应该都在,但是估计文件系统有错误。dd 备份完后做磁盘检查试试。
yao990
2018-07-13 23:30:24 +08:00
@msg7086 我尝试用 fsck,但提示要用 xfs_repair,然后使用 xfs_repair 时就提示设备忙。。。。已经确认卸载了,还提示忙。。

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

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

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

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

© 2021 V2EX