磁盘空间已满问题

root
233
文章
0
评论
2020年2月28日18:15:54 评论 10683字阅读35分36秒

磁盘分区满了,解决方法

根分区满了,总结一下解决方法

[root@apache-web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        17G   17G  194M  99% /
devtmpfs        1.4G     0  1.4G   0% /dev
tmpfs           1.4G     0  1.4G   0% /dev/shm
tmpfs           1.4G  9.0M  1.4G   1% /run
tmpfs           1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sr0        4.3G  4.3G     0 100% /mnt
/dev/sda1      1014M  174M  841M  18% /boot
tmpfs           284M   28K  284M   1% /run/user/

解决方法:

  • 方法一:排查原因,删除无用文件,释放磁盘空间
  • 方法二:排查原因,添加磁盘转移数据,释放磁盘空间
  • 方法三:对根分区进行扩容(会另写一篇文章)

那么我就一条一条的写

方法一:排查原因,删除无用文件,释放磁盘空间

用到的命令du -sh /*|grep G

可以对目录进层层筛选,筛选出大文件,进行删除

[root@apache-web /]# du -sh /*|grep G
du: cannot access ‘/proc/14450/task/14450/fd/4’: No such file or directory
du: cannot access ‘/proc/14450/task/14450/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/14450/fd/4’: No such file or directory
du: cannot access ‘/proc/14450/fdinfo/4’: No such file or directory
8.0G	/server
3.3G	/usr
2.5G	/var
[root@apache-web /]# du -sh /server/*|grep G
2.0G	/server/mysql
6.0G	/server/tools
[root@apache-web /]# du -sh /server/tools/*|grep G
5.2G	/server/tools/mysql-5.7.29
[root@apache-web /]# du -sh /server/tools/*|grep M
522M	/server/tools/boost
80M	/server/tools/boost_1_59_0.tar.gz
52M	/server/tools/mysql-5.7.29.tar.gz
202M	/server/tools/php-7.2.28
20M	/server/tools/php-7.2.28.tar.gz

用到的命令du -h -x --max-depth=1(列出你当前所在位置,目录占用磁盘空间的大小)

[root@apache-web /]# du -h -x --max-depth=1|sort -rh
14G	.
8.0G	./server
3.3G	./usr
2.5G	./var
37M	./etc
21M	./root
2.1M	./tmp
256K	./home
0	./srv
0	./share_dir
0	./shaaaaa
0	./server1
0	./opt
0	./mount04
0	./mount03
0	./mount02
0	./mount01
0	./mnt
0	./media

两个命令结合,对系统文件进行排查,效果更加,如果对文件进行删除,发现磁盘空间没有得到提升,原因:有时候其它程序占用了文件无法真正解决问题,需要释放它们,有两种情况:

情况一:有个文件被删了,里面空间被占用,你知道这个文件叫什么

利用lsof |grep /xxx/xxx/xx进行检查,示例:

[root@apache-web /]# lsof |grep /var/log/messages
abrt-watc   673                 root    4r      REG                8,3   6240492   38973783 /var/log/messages
rsyslogd    691                 root    6w      REG                8,3   6240492   38973783 /var/log/messages
in:imjour   691   724           root    6w      REG                8,3   6240492   38973783 /var/log/messages
rs:main     691   725           root    6w      REG                8,3   6240492   38973783 /var/log/messages

第一列:命令

第二列:进程号

$NF:文件名称

$(NF-1):文件的inode

$(NF-2):文件的大小

解决方法:

  • 方法一:systemctl restart 对应的命令
  • 方法二:kill -1 ID号

 


 

情况二:有个文件被删了,里面空间被占用,你不知道这个文件叫什么,如何找到它

利用:lsof |grep deleted

解决方法:

  • 方法一:systemctl restart 对应的命令
  • 方法二:kill -1 ID号

 

方法二:排查原因,添加磁盘转移数据,释放磁盘空间

添加好磁盘,让系统识别到新磁盘,

  • 真实服务器输入partprobe
  • 虚拟机重启

用 fdisk 指令查看分区情况。

[root@apache-web ~]# fdisk -l

Disk /dev/sdc: 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 /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x00002a2f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200     6293503     2097152   82  Linux swap / Solaris
/dev/sda3         6293504    41943039    17824768   8e  Linux LVM

Disk /dev/sdb: 6442 MB, 6442450944 bytes, 12582912 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: 0x71136f7e

   Device Boot      Start         End      Blocks   Id  System

建立 LVM 分区

新增物理卷 pvcreate /dev/sdb /dev/sdc)空磁盘

[root@apache-web ~]# pvcreate /dev/sdb /dev/sdc
WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdb.
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

新增卷组vgcreate 组名 /dev/sdb /dev/sdc)用PV的物理卷

[root@apache-web ~]# vgcreate kk /dev/sdb /dev/sdc
  Volume group "kk" successfully created

查看卷组详情vgdisplay)

[root@apache-web ~]# vgdisplay
  --- Volume group ---
  VG Name               kk
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               45.99 GiB
  PE Size               4.00 MiB
  Total PE              11774
  Alloc PE / Size       0 / 0   
  Free  PE / Size       11774 / 45.99 GiB
  VG UUID               D7ct8g-NmoW-RBga-quqL-IpjJ-3ldj-NBNsj4
   

新增逻辑卷LVkk,用于还原旧分区的根目录

lvcreate -n LVkk -L 45G kk)-n 指定逻辑卷的名字,-L指定最大可以多大,不超过VG+卷组名

  • 要是想分多个区域,直接起不同的逻辑卷名字,-L分别指定大小,用一个VG卷组名
  • 要是想分多个区域,直接起不同的逻辑卷名字,-L分别指定大小,用一个VG卷组名
  • 要是想分多个区域,直接起不同的逻辑卷名字,-L分别指定大小,用一个VG卷组名
[root@apache-web ~]#  lvcreate -n LVkk -L 45G kk
  Logical volume "LVkk" created.
[root@apache-web ~]# ll /dev/kk/LVkk 
lrwxrwxrwx 1 root root 7 Feb 29 03:34 /dev/kk/LVkk -> ../dm-0

查看逻辑卷

[root@apache-web ~]# lvscan
  ACTIVE            '/dev/kk/LVkk' [45.00 GiB] inherit

格式化创建文件系统

(要是不成功,敲一下xfs_growfs /dev/kk/LVkk,在试mkfs.xfs /dev/kk/LVkk)

[root@apache-web ~]# mkfs.xfs /dev/kk/LVkk 
meta-data=/dev/kk/LVkk           isize=512    agcount=4, agsize=2949120 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=11796480, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5760, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

 

查看磁盘UUID

[root@apache-web ~]# blkid
/dev/sda3: UUID="783292fd-b5f5-4be3-acfb-399bbece0484" TYPE="xfs" 
/dev/sda1: UUID="81c60d2f-9f5d-4047-a1fe-78344b18c579" TYPE="xfs" 
/dev/sda2: UUID="f8997739-681e-462a-bd75-6464926e027e" TYPE="swap" 
/dev/sdc: UUID="bEkCou-2WeK-Qe3N-FPkf-q4Ld-nzac-IM8rXY" TYPE="LVM2_member" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sdb: UUID="PfDgp6-hkTv-wW1J-rzoy-fPYA-cTTv-en7Amu" TYPE="LVM2_member" 
/dev/mapper/kk-LVkk: UUID="20a9d535-ac7a-4b2c-b156-90dea27781c6" TYPE="xfs" 

转移数据至LVM分区

备份根目录还原到 LVM 分区

备份数据命令的选择:

  • 用 dump 指令和 restore 指令备份及还原根目录到新分区。(centos6)
  • 用 xfsdump 指令和 xfsrestore 指令备份及还原根目录到新分区。(centos7)

dump 指令仅针对根目录已占用的 x.xG 数据进行操作,dd 指令针对整个分区(20G)进行操作,太费时。

[root@apache-web ~]# mount /dev/mapper/kk-LVkk /shaaaaa/
[root@apache-web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 17G 14G 3.2G 82% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.0M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 284M 32K 284M 1% /run/user/0
/dev/mapper/kk-LVkk 39G 33M 39G 1% /shaaaaa

xfsdump -0f /shaaaaa/rootfs0913.bak /   ---备份根目录

[root@apache-web ~]# xfsdump -0f /shaaaaa/rootfs0913.bak /
xfsdump: ending media file
xfsdump: media file size 14337412912 bytes
xfsdump: dump size (non-dir files) : 14209586264 bytes
xfsdump: dump complete: 777 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /shaaaaa/rootfs0913.bak OK (success)
xfsdump: Dump Status: SUCCESS
[root@apache-web ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             17G   14G  3.2G  82% /
devtmpfs             1.4G     0  1.4G   0% /dev
tmpfs                1.4G     0  1.4G   0% /dev/shm
tmpfs                1.4G  9.0M  1.4G   1% /run
tmpfs                1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sr0             4.3G  4.3G     0 100% /mnt
/dev/sda1           1014M  174M  841M  18% /boot
tmpfs                284M   32K  284M   1% /run/user/0
/dev/mapper/kk-LVkk   39G   14G   26G  35% /shaaaaa

xfsrestore -rf /shaaaaa/rootfs0913.bak--------还原根目录

[root@apache-web ~]# cd /shaaaaa/


------------------------------------------------------------------------------------------------------------------------------------------------

  • 用 dd 指令克隆 / 目录到新分区。

dd指令,目录数据占总分区的 87% , 从 dump 备份到 restore 还原,所用的时间与 dd 直接拷贝到新分区的时间几乎一样。但 dump 备份文件需要占用空间,而 dd 指令直接把原分区搬过去。

[root@apache-web /]# dd if=/dev/sda3 of=/dev/mapper/kk-LVkk
17908385+0 records in
17908384+0 records out
9169092608 bytes (9.2 GB) copied, 55.1285 s, 166 MB/s
19100321+0 records in
19100320+0 records out
9779363840 bytes (9.8 GB) copied, 60.0897 s, 163 MB/s
20182654+0 records in
20182653+0 records out
10333518336 bytes (10 GB) copied, 65.0982 s, 159 MB/s
23888545+0 records in
23888544+0 records out
12230934528 bytes (12 GB) copied, 70.4243 s, 174 MB/s
26198689+0 records in
26198688+0 records out
13413728256 bytes (13 GB) copied, 75.555 s, 178 MB/s
27627813+0 records in
27627813+0 records out
14145440256 bytes (14 GB) copied, 80.5788 s, 176 MB/s
30110722+0 records in
30110721+0 records out
15416689152 bytes (15 GB) copied, 85.942 s, 179 MB/s
32205103+0 records in
32205103+0 records out
16489012736 bytes (16 GB) copied, 90.9922 s, 181 MB/s
34330145+0 records in
34330145+0 records out
17577034240 bytes (18 GB) copied, 96.1389 s, 183 MB/s
35649536+0 records in
35649536+0 records out
18252562432 bytes (18 GB) copied, 99.6638 s, 183 MB/s

查看磁盘的UUID。通过备份发现根分区的UUID和逻辑卷的UUID相同

[root@apache-web /]# blkid
/dev/sda3: UUID="783292fd-b5f5-4be3-acfb-399bbece0484" TYPE="xfs" 
/dev/sda1: UUID="81c60d2f-9f5d-4047-a1fe-78344b18c579" TYPE="xfs" 
/dev/sda2: UUID="f8997739-681e-462a-bd75-6464926e027e" TYPE="swap" 
/dev/sdc: UUID="bEkCou-2WeK-Qe3N-FPkf-q4Ld-nzac-IM8rXY" TYPE="LVM2_member" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sdb: UUID="PfDgp6-hkTv-wW1J-rzoy-fPYA-cTTv-en7Amu" TYPE="LVM2_member" 
/dev/mapper/kk-LVkk: UUID="783292fd-b5f5-4be3-acfb-399bbece0484" TYPE="xfs"

解决方法:

修改UUID

CentOS7修改UUID:(xfs)

  • xfs_admin -U generate /dev/mapper/kk-LVkk

可以看到UUID与之前对比已经发生了变化

[root@apache-web ~]# xfs_admin -U generate /dev/mapper/kk-LVkk 
Metadata corruption detected at xfs_agf block 0x1/0x200
xfs_admin: cannot init perag data (-117). Continuing anyway.
Clearing log and setting UUID
writing all SBs
bad magic number
can't read superblock for AG 1
failed to set UUID in AG 1
new UUID = 9d2c82c8-6126-470a-9dcb-f0723b14a1ee
cache_purge: shake on cache 0x1e412c0 left 1 nodes!?
[root@apache-web ~]# blkid
/dev/sdc: UUID="lX2eE3-v6Jw-FmDe-sB2Q-Noc6-C6DX-2VtMKR" TYPE="LVM2_member" 
/dev/sda1: UUID="81c60d2f-9f5d-4047-a1fe-78344b18c579" TYPE="xfs" 
/dev/sda2: UUID="f8997739-681e-462a-bd75-6464926e027e" TYPE="swap" 
/dev/sda3: UUID="783292fd-b5f5-4be3-acfb-399bbece0484" TYPE="xfs" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/kk-LVkk: UUID="9d2c82c8-6126-470a-9dcb-f0723b14a1ee" TYPE="xfs" 
/dev/sdb: UUID="LJqbbF-Zygb-sFve-yvKi-PeCz-F9by-2RVNIf" TYPE="LVM2_member"

CentOS6修改UUID:(ext4)

  • uuidgen | xargs tune2fs /dev/mapper/kk-LVkk -U

-------------------------------------------------------------------------------------------------------------

改完UUID还需要修改两个配置文件

第一:首先修改启动引导配置文件

  • CentOS7,/boot/grub2/grub.cfg 
  • CentOS6,/boot/grub/grub.conf

修改 UUID: root=UUID=9d2c82c8-6126-470a-9dcb-f0723b14a1ee

删除所有 rd_NO_LVM 选项, 这个很重要

第二:修改还原后的根目录所在分区的 /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Sep  3 08:22:38 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9d2c82c8-6126-470a-9dcb-f0723b14a1ee      /                           xfs       defaults        0 0
UUID=81c60d2f-9f5d-4047-a1fe-78344b18c579        /boot                   xfs       defaults        0 0
UUID=f8997739-681e-462a-bd75-6464926e027e      swap                    swap    defaults        0 0

重启系统

 

磁盘空间未满,提示储存空间不足,解决方法

磁盘空间没有满,但是提示了磁盘空间不足,这种情况有两个原因:

  • inode不数量足,大量小文件消耗
  • block不数量足,大量大文件消耗

inode不足,大量小文件消耗

inode=索引节点,相当于书的目录

由于每个文件都必须有一个inode号,因此有可能发生inode已用光,但硬盘未存满的情况。这时就无法在硬盘上创建新的文件。

检查方法:df -i,可以看到每个分区的inode数量,判断是否inode被消耗光

[root@apache-web /]# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda3      6809080 272995 6536085    5% /
devtmpfs        358733    410  358323    1% /dev
tmpfs           362405      1  362404    1% /dev/shm
tmpfs           362405    560  361845    1% /run
tmpfs           362405     16  362389    1% /sys/fs/cgroup
/dev/sda1       524288    328  523960    1% /boot
tmpfs           362405     18  362387    1% /run/user/

解决方法:

利用find命令搜索出符合要求的文件,进行批量删除,再次进去检查,如果问题还没有得到解决,我利用lsof 查看一下此文件被谁占用了,把它占用的空间释放一下,这样此问题应该可以解决,参考(磁盘分区满了,解决方法

block不数量足,大量大文件消耗

block=索引节点指向的位置,书目录所指向的内容

block默认大小:

  • / 分区默认大小为4K
  • /boot 分区 block默认大小为1K

查看分区block的方法:df

[root@apache-web /]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda3       17814528 14551228   3263300  82% /
devtmpfs         1434932        0   1434932   0% /dev
tmpfs            1449620        0   1449620   0% /dev/shm
tmpfs            1449620    25508   1424112   2% /run
tmpfs            1449620        0   1449620   0% /sys/fs/cgroup
/dev/sda1        1038336   177964    860372  18% /boot
tmpfs             289924       28    289896   1% /run/user/

解决办法:

du -sh /*|grep G命令层层筛,删除后看空间是否恢复,没有恢复看一下进程是否占用,文章前面已经写的很详细了

-----------------------------------------------------------------------------------------------------

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年2月28日18:15:54
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
扩容根分区 磁盘管理

扩容根分区

扩容根分区 扩容根分区,严禁直接整块磁盘往上怼,一定要给磁盘分一个区,格式化后在进行扩容 扩容根分区,严禁直接整块磁盘往上怼,一定要给磁盘分一个区,格式化后在进行扩容 扩容根分区,严禁直接整块磁盘往上...
LVM 合并磁盘完成扩容 磁盘管理

LVM 合并磁盘完成扩容

LVM 合并磁盘完成扩容 系统采用CentOS 7,采购硬盘的时候采购了2块2T的机械盘作为存储盘,根据业务划分,开发部门并不需要2T这么大的空间,而素材管理2T又有些不够,所以这里就打算使用LVM将...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: