博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件系统损坏导致虚拟机无法正常启动的问题及解决方法
阅读量:5067 次
发布时间:2019-06-12

本文共 2247 字,大约阅读时间需要 7 分钟。

简介

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。

在使用中, 会遇到文件系统损坏的故障, 直接导致 Azure 平台的虚拟机无法正常启动和访问, 以下是关于此类问题的描述及解决方法.

关于文件系统,详情参见如下:

注意:本文档讨论的文件系统以 CentOS 作为范例, 其他版本的 Linux 略有不同, 请注意差别.

文件系统损坏常见问题

范例1:

复制
Checking all file systems.  [/sbin/fsck.ext4 (1) -- /] fsck.ext4 -a /dev/sda1  /dev/sda1  contains a file system with errors, check forced .   /dev/sda1: Inodes that were part of a corrupted orphan linked list found.   /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

范例2:

复制
EXT4-fs (sda1): INFO: recovery required on readonly filesystem  EXT4-fs (sda1): write access will be enabled during recovery  EXT4-fs warning (device sda1): ext4_clear_journal_err:4531: Filesystem error recorded from previous mount: IO failure  EXT4-fs warning (device sda1): ext4_clear_journal_err:4532: Making fs in need of filesystem check .

解决方案之 root 文件系统损坏

A = 文件系统故障所在的虚拟机
B = 临时虚拟机

  1. 在 Azure 经典管理门户上停止运行虚拟机 A.
  2. 在同一个 cloud service 里创建一台临时 Linux 虚拟机 B.
  3. 删除虚拟机 A, 但是选择保留磁盘.
  4. 在 Azure 经典管理门户上,选择虚拟机 B -> 附加磁盘 -> 选择虚拟机 A 的系统磁盘.
  5. 以管理员身份登陆虚拟机 B.
  6. 执行: # fdisk -l
  7. 确认虚拟机 A 的系统磁盘作为新的磁盘设备附加在虚拟机 B 上.假定虚拟机A的系统磁盘为 /dev/sdc, root 文件系统为 /dev/sdc1
  8. 执行以下步骤, 进行备份文件系统信息:

    复制
    # fdisk -l /dev/sdc > /var/tmp/fdisk_before.log  # dumpe2fs /dev/sdc1 > /var/tmp/dumpe2fs_before.log  # tune2fs -l /dev/sdc1 > /var/tmp/tune2fs_before.log  # e2fsck -n /dev/sdc1 > /var/tmp/e2fsck._beforelog
  9. 执行以下命令, 进行文件系统修复:

    复制
    # fsck -yM /dev/sdc1

解决方案之常规文件系统损坏

A = 文件系统故障所在的虚拟机
B = 临时虚拟机

  1. 在 Azure 经典管理门户上停止运行虚拟机 A.
  2. 在同一个 cloud service 里创建一台临时 Linux 虚拟机 B.
  3. 删除虚拟机 A, 但是选择保留磁盘.
  4. 在 Azure 经典管理门户上,选择虚拟机 B -> 附加磁盘 -> 选择虚拟机 A 的系统磁盘.
  5. 以管理员身份登陆虚拟机 B.
  6. 执行: # fdisk -l
  7. 确认虚拟机 A 的系统磁盘作为新的磁盘设备附加在虚拟机 B 上.假定虚拟机 A 的系统磁盘为 /dev/sdc, root 文件系统为 /dev/sdc1
  8. 执行如下命令,将虚拟机A的系统磁盘挂载到临时虚拟机上:

    复制
    # mkdir /mnt/temp_fs  # mount /dev/sdc1 /mnt/temp_fs  # cp /mnt/temp_fs/etc/fstab /mnt/temp_fs/etc/fstab.org  # vi /mnt/temp_fs/etc/fstab  将文件系统损坏的条目注释掉,保存修改, 退出 vi.  # umount /dev/sdc1
  9. 在 Azure 经典管理门户上分离虚拟机 A 的系统磁盘.

  10. 在 Azure 经典管理门户上基于虚拟机 A 的系统磁盘, 重建虚拟机 A.
  11. 以管理员身份登录虚拟机 A.
  12. 执行以下命令, 进行文件系统修复:

    复制
    # fsck -yM 
    ;
  13. 文件系统修复完毕以后, 恢复 /etc/fstab 被注释的对应条目, 重启虚拟机.立即访问http://market.azure.cn

转载于:https://www.cnblogs.com/zangdalei/p/7693636.html

你可能感兴趣的文章
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
多服务器操作利器 - Polysh
查看>>
[LeetCode] Candy
查看>>
Jmeter学习系列----3 配置元件之计数器
查看>>
jQuery 自定义函数
查看>>
jq 杂
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
作业一
查看>>
AJAX
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
Git的使用--打tag
查看>>
F# 编程 借助 F# 构建 MVVM 应用程序
查看>>
ACFUN切换代码自用。。。
查看>>
网卡流量检测.py
查看>>
【转】Android的权限permission
查看>>