根据这帖子,它应该没问题,可以用来dd
将原始 Xen 映像转换为 LVM。
我做了什么
dd if=/vm.img of=/dev/vg00/vm
我可以用 挂载 vm.img mount -o loop vm.img /root/tmp
。它只有一个可启动分区。
但我无法安装/dev/vg00/vm
。
这和 MBR 有关系吗?
知道可能是什么问题吗?
编辑:
现在我已经创建了一个新的 LV 并格式化了它。但我仍然无法挂载它。
这与我添加图像时遇到的挂载错误相同。
localhost:~# mkfs.ext3 /dev/vg00/oes2
mke2fs 1.39 (29-May-2006)
Warning: could not erase sector 2: Attempt to write block from filesystem resulted in short write
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2228224 inodes, 4456448 blocks
222822 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
136 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Warning: could not read block 0: Attempt to read block from filesystem resulted in short read
Warning: could not erase sector 0: Attempt to write block from filesystem resulted in short write
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:
Warning, had trouble writing out superblocks.done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
localhost:~# mount /dev/vg00/oes2 tmp-lvm/
mount: you must specify the filesystem type
localhost:~# mount -t ext3 /dev/vg00/oes2 tmp-lvm/
mount: wrong fs type, bad option, bad superblock on /dev/vg00/oes2,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
localhost:~# mount -t ext3 /dev/vg00/oes2 tmp-lvm/
localhost:~# fdisk /dev/vg00/oes2
Unable to read /dev/vg00/oes2
localhost:~#
答案1
警告:无法擦除扇区 2:尝试从文件系统写入块导致短暂写入
这听起来不太好。这很可能意味着一些重要的块没有正确写入磁盘。您应该检查硬盘的 SMART 状态,它可能包含错误。智能工具可用于此目的。如果您使用 Ubuntu,则可以通过系统 > 管理 > 磁盘实用程序启动一个简单的 SMART 实用程序。如果硬盘支持 SMART,您可以执行检查所有扇区的测试。
如果问题不在于硬盘,那么您的 LVM 卷组可能在某种程度上已损坏?!
答案2
问题在于,由于这是一台虚拟机,因此映像中的一个分区现已传输到 LVM。在本地安装 LVM 时,您需要使用偏移量进行安装。
您需要获取磁盘中分区的起始位置。这将打印出您的分区。获取启动分区的起始编号。
parted -s /dev/vg00/oes2 单元 s 打印 例子: IE: parted -s /dev/vmstore/kfsnap unit s 打印 模型:Linux 设备映射器(快照)(dm) 磁盘 /dev/dm-11:25165824s 扇区大小(逻辑/物理):512B/4096B 分区表:msdos 编号 起始 结束 大小 类型 文件系统 标志 1 2048s 25163775s 25161728s 主 ext4 启动 扇区大小为:512,因此我将起始值乘以 512 个扇区。 表达式 512'*'2048 它输出的是:1048576
然后我知道了 lvm 映像内的偏移量,现在可以通过环回安装磁盘。
#mount - o loop,offset=1048576 /dev/vmstore/kfsnap /mnt/snap
以下是第一个分区的一些内容:
parted -s /dev/vg00/oes2 unit s 打印 2>/dev/null | grep " 1 " | tr -d 's' | awk '{print $2}'