一、虚拟化基础
硬件虚拟化分类
Bare-Metal
Hosted
CPU虚拟化
1、软件模拟:属于全虚拟化,跨平台,性能损失大,如PowerVM运行x86系统
2、二进制翻译:属于全虚拟化,CPU上进行二进制转换,如Loogarch上运行Windows
3、半虚拟化:调用接口HyperCall解决x86架构CPU的敏感指令无法捕获问题,如XEN
4、硬件辅助虚拟化:Intel VT技术,如KVM
CPU指令:
敏感指令:有权限修改部分敏感的计算机资源和配置
特权指令:有权限访问计算机硬件资源
内存虚拟化:
直接模式:需对GuestOS做修改,PageTable变为只读,只能通过HyperCall调用VMM来修改,GVA->VMM->HPA
影子页表:无需对GuestOS做修改,GVA->ShadowTable(CR3)->HVA->HPA
EPT技术:GVA->GPA->(EPT)->HPA
二、容器:
OS级虚拟化:
隔离 (namespace)
资源管理 (cgroup)
Docker三组件:
Docker Client
Docker Daemon
Docker Registry
Docker三要素:
Image
Container
DockerFile
容器的六项隔离:
UTS 主机名与域名
IPC信号量、消息队列和共享内存
PID进程编号
Network网络设备、网络栈、端口
Mount挂载点
User用户和用户组
镜像:
层叠镜像
数据卷
容器网络:
Host模式:容器和宿主机共享Network Namespace,-net=host
Container模式:多容器共享Network Namespace,-net=container:NAME_or_ID
None模式:不能与宿主机和外部通信,-net=none
Bridge模式:通过vethpair连接到宿主机网桥,-net=bridge
docker 命令:
docker run -d --name hello -v /host/logs:/container/logs -p hostport:containerport -net=bridge hello
二、存储系统
存储速度:
Register->L1 Cache->L2 Cache->L3 Cache->Memory->SSD->HDD
存储主要功能:
持久化、数据操作、数据组织、空间管理、数据可靠性
存储分类:
按接口分类:
文件存储:目录+文件,接口:open,read,write,close。如:ext4,GFS
键值存储:键值对,接口:put/get/delete。如:redis
块存储:数据块,接口:open,read,write,close。如:磁盘
按连接方式分类:
直连存储DAS
网络存储:SAN存储+NAS存储
存储架构
传统IOE架构:EMC
超融合架构:存算融合、硬件通用
分离式架构:存算分离、配置灵活
分布式存储
横向纵向提升:
Scale-Up:提升单台性能
Scale-Out:多台聚合能力
代表类型
分布式文件系统:Google File System,HDFS,GlusterFS
分布式键值存储系统:Dynamo
分布式对象存储系统:Ceph ,Swift
数据切片及放置
4MB(Ceph)
64MB/128MB(GFS,HDFS)
数据放置方法:基于哈希取模、一致性哈希
CAP理论
C-副本一致性:强一致性(Ceph,HDFS)、弱一致性(Redis)
A-可用性
P-网络分区容忍性
NWR策略
N-副本数
W-需要更新副本数
R-需要读取副本数
三、Ceph
访问接口:
对象接口:GetObject,PutObject
块接口
文件接口
RADOS
RBD-Block
RADOSGW-Object
CEPH FS-需要MDS
CRUSH算法
OSD选取顺序:take->select->emit
故障域:基于故障域粒度进行故障隔离
– type 0 osd
– type 1 host
– type 2 chassis
– type 3 rack
– type 4 row
– type 5 pdu
– type 6 pod
– type 7 room
– type 8 datacenter
– type 9 region
– type 10 root
数据放置
逻辑层放置:File->Objects->PGs
物理层放置:CRUSH(X)->osd.x
存储引擎(ObjectStore)
数据读写:File-Object-CRUSH-OSD
MemStore:基于内存实现数据存储
FileStore:基于本地文件系统实现数据存储
FileJournal:Journal机制先将修改的数据 和元数据写入日志,然后再将数据写入磁盘,数据被写了两遍,磁盘带宽浪费
SSD:写前擦除->异地更新->垃圾回收。写放大,小写不好
BlueStore:使用Allocator进行裸设备 空间管理,元数据写入RocksDB
数据写策略:RMW(Read-Modify-Write)、COW(Copy on Write)
分布式文件系统
HDFS
Block 64MB
HDFS不适合场景
– 对数据访问要求低延迟 – 存储大量小文件
– 文件频繁更新
– 数据量不大
GlusterFS
– Brick: 最基本的存储单元,表示为trusted storage pool中输出的目录
– Volume: 一个卷。在逻辑上由N个bricks组成
– FUSE: 允许用户不用修改内核即可创建自己的文件系统
– Glusterd: Gluster management daemon,要在trusted storage pool中所有的服务器上运行
GlusterFS卷类型:
3种基本卷:distribute卷、stripe卷、replica卷
4种复合卷:distribute stripe卷、distribute replica 卷、stripe replica卷、distribute stripe replica 卷