aws 克隆机器与原主机UUID相同的冲突解决(读取额外挂载的磁盘数据)
aws 克隆机器与原主机UUID相同的冲突解决(读取额外挂载的磁盘数据)
20180623 Chenxin
数据恢复/数据提取
场景:这里都是RHEL7.有一台ec2启动不了,将此磁盘挂载到另一个机器上(为它的母AMI生成的机器),以便排查原因.
mount -t xfs /dev/xvdf2 /data/disktmp #报错如下
mount: wrong fs type, bad option, bad superblock on /dev/xvdf2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
/var/log/messages信息如下:
Jun 23 23:09:59 ip-10-0-1-7 kernel: XFS (xvdf2): Filesystem has duplicate UUID 50a9826b-3a50-44d0-ad12-28f2056e9927 - can't mount
查看设备文件类型和UUID
blkid /dev/xvda2
/dev/xvda2: UUID="50a9826b-3a50-44d0-ad12-28f2056e9927" TYPE="xfs" PARTUUID="cc8f8c5a-3a04-4a6a-aa62-ed173ee9aede"
blkid /dev/xvdf2
/dev/xvdf2: UUID="50a9826b-3a50-44d0-ad12-28f2056e9927" TYPE="xfs" PARTUUID="cc8f8c5a-3a04-4a6a-aa62-ed173ee9aede"
UUID确实是重复了.
重新生成一个UUID
uuidgen
d672b79e-e72b-4bd6-a397-38373eabb046
将重新生成的UUID烧录到磁盘分区
xfs_admin -U d672b79e-e72b-4bd6-a397-38373eabb046 /dev/xvdf2
Clearing log and setting UUID
writing all SBs
new UUID = d672b79e-e72b-4bd6-a397-38373eabb046
重新挂载
mount -t xfs /dev/xvdf2 /data/disktmp/
确认挂载成功
ls /data/disktmp/
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
修改完文件后,先umount,然后一定要将UUID恢复回去,否则挂载回去后系统会报"文件系统错误",无法启动实例
xfs_admin -U 50a9826b-3a50-44d0-ad12-28f2056e9927 /dev/xvdf2
恢复实例(重新挂载回原EC2)
修改完数据后,umount后,重新挂载到原EC2:
这里需要在控制台"卷"里先"断开卷",然后"连接卷",选择对应的EC2实例,并且挂载设备里输入/dev/sda1 (注意,这里输入内容必须和断开前一致.如果是Amazon_Linux,这里是/dev/xvda (attached)).因为RHEL7挂载的默认磁盘是2个xfs分区,amazon linux挂载的磁盘默认是1个ext4分区.
如果这里输入其他的/dev/xvdf 或者/dev/sda 都是不行的,实例EC2都会提示无法找到/dev/sda1,从而无法启动机器.
主要原因应该是Amazon_Linux默认磁盘分了1个分区,而RHEL的磁盘分了2个分区.
如果是修改RHEL7的MAC地址,一定要去得EC2实例的真实MAC(控制台里"网络接口"能看到),否则系统会无法启动.
知识
blkid
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。
实例
1、列出当前系统中所有已挂载文件系统的类型:
blkid
blkid (直接执行)
/dev/xvda2: UUID="50a9826b-3a50-44d0-ad12-28f2056e9927" TYPE="xfs" PARTUUID="cc8f8c5a-3a04-4a6a-aa62-ed173ee9aede"
/dev/xvdf2: UUID="50a9826b-3a50-44d0-ad12-28f2056e9927" TYPE="xfs" PARTUUID="cc8f8c5a-3a04-4a6a-aa62-ed173ee9aede"
2、显示指定设备 UUID:
blkid -s UUID /dev/sda5
3、显示所有设备 UUID:
blkid -s UUID
4、显示指定设备 LABEL:
blkid -s LABEL /dev/sda5
5、显示所有设备 LABEL:
blkid -s LABEL
6、显示所有设备文件系统:
blkid -s TYPE
blkid -s TYPE
/dev/xvda2: TYPE="xfs"
/dev/xvdf2: TYPE="xfs"
7、显示所有设备:
blkid -o device
8、以列表方式查看详细信息:
blkid -o list
附件说明(df -lhT指令也可以查看文件系统类型)
df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda2 xfs 10G 1.9G 8.2G 19% /
devtmpfs devtmpfs 469M 0 469M 0% /dev
xfs_admin
xfs_admin: 调整 xfs 文件系统的各种参数
1.烧录UUID
xfs_admin -U d672b79e-e72b-4bd6-a397-38373eabb046 /dev/xvdf2
2.设置卷标xfs_admin -L linux /dev/sda3
xfs_admin -L linux /dev/sda3 (也使用e2label来对xfs格式的文件系统设置卷标操作)
xfs_admin -l /dev/sda3 #查看xfs格式文件系统的卷标
xfs_admin -L linux /dev/sda3 #设置xfs格式文件系统的卷标为linux
uuid