linux服务器挂硬盘无法启动不了怎么办,解决IO错误导致Linux无法启动-挂载原有硬盘...
之前一直使用vbox虚拟了很多系统,安装一些开发中常用的工具,不同的项目进行不同的划分。但最近突然因为物理磁盘IO异常导致虚拟硬盘无法正常读取,更不要说系统正常启动了。于是便想利用另外一个能启动的系统,把这个虚拟盘挂载上去,看看能不能读取到数据。1、在新的vbox上添加原有虚拟硬盘,并启动新虚拟机2、查看硬盘设备fdisk-l显示如下:磁盘/dev/sda:1099.5GB,1099511...
之前一直使用vbox虚拟了很多系统,安装一些开发中常用的工具,不同的项目进行不同的划分。但最近突然因为物理磁盘IO异常导致虚拟硬盘无法正常读取,更不要说系统正常启动了。于是便想利用另外一个能启动的系统,把这个虚拟盘挂载上去,看看能不能读取到数据。
1、在新的vbox上添加原有虚拟硬盘,并启动新虚拟机
2、查看硬盘设备fdisk -l
显示如下:磁盘 /dev/sda:1099.5 GB, 1099511627776 字节,2147483648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cde78
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 2147483647 1073536000 8e Linux LVM
磁盘 /dev/sdb:1099.5 GB, 1099511627776 字节,2147483648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cde78
设备 Boot Start End Blocks Id System
/dev/sdb1 * 2048 411647 204800 83 Linux
/dev/sdb2 411648 2147483647 1073536000 8e Linux LVM
磁盘 /dev/mapper/centos-root:1082.1 GB, 1082117849088 字节,2113511424 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
可以看到原有硬盘应该为sdb,于是乎,想通过mount进行挂载:mount /dev/sdb2 /old/
结果显示:mount: 未知的文件系统类型“LVM2_member”
2、因为Linux(笔者环境为Centos7)安装时使用LVM2导致无法直接挂载。执行以下命令安装lvm2的工具yum install -y lvm2
安装完成以后,可以执行以下命令查看逻辑卷属性lvdisplay
显示:WARNING: found device with duplicate /dev/sdb2
WARNING: Disabling lvmetad cache which does not support duplicate PVs.
WARNING: Scan found duplicate PVs.
WARNING: Not using lvmetad because cache update failed.
WARNING: Not using device /dev/sdb2 for PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi.
WARNING: PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi prefers device /dev/sda2 because of previous preference.
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID g5h0m2-JoYP-6Fdl-ds6d-B4Cs-XESA-aBkVNs
LV Write Access read/write
LV Creation host, time localhost, 2018-02-08 02:54:19 +0800
LV Status available
# open 2
LV Size 16.00 GiB
Current LE 4096
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 66oHyc-me8P-C3c0-gh0D-xjI9-Q72H-6ciKCJ
LV Write Access read/write
LV Creation host, time localhost, 2018-02-08 02:54:19 +0800
LV Status available
# open 1
LV Size 1007.80 GiB
Current LE 257997
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
发现两块硬盘"LV Name"是一样的,这也就是导致旧硬盘无法挂载的原因。
同时执行以下命令查看有关卷组的信息vgs
显示:WARNING: Not using lvmetad because duplicate PVs were found.
WARNING: Use multipath or vgimportclone to resolve duplicate PVs?
WARNING: After duplicates are resolved, run "pvscan --cache" to enable lvmetad.
WARNING: Not using device /dev/sdb2 for PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi.
WARNING: PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi prefers device /dev/sda2 because device is used by LV.
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 1023.80g 0
或者执行以下命令输出格式化的物理卷信息报表pvs
显示:WARNING: Not using lvmetad because duplicate PVs were found.
WARNING: Use multipath or vgimportclone to resolve duplicate PVs?
WARNING: After duplicates are resolved, run "pvscan --cache" to enable lvmetad.
WARNING: Not using device /dev/sdb2 for PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi.
WARNING: PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi prefers device /dev/sda2 because device is used by LV.
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 1023.80g 0
三者输出差不多,都是提示”WARNING: PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi prefers device /dev/sda2 because device is used by LV.“,同”lvdisplay“输出信息一样。
根本原因是因为它们的卷名称一样导致的。
3、重命名旧硬盘卷名称vgimportclone -n newcentos /dev/sdb2
输出:WARNING: Not using device /dev/sdb2 for PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi.
WARNING: PV rYCqeK-0fJp-Fs32-7u30-hlvz-Utqa-h0jlWi prefers device /dev/sda2 because device is used by LV.
扫描设备上的LVM物理卷和卷组,并指示lvmetad守护进程相应地更新其缓存状态:pvscan --cache
再次执行"pvs"命令,显示如下:PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 1023.80g 0
/dev/sdb2 newcentos lvm2 a-- 1023.80g 0
可以看到sdb2的卷组名称已改为"newcentos"。
接下来使用vgchange命令将卷组状态改为活动的,命令如下:vgchange newcentos -ay
显示:2 logical volume(s) in volume group "newcentos" now active
这时再次使用"lvs"查看时显示:LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 1007.80g
swap centos -wi-ao---- 16.00g
root newcentos -wi-a----- 1007.80g
swap newcentos -wi-a----- 16.00g
这样,原有硬盘的卷组也就重命名和设置为活动了
4、挂载原有硬盘
先查看硬盘信息,命令如下:fdisk -l
显示:磁盘 /dev/sda:1099.5 GB, 1099511627776 字节,2147483648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cde78
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 2147483647 1073536000 8e Linux LVM
磁盘 /dev/sdb:1099.5 GB, 1099511627776 字节,2147483648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cde78
设备 Boot Start End Blocks Id System
/dev/sdb1 * 2048 411647 204800 83 Linux
/dev/sdb2 411648 2147483647 1073536000 8e Linux LVM
磁盘 /dev/mapper/centos-root:1082.1 GB, 1082117849088 字节,2113511424 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/newcentos-swap:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/newcentos-root:1082.1 GB, 1082117849088 字节,2113511424 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
可以看到原有硬盘分区为"/dev/mapper/newcentos-root",执行以下命令将它挂载到"/old"目录下:mount /dev/mapper/newcentos-root /old/
本想没什么问题了,但却还是无法挂载,显示如下:mount: 文件系统类型错误、选项错误、/dev/mapper/newcentos-root 上有坏超级块、
缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
按它的提示,执行以下命令:dmesg | tail
显示:[ 6.024016] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 6.057797] Netfilter messages via NETLINK v0.30.
[ 6.063125] ip_set: protocol 6
[ 6.590940] floppy0: no floppy controllers found
[ 6.590987] work still pending
[ 7.299956] IPv6: enp0s3: IPv6 duplicate address fe80::afbb:c491:1873:8741 detected!
[ 7.619362] IPv6: enp0s3: IPv6 duplicate address fe80::10d4:9f90:6570:93a2 detected!
[ 8.641373] IPv6: enp0s3: IPv6 duplicate address fe80::b778:7075:b40:bc9f detected!
[ 2161.199751] XFS (dm-3): Filesystem has duplicate UUID c23bf14e-b7b7-4947-8b65-d73fe367d9b7 - can't mount
[ 2175.720687] XFS (dm-3): Filesystem has duplicate UUID c23bf14e-b7b7-4947-8b65-d73fe367d9b7 - can't mount
经查找方法如下:mount -o rw,nouuid /dev/mapper/newcentos-root /old/
这样也就可以正常挂载硬盘分区了。不过笔者发现之前的数据在该目录中还是不存在,不知何故,后面继续研究。
参考:
https://www.cnblogs.com/skyshao/p/11663914.html
更多推荐
所有评论(0)