【LINUX】Oracle数据库 linux磁盘头数据损坏修复

本次模拟 通过fdisk分区的磁盘头损坏,造成文件目录无法使用。 如果是asm磁盘,可通过asm相关命令进行修复

现有环境

[root@pgtest testdata]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_firsouler-lv_root
                      9.5G  7.1G  2.0G  79% /
tmpfs                 996M   72K  996M   1% /dev/shm
/dev/sda1             477M   42M  410M  10% /boot
/dev/mapper/pgvg-lvpg
                       19G  4.4G   14G  25% /pgdata
/dev/sdc1             5.8G   12M  5.5G   1% /testdata
[root@pgtest testdata]# ls
analyze_new_cluster.sh  gp2020.cfg  lost+found  ojdbc6.jar
[root@pgtest testdata]#

破坏/dev/sdc1磁盘

[root@pgtest testdata]# cd /
[root@pgtest /]# dd if=/dev/zero of=/dev/sdc1 bs=1024 count=8
8+0 records in
8+0 records out
8192 bytes (8.2 kB) copied, 0.00100304 s, 8.2 MB/s
#再次查看,testdata目录下找不到文件 ,df -h也无法查看
[root@pgtest /]# cd /testdata/
[root@pgtest testdata]# ls
[root@pgtest testdata]# cd /
[root@pgtest /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_firsouler-lv_root
                      9.5G  7.1G  2.0G  79% /
tmpfs                 996M   72K  996M   1% /dev/shm
/dev/sda1             477M   42M  410M  10% /boot
/dev/mapper/pgvg-lvpg
                       19G  4.4G   14G  25% /pgdata

尝试卸载后再次挂载

[root@pgtest /]# umount /testdata/
[root@pgtest /]# mount /testdata/
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

如上所示,提示有问题。

通过fsck命令修复磁盘(注意,fstab需要有相关配置信息)

[root@pgtest /]# fsck /dev/sdc1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
fsck.ext4: Superblock invalid, trying backup blocks...
/dev/sdc1 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 inodes count wrong for group #0 (8181, counted=8178).
Fix? yes
Free inodes count wrong (393205, counted=393202).
Fix? yes
/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 14/393216 files (0.0% non-contiguous), 60526/1572354 blocks
[root@pgtest /]# mount /testdata/
[root@pgtest /]# cd /testdata/
[root@pgtest testdata]# ls
analyze_new_cluster.sh  gp2020.cfg  lost+found  ojdbc6.jar
[root@pgtest testdata]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_firsouler-lv_root
                      9.5G  7.1G  2.0G  79% /
tmpfs                 996M   72K  996M   1% /dev/shm
/dev/sda1             477M   42M  410M  10% /boot
/dev/mapper/pgvg-lvpg
                       19G  4.4G   14G  25% /pgdata
/dev/sdc1             5.8G   12M  5.5G   1% /testdata
[root@pgtest testdata]#

修复完成后,文件系统正常。

fsck 工具介绍

  • -a:自动修复文件系统,不询问任何问题;
  • -A:依照 /etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
  • -N:不执行指令,仅列出实际执行会进行的动作;
  • -P:当搭配 "-A"参数使用时,则会同时检查所有的文件系统;
  • -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
  • -R:当搭配 "-A"参数使用时,则会略过/目录的文件系统不予检查;
  • -s:依序执行检查作业,而非同时执行;
  • -t<文件系统类型>:指定要检查的文件系统类型;
  • -T:执行 fsck指令时,不显示标题信息;

lvm方式元数据修复

#备份文件位置
ls -lrt /etc/lvm/backup/
#查看vg创建信息
vgcfgrestore --list vg_backup
#查看损坏的pv信息
pvscan
#通过备份修复 pv元数据
pvcreate  --uuid "9a2Lzl-B1Z0-zaR7-jgLj-9g72-u7PD-aYcjgh" --restorefile /etc/lvm/backup/vg_backup /dev/sdd
#修复vg信息
vgcfgrestore -f /etc/lvm/backup/vg_backup vg_backup
#激活vg    vgscan
vgchange -a y vg_test
请使用浏览器的分享功能分享到微信等