问题目录
- git merge 时不对message进行确认
- Windows上用户名不区分大小写
- 蓝绿部署、红黑部署、灰度发布
- docker no space left on device
- LVM进行逻辑卷扩容
1. git merge 时不对message进行确认
在进行 git merge
时会默认进入一个编辑 merge message 的编辑交互中,但是我们有时不希望进行内容变更或不希望进行交互编辑。
如果是不进行内容变更,可以使用 --no-edit
:
1
git merge test-branch --no-edit
如果是不希望进行交互编辑,可以使用 -m
在 merge 时指定 message 内容:
1
git merge test-branch -m "the message that you want to commit"
ref: https://git-scm.com/docs/git-merge
2. Windows上用户名不区分大小写
Windows 下的用户名不区分大小写;但是,密码区分大小写。
linux 下的用户名区分大小写。
3. 蓝绿部署、红黑部署、灰度发布
蓝绿部署
在蓝绿色部署中,维护两套服务:“蓝色”服务和“绿色”服务。在任意时刻,只有一套服务被用于处理请求。另一套服务处于闲置状态。
进行新版本发布时,我们可以先将闲置状态的服务进行升级,再将生产流量从另一套服务切换过来。蓝绿没有什么特殊含义,只是为了便于区别和表述,我们可以将工作中的服务环境称为蓝色环境,而将闲置环境称为绿色环境。将绿环境部署新版本服务后,进行流量切换。一旦生产流量从蓝色完全转移到绿色,蓝色就可以在回滚或退出生产的情况下保持待机,也可以更新成为下次更新的模板。
ref:
红黑部署
与蓝绿部署类似,红黑发布也是通过两个集群完成软件版本的升级。
当前提供服务的所有机器都运行在红色集群 A 中,当需要发布新版本的时候,具体流程是这样的:
- 先在云上申请一个黑色集群 B,在 B 上部署新版本的服务;
- 等到 B 升级完成后,我们一次性地把负载均衡全部指向 B;
- 把 A 集群从负载均衡列表中删除,并释放集群 A 中所有机器。
这样就完成了一个版本的升级。
同样红黑也只是为了便于表述。
ref:
灰度发布
灰度发布,也被叫作金丝雀发布。与蓝绿部署、红黑部署不同的是,灰度发布属于增量发布方法。也就是说,服务升级的过程中,新旧版本会同时为用户提供服务。
灰度发布的具体流程是这样的:在集群的一小部分机器上部署新版本,给一部分用户使用, 以测试新版本的功能和性能;确认没有问题之后,再对整个集群进行升级。简单地说,灰度发布就是把部署好的服务分批次、逐步暴露给越来越多的用户,直到最终完全上线。
ref:
4. docker no left space on device
问题描述:
docker导入镜像时,报错:docker no left space on device
但是docker 存储镜像等内容的分区没有更多的空间可以清理出来供其使用了。
解决方案:
docker system prune
执行后会收到提示:
1
2
3
4
5
6
7
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
如果继续执行,将会进行永久性的清理。
根据 [docker 提供的最佳实践建议](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#create-ephemeral-containers),容器的定位应该是短暂生命周期的,意味着可以随时停止并删除。因此清理掉停止的容器应是安全的。
ref:
https://jhooq.com/docker-error-no-space-left/
https://stackoverflow.com/questions/30604846/docker-error-no-space-left-on-device
5. LVM 进行逻辑卷扩容
术语:
- 物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
- 物理卷(physical volume)PV:物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- 卷组(Volume Group)VG:LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
- 逻辑卷(logical volume)LV:LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
- 物理块(physical extent)PE:每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
- 逻辑块(logical extent)LE:逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
LVM的管理命令:
功能 | 物理卷管理(pv) | 卷组管理(vg) | 逻辑卷管理(lv) |
---|---|---|---|
扫描(scan) | pvscan | vgscan | lvscan |
创建(create) | pvcreate | vgcreate | lvcreate |
显示(display) | pvdisplay | vgdisplay | lvdisplay |
删除(remove) | pvremove | vgremove | lvremove |
扩展(extend) | — | vgextend | lvextend |
缩减(reduce) | — | vgreduce | lvreduce |
逻辑卷扩容步骤
vgdisplay
查看卷组情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--- Volume group ---
VG Name volume-group1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 168.00 GiB
PE Size 4.00 MiB
Total PE 774
Alloc PE / Size 21248 / 83.00 GiB
Free PE / Size 21760 / 85.00 GiB
VG UUID bwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK
可以看到 Free 空间大小
- 在Free空间范围内进行扩容分配,使用命令
lvextend -L +${extend_size} ${target_lv}
,其中${extend_size}
为待扩容的大小,为数值加上单位,比如10G
,${target_lv}
为待扩容的逻辑卷 - 调整分区:
- 查看文件系统类型
1 2
mount |grep ${target_lv}
或者
1
cat /etc/fstab | grep ${target_lv}
如果 type 不为
xfs
, 则使用resize2fs
进行调整即可:resize2fs ${target_lv}
1
如果对 xfs 类型的 fs 执行 resize2fs ,会出现如下报错:
1 2
resize2fs: Bad magic number in super-block while trying to open xxxxxxxxxx Couldn't find valid filesystem superblock.
- 如果 type 为
xfs
, 则使用xfs_growfs
命令:xfs_growfs ${target_lv}
df -h
查看挂载点,看看大小是否已经成功改变。
ref:
关于LVM:
- https://www.cnblogs.com/shoufeng/p/10615452.html
- https://www.yisu.com/zixun/3865.html
- https://opensource.com/business/16/9/linux-users-guide-lvm
- https://linux.cn/article-3218-1.html
关于resize2fs error处理:
Comments powered by Disqus.