|
|
当我们需要扩展模板镜像的虚拟磁盘大小时,比如原来的虚拟磁盘大小为20G,现在我们想将其扩展到30G,那么我们可以根据如下步骤来操作。
' n6 F; y H. q- Z+ d% _
# o" |/ H6 \' ^# E整个流程可以分为三个阶段:6 r& `# P9 G4 V4 B6 k1 H2 |
( P* s1 z' [' k% {5 ?3 Q1、扩展KVM镜像磁盘文件大小到30G。% p- X& f% b n. B; A
! X2 r1 R4 \2 ~: ?- q X) I2、扩展磁盘分区大小为30G。6 k6 s$ B4 m- ]1 T3 T
! ^ D* {7 `, i6 ]9 O3 T3 s1 `
3、扩展文件系统大小为30G。1 f3 z; m" P& U& c1 n: l
7 q% j0 ^* E/ y4 r假若当前有一个名为 test_extend.img 的模板镜像,其格式为 qcow2, virtual_size为 20G
% h9 g+ D; a4 b0 K2 T$ p( H
8 h$ ~) j. j- Y. `' Q1、首先可以使用qemu-img来查看该模板镜像的元信息:
- r) J, E, l4 I" v1 z2 E
4 a# O) C, k U. ]2 }1 S, P) C* D复制代码
) x: S% R4 @6 J" U* d; g) froot@# qemu-img info test_extend.img / g: s; @7 ^" Q* y0 {$ ]
image: test_extend.img
+ M8 E1 i/ g2 D+ afile format: qcow2! |! ~! K8 c/ _# Y* E
virtual size: 20G (21474836480 bytes)- J$ _2 i* A9 L/ C' H1 {" R2 t
disk size: 309M" i/ G5 e5 D4 l) e8 g8 R& M9 P q1 ?
cluster_size: 65536
9 B" p' o+ y/ E3 n2 c# c: s+ uFormat specific information:* v7 o, E, H3 F) l+ c
compat: 1.1
, h6 M# j0 j" Z6 y7 ]' O7 o4 q lazy refcounts: false
; j7 `. j4 y8 w, n0 H4 Iroot@ #
6 b4 C T4 l. P3 I+ p复制代码
+ B8 N! h4 x' |2、由于需要使用到qemu-nbd,因此我们需要先确认nbd模板已经被load:
8 \5 H, ^9 }! z# [1 U" z* \9 d! |6 c9 \1 z0 X6 ~) I& ^ D `" a
root@ # lsmod | grep nbd
0 i1 o" X* l$ O5 Oroot@ #
3 F; [ R$ N2 E1 w- \ 执行如上命令发现没有任何输出,则表示当前系统并没有加载nbd模块4 x& r6 D! ~& q
% I9 S% x1 f0 a/ ` ]* L. z" J
3、加载nbd模板,并再次确认(若没有nbd模块,则可以参考这里进行编译安装):
: d& a3 R, h5 N( u) v# }2 w0 U) T- e" w) q" ?2 h+ l/ |
root@ # modprobe nbd max_part=8
% Y6 Z8 ^; G7 u0 N) Vroot@ # lsmod | grep nbd" B3 G6 q4 ?2 D* ~
nbd 17603 0
/ Z- b0 q1 q- d% hroot@ # ' a- j% S* ?+ A8 i& C0 @% u
此时nbd模板已经正常加载了! \4 S0 l' q+ Y8 H
6 P1 }- a0 T3 ?- E- a& F/ V$ }- R8 t/ o4、通过qemu-img命令来扩展虚拟磁盘的virtual_size为 30G:1 M) d) P0 @" m* @8 w/ z7 `
: a9 E+ ]0 v5 ]% t/ [5 l% I复制代码$ n7 W$ q) M- C1 c4 u
root@ # qemu-img resize test_extend.img 322122547209 a% v% ?9 M* g/ X5 n2 S5 u ]8 D
Image resized.$ d0 E3 @2 Q3 c/ y, e
root@ # qemu-img info test_extend.img ; j6 E- L5 Y+ D: Z+ c
image: test_extend.img
$ \! M5 D- o( q" p6 f% wfile format: qcow2
4 A! H. i+ F) Kvirtual size: 30G (32212254720 bytes)
6 j/ C8 ~# S! @* |7 E; g2 Ndisk size: 309M- a: O$ s7 G& f) v$ u' i* e
cluster_size: 65536
; h# o ^9 ?* L4 Y+ y/ Z dFormat specific information:- B4 Y8 H* r3 w( z- B/ s0 x) w
compat: 1.1* G* e( t2 q9 Z3 H4 E
lazy refcounts: false. o) ^/ U0 A$ b! s3 A
root@#
. y2 ]$ \$ d O
1 i% N1 ]9 q, I8 F7 y: @3 d7 N% t3 B) @% R
5、下面通过qemu-nbd挂载test_extend.img到/dev/nbd0设备上:
0 U8 t1 @. d, X( K% [# B3 u/ `+ m! d8 {" I7 m' i
root@ # qemu-nbd -c /dev/nbd0 ./test_extend.img
/ j9 r& _! w! D3 W$ T! {5 Droot@ # ll /dev/nbd* | grep nbd04 `9 y+ `( R" P1 l M
brw-rw---- 1 root disk 43, 0 11月 20 18:09 /dev/nbd0
3 k* S1 r- r9 q& n' c! D. _brw-rw---- 1 root disk 43, 1 11月 20 18:09 /dev/nbd0p1
* @2 m7 d- t! y$ u0 Wroot@cason:~/image# $ ^3 s) K! B- Q8 M
挂载成功后,在/dev/下会看到如上信息,其中/dev/nbd0p1表示该虚拟磁盘仅有一个分区8 n2 B' V2 d3 v# N
; |1 D; H& Z5 W% f1 D2 d; J6、下面开始通过fdisk来扩展虚拟磁盘分区大小:6 D6 l' B8 f+ V+ q5 z" Q& p
$ g) k3 @7 U6 w/ m6 C& v# ]复制代码
& l0 L) R# n' @+ {root@# fdisk /dev/nbd0
2 f% \6 Z3 c- u* G( r6 t+ k7 I+ U7 e: @5 K% o* t( |' G3 T0 `
Command (m for help): p0 f: o P( k; ?0 A) Q
) M; e4 X. ?6 ]+ v1 [
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes, H* E: g' V4 p3 | \& o# h& p
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
- ]0 t; I4 ]; A+ xUnits = sectors of 1 * 512 = 512 bytes
( m. b. J! e3 x; X fSector size (logical/physical): 512 bytes / 512 bytes: c+ J9 X9 C E9 z/ P$ C
I/O size (minimum/optimal): 512 bytes / 512 bytes
+ K! `7 b: p$ E4 v* u- |4 V" pDisk identifier: 0x000e8e8d1 m* O! P: U5 j5 [
" I+ Z3 F' c3 l) \' n* j Device Boot Start End Blocks Id System
. f: I1 K% t( D/ c% S/dev/nbd0p1 * 2048 41943039 20970496 83 Linux- M9 N& g) S" x6 ^; b3 e5 D! U4 c
; j' n% k: _( x2 cCommand (m for help): d4 W# d: s0 {( d6 p- k3 Y- G1 E
Selected partition 1. A* p2 k8 D; h' x p
; _% f& C6 o: q/ o
Command (m for help): p) L4 Q1 _, \+ }7 g2 C3 r
6 h$ U1 B* p+ N
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes
8 J/ ?9 X6 A+ m: N, C7 D) P8 I255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors; N% z9 [6 D8 ~8 q% k7 U' K
Units = sectors of 1 * 512 = 512 bytes% L& _5 x0 F- h, P9 x, i
Sector size (logical/physical): 512 bytes / 512 bytes8 j- E' m. n W) f3 t% ~
I/O size (minimum/optimal): 512 bytes / 512 bytes: r- y# ^. F( r
Disk identifier: 0x000e8e8d
N! h( a8 n' T. A* J$ r( z7 f* \: r) ~/ b+ B% v
Device Boot Start End Blocks Id System
8 p. o$ i$ l. J# D
8 L0 v/ W& X: Q' I Q9 bCommand (m for help): n% P! a8 h+ k7 y8 D2 l' F
Partition type:
# }4 D1 o$ N, w p primary (0 primary, 0 extended, 4 free)
. R+ ]. H; k/ c, q( ] e extended! R# m; N9 J0 f. d
Select (default p): p
2 n; i# t8 f' F, g; KPartition number (1-4, default 1):
- |7 g3 r" w6 I* O, I O' v- E: \/ wUsing default value 1
9 S! U$ f- \. m( h8 F. tFirst sector (2048-62914559, default 2048): * |3 {0 X. @& B. v6 w! e
Using default value 2048
! i% i9 n) y, _: M2 j+ m" X4 OLast sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):
" M$ j( [1 s8 {9 b/ P6 i8 ]$ rUsing default value 629145591 K2 k: m+ Q% w
, b [: X8 [+ D* k; iCommand (m for help): p
# X" ?# ~" Q$ E: S
- Q- @& {$ W- h2 Z) d7 r, l% r. cDisk /dev/nbd0: 32.2 GB, 32212254720 bytes
' D- H, f8 ^% o. k# J) l255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors' s# a- b- v7 C( N L. [+ `% E1 p
Units = sectors of 1 * 512 = 512 bytes
! f8 C* `6 @4 s# C9 S# z( c& CSector size (logical/physical): 512 bytes / 512 bytes% L1 _4 e7 {! ]9 K( }/ g a2 O5 o. ~
I/O size (minimum/optimal): 512 bytes / 512 bytes
* v$ Y2 j" F" @; U$ U# j, uDisk identifier: 0x000e8e8d
5 }. d% v. s& E: \, E2 h2 y- t; y, _& o3 W r
Device Boot Start End Blocks Id System0 `; A2 L, U" q+ y. U( S
/dev/nbd0p1 2048 62914559 31456256 83 Linux
. y. Z1 v7 U H1 x& y4 V2 g1 y8 S# t7 \% d" k
Command (m for help): a; P9 m7 i7 [, D
Partition number (1-4): 14 A5 `" u4 L- x! n9 e5 G1 B; V
5 C9 x% C1 u5 p9 J
Command (m for help): p
* F5 v( k1 q" t- F) d6 H: p4 O9 X; j, ~1 F; b
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes# l+ O' ~- E+ d: U- C' f
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors" n q3 Q2 f1 z* h- {& X, {
Units = sectors of 1 * 512 = 512 bytes
" o* Z9 S {* K5 w: ySector size (logical/physical): 512 bytes / 512 bytes
) L- G( ]3 q8 a KI/O size (minimum/optimal): 512 bytes / 512 bytes7 I5 M, f# r" w; K' V. E" ]
Disk identifier: 0x000e8e8d$ C; l: G+ X4 B+ B$ X4 X5 k
3 \, t3 j( G+ J: Q Device Boot Start End Blocks Id System7 ^9 w4 `8 r8 C$ p1 ~" T4 X
/dev/nbd0p1 * 2048 62914559 31456256 83 Linux
% z0 o6 s7 @. s3 P9 D$ j& R( y# n7 z: z+ K4 ]1 H. [; ~
Command (m for help): w
0 h( g% Q$ O! F+ \5 i: W6 kThe partition table has been altered!& u& P- [: p0 ]- A$ L; m' g
5 r' x; w7 t7 z' s/ b: Q) `
Calling ioctl() to re-read partition table.; w, b3 s. f/ e1 y: z
Syncing disks.
2 ^6 u! c& Q) A/ p* Froot@# f$ O$ s- h$ Z" L, M" ]
复制代码
3 h' F a- m7 [+ }8 ~. k3 @ 如此以来,我们已经将该虚拟磁盘的分区大小扩展到了30G
2 O) a8 k" E; n* R" a3 P. g3 G7 Q' p7 J
7、至此,我们还需要将文件系统扩展到30G:( w: S7 g( j J# f
8 w4 G6 y5 x7 S, Z- }' D
复制代码6 ]5 W2 r3 W; b8 V8 d4 j
root@# e2fsck -fp /dev/nbd0p1
1 A0 O* k# a7 X/dev/nbd0p1: Deleted inode 131076 has zero dtime. FIXED.
3 Q$ S1 A! S- U4 F& w U+ Z/dev/nbd0p1: 18489/1310720 files (0.2% non-contiguous), 281286/5242624 blocks
$ k% f" p+ J5 A! r
9 i( A9 G, H+ oroot@cason:~ /image# resize2fs /dev/nbd0p1 4 E7 z9 ^" b* n Q3 R; _
resize2fs 1.42.9 (4-Feb-2014)
7 r% i* }) n# S* |, QResizing the filesystem on /dev/nbd0p1 to 7864064 (4k) blocks.. G' w6 ~# c! S- u
The filesystem on /dev/nbd0p1 is now 7864064 blocks long.- `& L* z6 `+ |6 J
1 W0 o% g8 W' K0 j) v# x0 z( broot@cason:~ /image# qemu-nbd -d /dev/nbd09 @; `9 s9 P h; @ R
/dev/nbd0 disconnected |
|