DBA运维小技巧之存储篇-Oracle服务器根目录满了怎么处理(1)LVM情况

故障发生了!

周末正在逛街DBA小倩接到一个客户紧急任务,客户说自己的业务数据库突然不好使了,连接也出现了问题,开发人员连库就报这个错
 

image.png


还好正在逛街的小倩同学随身带了笔记本电脑
 

image.png


小倩要来了系统的登录用户名密码,登录到了数据库服务器一看
好家伙!根目录满了。
 

image.png


仔细检查发现,之前软件实施的人员把数据库直接装到了根目录下,最后导致根目录空间耗尽,数据库无法写入审计文件,无法登录了。该服务器在系统上还只有1个硬盘。

[root@dbserver /]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G   50G   33M 100% /
/dev/mapper/centos-home xfs       445G   33M  445G   1% /home
/dev/sda1               xfs      1014M  151M  864M  15% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0
[root@dbserver /]# ls 
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  u01  usr  var

根分区是没地方了,可是/home分区却几乎没用。
这就是之前的集成实施人员和软件实施人员没有对接好,两个人都是二把刀,导致这么个结果。

此时如何快速恢复业务呢?

经过检查/home分区下只有用户的默认文件夹,并无其它生产数据。
与客户沟通后,客户没有相关的系统维护人员,全能小倩同学只能啥都干(锅来了也得接)
 

image.png


于是小倩建议客户把/home分区删除,扩容到根分区里,快速恢复业务。
说干就干,首先,先去$ORACLE_BASE目录下释放一点文件,比如下面这些,都可以删除

/u01/app/oracle/diag/rdbms/orcl/orcl/alert   目录下的log_*.xml文件
/u01/app/oracle/diag/rdbms/orcl/orcl/trace   目录下的日志文件,alert_orcl.log如果不是很大,不建议删除。

备份一下home下的文件,检查了只有oracle目录。

[root@dbserver home]# ls -al
total 0
drwxr-xr-x.  3 root   root  20 Sep  7 21:59 .
dr-xr-xr-x. 18 root   root 255 Sep  7 22:00 ..
drwx------   2 oracle dba   62 Sep  7 21:59 oracle

这里我们用cp 直接复制/home目录下的文件到/root目录下。r表示目录下所有子目录也复制,p表进带权限复制。

cd /home/
cp * -rp /root/
cd ~

下一步,我们要卸载/home分区,把/home分区对应的lv删除。

[root@dbserver ~]# umount  /home/
[root@dbserver ~]# lvremove /dev/centos/home 
Do you really want to remove active logical volume centos/home? [y/n]: y
  Logical volume "home" successfully removed

查看VG有空闲空间,这里我们再把剩余的空间扩容到根分区所属于的名为root的lv里。扩容lv后,在线直接扩容设备/dev/mapper/centos-root对应的根文件系统。扩容成功后根分区空间立即够用了,业务立马恢复。

[root@dbserver ~]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree  
  centos   1   2   0 wz--n- <499.00g 445.12g
[root@dbserver ~]# lvresize -l +100%FREE /dev/centos/root 
  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 495.12 GiB (126751 extents).
  Logical volume centos/root successfully resized.
[root@dbserver ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 495.12g                                                    
  swap centos -wi-ao----  <3.88g 
[root@dbserver]# xfs_growfs /dev/mapper/centos-root 
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 129793024
[root@dbserver]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G   12M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root  496G   50G  446G  11% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    378M     0  378M   0% /run/user/0

由于上文中通过df -Th看到了/分区的文件系统是xfs格式,所以最后用xfs_growfs扩容。
如果/分区是ext4的话,最后一步需要用resize2fs来进行动态扩容

resize2fs  /dev/mapper/centos-root 

最后别忘记了把备份走文件恢复到/home目录下。

[root@dbserver ~]# cp -rp oracle/ /home/

还有就是要把/etc/fstab里的/dev/mapper/centos-home挂载选项删除,否则下次重启开不开机了。

#删除这行或者注释掉
/dev/mapper/centos-home /home                   xfs     defaults        0 0

完美收工了?

你以为这样就完了么?
没过1天,领导又找到了小倩,领导说客户觉得数据库放在本地磁盘空间太小了,性能也不好,他们又搞了个磁盘阵列,想把数据库整体迁移到存储上,想让你处理一下。
下一期我们一起来看看DBA小倩同学怎么操作

image.png

也欢迎关注我们的公众号【青年数据库学习互助会】
青学会汇集各路数据库大牛,一起互助学习、进步。

青学会公众号.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐sir(徐慧阳)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值