磁盘管理
磁盘扩展
场景描述
早上起来使用 jenkins 自动化部署时,发现日志中提示磁盘已满的问题,在查询解决此问题的过程中,有很多博客都建议修改构件保存天数。笔者在自动化部署的设置过程中,本身设置的保存天数就很小。然后查看一下磁盘的使用情况,发现 root 分区已使用 100%。只能使用修改分区的方式进行修改了。 在此问题出现的头一天晚上,重启了一下服务器,然后 rabbitmq 就再也启动不起来了,查看日志文件,网上也说是因为磁盘已满的问题。 早上过来发现,showdoc 也挂掉了,但是挂掉一段时间之后自动又好了。
解决过程
查看磁盘使用情况
[root@dev ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_dev-root 118G 118G 20K 100% /
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9.8M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 1014M 186M 829M 19% /boot
/dev/mapper/centos_dev-home 7.2T 26G 7.2T 1% /home
tmpfs 6.3G 0 6.3G 0% /run/user/0备份 home
[root@dev ~]# cp -r /home/ /dev/homebak卸载 home
[root@dev ~]# umount /home删除 home 所在的 lv
[root@dev ~]# lvremove -y /dev/mapper/centos_dev-home
Logical volume "home" successfully removed显示 lvm 卷组信息
[root@dev ~]# vgdisplay
--- Volume group ---
VG Name centos_dev
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 7.27 TiB
PE Size 4.00 MiB
Total PE 1907041
Alloc PE / Size 38240 / <149.38 GiB
Free PE / Size 1868801 / <7.13 TiB
VG UUID js7DO7-igaq-Si7p-lAef-PkXA-FS3W-5hnfSu扩展 root 所在的 lv
[root@dev ~]# lvextend -L +3T /dev/mapper/centos_dev-root
Size of logical volume centos_dev/root changed from 118.00 GiB (30208 extents) to <3.12 TiB (816640 extents).
Logical volume centos_dev/root successfully resized.扩展 root 文件系统
[root@dev ~]# xfs_growfs /dev/mapper/centos_dev-root
meta-data=/dev/mapper/centos_dev-root isize=512 agcount=4, agsize=7733248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=30932992, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=15104, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 30932992 to 836239360重新创建 home 的 lv
[root@dev ~]# lvcreate -L 4T -n home centos_dev
Logical volume "home" created.创建 home 文件系统
[root@dev centos_dev]# mkfs.xfs /dev/centos_dev/home
meta-data=/dev/centos_dev/home isize=512 agcount=4, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1073741820, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0挂载 home 并恢复备份
[root@dev centos_dev]# mount /dev/centos_dev/home /home
[root@dev centos_dev]# cp -r /dev/homebak/ /home/
[root@dev ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_dev-root 3.2T 118G 3.1T 4% /
devtmpfs 32G 26G 6.3G 81% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9.8M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 1014M 186M 829M 19% /boot
tmpfs 6.3G 0 6.3G 0% /run/user/0
/dev/mapper/centos_dev-home 4.0T 29G 4.0T 1% /home参考链接
--
对 ntfs 硬盘进行分区和格式化
[root@home ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sda:120.0 GB, 120034123776 字节,234441648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 8CAAF60E-CE8B-4FB1-8362-11358305ED5C
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 234440703 110.6G Linux LVM
磁盘 /dev/sdb:128.0 GB, 128035676160 字节,250069680 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7eadcdcf
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 250068991 125033472 7 HPFS/NTFS/exFAT
磁盘 /dev/mapper/centos_home-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos_home-swap:12.0 GB, 12004098048 字节,23445504 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos_home-home:53.1 GB, 53053751296 字节,103620608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@home ~]# blkid
/dev/sda1: SEC_TYPE="msdos" UUID="E901-9F48" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3e464077-71bb-4591-b33a-76cbe63d2a47"
/dev/sda2: UUID="ee311bbc-3221-4f52-8e06-cee71f3f85fd" TYPE="xfs" PARTUUID="31203d97-969a-406f-90f0-d43a9aee0320"
/dev/sda3: UUID="fIheeY-D4ju-GX92-aRSg-6szE-w9ro-nUFa9R" TYPE="LVM2_member" PARTUUID="30ce5c69-4215-4f30-af60-ab1d808a015f"
/dev/sdb1: LABEL="ZEANZAI" UUID="287C36557C361E4E" TYPE="ntfs"
/dev/mapper/centos_home-root: UUID="12f8ea5d-3566-4be0-bb55-7e990a6a4512" TYPE="xfs"
/dev/mapper/centos_home-swap: UUID="72cd84a4-3e77-4e62-8805-56673ea29c4e" TYPE="swap"
/dev/mapper/centos_home-home: UUID="682c9bc6-d436-43fa-a156-c0c542faadf3" TYPE="xfs"
[root@home ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 12G 0 12G 0% /dev
tmpfs tmpfs 12G 0 12G 0% /dev/shm
tmpfs tmpfs 12G 8.9M 12G 1% /run
tmpfs tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/mapper/centos_home-root xfs 50G 1.7G 49G 4% /
/dev/sda2 xfs 1014M 144M 871M 15% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos_home-home xfs 50G 33M 50G 1% /home
tmpfs tmpfs 2.4G 0 2.4G 0% /run/user/0
[root@home ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 110.6G 0 part
├─centos_home-root 253:0 0 50G 0 lvm /
├─centos_home-swap 253:1 0 11.2G 0 lvm [SWAP]
└─centos_home-home 253:2 0 49.4G 0 lvm /home
sdb 8:16 0 119.2G 0 disk
└─sdb1 8:17 0 119.2G 0 part
# 使用fdisk工具进行分区和格式化
[root@home ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
[root@home ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-250069679,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-250069679,默认为 250069679):+50G
分区 1 已设置为 Linux 类型,大小设为 50 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (104859648-250069679,默认为 104859648):
将使用默认值 104859648
Last 扇区, +扇区 or +size{K,M,G} (104859648-250069679,默认为 250069679):
将使用默认值 250069679
分区 2 已设置为 Linux 类型,大小设为 69.2 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@home ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 110.6G 0 part
├─centos_home-root 253:0 0 50G 0 lvm /
├─centos_home-swap 253:1 0 11.2G 0 lvm [SWAP]
└─centos_home-home 253:2 0 49.4G 0 lvm /home
sdb 8:16 0 119.2G 0 disk
├─sdb1 8:17 0 50G 0 part
└─sdb2 8:18 0 69.2G 0 part
[root@home ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@home ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4538368 inodes, 18151254 blocks
907562 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2166358016
554 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@home ~]# mkdir /mnt/log
[root@home ~]# mkdir /mnt/userfiles
[root@home ~]# vi /etc/fstab
添加以下两行
/dev/sdb1 /mnt/log ext4 defaults 0 0
/dev/sdb2 /mnt/userfiles ext4 defaults 0 0
[root@home ~]# reboot参考这里:https://developer.aliyun.com/article/1633309
[root@home ~]# mount | grep sdb
/dev/sdb1 on /mnt/log type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdb2 on /mnt/userfiles type ext4 (rw,relatime,seclabel,data=ordered)
[root@home ~]# fdisk -l
磁盘 /dev/sdb:128.0 GB, 128035676160 字节,250069680 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7eadcdcf
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 104859647 52428800 83 Linux
/dev/sdb2 104859648 250069679 72605016 83 Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sda:120.0 GB, 120034123776 字节,234441648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 8CAAF60E-CE8B-4FB1-8362-11358305ED5C
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 234440703 110.6G Linux LVM
磁盘 /dev/mapper/centos_home-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos_home-swap:12.0 GB, 12004098048 字节,23445504 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos_home-home:53.1 GB, 53053751296 字节,103620608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@home ~]# blkid
/dev/mapper/centos_home-root: UUID="12f8ea5d-3566-4be0-bb55-7e990a6a4512" TYPE="xfs"
/dev/sda3: UUID="fIheeY-D4ju-GX92-aRSg-6szE-w9ro-nUFa9R" TYPE="LVM2_member" PARTUUID="30ce5c69-4215-4f30-af60-ab1d808a015f"
/dev/sdb1: UUID="96f4d339-a80c-40fa-a211-8d52364eefbc" TYPE="ext4"
/dev/sdb2: UUID="480ec054-9974-44c5-adb2-748dbfa1dcc5" TYPE="ext4"
/dev/sda1: SEC_TYPE="msdos" UUID="E901-9F48" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3e464077-71bb-4591-b33a-76cbe63d2a47"
/dev/sda2: UUID="ee311bbc-3221-4f52-8e06-cee71f3f85fd" TYPE="xfs" PARTUUID="31203d97-969a-406f-90f0-d43a9aee0320"
/dev/mapper/centos_home-swap: UUID="72cd84a4-3e77-4e62-8805-56673ea29c4e" TYPE="swap"
/dev/mapper/centos_home-home: UUID="682c9bc6-d436-43fa-a156-c0c542faadf3" TYPE="xfs"
[root@home ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 12G 0 12G 0% /dev
tmpfs tmpfs 12G 0 12G 0% /dev/shm
tmpfs tmpfs 12G 8.9M 12G 1% /run
tmpfs tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/mapper/centos_home-root xfs 50G 1.6G 49G 4% /
/dev/sda2 xfs 1014M 144M 871M 15% /boot
/dev/sdb1 ext4 50G 53M 47G 1% /mnt/log
/dev/sdb2 ext4 69G 53M 65G 1% /mnt/userfiles
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos_home-home xfs 50G 33M 50G 1% /home
tmpfs tmpfs 2.4G 0 2.4G 0% /run/user/0
[root@home ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 110.6G 0 part
├─centos_home-root 253:0 0 50G 0 lvm /
├─centos_home-swap 253:1 0 11.2G 0 lvm [SWAP]
└─centos_home-home 253:2 0 49.4G 0 lvm /home
sdb 8:16 0 119.2G 0 disk
├─sdb1 8:17 0 50G 0 part /mnt/log
└─sdb2 8:18 0 69.2G 0 part /mnt/userfiles挂载 NTFS 硬盘
由于家里的电脑原来装的是 windows 系统,并且我自己扩展了两块硬盘,原来 Windows 系统时,两块硬盘可以正常读写,但是在物理机上面安装上 centos7.5 以后,由于只是格式化 c 盘,把 centos7.5 系统安装到了 c 盘,所以之前自己扩展的两块硬盘就无法正常读写了,此时,需要在 centos 系统上读写两块硬盘内容,需要怎么处理呢?下面给出解决方案。
安装依赖包
yum install -y fuse ntfs-3g挂载硬盘
[root@home data]# mkdir -p /mnt/data/d /mnt/data/e
[root@home data]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 vfat B476-53D1 /boot/efi
├─sda2 xfs cd9c42b2-dafc-40dc-a780-28e8b5ed453a /boot
└─sda3 LVM2_member pue3cy-Bdmo-txbs-f7vS-3Oef-78zY-ACq296
├─centos_home-root xfs a1c1e8bc-3a27-47b6-a2aa-f329e4b77e86 /
├─centos_home-swap swap 4ff247c5-07b8-4143-93bc-1496ac3a7162 [SWAP]
└─centos_home-home xfs 2d5c8133-4174-4689-906a-62c316aa6839 /home
sdb
└─sdb1 ntfs Software 90769AF9769ADEF2
sdc
├─sdc1
└─sdc2 ntfs Zeanzai D4947D40947D25E0
[root@home data]# mount /dev/sdb1 /mnt/data/d
[root@home data]# mount /dev/sdc2 /mnt/data/e自动挂载
如果需要永久挂载,先查到该盘的 type 值:
[root@home ~]# blkid
/dev/mapper/centos_home-root: UUID="a1c1e8bc-3a27-47b6-a2aa-f329e4b77e86" TYPE="xfs"
/dev/sda3: UUID="pue3cy-Bdmo-txbs-f7vS-3Oef-78zY-ACq296" TYPE="LVM2_member" PARTUUID="3f965157-bb9c-49b5-9aeb-20726f024e6f"
/dev/sdb1: LABEL="Software" UUID="90769AF9769ADEF2" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8ba8c6a7-4a88-47d2-b94e-97d2d97a144e"
/dev/sdc1: PARTLABEL="Microsoft reserved partition" PARTUUID="6207f65b-8b11-46bd-bd4a-d14f2d5a0c6e"
/dev/sdc2: LABEL="Zeanzai" UUID="D4947D40947D25E0" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="3220d24a-a508-4dfb-af5e-ae2a749c9d9f"
/dev/sda1: SEC_TYPE="msdos" UUID="B476-53D1" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="82eac0f4-625e-4b70-80c7-221bee59c290"
/dev/sda2: UUID="cd9c42b2-dafc-40dc-a780-28e8b5ed453a" TYPE="xfs" PARTUUID="1075528c-e57e-4734-a6c9-74a798184fcb"
/dev/mapper/centos_home-swap: UUID="4ff247c5-07b8-4143-93bc-1496ac3a7162" TYPE="swap"
/dev/mapper/centos_home-home: UUID="2d5c8133-4174-4689-906a-62c316aa6839" TYPE="xfs"在最下面添加两行
#
# /etc/fstab
# Created by anaconda on Sun Jun 27 13:23:19 2021
#
# 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
#
/dev/mapper/centos_home-root / xfs defaults 0 0
UUID=cd9c42b2-dafc-40dc-a780-28e8b5ed453a /boot xfs defaults 0 0
UUID=B476-53D1 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos_home-home /home xfs defaults 0 0
/dev/mapper/centos_home-swap swap swap defaults 0 0
/dev/sdb1 /mnt/data/d ntfs defaults 0 0
/dev/sdc2 /mnt/data/e ntfs defaults 0 0注意是 ntfs,不是其他。
如果遇到无法正常启动时,可以参考 https://blog.csdn.net/weixin_34401479/article/details/94316392
其它命令
# 查看所有磁盘的分区情况
fdisk -l
# 卸载
umount /dev/sdd1
# 查看已挂载磁盘使用情况
df -h挂载 exFat 磁盘驱动器
yum install epel-release
rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install exfat-utils fuse-exfat
[root@home data]# mount -t exfat /dev/sdd1 /mnt/data/f生产问题案例及解决过程
面试题:维护的时候,创建文件提示”No space left on device”,请问你这是什么故障:
解答:磁盘空间 block 满了或者 inode 被占满了
故障描述及说明
某年某月甘日某时,某人在工作中设置 crontab 定时任务规则保存时,提示” No space left on device”,此时用 df -h 检查磁盘,发现还有剩余空间,用 df -I 检查则显示/var 目录己占用 100%的 inode 数量,看来是 inode 数量耗尽,导致系统无法在/var 目录下创建文件,因为定时任务的配置在/var/spool/cron 下,ext3 文件系统中,每个文件需要占一个 inode。
故障原因分析
当系统中 crond 定时任务执行程序有输出内容时,输出内容会以邮件形式发给 crond 的用户(默认是 root),而 sendmail 等 mail 服务没有启动时,这些输出内容以为支在邮件队列临时目录,产生这些碎文件,导致消耗 inode 数量,一旦 inode 数量耗尽,就会导致系统无法写入文件,而报上述错误:No space left on device.
亡羊补牢解决方法
尽量将 crontab 里面的命令或脚本中的命令结尾加上>/dev/null 2>&1,或在做定时执行脚本时,把屏幕输出定向到指定文件里
当然也可以开启邮件服务,不过最好不做,因为邮件服务会带来安全问题
优化系统,加定时清理任务,如 find /var/spool/clientmqueue/ -type f -mtime +30|xargs rm -f
调试 crontab 定时任务
- 增加执行频率调试任务
- 调整系统时间调试任务
- 通过日志输出调试定时任务
- 通过定时任务日志调试定时任务