本文章描述了如何增加Nagios虚拟机(VM)的磁盘大小。
这篇文章适用于任何一个CentOS 7虚拟机,因为它们有相同的磁盘配置。
如果您不确定您的 VM 正在运行的 CentOS 版本,您可以执行以下命令:
cat /etc/centos-release
版本 6 将输出如下内容:
CentOS release 6.9 (Final)
版本 7 将输出如下内容:
CentOS Linux release 7.4.1708 (Core)
重要!
调整虚拟机大小所需的操作本质上具有潜在的破坏性。 我们强烈建议您在继续之前对 Nagios 服务器进行适当的备份。
虚拟机的快照是一种方法,可以在出错时提供一种 "回溯 "的方法。然而,快照只能在你向虚拟硬盘添加额外的磁盘空间时进行(本指南的第一步)。在添加额外的磁盘空间之前是无法进行快照的,虚拟技术不提供这种能力。建议你在拍摄快照之前关闭并切断虚拟机的电源。
调整虚拟磁盘的大小
第一步是修改VMware分配给你的Nagios镜像的磁盘空间的数量。如果你使用其他管理程序,如Hyper-V或VirtualBox,那么这些设置将与下面的步骤略有不同。
建议你在调整虚拟磁盘的大小之前关闭并切断虚拟机的电源。
你需要的虚拟磁盘大小设置可以在下面找到。
(您的 VM)> 摘要 > 命令 > 编辑设置 > 硬件 > 硬盘 1 > 容量 > 新大小。
对于 VMware Player,可以使用概览页面上的以下选项找到磁盘大小设置:
(您的 VM)> 编辑虚拟机设置 > 硬件 > 硬盘 (SCSI) > 实用程序 > 扩展 > 最大磁盘大小。
增加磁盘空间后重新打开 VM。
终端接入
剩余说明要求您以 root 用户身份与 Nagios 服务器建立终端会话。
调整分区/文件系统的大小
有两种方法可用于调整分区和文件系统的大小:
使用脚本自动化
以下命令将自动调整 VM 上的分区和文件系统的大小。 脚本完成后,它将自动重新启动 Nagios 服务器:
cd /tmp
wget
Download “extend_vm_disk”
sh extend_vm_disk.sh
您将看到类似于以下内容的输出:
================================================================================
==== WARNING: DO NOT EXECUTE THIS IF YOU HAVE MODIFIED YOUR DISK PARTITIONS ====
================================================================================
- This script will extend your disk partition and filesystem.
- This script will only work on standard Nagios OVA distributions.
- Make a BACKUP of your VM before running this script.
- Your VM will reboot with the extended filesystem.
================================================================================
Do you want to continue running this script? [y/n]
您需要回答 y 才能继续。
服务器重新启动并且您在终端会话中以 root 用户身份登录后,您将看到类似于以下内容的消息:
Your root / partition and filesystem have been resized
Your disk size is now 85.9GB,
And your / filesystem is 77GB
The results of all commands are in /var/log/vm_resize.log
您在上面的消息中看到的大小将根据您添加的额外磁盘空间的大小而有所不同。
这样就完成了增加 VM 磁盘大小的自动步骤。 您应该登录 Nagios 界面以确保一切正常。
如果您在继续之前拍摄了 VM 的快照,您现在应该关闭 VM 并删除快照,因为回滚目的不再需要它。
手动
按照以下步骤手动调整 VM 分区和文件系统的大小。
您需要修改虚拟机内的 Linux 分区表以识别磁盘大小已更改。 这可以使用 fdisk 实用程序来完成,它是一个分区编辑器。 对于 Nagios Enterprises 提供的虚拟机:
通过执行以下命令启动 fdisk:
fdisk /dev/sda
您应该打印当前的分区表,以便随时跟踪您的更改:
Command (m for help): p
截取屏幕截图或将屏幕内容复制到文本文件中,以备日后参考。
要调整分区大小,实际上是“删除”它,然后添加一个具有新大小的新分区,确保将新分区的开头放置在与旧分区相同的扇区/柱面处。 此过程没有破坏性,您的数据仍保留在磁盘上。 这些第一步用于删除分区:
Command (m for help): d
Partition number (1-4): 2
这些后续步骤重新创建分区:
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
系统将提示您输入要使用的第一个和最后一个扇区,只需接受起点和终点的默认值(只需按 Enter)。 与之前打印的信息相比,仔细检查它们是否有意义。
接下来需要将分区类型配置为LVM(8e):
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
此时,您已完成更改,只需将它们写入磁盘。 打印 (p) 新分区表以确保正确输入内容是个好主意。 一旦一切正常,您就可以将分区表提交(写入)到磁盘:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
write 命令将退出 fdisk 程序。 您现在需要重新启动虚拟机以允许内核识别新的分区表,执行以下命令:
reboot
我们发布的虚拟机映像中安装的 CentOS 系统对其分区使用逻辑卷管理 (LVM)。 如果您以前从未使用过 LVM 并想更好地理解此处的术语,请访问:
为了使用新增加的磁盘空间,LVM 需要被告知它在那里并且应该被使用。 对于此步骤,您将调整物理卷的大小以匹配分区的新大小。 与 Nagios 服务器建立终端会话,然后执行以下命令:
pvresize /dev/sda2
这应该产生以下输出:
Physical volume "/dev/sda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
下一步是调整逻辑卷的大小以使用 LVM 物理卷中的新空间。 执行以下命令:
lvresize /dev/mapper/centos-root /dev/sda2
这应该会产生以下输出(它会因您添加的磁盘空间而异):
Size of logical volume centos/root changed from 36.99 GiB (9470 extents) to <77.00 GiB (24831 extents).
Logical volume centos/root successfully resized.
最后一步是更改驻留在逻辑卷上的文件系统,以便它知道将文件放在该空间中。 执行以下命令:
xfs_growfs /dev/mapper/centos-root
这应该会产生以下输出(它会因您添加的磁盘空间而异):
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=406016 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1624064, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1624064 to 4769792
你完成了! 您可以通过使用 df -h 显示文件系统大小和使用情况的摘要来确认磁盘调整大小是否有效。
如果您在继续之前拍摄了 VM 的快照,您现在应该关闭 VM 并删除快照,因为回滚目的不再需要它。