作者:MeshCloud脉时云公有云架构师 许多杰
引言
当GCP虚拟机实例需要额外的存储空间或增加的性能限制时,我们可以增加永久性磁盘的大小。无论磁盘是否挂接到正在运行的虚拟机,都可以增加磁盘大小。
注意:您只能增加磁盘大小,而不能减小磁盘大小。如需减小磁盘大小,您必须创建较小的新磁盘。在删除较大的原始磁盘之前,您需要为这两个磁盘付费。
环境部署
本次实验是Web服务器Nginx的在线扩容,通过增加磁盘、制作文件系统等步骤完成Nginx缓存目录的扩容。
创建节点机器
制作文件系统
- 将多个本地 SSD 分区格式化并装载到单个逻辑卷中
在终端中安装 mdadm 工具:
sudo apt update && sudo apt install mdadm --no-install-recommends
- 使用 ext4 文件系统格式化完整的 /dev/sdb 阵列
sudo mkfs.ext4 -F /dev/sdb
- 创建一个用于装载 /dev/sdb 的目录
sudo mkdir -p /var/cache/nginx
- 将 /dev/sdb 阵列装载到 /var/cache/nginx
sudo mount -o discard,defaults,nobarrier /dev/sdb /var/cache/nginx
- 配置对该设备的读写权限
sudo chmod a+w /var/cache/nginx
- 将本地 SSD 添加到 /etc/fstab 文件,以便在实例重启时设备会自动重新装载。
指定 /etc/fstab 条目文件时,请务必添加 nofail 选项,这样,即使 SSD 不存在,实例也能继续启动。例如,如果您截取启动磁盘的快照并创建没有附加任何SSD 的新实例,则该实例可以继续启动流程,而不是无限期地暂停。
echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/cache/nginx ext4 discard,defaults,nobarrier,nofail 0 2 | sudo tee -a /etc/fstab
- 使用 cat 命令验证您的 /etc/fstab 条目内容正确:
cat /etc/fstab
- 使用 df -h命令查看文件系统是否创建完成:
df -h
当前VM附加的SSD persistent disk 大小为100GB,挂载到本地/var/cache/nginx目录下作为文件系统使用。
搭建Web服务器Nginx
- 下载并安装Nginx:
sudo apt install -y nginx
- 启用并设置Nginx开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
- 修改Nginx配置文件,增加本地缓存proxy_cache_path等指令:
sudo vim /etc/nginx/nginx.conf
#修改下列nginx配置文件
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=mem-cache:1500m inactive=30d max_size=10g use_temp_path=off;
- 测试访问Web服务器(绑定节点机器IP地址):
curl -vo /dev/null 'http://picuser-mas.weplayapp.com/test.txt' -x 34.142.144.15:80
根据响应头判断Web服务器运行正常,并且可以进行资源缓存。另外通过Nginx日志和缓存资源也可以判断服务端状态正常。
测试验证
部署探测任务
- 通过Shell脚本每1秒请求一次Nginx地址,并将请求的时间、响应头中的状态、响应大小、请求的url打印到result.txt文件中:
#!/bin/bash
while true
do
date=$(date +"%Y-%m-%d %H:%M:%S")
response=$(curl -s -o /dev/null -w "%{http_code} %{size_download} %{url_effective}" -H "Host: picuser-mas.weplayapp.com" http://34.142.144.15/test.txt)
echo "$date $response" >> result.txt
sleep 1
done
增加磁盘大小
- 验证分区类型:
sudo parted -l
- 调整非启动数据磁盘上的文件系统大小:
文件系统类型 | 扩展指令 | |
1 | ext4 | sudo resize2fs /dev/sdb |
2 | xfs | sudo xfs_growfs MOUNT_DIR |
3 | btrfs | sudo btrfs filesystem resize max MOUNT_DIR |
这里类型ext4,请使用 resize2fs 命令扩展文件系统
sudo resize2fs /dev/sdb
- 使用 df 命令验证文件系统是否已扩展:
df -h
当前VM附加的SSD persistent disk 大小扩容为200GB,挂载到本地/var/cache/nginx目录下作为文件系统使用。
业务验证
通过探测点日志记录:在增加磁盘大小的过程中Web服务端响应正常,未受影响。
结论
虚拟机实例增加永久性磁盘的大小,不会影响正在运行VM中的业务。
参考文件
- GCP 增加永久性磁盘的大小文档:https://cloud.google.com/compute/docs/disks/resize-persistent-disk?hl=zh-cn