linux-云服务器数据盘挂载失败导致进入维护模式(代码片段)

小肥的胖 小肥的胖     2023-02-02     493

关键词:

已经在华为云、AWS上面吃过这个亏了,老这样可不好,心怦怦跳的。

  • 华为云是由于服务器升级配置后重启,数据盘名称变化导致进入维护模式。
  • AWS则是由于重启后没有挂载上数据盘,手动编辑/etc/fstab文件错误导致进入维护模式。

究其原因,就是因为/etc/fstab中的内容错误,导致服务器进入维护模式,此时无法通过ssh远程登录。目前知道两种方式解决:

1、自救。能够通过云服务器商提供的方式可以连接到服务器后台,同时拥有root账号,进入维护模式修改/etc/fstab文件后重启。
2、曲线自救。无法登录到服务器A后台,此时需要同区域另一台服务器B,在B服务器上将A服务器的系统盘挂载为数据盘,修改/path/to/mount/etc/fstab文件,修改后服务器A重新挂载上系统盘再启动。
3、提桶跑路,已经干了一件stupid的事情了,不要再干一件了。

自救

华为云服务器,挂载了200G的数据盘,在服务器升级配置后重启,但服务器远程不上,从华为云提供的VNC,用root账号登录维护模式,结果发现是因为配置在/etc/fstab中的数据盘没有挂载起来导致的。

查看磁盘列表,要挂载的/dev/vdb(200G那个)变成了/dev/sdb

# fdisk -l

Disk /dev/sdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00063f90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    83886079    41942016   83  Linux

/etc/fstab中写的内容是挂载/dev/vdb

# cat /etc/fstab
UUID=fc1ecf74-b8b4-44e6-9178-1d9c6e64d7f1 /                       ext4    defaults        1 1
/dev/vdb /opt/wecon ext4 defaults 0 2

再看之前的操作记录,确实当时挂的是/dev/vdb没错:

# history | grep ext4
  339  2022-06-07 16:35:55 root mkfs.ext4 /dev/vdb
  341  2022-06-07 16:36:07 root mount -t ext4 /dev/vdb /opt/wecon
 2212  2022-06-20 21:57:32 root history | grep ext4

所以怀疑这个设备名变了,找到华为云的人工服务,确实是这样的。

不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致云服务器重启后不能正常运行。

解决方法就是用磁盘的UUID来取代设备名,通过blkid获取设备的UUID:

blkid /dev/vdb
/dev/db1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

然后在/etc/fstab中配置后重启系统:

# cat /etc/fstab
UUID=fc1ecf74-b8b4-44e6-9178-1d9c6e64d7f1 /                       ext4    defaults        1 1
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /opt/wecon ext4 defaults 0 2

曲线自救

同样的情况,发生在AWS,很显然我的实例不支持登录后台的方式,也没装会话管理器:

唯一能做的就是从系统日志这里查看确实进入了维护模式,这个时候就只能曲线自救了。

1、进入AWS EC2 实例页面,将处于紧急模式的实例A关机,将实例A的系统盘A(AWS中系统盘名称为/dev/sda1)分离。

2、进入AWS EC2 实例页面,创建一个和实例A同区域的救援实例B。

3、进入AWS EC2 卷页面,将刚刚分离的系统盘A,挂载为实例B的数据盘B。

4、将实例B开机并ssh远程登录实例B进行操作。

用命令挂载数据盘B:

mkdir /mnt/rescue
mount /dev/xvdf /mnt/rescue

根据需要编辑数据盘B中的etc/fstab文件:

vi /mnt/rescue/etc/fstab

修改完成后,卸载数据盘B:

sudo umount /mnt/rescue

5、进入AWS EC2 实例页面,将实例B关机,数据盘B重新挂载为实例A的系统盘,启动的实例A就OK了。

关于fstab文件

cat /etc/fstab

LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0
# 磁盘文件格式为ext4,默认参数,
UUID=91579631-dff2-4e3b-8d33-1da1f9ef6dc1 /mnt1 ext4 defaults 0 2
# 自动探测文件系统,默认参数,设备不存在也不报错
#UUID=91579631-dff2-4e3b-8d33-1da1f9ef6dc1 /mnt1 auto defaults,nofail 0 0

参考man fstab

  • 第一列:设备名、UUID、LABEL。一般用UUID,设备名可能会变化。
  • 第二列:挂载点,设备挂载在哪个目录下。
  • 第三列:磁盘文件系统的格式。一般是ext4、xfs之类的,有一个可选项是auto,当无法确定的时候可以填auto,让系统自动检测。
  • 第四列:挂载参数,多个选项的情况下以逗号分割。

参考man 8 mountFILESYSTEM-INDEPENDENT MOUNT OPTIONS一节,部分文件系统无关的选项如下:

Async/sync: 设置是否为同步方式运行,默认为async
auto/noauto: 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro: 是否以以只读或者读写模式挂载
exec/noexec: 限制此文件系统内是否能够进行”执行”的操作
user/nouser: 是否允许用户使用mount命令挂载
suid/nosuid: 是否允许SUID的存在
nofail: 即使设备不存在也不报错
defaults: 同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
......

参考man 8 mountFILESYSTEM-SPECIFIC MOUNT OPTIONS一节,查看特定文件系统相关的选项。

  • 第五列:能否被dump备份命令作用,dump是一个用来作为备份的命令。通常这个参数的值为0或者1
    • 0:不要做dump备份
    • 1:要每天进行dump的操作
    • 2:不定日期的进行dump操作
  • 第六列:是否检验扇区,开机的过程中,系统默认会以fsck检验我们系统是否为完整。
    • 0:不要检验
    • 1:最早检验(一般根目录会选择最早检验)
    • 2:1级别检验完成之后进行检验

参考

电脑shell设置进入硬盘

...hat安装盘,进入rescue模式,按照提示用安装盘启动系统,挂载硬盘,然后进入shell模式修改配置文件。接下来就进入shell了,可以修改配置文件了,然后重新启动系统就可以... 查看详情

天翼云——挂载数据盘(代码片段)

前言因为业务需要,所以需要对服务器的磁盘进行扩展。步骤步骤还是十分简单的,就是日常的一些linux命令,不要忘记创建挂载点了哈,比如本文中的/scrm创建分区先查看数据盘是否挂载上来,挂载上来后直接创建分区就好,... 查看详情

腾讯云服务器挂载和格式化数据盘(代码片段)

【配置】云服务器,标准型SA2(centos6.932)+云硬盘200G【步骤】1、登陆管理后台——云硬盘,点击挂载磁盘2、待完成后,登陆linux实例,官方文档如下:以root用户 登录Linux实例。执行以下命令,... 查看详情

腾讯云挂载磁盘(代码片段)

...云硬盘开启磁盘热插拔功能您可以将弹性云硬盘(作为云服务器的数据盘使用)挂载到同一可用区中的任意云服务器上使用,每台云服务器最多支 查看详情

1.阿里云数据盘挂载(代码片段)

??使用阿里云ECS服务器做生产环境,通常会购置一块或多块数据盘。对于磁盘的分区及格式化操作,得慎之又慎,万一弄错了盘符,哭都没地方哭!本文适用于阿里云数据盘挂载操作,同时对于个人虚拟机Linux环境下挂载磁盘也... 查看详情

linux系统数据盘挂载完整过程

...步在阿里云管理员后台,云盘管理中心挂载好云盘在哪个服务器上面。登录ECS管理控制台在左侧导航栏中,选择存储>云盘选择地域。找到待挂载云盘,在操作列中,选择更多>挂载。弹出框中完成设置目标实例:只能选择同... 查看详情

centos7系统挂载新数据盘

参考技术A私有云新建一台ECS服务器,系统盘为100G。数据盘为1000G,但是系统盘只是在云平台进行绑定,并未挂载到服务器上,故需要进行挂载操作。注:一般情况下会先进行分区,然后进行挂载,但此次我作为数据盘使用,1、... 查看详情

阿里云linux格式化数据盘,分区并挂载一个文件系统

阿里云一块全新的数据盘挂载到ECS实例后,您必须创建并挂载至少一个文件系统。本示例使用I/O优化实例,操作系统为CentOS7.6,为一块新的300GiB数据盘(设备名为/dev/vdb)创建一个MBR格式的单分区,挂载的是ext4文件系统。远程连... 查看详情

腾讯云服务器linux系统盘满了怎么办

Linux服务器系统磁盘空间占满一般有2种方式处理:1、删除一些不必要的文件,减少系统空间非运行文件的存放,这是通常方式;2、向腾讯云申请添加数据存储,在Linux上进行格式化并挂载。参考技术A升级硬盘大小,定期清理没... 查看详情

zkeys公有云管理系统一键部署操作流程(更新)

一、部署准备:1、准备服务器系统要求:windowsserver或linux系统最低配置建议:cpu:2核,内存:4G,带宽:5M,硬盘:系统盘40G,数据盘10G及以上运行环境:IIS+PHP+MySQL、Apache+PHP+MySQL、Nginx+PHP+MySQLPHP版本:只支持php-5.6,并且Windows... 查看详情

云主机初始化swap与数据盘

背景     当前市面上大部分的云服务器产品,在购买Linux服务器并启动后,通常只帮我们挂载了系统盘到/目录。我们所购买的数据盘并没有帮我们挂载到系统。查看内存配置,一般swap也为0。  这里我们... 查看详情

linux:挂载外部u盘,移动数据

...己电脑连网采用拨号上网方式,为了把自己的虚拟机中的服务器ip域本机设置为一个局域网,而且ip固定下来,虚拟机网络连接采用了桥接方式。所以也导致了虚拟机内部没法连接外网。(不过可以通过在虚拟内部安装拨号上网... 查看详情

阿里云挂载数据盘方法

df-lh查看是否已经挂载fdisk-l查看需要挂载的数据盘信息mount/dev/vdb/mntecho‘/dev/vdb/mntext3defaults00‘>>/etc/fstabdf-lhrebootdf-lh检查是否挂载成功服务器为专有网络时,需要在安全组配置入网规则 查看详情

阿里云挂载数据盘方法

1、df-lh查看是否已经挂载2、fdisk-l查看需要挂载的数据盘信息3、mount/dev/vdb/mntecho‘/dev/vdb/mntext3defaults00‘>>/etc/fstabdf-lhinit6//重启服务df-lh查看是否挂载成功服务器为专有网络时,需要在安全组配置入网规则 查看详情

linux格式化并挂载数据盘(代码片段)

阿里云购买机器或者数据盘,并不会自动挂载在ECS机器上,需要手动的挂载。注意要先挂载后放数据,如果先放数据再挂载,那么数据会丢失。不过不用担心,如果遇到这种情况,那么取消挂载后数据又会回来. 数据盘的挂... 查看详情

腾讯云挂载数据盘

...件夹)echo‘/dev/vdb/homeext3defaults00‘>>/etc/fstab (服务器启动自动挂载磁盘,添加分区信息) df-lh (查看是否 查看详情

centos7进入单用户模式

0.前言今天给同事弄一个服务器自启动,但是那个服务是挂载模式,不是后台模式,所以在启动的时候一直进入不了登陆界面。我当时心里知道挂载模式的服务弄自启动可能会导致前面说的情况,但是后来还是这么做了。只有进... 查看详情

如何给linux挂载数据盘(代码片段)

...数据盘对数据盘分区格式化分区将磁盘挂载到系统中配置服务器重启自动挂载总结概述前段时间发现自己的服务器满了࿰ 查看详情