阿里云Linux服务器数据丢失又找回
今天客户有台阿里云的linux服务器出现了问题,需要重装系统。本来是很常见的操作,确遇到了很奇葩的问题,写这篇日志以记录之。
该客户的阿里云除了系统盘还有额外购买的一块数据盘,而且/mnt目录下已经有2个网站,直接导致我先入为主的认为/mnt目录已经挂载了数据盘。
因为网站数据太大,我就不打算下载备份,直接备份到/mnt目录,做好系统盘和数据盘的快照,然后重新装系统,装好系统挂载数据盘,显示无数据,(注意,linux挂载数据盘后可以看到数据盘的文件,但所挂载耳朵原文件夹下的文件就会看不见,unmount之后可以看见)。当时头脑发热把这个理论搞反了,以为只是看不到数据盘的数据,于是我到阿里云管理面板回滚数据盘的快照,结果更吃惊,显示数据盘还没分区!!这什么情况???!!!
这种现象不得不让我想到:其实他之前根本没有挂载数据盘,/mnt目录其实在系统盘!
于是我打算回滚系统盘的快照,只要回滚了系统盘的快照就可以找回数据,结果吃惊的发现系统盘的快照没了!!我勒个去,明明那么多系统盘快照,咋没了呢?这下咋办,数据没了,怎么向客户交代。于是向阿里云客服沟通,终于知道:只要更换系统,系统盘的快照就会删除掉,但是手动创建快照还在,虽然“本实例快照”下确实看不到了,但在“全部快照”里面可以找到手动备份的快照,注意只有手动备份的系统盘快照!
(这里可以看出手动快照的重要性,千万不要对阿里云的自动快照太过依赖,我很庆幸之前虽然看到了有今上午5点的自动快照但没有偷懒,还是手动快照了一下,不然数据真没了)
接着说,找到之前手动创建的快照后点击“创建自定义镜像”命名诶“系统盘20150205”,然后重新安装系统,系统盘选择“自定义镜像”找到“系统盘20150205”,OK,等待还原镜像完毕。
还原完毕后,登录,果然找到了/mnt目录下原来备份的数据,NND,果然之前没有使用系统盘。
文件找到后,继续之前的思路操作;
一、挂载数据盘
1、查看当前分区情况:
#df -h
#fdisk -l
2、数据盘没分区和格式化之前是不能挂载的,先分区和格式化
(1)分区:
#fdisk -S 56 /dev/xvdb
根据提示,依次输入“n”,“p”“1”,两次回车,“wq”,分区就开始了。
分区完成使用“fdisk -l”命令可以看到,新的分区xvdb1已经建立完成了
(2)格式化新分区:
#mkfs.ext3 /dev/xvdb1
(也可自主决定选用其它文件格式,如ext4等)
(3)添加分区信息
#echo '/dev/xvdb1 /disk2 ext3 defaults 0 0' >> /etc/fstab
其中/disk2就是你要挂载的点,一般设置为/mnt,根据情况设置。我这里因为/mnt目录有数据,如果挂载到/mnt目录就看不到原来/mnt目录的数据,所以建立了/disk2目录来挂载硬盘,以便把/mnt备份的文件拷贝到数据盘/disk2。
然后使用“cat /etc/fstab”命令查看到添加分区信息成功。
(4)挂载分区
mount -a
挂载好后,使用df -h可以看到挂载成功!
3、转移/mnt目录备份的数据到数据盘/disk2
4、转移完数据后就可以去重装系统了;
5、重装好系统,挂载数据盘,因为之前已经分区和格式化好了,所以直接2步搞定:
添加分区信息:#echo '/dev/xvdb1 /disk2 ext3 defaults 0 0' >> /etc/fstab
挂载:#mount -a
6、装好服务器环境,还原数据库,一切搞定!