- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2019-12-30 19:43:50
|
显示全部楼层
当我们需要扩展模板镜像的虚拟磁盘大小时,比如原来的虚拟磁盘大小为20G,现在我们想将其扩展到30G,那么我们可以根据如下步骤来操作。
! {! V ~) s- Q' c% [* N: Z3 I; q
4 |4 I/ |( Y9 f) Q+ j1 _# Q6 i整个流程可以分为三个阶段:
- V2 w% Q& H; d, u e
/ i! i7 d" C5 K1、扩展KVM镜像磁盘文件大小到30G。
% l" V1 {4 w) g D9 q; f0 K+ `: P, g+ E5 l
2、扩展磁盘分区大小为30G。8 M6 W# O& H# X1 j, M2 v5 C! r
+ `1 q3 B6 k/ [; @% p7 o0 J
3、扩展文件系统大小为30G。
! d# O9 H1 ^- P; r+ @, z
* x- i. S) h0 v- `1 L: _3 N8 a! m假若当前有一个名为 test_extend.img 的模板镜像,其格式为 qcow2, virtual_size为 20G
) s' R- l9 Z! I) @' p+ E" ]8 i+ M1 y d. `& P q+ N1 ?& ~
1、首先可以使用qemu-img来查看该模板镜像的元信息:2 x' k! U+ w( J- `( B0 n+ k- o
4 G: j# ?! j0 Q! B6 S: K
复制代码' ?8 X- ~2 a3 x& S
qemu-img info test_extend.img : P* P5 A4 z! W% ?
image: test_extend.img" [7 |% ?( y8 A+ e7 _) a" \1 H
file format: qcow2
1 p6 l$ h6 F$ @' I. b; B; Hvirtual size: 20G (21474836480 bytes)
8 L& L; X6 }- ldisk size: 309M- c% k4 M. A# g! o! H
cluster_size: 65536% k1 f# B# H V- S' B* [$ \7 q
Format specific information:( o; m. ?9 P/ x( v* q2 X( `: S4 }
compat: 1.1
0 Z. K |: E p+ s" z& h0 a lazy refcounts: false
% L! }9 X9 ~+ H
0 v: r& w' J9 o! G4 Q复制代码2 E0 v6 h& H! Z% r: v" s8 k8 v; S! U% H
2、由于需要使用到qemu-nbd,因此我们需要先确认nbd模板已经被load:/ |5 _' L4 o6 \1 O# r! g
' j# V) a2 |" ~1 f' W$ l8 M
lsmod | grep nbd' M* p" m- [8 ?, {
% k1 D6 W [) i0 n& A 执行如上命令发现没有任何输出,则表示当前系统并没有加载nbd模块! O) N" k0 J# n' V% g
$ k b' }4 |$ m4 x- n: J) n K
3、加载nbd模板,并再次确认(若没有nbd模块,则可以参考这里进行编译安装):
: d& z; U$ Z5 d% |/ t8 N6 z4 t+ w) x
modprobe nbd max_part=8
% j A% B/ ]: o3 ]+ I7 e | lsmod | grep nbd
4 Y7 @8 K! p6 O& j; E8 R5 z/ gnbd 17603 0
: n" j5 J* n$ Y# v
) y/ s7 e4 x8 u2 ]: t 此时nbd模板已经正常加载了' ?! v; U: m- Z/ ?1 W
8 `' `' M1 p; t& k4、通过qemu-img命令来扩展虚拟磁盘的virtual_size为 30G:3 q5 l% v9 Q6 H: t' C+ s
) [8 s/ o7 [- \0 T
- q5 b! H6 j% A4 w. r9 i; V qemu-img resize test_extend.img 32212254720- k; ~! |3 O9 O8 G- t. S
Image resized.
6 t* _3 x* a$ B! T' l! y qemu-img info test_extend.img 0 u% ^: f; U* D( U: v
image: test_extend.img6 u8 w$ n* ]/ f N/ L6 d. ?7 B
file format: qcow2
2 D% D: \, b: `( ?5 _virtual size: 30G (32212254720 bytes). C! }! K- g1 i) h6 j8 X
disk size: 309M
* |) f2 x- @( f& i% w) j* }0 l: gcluster_size: 65536) \7 f" X ^$ V' }
Format specific information:
* C6 i3 \0 q* U8 L0 }3 D compat: 1.1% r7 U5 ]! p$ c
lazy refcounts: false3 R3 I, Y7 j; ?% J
7 X; b3 ^) \ w0 G+ |
0 q7 l8 o p; b2 C) g* L6 L5 ~8 [# g T3 v1 ~
5、下面通过qemu-nbd挂载test_extend.img到/dev/nbd0设备上:
% S9 L [- { _- s0 _- X* `9 r6 [7 Z" G: P S
qemu-nbd -c /dev/nbd0 ./test_extend.img
% H' M' ^# Z% B$ N6 x& W0 J. U, w ll /dev/nbd* | grep nbd0& l+ Z) S" v' G
brw-rw---- 1 root disk 43, 0 11月 20 18:09 /dev/nbd0- M/ E' a6 Z1 G: f2 y* h
brw-rw---- 1 root disk 43, 1 11月 20 18:09 /dev/nbd0p1( J8 W; B( S: B1 ^+ B9 v9 ^2 ^3 `
0 r& \& H; t3 J J
挂载成功后,在/dev/下会看到如上信息,其中/dev/nbd0p1表示该虚拟磁盘仅有一个分区! @ Z3 w9 R% V3 a
, ~/ O2 Z" m9 v2 U: b6、下面开始通过fdisk来扩展虚拟磁盘分区大小:
" Y8 r) e; x, E9 n+ h
* H6 t0 X4 i+ N1 x' b fdisk /dev/nbd0
( ^" Z; U8 m- N% I% I, | d+ C. U) v
Command (m for help): p
. C+ m; ^9 Z+ }" d4 G
$ c6 P5 k5 ]4 | l' mDisk /dev/nbd0: 32.2 GB, 32212254720 bytes) `" b; t7 l0 K6 a5 _2 S
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors; u7 I6 s% a: x$ ] N5 I2 r( `
Units = sectors of 1 * 512 = 512 bytes
. ^- A, O" y* ^- G3 G9 m VSector size (logical/physical): 512 bytes / 512 bytes
Y# X/ U9 \* ]: I' R2 J1 wI/O size (minimum/optimal): 512 bytes / 512 bytes
' T7 y0 q8 n; N" ]8 E0 eDisk identifier: 0x000e8e8d, L# `9 w& o5 i3 W
8 G* z- l+ k% [; U0 g1 z, ?
Device Boot Start End Blocks Id System
* f9 Z, \8 m) d3 a% c* t+ p/dev/nbd0p1 * 2048 41943039 20970496 83 Linux
/ f% H h. p6 }* J% S$ O
. D1 y7 c0 q( dCommand (m for help): d2 ]4 n g$ J2 ?/ P, p
Selected partition 1* e: `8 }1 C. n
9 e8 p; i5 L! A( D3 i' ]Command (m for help): p
5 H$ }9 D2 E, e* G8 K9 {( M, }- h. ?
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes
4 H( w6 @6 v. C255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors+ }! Z0 a& x& z# K3 N- |. P$ t
Units = sectors of 1 * 512 = 512 bytes
, i( r2 C, ?' A, MSector size (logical/physical): 512 bytes / 512 bytes& Z$ ?# N2 M U8 ]* ~6 U, t
I/O size (minimum/optimal): 512 bytes / 512 bytes
% H/ Q* G+ Z% w, Q3 g/ [* t2 n1 ?% Y$ CDisk identifier: 0x000e8e8d
: H; A% n1 X5 O( {" V4 y5 V
& Z5 N, }7 R, V! } u9 R. Z3 L" i Device Boot Start End Blocks Id System
& e: W* L$ N; v3 w
5 [/ v9 `2 h8 qCommand (m for help): n
. M% {- R: [! u# q' aPartition type:1 \! M4 @7 V- i# w
p primary (0 primary, 0 extended, 4 free). S* h$ K9 C/ h G) ^, h
e extended
+ b- P5 T; O3 ZSelect (default p): p+ S- m3 v; I1 J1 [7 H1 k
Partition number (1-4, default 1):
: s2 E. W; S" C' T1 YUsing default value 13 e+ s8 V8 t" \0 g+ M2 \
First sector (2048-62914559, default 2048):
6 p, g+ A" a, J- P' e, O+ G7 o0 bUsing default value 2048
. v$ X5 u7 B$ Q/ Q; iLast sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):
2 i+ F; F x6 T- t' pUsing default value 62914559
4 ^! G, R/ g5 b* p- Z7 i2 h: ]& s: J7 ~) w% a2 c9 I" W. A
Command (m for help): p. H/ s" _; R4 R6 b- q/ U2 M+ f/ g$ g9 R
' ~2 D3 M9 h# K8 ]7 U [! n0 CDisk /dev/nbd0: 32.2 GB, 32212254720 bytes
, @# w$ y: F6 t; S+ e255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
' {$ J7 s. |- `, x# }Units = sectors of 1 * 512 = 512 bytes) E8 F! a& ~+ S1 e7 P
Sector size (logical/physical): 512 bytes / 512 bytes
3 Z) E: f9 K8 \5 P& y9 J1 wI/O size (minimum/optimal): 512 bytes / 512 bytes8 D m! {0 C8 G+ w% u
Disk identifier: 0x000e8e8d
- v V. N2 B" c% p4 A; G* o! a7 \# m* D: `) X8 B$ R
Device Boot Start End Blocks Id System
6 ]4 L' L: S3 M; n7 a/dev/nbd0p1 2048 62914559 31456256 83 Linux0 |. C+ L& o, d
5 u" s& H5 q% ^, }# O4 @6 J( ICommand (m for help): a
, L1 Y1 c9 w- r j: x0 V9 F) W) f1 e! pPartition number (1-4): 1
! y8 i0 _. k' F2 U% m/ G- R& q5 y8 d2 k- K0 H
Command (m for help): p7 h5 c4 A& C5 i, v4 [1 c
A. O- z; s8 G9 f; O
Disk /dev/nbd0: 32.2 GB, 32212254720 bytes
) c8 {) u- z. o' o, w& @255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
2 g, d* O" f' r) [3 T: wUnits = sectors of 1 * 512 = 512 bytes
6 W2 M& P6 K; gSector size (logical/physical): 512 bytes / 512 bytes
# R Z z/ X- M# D5 Q0 ~I/O size (minimum/optimal): 512 bytes / 512 bytes
# \* I$ U. Q5 C2 \: K9 lDisk identifier: 0x000e8e8d/ L. c8 G% |$ H9 v @' t
, c5 F6 M0 S) P3 q* u1 q9 x% n/ \
Device Boot Start End Blocks Id System
& Z: p" W# a) O5 C Y4 O/dev/nbd0p1 * 2048 62914559 31456256 83 Linux2 I# v" D* h% W. |2 W" W- {
; q$ `5 D/ x6 G6 A. jCommand (m for help): w
8 ~8 F4 e& M; R' n2 TThe partition table has been altered!
% |& h1 G& I [; P
# ~3 |# r/ g9 T5 N, F. F$ O4 O2 fCalling ioctl() to re-read partition table.
: K' l9 C/ @( c( f _ LSyncing disks.
* Q. q$ T7 L4 y+ ^) A# f8 i( r4 ~
复制代码
3 p& y1 F9 ]5 x 如此以来,我们已经将该虚拟磁盘的分区大小扩展到了30G0 W3 u, L. J5 _
9 }$ J+ E4 g% K, d, t5 j: F+ V- H
7、至此,我们还需要将文件系统扩展到30G:
8 M3 J" Y* R2 d0 D7 @5 U# a$ r9 J' h
复制代码! D2 U" [' R7 V
e2fsck -fp /dev/nbd0p1 / ?6 |6 x) d1 M, Q
/dev/nbd0p1: Deleted inode 131076 has zero dtime. FIXED.
; p" F/ d6 E4 | _8 k& n/dev/nbd0p1: 18489/1310720 files (0.2% non-contiguous), 281286/5242624 blocks/ ?8 G3 F, M; b
' z/ U3 R# D3 P4 y% f4 @% | resize2fs /dev/nbd0p1
, b2 @6 O& N: z# k8 l( w( D" Xresize2fs 1.42.9 (4-Feb-2014)
3 R5 m/ ?+ E7 i) ]& yResizing the filesystem on /dev/nbd0p1 to 7864064 (4k) blocks.
! f" S8 ?% w& AThe filesystem on /dev/nbd0p1 is now 7864064 blocks long.
+ Q: g) A% }0 x3 q0 i qemu-nbd -d /dev/nbd04 ]& v) T+ K0 z% X
/dev/nbd0 disconnected |
|