今天早上在做业务系统日常巡检,发现日志盘没有办法写入进去了,第一个想到的就是磁盘被撑爆了。很好奇就去看了下,果不其然,满满当当的日志文件。为了解决这个问题,下面开始自己的处理方案,以供需要之人。
这个问题很好解决,我一般的处理办法有两种。
第一种就是根据需求来删减日志的,可以删除过期的日志或者时间久远的日志文件。一般来讲,大家应该都会有相应的调度任务来处理这个。
第二种就是增加磁盘空间,一般情况下,我们都是增加挂载。
那么问题来了,如何进行磁盘挂载呢?下面就让我来带着大家一起实践下吧。
实验机器环境(虚拟机):Linux ky10.x86_64
、Linux CentOS 7.6_x86_64
其中本次实践演示为CentOS 7.6虚拟机。
在检查磁盘是否已经被垃圾文件占用,我们通常会使用命令 df -h 来检查是否已经还有存储空间,此命令只会展示已经挂载在节点上的磁盘是否被占用,而未挂载的磁盘是不会被显示到此命令的输出。所以,我们需要额外的命令工具来做支撑,实验之前,先检查下机器已经挂载的磁盘,可使用lsblk
命令来查询,如果不了解这个命令,可以参考博主以前的博文:Linux工具|运维工具lsblk使用小妙招
注意:Linux下对SCSI和SATA设备是以sd命名的,第一个SCSI设备是sda,第二个是sdb....以此类推。一般主板上有两个SCSI接口,因此一共可以安装4个SCSI设备。主SCSI上的两个设备分别对应sda和sdb,第二个SCSI口上的设备对应sdc和sdd。
当我们磁盘满了,此时需要从外部挂载一个硬盘来存储日志信息或者备份信息。为了方便实践操作,此时我先挂载一个盘。当然,如果这个是在UI界面程序上面操作比较好操作,此时演示的为命令行挂载。执行命令
lsblk
Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。我们可以使用命令fdisk -l
查看还未挂载到节点的磁盘。
[root@~ ~]# fdisk -l
Disk /dev/sda:50 GiB,53687091200 字节,104857600 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9366b0cc
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 104857599 102758400 49G 8e Linux LVM
Disk /dev/sdb:1 TiB,1099511627776 字节,2147483648 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/klas-root:45.4 GiB,48364519424 字节,94461952 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/klas-swap:3.98 GiB,4244635648 字节,8290304 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@xinan175 ~]#
如上所示,使用fdisk之后可以看到有四个Disk盘,其中Disk /dev/sdb为刚挂载的盘。此时使用df -h也还是看不到已经挂载的盘。
【格式】fdisk [盘号/盘位置/盘节点]
【实践】执行 fdisk /dev/sdb
在Linux进行挂载。
[root@xxx ~]# fdisk /dev/sdb
……
命令(输入 m 获取帮助):n # 第一步 直接输入n,新建一个分区(可以参考附录第一步骤命令)
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 第二步 只是选择主分区
分区号 (1-4,默认 1):1 # 第三步 默认第一分区
起始 扇区 (2048-41943039,默认为 2048):# 第四步 开始大小,使用默认,直接回车
将使用默认值 2048
结束 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):# 第五步 结束大小,使用默认,直接回车
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):W # 第六步 写入磁盘,保存并退出。
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
通过上面六步走,我们可以临时挂载(机器重启后失效)。这六步骤分别为:
(1)第一步 直接输入n,新建一个分区(可以参考4、(1)帮助第一个命令)
(2)第二步 只是选择主分区
(3)第三步 默认第一分区
(4)第四步 开始大小,使用默认,直接回车
(5)第五步 结束大小,使用默认,直接回车
(6)第六步 写入磁盘,保存并退出。
简单的六步走方式是懒人操作,执行的命令为:n > p > 1 > 回车 > 回车 > w
。主打一个懒人操作,当然了,这个也是在熟悉命令的情况下操作。如果不熟悉命令,可以参考下面的执行帮助命令来查询。
使用mkfs.ext4 /dev/sdb1
命令来格式化磁盘并写入到文件系统中。
注意:这里可以用ext3,也可以用ext4。可以到/dev
目录下查看有哪些格式。
这个比较简单,就是创建一个文件夹。
mkdir disk_mount
【格式】mount [磁盘节点] [目录节点]
mount /dev/sdb1 /disk_mount
此时,可以使用df -h
命令来查询是否挂载成功。
将挂载信息按指定格式写入到 /etc/fstab
文件中(这样主机重启后,挂载才能永久有效),可以将下面的信息追加到文件中。
/dev/sdb1 /disk_mount ext4 defaults 0 1 // 如果上面用的是ext3,这里也要用ext3;
此时,如果你在测试环境,可以重启试试。
上面的挂载已然成功,那么回到最初的问题,可以将日志迁移到挂载盘中,是业务正常运行。
cp -rf /data/backup/* /disk_mount/
mv /data/backup/* /disk_mount/
输入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
执行挂载新节点到目录上时提示挂载节点不存在时,首先检查下创建的目录的权限问题或者创建的目录结构不对,一般当前用户下,也就是在最外层;其次有些时候可能系统性能比较慢,稍等等;如果还不可以,最后可以删除进行重新mout挂载。
$ /disk_mount mount point does not exist.
通过本文关于在Linux下如何挂载磁盘,以及挂载后开机启动,想必读者都对磁盘分区挂载有所了解。个人觉得Linux中的工具不像windows,可以使用图形化界面程序处理,但是命令也可以完美的解决问题,尤其是在线上环境中历练我们的命令功底,而且看了很多国产操作系统在被应用到线上环境后,这是其他操作系统所不具备的优势。总的体验下来,国产操作系统非常好用,功能也很强大,值得入手体验一番!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。