昨天,我的 LVM 的一个硬盘崩溃了(智能错误)。
机器有以下设置:
- 4 个硬盘
- 1 个分区 Raid10(系统,4*50GB)
- 1 个正常分区(/boot,200MB,sda)
- 1 个分区 LVM2(数据,4*~850GB)
- Ubuntu 10.04 服务器(无头)
现在我的 lvm 不再挂载,Ubuntu 要求我在启动时跳过或手动恢复。当我按 S 时,系统启动,但没有挂载我的 lvm。
现在我的系统分区似乎没有受到影响(/proc/mdstat 看起来和往常一样)/boot 也正常工作。
我现在要尝试的是
- 购买新的硬盘
- 将硬盘集成到我的 lvm 中
- 尝试删除 lvm 的 sda 部分(将其复制到新的 sde,或 lvm 想要的任何内容)
- 执行 raid 操作(我想我会找到如何执行此操作的方法,否则我会提出一个单独的问题)
现在我的问题:
- 如何从 lvm 中删除 sda(删除意味着复制内容并将分区标记为未使用,以便我可以拔下驱动器)?
- 如果我无法正常删除分区,是否有任何工具可以恢复此分区上的文件,以便我可以手动将它们复制到“新”lvm?
感谢您的帮助
编辑:
将解决方案与问题分开
答案1
认为 pvmove 是您正在寻找的命令行...详细信息如下:http://tldp.org/HOWTO/LVM-HOWTO/removeadisk.html
答案2
我不太清楚您的 LVM 是否位于 RAID 之上?如果不是,那么您就无法从 LVM 中获取任何数据。
答案3
电脑现在可以正常工作了。以下是我的详细步骤:
我的 sda(故障驱动器)分区如下所示:
sda1:/boot
sda2:raid10 成员(系统)
sda3:lvm 成员
- 安装新的替换硬盘
- dd if=/dev/sda of=/dev/sde(将故障硬盘的内容复制到新硬盘,实际上我在一分钟后按了 ctrl+c,因为我只需要分区表)
- dd if=/dev/sda1 of=/dev/sde1 (将 /boot 分区复制到新磁盘)
- vgextend my_volume_group /dev/sde3 (将新磁盘的lvm分区添加到我的lvm)
- pvmove /dev/sda3(将故障驱动器的数据移动到另一个驱动器)
- 从我的 raid10 中删除 sda2
- 更改 fstab 以从 sda1 获取 /boot,而不是通过 uuid(因为这会在更换 hdd 时发生变化)
- grub-install /dev/sde(因为它是 8.04 的升级版本,所以较新的版本需要 grub2-install)
现在我的 sde 分区如下:
sde1:/boot
sde2:raid 分区(未初始化)
sde3:lvm 分区(已初始化,lvm 再次工作)
我关闭了计算机,更换了硬盘(因此 sde 将是 sda,删除了旧的 sda)并重新启动
一切正常!我甚至不必使用 live cd 来修复 bootloader/其他东西,奇迹般地 sda2 被识别为 raid10 成员并自动初始化!