|
|
楼主 |
发表于 2019-12-30 19:48:01
|
显示全部楼层
当我们需要扩展模板镜像的虚拟磁盘大小时,比如原来的虚拟磁盘大小为20G,现在我们想将其扩展到30G,那么我们可以根据如下步骤来操作。5 E. W3 u6 n: l, E; ?& j
2 i1 Z- [: |+ A4 A5 U$ o* x, e整个流程可以分为三个阶段: \8 A8 L/ l* A& D1 W' i4 Z
2 ~* q6 N4 E9 Z; I1、扩展KVM镜像磁盘文件大小到30G。5 z2 B! W1 Q$ K" F
: Y. H, | H: d8 h Z% o% b8 ?" j2、扩展磁盘分区大小为30G。! L# x6 C8 I9 ~0 f5 g b
# I) Y, h! ^4 P' S. `' f7 T
3、扩展文件系统大小为30G。& J+ g" a$ z. n8 I9 e9 t( C
" \. L- C! t! O, V
假若当前有一个名为 test_extend.img 的模板镜像,其格式为 qcow2, virtual_size为 20G
( |9 S! s- K$ V; N4 a$ ~, D' Y- ~9 E; S, k, K- [6 U5 R8 D" Y
1、首先可以使用qemu-img来查看该模板镜像的元信息:
; s; ^9 w+ D+ f/ M: n4 \, d5 ^& J5 h: p. f4 s5 o% m
复制代码
; z3 e [' F/ `! a; droot@# qemu-img info test_extend.img
3 K; q9 ^* z9 N- y0 |, Ximage: test_extend.img, @. Z Y* G( M5 a: h& c2 C" e# N
file format: qcow2: V( |: x* [1 z5 W y! a j
virtual size: 20G (21474836480 bytes)
2 U! N3 c! _. L4 qdisk size: 309M
* {# H* v0 e% C+ b8 `cluster_size: 65536
3 n; W! c9 u+ O+ A& s. q/ tFormat specific information:& |9 X+ W1 h0 }2 p5 J- t
compat: 1.1! ~2 S4 ^) w) X, r5 p* F; x) i
lazy refcounts: false Z3 o) W5 @: K1 E4 a0 E
root@ # * J6 R1 W( f* [9 x \$ r. R
复制代码1 T: B9 X: }' I* k
2、由于需要使用到qemu-nbd,因此我们需要先确认nbd模板已经被load:
/ U+ H1 U: t3 Y- \8 d I$ A1 \7 A) G! W& F3 T) Y& Q/ n2 m
root@ # lsmod | grep nbd
6 z9 i! K( Q" V4 Kroot@ #+ Y$ H0 B/ z# F9 ]" K
执行如上命令发现没有任何输出,则表示当前系统并没有加载nbd模块
6 `8 R) v' L \4 J3 Z0 [
! E4 ^- P* e7 [8 v3 F6 e8 w. g3、加载nbd模板,并再次确认(若没有nbd模块,则可以参考这里进行编译安装):
- L3 V) W! {, w; k- I s
1 r3 K/ t9 T! jroot@ # modprobe nbd max_part=86 v) r c* n. a- s% e
root@ # lsmod | grep nbd0 |2 J: v6 W) w- r* ^
nbd 17603 0 1 `$ V% S3 c% x; N, @7 ]# U- S
root@ # , z2 X7 n6 M' d! g' x
此时nbd模板已经正常加载了+ ?7 ^- ]- ^2 O6 ], V; i! h B
: [( n! _6 H) C6 Q. F- x4 p4、通过qemu-img命令来扩展虚拟磁盘的virtual_size为 30G:
0 E* s# j* F" i: s" B/ Q3 N
4 P+ U' x7 o9 o% D复制代码
5 R4 w* D6 k Kroot@ # qemu-img resize test_extend.img 32212254720
1 G- M# i9 |8 b- oImage resized.: } T1 p e; F' z. G
root@ # qemu-img info test_extend.img 9 n- j& F R8 h# T
image: test_extend.img" r( X8 p- j4 d
file format: qcow2 _/ \1 v4 `, T V9 P- H6 }4 u
virtual size: 30G (32212254720 bytes). f9 f5 r" e9 T- y- ~
disk size: 309M
* m2 w% w. b- Y9 w( kcluster_size: 65536$ G# {: G; T1 B
Format specific information:8 m, Y9 d( t7 i! c
compat: 1.1! D4 H! A8 ^ m, |9 W0 z; G
lazy refcounts: false3 b2 P. O9 H; i. h7 x8 j
root@# ) O" x! P( p, S" z* p+ |
- |) L) p, h0 R5 @ o- {' c8 Y, R" b. e) x' ^, M7 Y7 f
5、下面通过qemu-nbd挂载test_extend.img到/dev/nbd0设备上:
8 O* J H% {- |( d' F) Z& ~! a9 h2 z# B _( |) X
root@ # qemu-nbd -c /dev/nbd0 ./test_extend.img 2 X" }# c S9 k4 X
root@ # ll /dev/nbd* | grep nbd0
# U) ?% o( q. s- Hbrw-rw---- 1 root disk 43, 0 11月 20 18:09 /dev/nbd0
: a* A, N7 q* I$ @+ \2 lbrw-rw---- 1 root disk 43, 1 11月 20 18:09 /dev/nbd0p1* s D: ~5 C4 n# D
root@cason:~/image# 0 {* }2 Q8 Y* Q6 [- L5 h
挂载成功后,在/dev/下会看到如上信息,其中/dev/nbd0p1表示该虚拟磁盘仅有一个分区
5 u; E/ D9 f5 P, k+ F% Z# x; q ?. O+ o
6、下面开始通过fdisk来扩展虚拟磁盘分区大小:
7 C# _$ a, Q* ?
F7 u2 z3 H" E4 A% c复制代码
6 C9 p3 _& }6 }9 ^root@# fdisk /dev/nbd0. E# i* H( E/ m) j! N
) l1 ^* e- L3 b3 H& E. T2 hCommand (m for help): p/ }/ [* ^# }9 R8 f! ^, o$ y9 t/ M
- K" _( r: l9 C) z1 W
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes( H" F$ `: A8 w) Y; S4 Z9 z8 A
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
. ~6 J( \( C: @2 c$ ]Units = sectors of 1 * 512 = 512 bytes. E7 L$ U' ?$ n; a1 l
Sector size (logical/physical): 512 bytes / 512 bytes
/ Y: }& f i/ {. r; Z- J) KI/O size (minimum/optimal): 512 bytes / 512 bytes
: C3 ^3 F5 B, w) u: V$ s$ c7 T" ]Disk identifier: 0x000e8e8d, O# h( i% D- ^, `6 d8 j
! z7 P8 n% f9 u" G4 A6 c& L Device Boot Start End Blocks Id System
, V; i3 n9 c/ H/dev/nbd0p1 * 2048 41943039 20970496 83 Linux' `9 I9 z$ `) G) `; R
( X1 i/ h3 r* X+ Z
Command (m for help): d8 Y& ]6 G$ ~7 p: m6 X0 {' a
Selected partition 1
6 `! U& p! d( t( j& H
9 e# k2 U- u+ ?2 b- P) Z, rCommand (m for help): p7 X* N! _8 D3 D0 p# }* n
/ e M7 L$ ^, W) Y1 g4 WDisk /dev/nbd0: 32.2 GB, 32212254720 bytes `6 I/ D+ `% Z1 N0 P" p7 z& F
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
0 T6 a3 e' ?8 @/ T0 D* h9 Z, HUnits = sectors of 1 * 512 = 512 bytes
1 g8 j5 ~, q) [/ U$ MSector size (logical/physical): 512 bytes / 512 bytes
( \0 P8 i, z. j6 }8 u( xI/O size (minimum/optimal): 512 bytes / 512 bytes' N" I8 }2 y' N) n
Disk identifier: 0x000e8e8d% R( C5 H4 j: E- E+ X: r
, ]0 o) P3 w, u+ x/ a0 |
Device Boot Start End Blocks Id System
- a7 S% z+ g7 b0 w
/ R% J2 {$ q7 s' K* kCommand (m for help): n
' [. b2 r$ x' m8 i, {' SPartition type:/ z0 l3 W$ P( K: n, f* |4 b7 E
p primary (0 primary, 0 extended, 4 free)
) ]0 N ?! I8 e9 T2 S5 u8 A& g* Y6 d e extended* Q8 a. O" q8 F( |. g, V
Select (default p): p. w) J' [) O$ q, O' r9 b
Partition number (1-4, default 1): : b+ G8 o+ S4 W" K! a1 S! y
Using default value 1
9 r' w7 {2 z" }# l) t( R/ XFirst sector (2048-62914559, default 2048): 0 Z0 w4 m7 A; B6 q" L8 e
Using default value 2048
8 [) V' p3 O4 b k: u! HLast sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): 8 L4 z6 E! U- n3 a% I. P$ v1 r
Using default value 62914559
$ S# {$ s% n8 t p5 w1 h s- A6 \, _+ v
Command (m for help): p1 o. d2 v! S3 i# E ^) b: e
" U& ]' y) @ f6 v: i- S k
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes& O# ? i1 Y6 V2 a" z; W3 s% ]* G
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors3 e8 M) u, F4 y4 D1 Z0 o
Units = sectors of 1 * 512 = 512 bytes# B7 ?- V! n2 r3 Y% f, U
Sector size (logical/physical): 512 bytes / 512 bytes
5 G0 o- \* u; x Z& w) ^& YI/O size (minimum/optimal): 512 bytes / 512 bytes* j0 G+ S: A# j4 s3 R1 `4 _
Disk identifier: 0x000e8e8d8 O2 A6 @, U5 ?( K R6 V4 i
9 }) c7 h% ^3 ?2 |7 h$ ` Device Boot Start End Blocks Id System$ C2 T. R- J- Z B% N
/dev/nbd0p1 2048 62914559 31456256 83 Linux
# e$ N! @7 J1 S4 v& P$ X0 D' {: q# d- Z1 n5 Y6 J$ L
Command (m for help): a' a- M% c$ S# U! C6 K
Partition number (1-4): 1: ^* g, _8 t$ {3 m
2 Z$ G! K- K* o) FCommand (m for help): p- Y9 F# Q5 I5 X3 Y- e9 [
. W5 C$ I% g9 t; G
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes- F( Z S& `$ U
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors2 X; g4 H! P" N5 b* | H3 U
Units = sectors of 1 * 512 = 512 bytes
1 Y0 {7 q7 ^% {2 ?. x+ e( dSector size (logical/physical): 512 bytes / 512 bytes
6 K, C& ~+ X. I' i6 {I/O size (minimum/optimal): 512 bytes / 512 bytes2 H3 ~+ V& O/ y, U0 r o" b3 m1 Q
Disk identifier: 0x000e8e8d
3 \6 t* U% G' e+ n4 D& R' s& R n, t
Device Boot Start End Blocks Id System" Q# ?$ o1 o% _# D1 b
/dev/nbd0p1 * 2048 62914559 31456256 83 Linux- M( F i7 ]3 |
; ^& Q4 p) d$ _Command (m for help): w- f+ D" G% @* m& E3 N3 u0 R4 L& ?1 F
The partition table has been altered!
/ L8 P& X) a- X( A; Q, f2 g
* l# U% \$ j' X1 I# K8 KCalling ioctl() to re-read partition table.
8 @7 ]1 M) c/ k* B9 l) |Syncing disks.
6 Y8 N! T/ ], F. Z Q5 iroot@# 6 x$ { _8 P) O
复制代码
$ ^9 L* H7 t# u) b 如此以来,我们已经将该虚拟磁盘的分区大小扩展到了30G
) s; |" E* l% v- i0 E6 x
1 c! y+ M: B8 h; ^, t: @ x7、至此,我们还需要将文件系统扩展到30G:/ M* l1 z$ V1 Z& k
3 k% y6 `$ \# t7 @- z
复制代码
5 M; f1 L0 g% D n6 v- Jroot@# e2fsck -fp /dev/nbd0p1
$ `: j2 `: i4 L- S# e9 g/dev/nbd0p1: Deleted inode 131076 has zero dtime. FIXED.
" V& a# i R/ b" P/dev/nbd0p1: 18489/1310720 files (0.2% non-contiguous), 281286/5242624 blocks% b" r5 _7 e4 ^) o/ M
6 J0 J- N0 T8 rroot@# resize2fs /dev/nbd0p1
9 U! A, C* X. Cresize2fs 1.42.9 (4-Feb-2014)
0 q: _" g- s. w1 RResizing the filesystem on /dev/nbd0p1 to 7864064 (4k) blocks.5 `- T, w5 x& A
The filesystem on /dev/nbd0p1 is now 7864064 blocks long.& R; }: v3 C# O$ c) [4 u# O
1 V" F$ n. \& @5 s+ R$ F' D, x- Proot@# qemu-nbd -d /dev/nbd0
9 |! r; p9 [3 C7 N/dev/nbd0 disconnected |
|