故障处理:磁盘扩容出错:e2fsck: Bad magic number in super-block while trying to open /dev/vdb1

按照阿里云官网教程对云服务器进行磁盘扩容,使用fdisk重新分区,最后使用e2fsck和resize2fs来完成文件系统层面的扩容

在执行“e2fsck -f /dev/vdb1”命令时报错,如果你的问题和下面的错误一样,可以接着往下看:

[[email protected]aliyunsrv ~]# e2fsck -f /dev/vdb1
e2fsck 1.41.12 (17-May-2010)
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/vdb1

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

按照提示执行“e2fsck -b 8193 /dev/vdb1”,并没有什么用

根据报错信息推测是该工具并没有找到super-block,也就是分区起始位置有问题

因为已经重新创建分区表,所以往前查看了命令记录发现,分区的起始位置在103处,

[[email protected] ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        6527    52426752   83  Linux

Disk /dev/vdb: 536.9 GB, 536870912000 bytes
2 heads, 10 sectors/track, 52428800 cylinders
Units = cylinders of 20 * 512 = 10240 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63c3e6e0

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1             103    52428800   524286976   83  Linux        # 分区起始位置在103,很重要,需要确定

由此其实可以推测出阿里云的磁盘扩容最近可能出问题了,之前分区我写的必定是1,但是扩容后就变了,这个应该是导致这个问题的原因

提阿里云工单得到的结果是用testdisk进行数据恢复,显然这个不是我要的方法,这个只是分区表损坏,数据并没有丢,处理好分区表即可。

在网上找到的其他老铁的解决思路尝试可以解决,现在重新整理下供大家参考

需要使用到parted分区工具,以下操作注意数据备份!!!

1.使用parted工具读取磁盘分区表信息

# 我在阿里云控制台扩展的分区大小为1024GB

parted /dev/vdb

2.删除旧的错误分区表

# 在parted交互式分区工具中执行

(parted) rm 1

注意:分区表用parted工具删除后无法直接使用fdisk进行分区

3.使用parted工具恢复之前正常的分区表

# 在parted交互式分区工具中执行

(parted) unit s
(parted) rescue 103 1099GB

这里根据之前的分区起始位置确认是103扇区,由于parted工具默认启动、结束位置单位都是用容量单位即kB/MB/GB,所以需要通过unit s命令定义默认使用sectors定义起始扇区。

完整的操作如下:

[[email protected] ~]# parted /dev/vdb
GNU Parted 2.1
Using /dev/vdb
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted) p                       # 打印分区表
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB                # 分区容量
Sector size (logical/physical): 512B/512B
Partition Table: msdos                # 分区表类型

Number  Start  End     Size    Type     File system  Flags
 1      5120B  1100GB  1099GB  primary      # 当前的分区表信息,是不可用的

(parted) rm 1                     # 删除1号分区
(parted) unit s                    # 使用扇区号
(parted) rescue 103 1099GB               # 恢复分区表
Information: A ext4 primary partition was found at 2048s -> 1048575999s.  Do you want to add it
to the partition table?            # 找到了ext4格式的分区,起始扇区定位到2048,结束扇区是1048575999(推测的,如有问题欢迎指正)  
Yes/No/Cancel? y                # 是否要创建该分区表,也就是恢复旧的分区表    
(parted) p                       
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147483648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End          Size         Type     File system  Flags
 1      2048s  1048575999s  1048573952s  primary  ext4    # 可以看到这个是正确的磁盘分区表

(parted) q
Information: You may need to update /etc/fstab. 

4.重新创建新的分区表

这里需要注意的是parted工具里END的值,由于磁盘的扇区数量不容易确定,可以使用容量来替代

[[email protected] ~]# parted /dev/vdb
GNU Parted 2.1
Using /dev/vdb
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  537GB  537GB  primary  ext4          # 重新打开后发现分区表的显示格式有变化,但并不影响,同时也可以看出来是以前的分区表(未扩容前)

(parted) rm 1                            # 删除旧的分区表
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End  Size  Type  File system  Flags

(parted) unit s
(parted) mkpart primary ext4 2048 1099GB            # 创建新的分区表,注意要使用前文获取的扇区起始位置2048
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147483648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End          Size         Type     File system  Flags
 1      2048s  2146484223s  2146482176s  primary  ext4   # 新的分区表

(parted) q
Information: You may need to update /etc/fstab.                           

此时新的分区表就创建成功了,需要注意:是使用的parted工具创建的分区表!!!

如果想使用fdisk进行分区,可以在fdisk中使用2048起始扇区进行测试,注意数据备份!!!

[[email protected] ~]# e2fsck -f /dev/vdb1
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 237246/32768000 files (75.3% non-contiguous), 112383325/131071744 blocks

可以正常执行检查文件系统的操作

[[email protected] ~]# resize2fs /dev/vdb1
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vdb1 to 268310272 (4k) blocks.
The filesystem on /dev/vdb1 is now 268310272 blocks long.

可以正常执行确认变更文件系统大小的操作,执行完即可挂在使用

最后使用工具检查分区表状态,供参考

[[email protected] ~]# parted /dev/vdb
GNU Parted 2.1
Using /dev/vdb
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1099GB  1099GB  primary  ext4

fdisk工具查看的信息

[[email protected] ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        6527    52426752   83  Linux

Disk /dev/vdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ead8a

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1      133613  1073241088   83  Linux

附上提供帮助老铁的文章链接:

https://bbs.aliyun.com/read/272957.html?pos=4

完毕,呵呵呵呵

原文地址:https://www.cnblogs.com/tssc/p/9175106.html

时间: 2024-11-09 02:20:28

故障处理:磁盘扩容出错:e2fsck: Bad magic number in super-block while trying to open /dev/vdb1的相关文章

ECS Linux服务器xfs磁盘扩容

ECS Linux服务器xfs磁盘扩 ECS Linux服务器xfs磁盘使用阿里云官方提供的磁盘扩容方法扩容会有报错: [[email protected] ~]# e2fsck /dev/xvdb1 e2fsck 1.42.9 (28-Dec-2013) ext2fs_open2: Bad magic number in super-block e2fsck: Superblock invalid, trying backup blocks... e2fsck: Bad magic numbe

LVM做扩容Bad magic number in super-block while trying

环境:CentOS Linux release 7.2.1511 (Core)做LVM 逻辑卷扩容的时候报错: (扩容逻辑边界)shell>resize2fs -p /dev/mapper/centos-root resize2fs 1.42.9 (28-Dec-2013)resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-rootCouldn't find valid filesy

LVM 扩容报错:resize2fs: Bad magic number in super-block while......

废话不多说,这里直接举例说明: [[email protected] ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_mysql0121366-LogVol02 7.7G 2.6G 4.8G 36% /tmpfs 495M 0 495M 0% /dev/shm/dev/sda1 194M 29M 155M 16% /boot/dev/mapper/vg_mysql0121366-LogVol01 8.0G 3.1

阿里云磁盘扩容

进入 ECS 控制台 选择全部磁盘页或者本实例磁盘页 在每一个磁盘条目的最后选择"更多" 选择"磁盘扩容",即可进入磁盘扩容操作页 输入你希望扩容的目标大小(我输入 40G) 提交扩容订单,按量付费的磁盘在下一个计价单位(目前是小时)开始按扩容后的磁盘大小计费:包年包月的磁盘则是补差价. 扩容仅做磁盘容量的扩大,不做分区和文件系统的扩大,扩容完成后,用户还需要手动分配存储空间. 难就难在磁盘扩容后的操作: 1.重启服务器(reboot) 2.umount /dev/

阿里云磁盘扩容踩坑总结

公司半年前上线一个新的项目,采购了一批阿里云主机,磁盘组成是40G系统盘+100G的数据盘,数据库采用MariaDB Galera Cluster集群部署,由于业务数据量快速增长,导致磁盘存储空间剩余量很少,急需要扩容,先总结整个项目规划中埋下的坑: 1.没有DBA对数据库的容量规划,而前期的运维人员采购时选用100G的SSD云盘: 2.数据库默认使用共享表空间,缺点是删除数据后不释放空间,当数据快速增长后,我们采取了先删除临时表数据的方式来尽量避免暴力扩容,争取在春节期间稳定,删除部分数据后,

KVM guest磁盘扩容

kvm默认使用的是raw类型的磁盘格式,下面是关于raw磁盘扩容的两种方法: 第一种方法: 在原先raw类型的100G磁盘上动态追加70G,把虚拟机现有磁盘扩容为170G 1,在宿主机上先备份虚拟机的所有文件,防止磁盘扩容失败 2,然后开始操作 查看img文件类型: # qemu-img info disk.local image: disk.localfile format: rawvirtual size: 98G (105612574720 bytes)disk size: 98G 关闭虚

Vmware Linux虚拟机磁盘扩容方法

我的LINUX版本是ubuntu12.04 32bit.今天在下载android源代码的时候发现自己最初给这个虚拟机分配的磁盘空间不足了(只有20G).所以就需要给磁盘扩容.网上大致搜索了一下,主要有两种解决方法:一,另建一个磁盘:二,给原有的磁盘扩容.我选择第二种方案. 1,关闭虚拟机.进入要扩容虚拟机的设置界面,在设备框中选择磁盘,然后选择实用工具,再选择扩容选项.在跳出来的方框中输入你要扩容后的磁盘大小.我填写的是60G. PS:这里需要注意一点:如果你曾经给虚拟机建立过快照,那么你必须删

CENTOS 阿里云服务器磁盘扩容

我的系统是centos 6.5 32位,数据盘挂载在/www/web目录下,所以扩容的方法和阿里云官方的有所不同. **备注:如果磁盘已有分两个区,需要把两个区都删除,才能扩容成功(开始一直扩不成功,后面删除2分区后,扩容成功) **分区时,删除分区,需要马上新建,以免数据丢失 ====我还不知道,怎么重新分两个分区,扩容后只能分一个区..额...忘高手指导! 现将过程记录如下,以备以后使用,本人PHP猿人,LINUX小白.高手可以漂过 以下是扩容过程: 首先,做好快照(出现问题好恢复),在后台

阿里云ECS磁盘扩容步骤

刚在阿里云服务器上对磁盘进行扩容,现在对扩容步骤做个小结. 情景一:直接使用磁盘分区存储数据 官方帮助文档请点击这里. 假设待扩容磁盘为/dev/xvdb,只有一个分区/dev/xvdb1,挂载在/mnt/disk1目录下.扩容步骤如下: 1. 登录系统卸载分区: umount /dev/xvdb 2. 在阿里云控制台进行扩容操作: 3. 在控制台重启机器(也可在控制台卸载和挂载磁盘,不必重启): 4. 删除并重建分区: 这里使用GPT分区,值得吐槽的是目前阿里云提供的单块磁盘最大容量为2T,G