找回密码
 注册
查看: 4524|回复: 5

通过KVM创建openstack镜像的过程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-11-1 14:10:46 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 5 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-11-1 15:57:28 | 显示全部楼层
glance image-create --name CentOS-7-x86_64  --disk-format qcow2 --container-format bare --visibility public  --progress < CentOS-7-x86_64.qcow2

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-11-1 17:38:17 | 显示全部楼层
virsh destroy SAAS001  强制关机 virsh undefine SAAS001  删除虚机

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-11-2 15:48:59 | 显示全部楼层
要记得虚机的网络配置文件,修改成DHCP的方式,这样创建的虚机才能自动写入IP地址。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-11-2 15:52:58 | 显示全部楼层
# virt-install --name=CentOS-7-x86_64 --os-variant=RHEL7 --ram 16384 --vcpus=16 --disk path=/usr/src/CentOS-7-x86_64.img,format=qcow2,size=20,bus=virtio --accelerate --cdrom /usr/src/CentOS-7-x86_64-DVD-1511.iso --vnc --vncport=5903 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio  --noautoconsole

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-11-10 18:07:16 | 显示全部楼层
安装一些自己需要的工具. R, p1 H" O" c1 x3 K8 S
000_添加自己的内部源,没有的同学,跳过此步骤即可;3 H1 F2 Z9 M/ F2 `: P

" l) b: b& ]$ f! ~; S1 l001_这里我只安装 cloud-init 、acpid 和 jq, i  d4 }. c3 ]( b4 y2 B7 W5 E
acpid服务作用:重新引导或关闭实例' J3 E  B% S# M7 r8 L3 G
jq 服务作用:处理json数据  s$ N- K6 @; k" y% B# _) X2 M! L
cloud-init服务作用: 配置使用metadata(我把官网的简绍截一下图)5 m' A0 Z8 M8 ~) E# k$ Z  \
5 `, S. T. Q" S; l+ A

- J; A1 E6 h4 ]) u2 D  D. |7 X/ K  H  }% w5 d3 h- b; q
" y) t3 h! \4 K% T7 ~& ~

8 e4 t3 C! B  ?( @& ~/ K7 S& k1 a! b' g% N# h9 r
[tr][/tr]
5 [- s; u5 ~! [- {$ i[tr][/tr]
yum -y install acpid cloud-init  jq, _; [  |( d8 W% s
: e2 N$ S  S! K  |
chkconfig acpid on
$ G; ]. }4 K& X" O/ U) c' w) V1 k' G0 t; e, U7 [+ M; y* N
chkconfig cloud-init on, |' K% m( F9 }( J  s) Q1 D
2 {  w2 f/ D& j) k& X
echo "NOZEROCONF=yes" >> /etc/sysconfig/network

+ k; i( {0 M# b; v" P& ~
! ~5 v) k( @2 L5 p002_修改内核参数,并更新内核配置
2 ]1 r: y- x$ R  K: _[tr][/tr]* _0 u) \8 _3 X0 [- F) V
[tr][/tr]
sed -i '/GRUB_CMDLINE_LINUX/ i\GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"\' /etc/default/grub
% O, U8 s; Y/ {% H; n" Q4 k, m0 R! L
" l0 V( K3 e' }- T+ }' Ygrub2-mkconfig -o /boot/grub2/grub.cfg

) Y& P; K9 a; C. b0 u
8 b7 g; f( |9 P' e- _: V5 {003_修改cloud.cfg配置文件 这里,就直接把需要修改的地方用 红色字体标注出来啦,当然也会把 替换的命令贴出来
. o6 w9 ^9 M3 m' @& V5 z[tr][/tr]
  y$ Z- g% y( ^) t2 K+ ?  O* T[tr][/tr]
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg/ f9 z1 i+ I: Z
sed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg% O: ]+ X8 T  c9 p/ A) s2 l+ `
sed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg

3 W0 I" V6 Q- L. y3 Z- j( Q1 O& ?, E7 i1 w0 n. A' V, i1 m; J1 R
下面编辑 cloud.cfg 部分仅供参考( U3 }( B# g7 z6 j) y9 a
vim /etc/cloud/cloud.cfg
% M8 t8 W- t) J! [, y" D* l
users:; R8 Y0 V2 y& J( D( c7 N) z
- default4 I6 y7 c2 @4 S) b+ o" u* g, j( r
4 B" |! F8 S3 f. [3 Z' g% v5 U
disable_root: 0
' J5 y5 x$ f# M! A" p9 fssh_pwauth:   19 r: b6 |+ O' n9 `% I& t( c
! x# R7 P' {% s$ j: s! M5 M
locale_configfile: /etc/sysconfig/i18n
- t! |4 ~4 a7 r6 U0 tmount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
* g. A6 Z: _9 `; gresize_rootfs_tmp: /dev
0 [6 E5 W3 E5 Zssh_deletekeys:   0. x& R: Z+ o5 t! t8 z- ?6 G( p3 y
ssh_genkeytypes:  ~
' C3 \! |1 w+ M0 ?syslog_fix_perms: ~
/ E0 R: b( I+ w" C, u/ k/ ~4 l" K6 p5 N# I2 _; W: J: K0 @
cloud_init_modules:
. e/ h1 e' J# _; U - migrator
# g6 f4 `, Z1 d9 d; Q7 e - bootcmd/ T3 _$ E' G. j* y. K4 O
- write-files
7 t* ~; @0 x3 s5 t* y6 f& E3 {+ e - growpart
; g/ g. T! M( L" v% Y+ Q+ `8 ^ - resizefs
) |. L9 t) R3 f$ l/ w( n% _# j - set_hostname
5 v$ ~  f0 X3 L5 g6 W. P. q- H$ [1 A" x - update_hostname
) Z% p. ?- }& Z  V - update_etc_hosts  G) F9 g' _/ [: p
- rsyslog! `) _4 L3 y: ~9 F+ Q/ g' x
- users-groups  t* V5 Q" S. L; D
- ssh
& E( n2 M) i0 D. f, P6 x  Z6 Z1 E
6 g+ u) R7 U- d( U- |/ \cloud_config_modules:0 D! v3 S$ H0 \* D- c/ h$ b& m% \
- mounts
7 P& c9 C: ]; t6 q9 \, b - locale8 g" C$ a6 \5 \) @6 s- X  L' }
- set-passwords0 c0 i" B% j. x% f* {/ O
- yum-add-repo
5 S' F% y- c  z3 q+ h; o/ d - package-update-upgrade-install
* p0 k/ J- R$ M" `3 T; x4 D- n. p( k) L - timezone
2 S* {; C& [0 Q+ i3 g  b - puppet2 I3 v+ Y8 n; `+ a2 D7 ?
- chef
' U+ g* k- W9 {% G) x2 s  q - salt-minion
  i3 I7 ^1 W- V% O: W - mcollective/ M2 O: {* D% }6 z; D& @
- disable-ec2-metadata
3 j+ X; i! u+ b' ~9 j- J - runcmd
3 i$ @2 n9 B+ A  ~3 S% i+ p0 Y- Q- m! ^' Y
cloud_final_modules:
9 p2 A! T2 q7 U% R& t+ |' H: w - rightscale_userdata
7 p  C2 r. v9 z0 F - scripts-per-once
! Q- W! ]5 _3 I$ t- h# L - scripts-per-boot% r1 o8 P: J* `# L7 h% V
- scripts-per-instance
8 y3 {3 r  j' I8 i! \4 J - scripts-user
' r. F7 w" j& y) y - ssh-authkey-fingerprints- {1 x2 s! s$ E$ `4 @
- keys-to-console5 v7 [$ L, N& r# p% {* O$ Q" j2 f
- phone-home
, B0 k! L9 H- W4 _) d  C - final-message
, G) q$ M- l" D& ]4 A4 E* m, h3 D, T4 A- P' z/ m9 F# M
system_info:" S, h; ~: v& j4 x0 N
  default_user:
  ?$ q5 G* h3 Y1 G+ [9 a, g$ M. t+ q    name: root/ V% l4 }( x1 j1 l% x) k8 J
    lock_passwd: true9 U: \3 Q/ k( j' b. P$ s9 a
    gecos: Cloud User0 f% J8 E" o. L) y; A" ]
    groups: [wheel, adm, systemd-journal]
( O6 O$ c* [! k& F2 i2 V. N3 m  U    sudo: ["ALL=(ALL) NOPASSWD:ALL"]* s- J2 M% }% v
    shell: /bin/bash8 A# X. S, I/ B: w" y* @! \
  distro: rhel
7 g: {/ G/ Q( R8 {- G; m! C  paths:
2 k+ n% I# Y9 F0 }2 G7 z    cloud_dir: /var/lib/cloud8 y8 G) n( P3 B/ A
    templates_dir: /etc/cloud/templates6 @6 ~2 m/ }- v+ i3 @, I
  ssh_svcname: sshd
/ |) t% ~, ]2 E' \* n2 W* I1 a
+ Z$ B% r/ ~' |4 d+ V# vim:syntax=yaml
- O& Z) d- t( {0 H9 U8 a3 \
1 x) q0 f; e: [. r

$ y# A2 U; `/ Q9 v$ G; j004_添加修改、重置密码的脚本(这些操作均由下面的脚本一键执行添加)
& q- f$ j! _& D将下面的内容复制到一个文件,并赋予执行的权限即可  自动添加写好的服务脚本,并且自己添加为开机启动,还会把 /sbin 对应的文件加密
. {; N4 B/ N1 E3 n
# c% r9 D6 M9 U& Bvim meta_centos73.sh
/ D& A) X( `1 [: L8 L( d[tr][/tr]
0 G% i5 F& k% y# D, N+ \) h- M[tr][/tr]
#!/usr/bin/bash
8 I# X- A! c' \" S* Fcat > /etc/init.d/meta_data_service << END
: E1 H9 o4 L2 C0 O) Z#!/usr/bin/bash: C! n6 k5 ^0 Z/ k. e( o& r
#8 o" S& |8 D6 r9 S  H
# meta_data_service Start up meta_data_service the server daemon' e" u* w0 i6 c$ O7 Q. M$ s! F
#
: F0 g4 Q) C* N1 M' v# chkconfig: 2345 98 98
( I* s' B! H* m# l# description: meta_data_service sspaas-cloud daemon
" K: b# m$ ~# V2 ~% y0 Z$ G5 l6 m#
# T( {1 b" i1 |% g9 U' N) IBASE_DIR=/sbin% y9 O! S! W8 `
ARGV="\$@"$ ^% F$ _/ f  F# [' [2 E
start()
+ m, M  M' b4 D0 m{0 a6 O- B" i" M5 B( U
echo "START meta_data SERVERS"
/ ^2 n8 z9 X# f* H8 r\$BASE_DIR/meta_data > /dev/null 2>&1 &
1 i- @0 W5 f) s2 O% M* m5 Z}
" g5 H4 @6 w6 Kstop()  \5 j' ^2 t4 X
{ " S. f0 _* ~0 {, ^" O! f
#meta_data.pid
2 \# a' b7 A. A6 u; V) L& A* x) lecho "STOP meta_data SERVERS"+ t; y% e/ v2 ~! T0 u* V
meta_datapid=\`ps -ef|grep meta_data|grep -v grep|awk '{ print\$2 }'\`
  ?  u1 L! g. b5 V3 s& a/ |5 [for i in \$meta_datapid
3 T( z6 @1 v9 D+ ]do
8 o1 t0 @, n, ? kill -9 \$meta_datapid
! I' P/ }. p1 w. S/ ?3 ~" X1 Zdone
' U" X' Z; S( S- h: f9 `5 b' S" w1 o}
: j- @8 {( l+ u. S! O3 O. F7 M9 A3 kcase \$ARGV in
# @  Q' O6 n9 j$ [/ s- fstart)
# |- ?; ]7 f6 C- b7 s# v& pstart
/ r" _! r8 Z: R0 FERROR=\$?; I/ l1 }4 |6 ~) @& E
;;
3 E! `9 C  K5 A/ s" }, T0 I7 |stop)6 E3 o; j3 s" v% z+ V5 z$ B
stop6 F9 e& s! N2 ~# b, f: W$ F" g
ERROR=\$?; R2 d9 u/ s) B: _& Z$ r  M4 U% N
;; 1 b: _" t; U+ K- {3 n' o( Y3 k8 S
restart)
# g3 h2 G2 }) `8 nstop
3 r3 \! @/ n" N  d/ |2 F, Istart7 s: |8 F3 l9 ^7 M& H4 R: q6 B
ERROR=\$?  t( C+ z: V; `8 y# r
;;
8 S  j, u* F! ]- g# L*) 8 ~1 Z. f) x7 c8 ?0 t; P$ A0 z
echo "meta_data [start|restart|stop]"
. o2 G6 n/ B  }& Q; Gesac+ v4 o( Q  M2 \2 \
exit \$ERROR
$ M# b' J( `- l5 |( C5 E5 _END
0 V* f- K& }$ S" n8 M  f' R. m
5 A  ^" Z' {  N3 e! b/ xcat > /etc/init.d/meta_network_service << END" w  E+ Q! H3 C0 u2 k5 D5 y
#!/usr/bin/bash! P) F; R3 K3 n( e) ]* J9 V
#
8 |7 s% W. l' E5 A( p+ c$ h* U# meta_network_service Start up meta_network_service the server daemon! j, z7 ~6 b; D% _
#
/ R+ L, ]; Z( S" }4 _4 m  }# chkconfig: 2345 99 99
# R) E4 n% p5 y/ b+ |# description: meta_network_service sspaas-cloud daemon
* n/ L# k" L5 |8 }( b#- B/ U" \+ C1 Y5 Z+ C# v  `
BASE_DIR=/sbin
: @8 \7 S7 P" A- I4 K+ EARGV="\$@"
4 @8 U: |( T' ~, H0 G5 f/ D& ?start()# D" F- X. f4 z3 x
{
0 v1 W4 r9 r/ K& E' W8 P% Zecho "START meta_data SERVERS"
: L) L4 r7 v  _% w4 J" s0 ^\$BASE_DIR/meta_network > /dev/null 2>&1 &
1 g. J/ U1 d& @2 U: n# M/ Z}, I+ J( {  p3 u4 k8 I
stop()
# k0 [0 Q. ^- u; H{
% O' E: \) N" e/ T#meta_data.pid( b; r7 l: p* h* `  h1 D
echo "STOP meta_data SERVERS"
7 s" u% T( {* \; I" }meta_networkpid=\`ps -ef|grep meta_network|grep -v grep|awk '{ print\$2 }'\`
" v, D, g" s: P& L8 Z3 Jfor i in \$meta_networkpid
7 d2 U6 L! _- D: Q  g# [  Kdo+ a; Z( R6 \; ]4 b6 Q! P
kill -9 \$meta_networkpid/ A; Q% n# q, K, U  ^  Y
done
" a6 W/ d  Z8 `6 q}& |! x  \, }6 X
case \$ARGV in1 m9 e( d, ~- S  L% s8 h) s( y
start)
  Z; \& w8 ~) ^9 i+ g5 pstart$ {8 M, e0 Q. Q5 g
ERROR=\$?# P8 b/ U) g8 c& ~$ p0 O
;;
2 y* Z" e0 ~9 u# O; ?stop)4 o8 A5 o0 I  V8 V" V1 [$ c. t* A
stop8 J0 }: ?9 ^0 b# f1 e8 u
ERROR=\$?7 d0 D6 \* g0 {( v  ?6 u& L7 z8 d
;; ! |- e$ K' G/ K. g4 p8 U3 J
restart)3 F1 T3 Z; R! L  i" G. }2 {
stop: s9 a$ {7 O; e6 [
start
, o. ?- @* Q7 b& U6 }* xERROR=\$?
+ z* a5 @% I6 C, l2 D. X;;
& q$ d* L. x$ C4 n7 A- V*) + |/ V9 z$ h7 a/ j) q1 N
echo "meta_network [start|restart|stop]"
1 }) B/ Y$ c+ k( z" sesac
9 D7 M' D0 d/ I* n! g7 n7 Uexit \$ERROR% |; |" }; t* l. o5 x/ f* }# C6 ]2 d
END$ t2 g0 i+ r& b- a

  x* k9 ]4 L4 J& J. ncat > /sbin/meta_data << END# X9 k4 y7 A' H. s+ j
#!/usr/bin/bash1 X$ g/ h( a7 ~& D9 b+ m3 D
m=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`7 Z  }  [3 L9 L. g
   status=\`echo \$m | jq '.changePasswd' | sed 's/"//g'\`% T; ~+ K" L" [- L8 N6 ^. C& {
   password=\`echo \$m | jq '.admin_pass' | sed 's/"//g'\`
* x8 m8 }) ?, f. G     if [ \$status == True ];then. G, F9 y+ P* _1 p" C1 ~1 y  s
       echo root:\$password | chpasswd* v- b* b, ?3 _# S5 s
     fi
. }- d. y$ `% g% j8 [
+ A. _" t5 A' c' wwhile true
2 |" g2 j3 C9 g, |1 p$ t' N  do5 t' [# n9 }2 E& k+ O3 ]
    m1=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta' | jq '.changePasswd' | sed 's/"//g'\`
. r- p! m8 K5 [! [: r    sleep 3
# q8 k! l9 v  j+ C) ]6 u" y    m2=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`4 p0 l( i. z5 l/ T' [+ U% w
       changepw=\`echo \$m2 | jq '.changePasswd' | sed 's/"//g'\`3 S2 F, s* z. e; S2 K2 m
       pass=\`echo \$m2 | jq '.admin_pass' | sed 's/"//g'\`
" g/ N; j  S& e+ V, V: D/ R8 d. o) F4 u, [/ A: u6 ^- R1 B
    if [ \$m1 == False ] && [ \$changepw == True ];then
4 E% n% [. _) k  T5 M  V! G8 n      echo root:\$pass | chpasswd
% R' q1 r* l: d9 w, V4 k    else
; E- t0 H0 s0 b* A( [      echo "noting to do" >/dev/null
, w9 y+ M# B/ Q    fi
6 V) H! M+ s, t4 m4 q( L- j  done
- _: h* _* e' b% OEND
; ]9 b& Y% B6 ~8 U
; W4 U1 `9 l6 z, K- b0 Mcat > /sbin/meta_network << END( s' Z$ }7 G3 H
#!/usr/bin/bash
# E/ ~5 \# D+ [6 B  a0 V, Hwhile true
! F' l& ^3 Z4 L4 h  I1 f) C0 W* w  do
( ~: L6 L2 j7 h7 D! F     temp=\`ifconfig eth0 | grep broadcast | awk '{ print \$2 }' | awk -F "." 'BEGIN{ OFS="." }{ print \$1,\$2,\$3 }'\`
. B5 D6 Q& l, N$ R( B     ip0=\`ip a | grep eth0: | wc -l\`
/ C9 O5 m' e. v) K     ip1=\`ip a | grep eth1: | wc -l\`; J3 _7 Q8 C( b% m6 j5 C! F
     route0=\`route -n | grep "^0.0.0.0" | grep \$temp.254 |wc -l\`
( l& F  n- B2 O9 q( h6 U9 a! W, J, p( l( F' Q
     if [ \$ip0 -eq 1 ] && [ \$ip1 -eq 1 ] && [ \$route0 -eq 1 ];then- t2 T2 ?& V" S# |+ X; R2 ~3 [
      route del default gw \$temp.254
! h. M3 [  Y' E7 M% Z     elif [ \$ip0 -eq 1 ] && [ \$ip1 -eq 0 ] && [ \$route0 -eq 0 ];then
5 x2 i7 b$ u( Z, j8 G/ C. A+ q      route add default gw \$temp.254
3 L, F3 j3 E% Z8 u% T2 k0 ^     fi: D+ Q3 `" Q( f/ Z9 p
  sleep 35 {) z: F: l" u# }
  done3 C2 L1 E5 W6 Y- U9 r
END8 q% A" _. G! M

" E$ N2 B$ a6 Y4 [) vchmod +x /sbin/meta_data. j. n, L, Q. Q; F5 Z3 }6 Q! h
chmod +x /sbin/meta_network1 H& b6 j& B- W* f2 u
chmod +x /etc/init.d/meta_data_service
4 a% I( l- D; l* `, P  Zchmod +x /etc/init.d/meta_network_service1 m& I! Z+ m: e  d( k
#
2 [  S3 s6 ]# V# n" M/ Ugzexe /sbin/meta_data
4 M" n# f4 r0 d) g, V2 nrm -f /sbin/meta_data~
+ Z" [. W' ?8 m( D0 s4 `, G0 egzexe /sbin/meta_network ; V0 z1 e/ A) C. b$ D
rm -f /sbin/meta_network~ + T, {6 {8 h; ^* i- ~
#1 _# `! ?: B  ~4 G
chkconfig --add meta_data_service& [: A7 L" b9 @
chkconfig --add meta_network_service

) ~  x! f0 w* M4 ?! O1 k( O' [# F7 `( K& Y! e! R* F/ i
下面 005 的操作仅仅用作删除上面meta_centos73.sh 的执行结果
, |  z$ X3 T! ?# N  O( L5 N. @1 \- y005_删除上面脚本添加的内容,可以执行下面的操作7 \3 Z! W% C4 B" S
[tr][/tr]+ \! U" j! {$ h) ^' [8 h8 U
[tr][/tr]
chkconfig --del meta_data_service
5 z" Y+ h/ _/ g* X9 t' c9 ~chkconfig --del meta_network_service: Z, `* g: F6 f' Q
rm -f /sbin/meta_data& h# i+ n2 O* P% I
rm -f /sbin/meta_network4 o! p0 G) J( A! C9 x, r
rm -f /etc/init.d/meta_data_service - a; N! H5 N' X
rm -f /etc/init.d/meta_network_service
; O6 h2 j- y2 N  h+ l( ~: ~& P
7 f2 r* N* K8 y* P% B/ \! b& N, M# g
006_删除之前添加的不必要的信息+ t0 z5 m" t1 ^* l: N
[tr][/tr], N9 W0 E' w2 f- N
[tr][/tr]
rm -f anaconda-ks.cfg
/ ?5 R/ ?  K% Q: h  Frm -f meta_centos73.sh

/ \9 X6 x/ \6 k8 j$ u( |
" G; t: l; @& w1 d, L007_关机即可1 V2 `$ R, i9 X, p8 m3 |
poweroff
" |. t  |3 g6 l: @8 k: y. X; j
1 s9 o. H6 ^: N' E, M. Q* G到这里 openstack 的centos7.3镜像就做完成啦" a* ~% U* l8 T8 V+ j. j# h
下面的操作,主要是吧 大的镜像进行压缩,并进行上传,下面的操作均在做镜像的服务器(宿主机)上操作' R/ H. N1 t% ^! e

7 r: S" m# C; h# e三、技能扩展:
. v# j# j  t8 s4 e$ X* e2 b' d# ~! T$ \, e/ C
001_显示kvm中所有虚拟机
5 b- v9 \5 B6 m* D0 M( Nvirsh list --all% {' L6 o- w* n0 R, S* w4 a

; T7 {6 w( y! b! t3 J002_执行清理任务,如,之前的历史命令,mac地址,ip地址等 9 S8 C) ]7 p1 |
virt-sysprep -d CentOS7- q' A  t" n1 n6 S; ~

' w' h/ f2 Z, a003_在kvm中删除虚拟机,仅仅删除xml文件,不会删除镜像文件1 I/ p5 D5 i$ A
virsh undefine CentOS7
) X0 `; J' R+ d' P* H8 F& B+ i' Q
004_将镜像压缩
; M" x  X6 q& [4 G. Z& `) zqemu-img convert -c -O qcow2    压缩之前的路径+名字 压缩之后的路径+名字/ }: T: L; L) Q+ e& J5 `8 g: N# }% I

6 I+ Z' Z) W; ]8 n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:24 , Processed in 0.019955 second(s), 25 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表