sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 运维DBA > Linux >

【案例】Linux文件系统无法mount 由superblock损坏导致

时间:2016-12-19 10:33   来源:Oracle研究中心   作者:网络   点击:

天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库遇到linux方面,文件系统mount不了的问题,说是superblock损坏,要进行修复,我这里用vm来进行模拟下,以及进行手工修复。

[root@killdb ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             3.9G  3.3G  384M  90% /
/dev/sda1              46M   11M   33M  25% /boot
none                  506M     0  506M   0% /dev/shm
/dev/sda3              25G   23G  1.4G  95% /home

[root@killdb ~]# tune2fs -l /dev/sda3
tune2fs 1.35 (28-Feb-2004)
Filesystem volume name:   /home
Last mounted on:         
Filesystem UUID:          d3d8a85b-a06f-4765-84c7-62c5d1257151
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              3286752
Block count:              6568576
Reserved block count:     328428
Free blocks:              2454102
Free inodes:              3184193
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         16352
Inode blocks per group:   511
Filesystem created:       Sat Sep 24 11:48:16 2011
Last mount time:          Sat Oct  6 00:02:31 2012
Last write time:          Sat Oct  6 00:02:31 2012
Mount count:              86
Maximum mount count:      -1
Last checked:             Sat Sep 24 11:48:16 2011
Check interval:           0 ()
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
First orphan inode:       1439427
Default directory hash:   tea
Directory Hash Seed:      63cb625d-3db5-45ff-ac6f-fa35dc01e088
Journal backup:           inode blocks

[root@killdb ~]# dumpe2fs /dev/sda3
dumpe2fs 1.35 (28-Feb-2004)
Filesystem volume name:   /home
Last mounted on:         
Filesystem UUID:          d3d8a85b-a06f-4765-84c7-62c5d1257151
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              3286752
Block count:              6568576
Reserved block count:     328428
Free blocks:              2454102
Free inodes:              3184193
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         16352
Inode blocks per group:   511
Filesystem created:       Sat Sep 24 11:48:16 2011
Last mount time:          Sat Oct  6 00:02:31 2012
Last write time:          Sat Oct  6 00:02:31 2012
Mount count:              86
Maximum mount count:      -1
Last checked:             Sat Sep 24 11:48:16 2011
Check interval:           0 ()
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
First orphan inode:       1439427
Default directory hash:   tea
Directory Hash Seed:      63cb625d-3db5-45ff-ac6f-fa35dc01e088
Journal backup:           inode blocks

Group 0: (Blocks 0-32767)
  Primary superblock at 0, Group descriptors at 1-2
  Block bitmap at 1027 (+1027), Inode bitmap at 1028 (+1028)
  Inode table at 1029-1539 (+1029)
  0 free blocks, 14770 free inodes, 237 directories
  Free blocks:
  Free inodes: 727, 944-951, 1592-16352
Group 1: (Blocks 32768-65535)
  Backup superblock at 32768, Group descriptors at 32769-32770
  Block bitmap at 33795 (+1027), Inode bitmap at 33796 (+1028)
  Inode table at 33797-34307 (+1029)
  0 free blocks, 11741 free inodes, 270 directories
  Free blocks:
  Free inodes: 17277-17287, 17828-17836, 20828-20831, 20946, 20948, 20965, 20991-32704
Group 2: (Blocks 65536-98303)
  Block bitmap at 65536 (+0), Inode bitmap at 65537 (+1)
  Inode table at 65538-66048 (+2)
  0 free blocks, 14821 free inodes, 226 directories
  Free blocks:
  Free inodes: 34236-49056
Group 3: (Blocks 98304-131071)
  Backup superblock at 98304, Group descriptors at 98305-98306
  Block bitmap at 99331 (+1027), Inode bitmap at 99332 (+1028)
  Inode table at 99333-99843 (+1029)
  0 free blocks, 16352 free inodes, 0 directories
  Free blocks:
  Free inodes: 49057-65408
Group 4: (Blocks 131072-163839)
  Block bitmap at 131072 (+0), Inode bitmap at 131073 (+1)
  Inode table at 131074-131584 (+2)
  0 free blocks, 16341 free inodes, 1 directories
  Free blocks:
  Free inodes: 65416-65417, 65422-81760
Group 5: (Blocks 163840-196607)
  Backup superblock at 163840, Group descriptors at 163841-163842
  Block bitmap at 164867 (+1027), Inode bitmap at 164868 (+1028)
  Inode table at 164869-165379 (+1029)
  0 free blocks, 11588 free inodes, 289 directories
  Free blocks:
  Free inodes: 86525-98112
Group 6: (Blocks 196608-229375)
  Block bitmap at 196608 (+0), Inode bitmap at 196609 (+1)
  Inode table at 196610-197120 (+2)
  3978 free blocks, 16351 free inodes, 0 directories
  Free blocks: 210922-212834, 212836-212842, 213344-215401
  Free inodes: 98113-98251, 98253-114464
Group 7: (Blocks 229376-262143)
  Backup superblock at 229376, Group descriptors at 229377-229378
  Block bitmap at 230403 (+1027), Inode bitmap at 230404 (+1028)
  Inode table at 230405-230915 (+1029)
  22495 free blocks, 16352 free inodes, 0 directories
  Free blocks: 230916-230917, 230920-230925, 237568-238068, 240137-240192, 240200-242816, 242824-244800, Oracleoracleplus.net244808-262143
  Free inodes: 114465-130816
。。。。。。
  Free inodes: 3239782-3254048
Group 199: (Blocks 6520832-6553599)
  Block bitmap at 6520832 (+0), Inode bitmap at 6520833 (+1)
  Inode table at 6520834-6521344 (+2)
  0 free blocks, 11925 free inodes, 213 directories
  Free blocks:
  Free inodes: 3258210-3258212, 3258215-3258220, 3258222-3258230, 3258494-3270400
Group 200: (Blocks 6553600-6568575)
  Block bitmap at 6553600 (+0), Inode bitmap at 6553601 (+1)
  Inode table at 6553602-6554112 (+2)
  2 free blocks, 16348 free inodes, 0 directories
  Free blocks: 6554326-6554327
  Free inodes: 3270405-3286752

[root@killdb ~]# dumpe2fs /dev/sda3|grep superblock
dumpe2fs 1.35 (28-Feb-2004)
  Primary superblock at 0, Group descriptors at 1-2
  Backup superblock at 32768, Group descriptors at 32769-32770
  Backup superblock at 98304, Group descriptors at 98305-98306
  Backup superblock at 163840, Group descriptors at 163841-163842
  Backup superblock at 229376, Group descriptors at 229377-229378
  Backup superblock at 294912, Group descriptors at 294913-294914
  Backup superblock at 819200, Group descriptors at 819201-819202
  Backup superblock at 884736, Group descriptors at 884737-884738
  Backup superblock at 1605632, Group descriptors at 1605633-1605634
  Backup superblock at 2654208, Group descriptors at 2654209-2654210
  Backup superblock at 4096000, Group descriptors at 4096001-4096002

从上面的信息可以得出如下结论:

1. /dev/sda3 blocksize是4k
2. 第一个主超级块在第2个block上;
3. /dev/sda3文件系统除了一个主超级块之外,还有10个备份的superblock,


下面我们来模拟超级坏块损坏的情况:

[root@killdb /]# umount /home
umount: /home: device is busy
umount: /home: device is busy

[root@killdb /]# ps -ef|grep pmon
ora10g     851     1  0 16:52          00:00:01 ora_pmon_roger
root     10194  9421  0 21:43 pts/4    00:00:00 grep pmon

[root@killdb /]# su - oracle
su: user oracle does not exist

[root@killdb /]# su - ora10g
[ora10g@killdb ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 1 21:43:54 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[ora10g@killdb ~]$ exit
logout

[root@killdb /]# umount /home
[root@killdb /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             3.9G  3.3G  384M  90% /
/dev/sda1              46M   11M   33M  25% /boot
none                  506M     0  506M   0% /dev/shm

[root@killdb /]# dd if=/dev/zero  of=/dev/sda3 bs=4096 skip=1 count=1
1+0 records in
1+0 records out

[root@killdb /]#  mount -t ext3 /dev/sda3 /home
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
       or too many mounted file systems


提示超级坏块损坏,我们利用后面备份的超级坏块来进行修复:

[root@killdb /]# fsck.ext3 -b 32768 /dev/sda3
e2fsck 1.35 (28-Feb-2004)
Clearing orphaned inode 1439497 (uid=501, gid=501, mode=040755, size=0)
Illegal inode 1350886196 in orphaned inode list.
/home was not cleanly unmounted, check forced.
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
Free blocks count wrong for group #6 (3983, counted=3978).
Fix  yes

Free blocks count wrong for group #7 (22516, counted=22495).
Fix  yes

Free blocks count wrong for group #11 (31807, counted=31806).
Fix  yes

Free blocks count wrong for group #12 (32241, counted=31954).
Fix  yes

Free blocks count wrong for group #13 (32241, counted=31759).
Fix  yes

Free blocks count wrong for group #14 (32248, counted=0).
Fix  yes

Free blocks count wrong for group #15 (32247, counted=0).
Fix  yes

Free blocks count wrong for group #16 (32241, counted=0).
Fix  yes

Free blocks count wrong for group #17 (26822, counted=0).
Fix  yes

Free blocks count wrong for group #18 (22528, counted=0).
Fix  yes

Free blocks count wrong for group #19 (20424, counted=0).
Fix  yes

Free blocks count wrong for group #20 (32119, counted=0).
Fix  yes

Free blocks count wrong for group #21 (32253, counted=0).
Fix  yes

Free blocks count wrong for group #22 (22983, counted=0).
Fix  yes

Free blocks count wrong for group #23 (30372, counted=0).
Fix  yes

Free blocks count wrong for group #24 (32254, counted=0).
Fix  yes

Free blocks count wrong for group #25 (31228, counted=0).
Fix  yes

Free blocks count wrong for group #26 (32255, counted=0).
Fix  yes

Free blocks count wrong for group #27 (31225, counted=0).
Fix  yes

Free blocks count wrong for group #28 (32251, counted=0).
Fix  yes

Free blocks count wrong for group #29 (32244, counted=0).
Fix  yes

Free blocks count wrong for group #30 (32251, counted=0).
Fix  yes

Free blocks count wrong for group #31 (19972, counted=0).
Fix  yes

Free blocks count wrong for group #32 (16403, counted=0).
Fix  yes

Free blocks count wrong for group #33 (253, counted=0).
Fix  yes

Free blocks count wrong for group #34 (19706, counted=0).
Fix  yes

Free blocks count wrong for group #35 (13924, counted=0).
Fix  yes

Free blocks count wrong for group #36 (23864, counted=0).
Fix  yes

Free blocks count wrong for group #37 (21452, counted=0).
Fix  yes

Free blocks count wrong for group #38 (22105, counted=0).
Fix  yes

Free blocks count wrong for group #40 (11888, counted=0).
Fix  yes

Free blocks count wrong for group #41 (19443, counted=0).
Fix  yes

Free blocks count wrong for group #42 (23458, counted=0).
Fix  yes

Free blocks count wrong for group #43 (13582, counted=0).
Fix  yes

Free blocks count wrong for group #50 (9, counted=0).
Fix  yes

Free blocks count wrong for group #52 (7315, counted=0).
Fix  yes

Free blocks count wrong for group #53 (28773, counted=0).
Fix  yes

Free blocks count wrong for group #54 (6, counted=0).
Fix  yes

Free blocks count wrong for group #57 (7776, counted=0).
Fix  yes

Free blocks count wrong for group #58 (32247, counted=0).
Fix  yes

Free blocks count wrong for group #59 (32109, counted=0).
Fix  yes

Free blocks count wrong for group #60 (31922, counted=0).
Fix  yes

Free blocks count wrong for group #61 (31851, counted=0).
Fix  yes

Free blocks count wrong for group #62 (24979, counted=0).
Fix  yes

Free blocks count wrong for group #63 (32249, counted=0).
Fix  yes

Free blocks count wrong for group #64 (1201, counted=0).
Fix  yes

Free blocks count wrong for group #66 (18430, counted=12).
Fix  yes

Free blocks count wrong for group #67 (7196, counted=0).
Fix  yes

Free blocks count wrong for group #68 (24941, counted=1663).
Fix  yes

Free blocks count wrong for group #71 (32241, counted=32175).
Fix  yes

Free blocks count wrong for group #73 (23876, counted=23873).
Fix  yes

Free blocks count wrong for group #83 (23843, counted=23840).
Fix  yes

Free blocks count wrong for group #88 (923, counted=5710).
Fix  yes

Free blocks count wrong for group #89 (26, counted=5688).
Fix  yes

Free blocks count wrong for group #92 (0, counted=21).
Fix  yes

Free blocks count wrong for group #93 (7076, counted=24401).
Fix  yes

Free blocks count wrong for group #94 (4187, counted=4179).
Fix  yes

Free blocks count wrong for group #95 (5511, counted=5495).
Fix  yes

Free blocks count wrong for group #97 (94, counted=85).
Fix  yes

Free blocks count wrong for group #98 (204, counted=173).
Fix  yes

Free blocks count wrong for group #99 (6199, counted=6198).
Fix  yes

Free blocks count wrong for group #104 (18306, counted=18143).
Fix  yes

Free blocks count wrong for group #105 (29955, counted=29904).
Fix  yes

Free blocks count wrong for group #106 (7376, counted=7362).
Fix  yes

Free blocks count wrong for group #109 (9, counted=0).
Fix  yes

Free blocks count wrong for group #163 (4, counted=0).
Fix  yes

Free blocks count wrong for group #164 (7333, counted=0).
Fix  yes

Free blocks count wrong for group #165 (32114, counted=0).
Fix  yes

Free blocks count wrong for group #166 (32183, counted=0).
Fix  yes

Free blocks count wrong for group #167 (30440, counted=0).
Fix  yes

Free blocks count wrong for group #168 (32240, counted=0).
Fix  yes

Free blocks count wrong for group #169 (27021, counted=0).
Fix  yes

Free blocks count wrong for group #170 (32233, counted=16).
Fix  yes

Free blocks count wrong for group #171 (32233, counted=0).
Fix  yes

Free blocks count wrong for group #172 (32241, counted=0).
Fix  yes

Free blocks count wrong for group #173 (32219, counted=0).
Fix  yes

Free blocks count wrong for group #174 (32248, counted=0).
Fix  yes

Free blocks count wrong for group #175 (32228, counted=0).
Fix  yes

Free blocks count wrong for group #176 (31762, counted=0).
Fix  yes

Free blocks count wrong for group #177 (31965, counted=0).
Fix  yes

Free blocks count wrong for group #178 (29609, counted=0).
Fix  yes

Free blocks count wrong for group #179 (31979, counted=0).
Fix  yes

Free blocks count wrong for group #180 (31702, counted=0).
Fix  yes

Free blocks count wrong for group #181 (24876, counted=0).
Fix  yes

Free blocks count wrong for group #182 (31551, counted=0).
Fix  yes

Free blocks count wrong for group #183 (32255, counted=0).
Fix  yes

Free blocks count wrong for group #184 (32243, counted=0).
Fix  yes

Free blocks count wrong for group #185 (31842, counted=0).
Fix  yes

Free blocks count wrong for group #186 (32170, counted=0).
Fix  yes

Free blocks count wrong for group #187 (32252, counted=1).
Fix  yes

Free blocks count wrong for group #188 (32249, counted=0).
Fix  yes

Free blocks count wrong for group #189 (32253, counted=14).
Fix  yes

Free blocks count wrong for group #190 (25549, counted=2960).
Fix  yes

Free blocks count wrong for group #192 (32252, counted=32009).
Fix  yes

Free blocks count wrong (2454102, counted=671157).
Fix  yes

Free inodes count wrong for group #14 (16352, counted=16351).
Fix  yes

Free inodes count wrong for group #54 (16327, counted=16336).
Fix  yes

Free inodes count wrong for group #59 (16203, counted=16158).
Fix  yes

Free inodes count wrong for group #60 (16026, counted=16017).
Fix  yes

Free inodes count wrong for group #64 (16146, counted=16132).
Fix  yes

Free inodes count wrong for group #66 (16352, counted=16343).
Fix  yes

Free inodes count wrong for group #71 (16352, counted=16351).
Fix  yes

Free inodes count wrong for group #73 (16344, counted=16338).
Fix  yes

Free inodes count wrong for group #88 (12512, counted=12501).
Fix  yes

Directories count wrong for group #88 (309, counted=312).
Fix  yes

Free inodes count wrong for group #90 (16341, counted=16343).
Fix  yes

Free inodes count wrong for group #109 (14179, counted=14137).
Fix  yes

Directories count wrong for group #109 (345, counted=346).
Fix  yes

Free inodes count wrong for group #110 (16348, counted=16339).
Fix  yes

Free inodes count wrong for group #170 (16351, counted=15971).
Fix  yes

Directories count wrong for group #170 (0, counted=7).
Fix  yes

Free inodes count wrong (3184192, counted=3183676).
Fix  yes

/home: ***** FILE SYSTEM WAS MODIFIED *****
/home: 103076/3286752 files (1.3% non-contiguous), 5897419/6568576 blocks
修复完成之后,我们来挂载文件系统,是否能够正常mount:

[root@killdb /]#  mount -t ext3 /dev/sda3 /home
[root@killdb /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             3.9G  3.3G  384M  90% /
/dev/sda1              46M   11M   33M  25% /boot
none                  506M     0  506M   0% /dev/shm
/dev/sda3              25G   23G  1.4G  95% /home


最后来挂载oracle数据库看看是否正常。
[root@killdb /]# su - ora10g
s[ora10g@killdb ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 1 21:57:46 2012
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to an idle instance.
SQL> !pwd
/home/ora10g

SQL> startup
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1272600 bytes
Variable Size             146801896 bytes
Database Buffers           16777216 bytes
Redo Buffers                2920448 bytes
Database mounted.
Database opened.

SQL> select open_mode from V$database;

OPEN_MODE
----------
READ WRITE

一切正常。

补充:
这里有篇文章关于superblock的结构进行了详细描述:

http://homepage.smc.edu/morgan_david/cs40/analyze-ext2.htm

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Linux文件系统无法mount 由superblock损坏导致

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/1416.html

Oracle研究中心

关键词:

linux系统文件系统无法mount的解决办法

linux superblock损坏修复方法

mount: wrong fs type bad option