我使用LVM2运行多磁盘服务器。 几个大型磁盘用作一个卷组的LVM2物理卷,包含一个用ext4格式化的逻辑卷。 没有什么奇特的,只是你的标准线性设置。
最近还有一个非常小的磁盘作为物理卷添加到该卷组中,并将其中的逻辑卷和ext4文件系统扩展到该磁盘上。
这个lv用来存储使用rsync的增量备份,只有大约30%的空间,很less有文件被删除,只有增量写入。
现在,我添加到预先存在的音量组中的这个新硬盘已经意外死亡,而音量组因为缺less一个物理音量而不会popup。
命运就是这样,这就是“在主服务器发生灾难性故障的情况下” – 事件发生了,老板不开心,所以这个还得工作…
根据这个(第3部分): http : //www.novell.com/coolsolutions/appnote/19386.html ,可以通过创build一个具有相同元数据的新的光盘来启动LVM,该卷可访问,但当然留下文件系统的巨大漏洞。 我还没有尝试过,因为它涉及修复(写入)文件系统,如果失败的话,它将消除尝试其他事情的可能性。
现在我的问题是: 这个设置如何为新数据实际分配磁盘空间? 它是否从PVs的开始到结束按线性分配,按照它们被添加到vg的顺序? 为了提高性能/平衡负荷,它有条纹吗?
由于这个有缺陷的磁盘只是在以后添加到现有的lvm2 vg和lv中,包含一个半空的ext4,那么从来没有任何数据写入缺陷磁盘的可能性有多大?
换句话说,即使没有有缺陷的磁盘,只需按原样启动卷组,也能恢复所有数据的机会是多less? 当我发送有缺陷的磁盘进行维修时,我是否要花费1500美元来恢复250GB的空间?
有没有办法检查没有安装文件系统并打开文件,希望他们包含零以外的东西? (比较ext4中使用的数据块的地址来寻址缺失的pv的范围,类似的,最好容易自动化)
我知道在修复ext4之前,将整个lv复制到一个映像文件中可能是一个好主意,但是由于这个lv非常大,而且我在多个系统上遭遇了主要的文件系统故障,所以这可能是一种奢侈没有…
有什么build议么?
为了解决这个问题:我决定尝试一下,在用ddrescue备份所有磁盘后,重新组装lvm。
结果:在68000个文件中,大约有12000个文件完全丢失,另有38000个文件在恢复后有很差的校验和(纯粹的运气我有校验和logging)。
所以我想可以肯定的是,如果文件很重要,这不是最好的策略。
此外,修复文件系统需要花费接近3天的处理时间,并且在常春藤Xeon上超过32GB的内存。
毕竟,我派人去修理。
方式太多的问题,我会回答LVM部分:
正如你能够添加单个磁盘,我想这不是条纹卷或镜像(或者你没有丢失数据的问题),只是简单的(线性)目标。
在使用LV的机器上的/etc/lvm/backup/$VG有一个元数据备份文件 – 看那里 – 你应该find所有的细节。
同样在你对FS做任何事情之前:创build一个快照并使用它来进行修复 – 这样你就可以返回到以前的状态。
回复:FS使用方法:我忍不住,但正如你所说的,没有删除,只是附加文件,我期望FS不会碎片空闲空间。 您可以尝试咨询wikipedia: https : //ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout或search#ext4 IRC频道。
在进行任何不可逆转的更改之前,请到freenode的#lvm IRC频道上寻找在线指导。