|
|
楼主 |
发表于 2021-8-2 08:52:21
|
显示全部楼层
在真机上创建一台新的虚拟机,常见好后不需要安装操作系统
* x/ P+ Q* Z2 _# virsh list --all5 G! Y) \" M3 V6 l1 _
1' u4 M' d" A( T) P* O8 o
2.5 libvirt secret
7 t- m- W# O- p+++++++++++++++++++++++++++++++++++++
( p, y* _5 Q, Y9 W配置libvirt secret
. Q' {6 I% K3 ?! |KVM虚拟机需要使用librbd才可以访问ceph集群
6 ~. y/ }9 g; [5 ^3 @* ~9 ?, KLibrbd访问ceph又需要账户认证
; w0 c- F3 ]+ M因此在这里,需要给libvirt设置账户信息
- P" s# t& A! W7 e- Ka) 编写账户信息文件(真实机操作)
8 ]6 [, w! P: G5 R+ e# vim secret.xml
- r% T% j3 W: C, v<secret ephemeral='no' private='no'>
- z* O2 ]) w% B& m/ N0 F* O <usage type='ceph'>/ s& R; N0 T9 K" n( e8 V2 k
<name>client.admin secret</name>2 o6 e( O3 S; V1 M
</usage>- g1 `* T0 k4 q9 R
</secret>& ~3 d- y7 R3 D. S* _
4 _& s2 A a7 @& {- N# r
b) 使用XML配置文件创建secret: X- L2 N/ \- k- J' B3 x
# virsh secret-define --file secret.xml
( x" M; M# W6 p; j7 K! e
# j# Q% L1 j( V2 U生成 secret 342b4a54-8a03-6b79-9ffc-84a8eac89e36; \6 h& d+ s! _2 p; q
//随机的UUID,这个UUID对应账户信息
: n& Z4 k* V9 r5 a注:删除secret 的方法
( {$ ~8 V9 t) F& B7 b! i) j# virsh secret-undefine 342b4a54-8a03-6b79-9ffc-84a8eac89e36
8 ^7 G) q% \( _: b3 ?) A, D4 d) i Y4 d
c)编写账户信息文件(真实机)" s7 x% j' A& K- ], D/ z
# ceph auth get-key client.admin
- t: W2 S( h' t+ ?
; L9 o6 R+ Y& J9 k, [! U; y//获取client.admin的key,或者直接查看密钥文件/etc/ceph/ceph.client.admin.keyring
, ]4 A& J' v( I, ?7 o. ]# Ld)设置secret,添加账户的密钥/ k# @# B7 _+ l* J8 w# u: u
# virsh secret-set-value --secret 90833f12-c0a1-33f3-92ea-09d37eec3ec6
% h% n* [/ A% |' l& \--base64 AQClRb9bvvkQHhAA0r2ihnFWR3JsBvgYJx7NAg==
3 L# {4 o3 N/ }. e* p o9 R5 ^ //这里secret后面是之前创建的secret的UUID
; f) L6 H2 m/ N9 C r; M5 C //base64后面是client.admin账户的密码1 Y, b1 L1 p2 d* W/ Z% o
//现在secret中既有账户信息又有密钥信息% z5 w# m0 h. z/ d! \ A
4 @* @4 f c4 d2 ~. q3 x! k- ae) 将之前没有操作系统的虚拟机avpc的配置文件拷贝一份,进行修改
" Q6 E5 g! @ i8 x! v# m# virsh dumpxml avpc > /tmp/avpc1.xml8 P: n! E) H- R9 i) c3 x/ L
+ a, H/ Q, E! Z, X- j ^% I
虚拟机的XML配置文件
& d9 M$ h3 S; w( q: r& g每个虚拟机都会有一个XML配置文件,包括:: n ^( \0 `# c# M0 O$ K( i& c
— 虚拟机的名称、内存、CPU、磁盘、网卡等信息' t6 N6 f# u& m. p. @- I
修改之前:
4 f# e# H, K' ^7 \, U- _# vim /etc/libvirt/qemu/avpc.xml
. M2 w9 |, y7 {/ q7 [( ~$ S% p' ]1 q, f- x" H: { d
- q% V; A' v. n2 w c5 X0 ]% p4 F2 z* R% A# vim /tmp/avpc1.xml! u2 P6 r0 O1 b# m' G5 N' C- B
$ I, R, @$ L o* K
删除下图中的 uuid这一行5 v+ T l, W$ t5 U$ @5 U; |
继续在文中修改:内容如下:# A% `6 i% {# v3 x: {
37~43行之间的内容是手动添加的,其中红色部分时需要根据实际情况进行修改4 S' W8 w& `5 ^2 g
<auth …/>
! ^( c/ c! j# L* vusername:: P2 V h5 A5 C% }% `
# cat /etc/ceph/ceph.client.admin.keyring(在此文件中获取)1 J' l! i* T. l' K" r
$ Q( x/ m! t* G6 Zuuid调取:1 ?! H6 A e& y: y2 [
# virsh secret-list(之前生成的)5 `, M7 t v# S. }
<source ............/>( w( {+ X A% V) r- d
\& G8 v4 a0 q1 L4 ~9 Z; E0 V5 pname获取:5 o3 ^3 h/ i7 P* s4 b3 U9 Q8 F
# rbd list
' P% w+ M* T) W) {3 A0 c<secret type='ceph' uuid='90833f12-c0a1-33f3-92ea-09d37eec3ec6'/>% p2 Q, e8 t* x/ ?# N6 A/ w* f
//这里的uuid就是secret的uuid,有client.admin账户和密钥信息9 I" C; j3 R5 K$ v! R1 o- v
<source protocol='rbd' name='rbd/vm1-image'>8 \. g& t. d+ M& H9 U
<host name='192.168.8.51' port='6789'/>
* @- n. u1 Z& T; y0 @2 X </source>
+ X, ~' }' Q/ M8 ] //这里说明使用账户连接那台ceph主机和端口,访问哪个池和镜像
1 w' v0 K6 u% k" j, y. K7 } <target dev='vda' bus='virtio'/>
+ c& X5 M3 y) N" k7 m! x* T ~ //这里说明经获取的镜像,设置为虚拟机的vda磁盘) J5 B0 r! k$ g7 y
) q0 A1 e1 u- F x M% M根据配置文件生成虚拟机
$ c2 w B) b' d4 J使用编辑好的虚拟配置文件/tmp/avpc1.xml 创建虚拟机
2 q5 N3 F ]6 \+ H% ]4 z& h8 `. R* ^#virsh define /tmp/avpc1.xml9 y. E! B( f2 `) Z' R7 u
$ H4 R; h/ O L+ z* b8 I定义域 avpc1(从 /tmp/avpc1.xml)
" u% a! O$ i' B; K: R& C3 U0 V# o# t! `2 K# virsh list --all. G. p) ^$ v; z. Q
- g! e, J) [: E! G
/ O* ?* `" b' |2 ~+ Q- c
分布式文件系统存储
& B1 c: k) {) l6 O& ECephFs—— 分布式文件系统(Distributed File System)是指本地文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连9 P% V+ s i9 F1 B" p: \. E& Q. k
CephFS使用Ceph集群提供与POSIX兼容的文件系统5 F! b8 F' x: y0 |, k7 X" s# J
允许Linux直接将Ceph存储mount到本地
" v4 O1 i- Q4 x5 F( K环境准备:新添一台虚拟机node4; m2 \3 G3 z$ O9 Y) p% j
/ S2 g2 m2 E8 h |8 x1 ?# N- m
元数据服务器! p5 E9 e6 P9 `* L- M
— 任何文件系统中的数据分为数据和元数据7 w t8 q3 K) G7 T$ ^7 v4 x& h, q
— 数据是值普通文件中的实际数据! k4 }2 w; X8 F: K# L! u4 p
— 而元数据指用来描述一个文件的特征以及文件数据快的分布信息2 {7 | c7 C" G8 A. R4 P
— 比如:访问权限,文件拥有着以及文件数据块的分布信息3 m* e" a) O% N' J3 D( T# T
— 所以CephFS必须有MDSs节点, y0 B1 G$ {0 v9 u: M) a) t
部署元数据服务器:3 `% Q3 N5 S( b
在node4上装ceph-mds软件包1 f7 E6 l3 w' y2 }( G
# yum -y install ceph-mds
- J3 d3 ?1 A$ B7 z! i# Q( ?& l. F* c9 n
在管理主机node1上部署节点(创建数据服务器). d9 Z3 s9 Y( G7 D
# cd /root/ceph-cluster/ //此目录是在部署ceph集群时创建的
, W! I7 k; }# B$ s# ceph-deploy mds create nodex //给node4拷贝配置文件,启动mds服务器
9 U' N( O. w9 j+ l- L; s8 z6 D3 x# ceph-deploy admin nodex //同步配置文件个key3 f( ~, J+ ^ d
$ p. }% {6 R9 [: \' @9 d( o创建存储池
g1 ]6 p6 o- J, }0 \; U2 K: u# ceph osd pool create ceph_data 128 //存储数据的池
) P& S `& D, e5 M i7 l4 A# ceph osd pool create ceph_meatedata 128 //存储元数据的池* \% f, p7 X7 N4 I1 i! n( C1 w- E
4 z, i& d7 |- e* P9 Y) \/ h
使用前面创建的池,创建文件系统myfs1(名字可变); x6 Z9 Q1 v0 ~: ]
# ceph fs new myfsnew ceph_meatedata ceph_data* X! m0 K8 Q* O/ l( H2 z% F; r/ k- g
+ s7 v, I2 B, K* C; Y2 m B
//先写medadata池,再写data池,默认只能创建1个池,多于会报错
# _; M; O, D& J7 A2 C; @* d( i; Z0 x. Y
: u" }. K$ M, m" m$ g
, |& v# e; B* I+ T |
|