找回密码
 注册
查看: 963|回复: 1

virsh blockresize 命令,扩容kvm虚机磁盘大小

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-4-11 17:19:46 | 显示全部楼层 |阅读模式
[root@compute03 images]# virsh blockresize rhel-server-7.9 /var/lib/libvirt/images/rhel-server-7.9.qcow2 20G
% M, Y1 r  V, ABlock device '/var/lib/libvirt/images/rhel-server-7.9.qcow2' is resized% }/ a: j/ f0 p# Z1 l
) E6 W, _( G3 @
[root@pxe ~]# lsblk
! I( c8 A* D9 @/ }' N4 B& MNAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT, P% z5 c" |6 Q
sr0            11:0    1 1024M  0 rom  
6 c0 H# `$ n. Y3 E( Bvda           252:0    0   40G  0 disk
0 Z& r% S7 e9 U0 A- p$ n. ^6 G& e5 I├─vda1        252:1    0    1G  0 part /boot( }% T. G+ x( x" P
└─vda2        252:2    0   19G  0 part
9 }6 l5 j! L+ W7 |* a( [& e+ q  ├─rhel-root 253:0    0   17G  0 lvm  /
9 `  G: v- g3 j* G: U, ]4 E  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
) N9 U( V0 h% f: M" X" yloop0           7:0    0  3.6G  0 loop /mnt/6.8; x- z2 a8 P6 v) K
loop1           7:1    0  3.6G  0 loop /mnt/6.10
/ P& `* c# W, ~% w  _loop2           7:2    0  4.2G  0 loop /mnt/7.8
3 u7 T6 c. @& B5 L3 g* w) n[root@pxe ~]# growpart /dev/vda 2" P9 [5 j5 S$ f
CHANGED: partition=2 start=2099200 old: size=39843807 end=41943007 new: size=81786847 end=83886047; j& W( j. {7 o; @0 }# V
[root@pxe ~]# lsblk 6 ^1 n4 w8 X+ L' j, o/ _
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
3 b/ o0 f) k0 c) `' t% psr0            11:0    1 1024M  0 rom  
. W+ G) }6 j& j. ^1 P& M5 Vvda           252:0    0   40G  0 disk ' s8 B8 z. f2 p6 j% M* W& d
├─vda1        252:1    0    1G  0 part /boot
# j3 E* ^# g+ B% q' ^└─vda2        252:2    0   39G  0 part ! L! I  J! f- H6 f$ L! |  H. c
  ├─rhel-root 253:0    0   17G  0 lvm  /( P0 C1 `1 d# w1 q- p
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
: T' D# O$ K- x# O3 f( a' xloop0           7:0    0  3.6G  0 loop /mnt/6.8
' X% E5 H) B7 y  nloop1           7:1    0  3.6G  0 loop /mnt/6.10
0 D8 \$ k6 x$ v2 m  i$ yloop2           7:2    0  4.2G  0 loop /mnt/7.8
; N. ?# |" R. M# N1 ]
' q/ W1 f8 L: P; X* f0 b$ `' x& y5 l0 `+ r$ p' u

$ H& x$ Z7 B5 C9 B9 {$ P[root@pxe ~]# lsblk % }5 T+ A# g9 j3 P) n3 P
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT, T  p8 D9 W' b
sr0            11:0    1 1024M  0 rom  ' \, Y- h6 y: }  H( B  h
vda           252:0    0   40G  0 disk
! I4 J9 l: v0 a├─vda1        252:1    0    1G  0 part /boot2 K! P1 Z8 Q6 j& a0 q; M
└─vda2        252:2    0   39G  0 part ' A  Q, N; d# U( A7 |
  ├─rhel-root 253:0    0   17G  0 lvm  /3 S: l' D) U% t2 }( j
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
, S% D' v+ E. \( ?8 E2 T9 |/ Vloop0           7:0    0  3.6G  0 loop /mnt/6.8
' P6 V6 Y. z& ?# Z+ E7 ?loop1           7:1    0  3.6G  0 loop /mnt/6.10
1 _' k0 o1 @; Xloop2           7:2    0  4.2G  0 loop /mnt/7.8
$ M9 j! Z; G2 j: K0 {  s: ]
3 s1 `4 F4 _- |* ?1 r[root@pxe ~]# pvresize /dev/vda2
) i1 K# i/ w' M7 c. O% H  Physical volume "/dev/vda2" changed
5 c: M1 b! \2 l, I  f0 }  1 physical volume(s) resized or updated / 0 physical volume(s) not resized# t4 I8 x, v& _# Q7 `! N
[root@pxe ~]# pvresize /dev/vda2 40' N* d6 u# \2 _$ b8 [
  Failed to find device for physical volume "40".
8 X2 a( m7 @# }, p% G  Physical volume "/dev/vda2" changed
; h! U4 b# o- M. Q8 S! X6 K  1 physical volume(s) resized or updated / 0 physical volume(s) not resized& H; i+ {7 F& g0 g& [9 s
( U6 `; n( c# S
[root@pxe ~]# lvextend -l +100%FREE /dev/mapper/rhel-root
; n* V6 X; _3 R! r7 N! s2 `  Size of logical volume rhel/root changed from 16.99 GiB (4350 extents) to 36.99 GiB (9470 extents).% ]/ \& \5 c$ A* j0 @
  Logical volume rhel/root successfully resized.6 X/ _+ Y1 Z$ }. r

' @3 [2 }* @6 o; O; g$ e
  f4 m$ M1 I: b- J[root@pxe ~]# df -TH
; w5 ^4 @9 I8 DFilesystem            Type      Size  Used Avail Use% Mounted on# u" ]0 H' x3 j
devtmpfs              devtmpfs  952M     0  952M   0% /dev* b8 j  z( t$ K" w7 w% n
tmpfs                 tmpfs     964M     0  964M   0% /dev/shm
6 A# d$ [0 P/ }tmpfs                 tmpfs     964M  9.1M  955M   1% /run6 O: D2 u/ @6 J7 A: w. I
tmpfs                 tmpfs     964M     0  964M   0% /sys/fs/cgroup
2 n8 @) S$ |1 M* V- Q6 F$ x; L/dev/mapper/rhel-root xfs        19G   18G  338M  99% /0 ~" {5 A6 k' S& z2 g
/dev/vda1             xfs       1.1G  157M  907M  15% /boot
+ Z  g' d2 {, T) A" X  b* J9 Mtmpfs                 tmpfs     193M     0  193M   0% /run/user/0
" ~: g; ^* I" e7 M8 j* F/dev/loop0            iso9660   3.9G  3.9G     0 100% /mnt/6.8
6 h1 ^- {6 P3 M  |0 a2 \: L7 x/dev/loop1            iso9660   3.9G  3.9G     0 100% /mnt/6.10
8 e0 V' Q5 S9 V  u  b/dev/loop2            iso9660   4.6G  4.6G     0 100% /mnt/7.8
" \5 @5 P8 Q8 @/ f" B# C) w; L3 Y3 l$ Y8 ]: _% N9 Y
[root@pxe ~]# resize2fs -f /dev/mapper/rhel-root 6 q% n+ }% j; R4 ]% |4 y
resize2fs 1.42.9 (28-Dec-2013)3 f4 z5 Q1 g% y7 _0 }
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/rhel-root  c+ S' t. y# k6 G4 t3 [" n
Couldn't find valid filesystem superblock.5 |4 G7 \! S) B( U. x
[root@pxe ~]# pvresize /dev/vda
4 E& I( ?+ g2 z% L8 v; k* lvda   vda1  vda2  
) X. W- C7 y: _, x" m[root@pxe ~]# pvresize /dev/vda
+ @  b) T5 E+ [& ?' Y% v, W4 ?vda   vda1  vda2  2 u& r1 H. z* f0 b' k2 M& {
[root@pxe ~]# pvresize /dev/vda2
# H5 g; A! x! U0 u  Physical volume "/dev/vda2" changed
4 [& c) L9 D  @  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
0 P, Q  e( e1 z5 P) S8 I9 K[root@pxe ~]# pvscan 2 l. _. x0 b! ~8 Z# X4 H% y/ R, m
  PV /dev/vda2   VG rhel            lvm2 [<39.00 GiB / 0    free]; {! @) V1 h  X- K* R! a
  Total: 1 [<39.00 GiB] / in use: 1 [<39.00 GiB] / in no VG: 0 [0   ]6 K1 f& J+ N" s: |: n3 a- I
[root@pxe ~]# vgscan
; O& X) ?/ \" T0 [! X, M8 I  Reading volume groups from cache." y9 x% x! Q" x- `0 a5 A% E( a
  Found volume group "rhel" using metadata type lvm2
  C, N( D& [" b
' h8 h4 p8 Z$ X$ {" o[root@pxe ~]# lvscan
/ s/ \7 j% X9 F/ `. R" I2 O  ACTIVE            '/dev/rhel/root' [36.99 GiB] inherit
/ @- ^3 M. Y# o  E) M5 L  ACTIVE            '/dev/rhel/swap' [2.00 GiB] inherit
$ s9 }# b* M$ X- T, Z$ @[root@pxe ~]# df -TH" f2 C$ x) A: g* n/ k2 F' k/ e
Filesystem            Type      Size  Used Avail Use% Mounted on; [# `6 @! E) `  ~! y
devtmpfs              devtmpfs  952M     0  952M   0% /dev
- p; @8 t5 h% p, A3 ~3 p8 N9 Qtmpfs                 tmpfs     964M     0  964M   0% /dev/shm
; I" V' z" {9 O0 Etmpfs                 tmpfs     964M  9.1M  955M   1% /run
( v. W( j; r) w+ F/ ^tmpfs                 tmpfs     964M     0  964M   0% /sys/fs/cgroup7 V. k# s& |$ M/ B1 E8 J
/dev/mapper/rhel-root xfs        19G   18G  338M  99% /
- k( B- w# ~6 z' V/dev/vda1             xfs       1.1G  157M  907M  15% /boot. a; l9 H  k5 c* R. v$ {
tmpfs                 tmpfs     193M     0  193M   0% /run/user/0
1 U/ A: o' s' l- ?/dev/loop0            iso9660   3.9G  3.9G     0 100% /mnt/6.8
4 R$ c9 b, I" s8 q1 ]/dev/loop1            iso9660   3.9G  3.9G     0 100% /mnt/6.10
- a" ]- _8 m0 V/dev/loop2            iso9660   4.6G  4.6G     0 100% /mnt/7.8
8 W4 E' O& j7 h! K: Y; a5 g# j$ S  \9 w) Q. A3 @1 X  F
[root@pxe ~]# lvextend -l +100%FREE /dev/mapper/rhel-root) @: v* {+ H- [2 ]3 r: l
  New size (9470 extents) matches existing size (9470 extents).1 }/ a5 T# A& d$ Y& I

; d" k6 x- x, L" t2 @. |
7 ^+ M  p+ O7 x2 @5 ]" H[root@pxe ~]# df -TH
8 M0 w; P: m  ?$ v$ Z8 B( R6 ~Filesystem            Type      Size  Used Avail Use% Mounted on$ R+ ^4 {. ~, Y6 Y8 F! v# n
devtmpfs              devtmpfs  952M     0  952M   0% /dev9 T' p' t5 R2 F) i  b9 X
tmpfs                 tmpfs     964M     0  964M   0% /dev/shm
. Y/ d8 A1 l( e% L' p5 [0 s0 Gtmpfs                 tmpfs     964M  9.1M  955M   1% /run3 a. q, H3 i& d, z2 E3 j
tmpfs                 tmpfs     964M     0  964M   0% /sys/fs/cgroup
# l0 S3 d1 }1 I9 S/dev/mapper/rhel-root xfs        19G   18G  338M  99% /
8 W( C% y' W! _# L/ R/dev/vda1             xfs       1.1G  157M  907M  15% /boot
3 {' O, C: [& [6 w0 I0 G3 y' x1 ~tmpfs                 tmpfs     193M     0  193M   0% /run/user/0
! c" E' A1 S/ \) k( B/dev/loop0            iso9660   3.9G  3.9G     0 100% /mnt/6.8# W9 r" X$ S8 ^7 q0 s3 N
/dev/loop1            iso9660   3.9G  3.9G     0 100% /mnt/6.10* J; x8 H& m& z& h8 c, {
/dev/loop2            iso9660   4.6G  4.6G     0 100% /mnt/7.8
& h& U/ p- A3 C9 n& N& y0 C
0 G5 z' p4 {. K* t" ~* d1 y
: Y4 C8 B# b) J9 r
! U5 m! g( r7 h8 @0 ~; {: w2 a* Y1 K( V3 `( B. |0 v8 V  K
[root@pxe ~]# resize2fs -f /dev/mapper/rhel-root
+ {" J5 c4 q1 D( o: M3 yresize2fs 1.42.9 (28-Dec-2013)
$ g! \3 j7 f, R! N/ H+ E* Lresize2fs: Bad magic number in super-block while trying to open /dev/mapper/rhel-root) _8 ~' ^# ]: J3 J
Couldn't find valid filesystem superblock.1 P' M$ `" Q4 F

& |/ F' O/ H! f( w/ Y4 R* \0 Q[root@pxe ~]# growpart /dev/vda 2
5 ?' V$ C4 s8 ^+ A. KNOCHANGE: partition 2 is size 81786847. it cannot be grown1 I- k$ ?" s$ j2 C+ r$ L! f
[root@pxe ~]# pvresize  /dev/vda2
1 Q$ ~1 J  o# @7 ]+ N  Physical volume "/dev/vda2" changed
- C( @' z. Y8 a0 u  1 physical volume(s) resized or updated / 0 physical volume(s) not resized* O. s$ f% p5 o! I3 a! m# r) j8 |
[root@pxe ~]# xfs_growfs /dev/mapper/rhel-root . ^5 Z( ~0 i; z; C) [2 n- {* P  o
meta-data=/dev/mapper/rhel-root  isize=512    agcount=32, agsize=140544 blks# k! w" j. S' q: a' H7 I
         =                       sectsz=512   attr=2, projid32bit=1
2 a1 {+ d2 E( M+ e) `, q# f         =                       crc=1        finobt=0 spinodes=0" M7 S9 z5 Y3 t' s2 b. I3 F
data     =                       bsize=4096   blocks=4454400, imaxpct=255 A- L$ |& I$ {
         =                       sunit=0      swidth=0 blks& T& h2 ?7 d4 p! o- s' ?
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
# H& G/ W/ e# p: E+ Q. c5 mlog      =internal               bsize=4096   blocks=2560, version=2
7 J& a1 v; [6 b7 s3 ]& y) w         =                       sectsz=512   sunit=0 blks, lazy-count=1
# K* Y2 N' `8 c3 trealtime =none                   extsz=4096   blocks=0, rtextents=0- N5 g9 G  I! c
data blocks changed from 4454400 to 9697280! a' _6 |9 R$ r5 F. q

. G3 h) E" P* f; h( U% Y

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-4-11 17:33:21 | 显示全部楼层
以使用如下命令+ b5 t: h! N# W" j2 W% ~% ?

; t9 k' S6 P3 Tqemu-img snapshot -l /var/lib/libvirt/images/kvm1.qcow2; T( t! L/ @; ^0 I* F) U* D7 r
磁盘镜像如果有快照,无法进行扩容
% u7 }# o* U- L
! E& X; R* E( d' J! `再次确认,已经备份了需要扩容的磁盘,然后开始操作,此处以kvm4为例,从宿主机可以看到,目前kvm4已经启动+ a' c5 Y* B  A8 E: D
$ C4 ?7 z$ R% m6 |( k1 y
[root@cos7 ~]# virsh list --all
: [2 P- w! @% G/ _Id Name State
! _1 w$ U/ O# f$ F8 g$ \  F. q. e----------------------------------------------------
: i1 q5 @. S& q4 ~6 C) z# g4 kvm4 running! t- @( n3 h7 i  |/ I
- kvm1 shut off
0 O2 I" ]! @, X1 C7 p1 x- kvm2 shut off
% y, q- N1 f4 ]8 `7 p/ V. @# V- kvm3 shut off
* R5 G0 x( i: K0 v- kvm5 shut off" u' A( g; e9 v% j
- kvm6 shut off* l% P9 h: F4 w8 I9 O7 |
登录kvm4,查看虚拟机磁盘状态,如下4 \3 f8 c7 d. Z. p% e

8 q# o4 L# z% l* ?. o[root@kvm4 ~]# fdisk -l
1 U3 i- ]  m2 e- V2 ?
5 @7 X4 ?, Z, `% {, r4 TDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors: k8 [+ N% \, {( C& Z" f/ b; o
Units = sectors of 1 * 512 = 512 bytes
: |! W7 ]1 X4 A9 `7 s4 d! V+ y" hSector size (logical/physical): 512 bytes / 512 bytes
3 Q1 ?6 E( x9 s- K7 ]2 }6 B, jI/O size (minimum/optimal): 512 bytes / 512 bytes
8 H5 l4 G# F# k* z0 h( z" f# U- X9 jDisk label type: dos
7 R6 K4 G0 ]& R: p6 G" ~2 ZDisk identifier: 0x000b9417# u% D7 M& Z4 ^' a
6 }7 n. @, ^6 m/ _! y
Device Boot Start End Blocks Id System
3 {! ?0 K# M3 q/dev/vda1 * 2048 2099199 1048576 83 Linux
1 A; J% y# }- T+ e+ i9 h) `/ _8 L/dev/vda2 2099200 10227711 4064256 82 Linux swap / Solaris% w4 x1 G: l8 }# Q2 `9 ~
/dev/vda3 10227712 104857599 47314944 83 Linux
1 S0 a' M7 O) h: T  Y4 W) `3 t[root@kvm4 ~]#0 s7 `+ G# v2 T8 h2 C. o
[root@kvm4 ~]#
, q, Y9 h4 r$ x& {, F2 x! X4 y% {[root@kvm4 ~]#
6 u7 n, o* `" Y# I[root@kvm4 ~]# df -h
0 P+ W4 X. q6 H$ e. v, Q& LFilesystem Size Used Avail Use% Mounted on
. T0 \/ d. N* ndevtmpfs 1.9G 0 1.9G 0% /dev9 F" w2 A( E- {+ @
tmpfs 1.9G 0 1.9G 0% /dev/shm  {3 o+ r( e( u; `' x9 l; ~4 C
tmpfs 1.9G 8.5M 1.9G 1% /run; V/ \# v8 }( g: ~, f/ i
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup) k# K  @4 A' u8 b+ U1 W- ^
/dev/vda3 46G 1.3G 44G 3% /
4 I/ Q$ Y# z0 M9 o3 c# S1 G/dev/vda1 1014M 142M 873M 14% /boot
. ^, U  E# _5 K6 V7 Utmpfs 379M 0 379M 0% /run/user/0
- C) C* e9 a0 l" d% f( A从上述信息可以看出,目前kvm4虚拟机只有一块vda磁盘,有三个分区,/dev/vda1分区是boot分区,/dev/vda2是swap分区,/dev/vda3是根文件系统,根的大小是46G,44G可用,此处假设,根分区已经沾满了,我们需要扩容根分区,虽然最终目标是扩容根分区,但是需要先在宿主机上,为kvm4的磁盘进行扩容,扩容完磁盘后,再扩容分区的文件系统。5 Y  e( |" x" ~! X7 b6 I; l
在宿主机上确认kvm4的磁盘镜像路径,如下:
3 U& x( f- ?  B* M9 B2 e# M
! c5 a' z" L$ g: R4 {: N1 ][root@cos7 ~]# virsh domblklist kvm49 R, @" i' z  H4 R! D
Target Source
( a1 J. @2 b+ r9 z* F------------------------------------------------" u" A; h* D* t/ |0 u
vda /var/lib/libvirt/images/kvm4.qcow2
, d# W+ g+ r& g8 x7 _; d1 yhda -# }2 ~6 O: b& }0 x, I* i6 s
可以看到,kvm4的磁盘镜像路径是/var/lib/libvirt/images/kvm4.qcow2,对应挂载到了kvm4的vda磁盘,先看一下目前磁盘镜像的大小
2 Y+ Z- j" h6 [( I! j- D% n9 y0 W  M7 p* o3 _
[root@cos7 ~]# qemu-img info /var/lib/libvirt/images/kvm4.qcow2
# U$ X' B/ E2 l. `$ r+ \0 @image: /var/lib/libvirt/images/kvm4.qcow2" t8 \6 E$ \6 Q; B, }3 K& @/ N
file format: qcow2
6 K' g/ P9 M' J. n+ F8 lvirtual size: 50G (53687091200 bytes)
& k) V: s5 E& a) m6 n4 f# mdisk size: 1.5G
5 E9 N! ]& m( A- Ccluster_size: 65536$ a# u+ K( f# _6 a2 M2 D( R9 l' {
Format specific information:
2 t2 u+ s; N5 |, [  l: Dcompat: 1.1
" s4 j+ G/ I6 @lazy refcounts: true
+ e+ U( Y5 q* r如上所示,磁盘虚拟大小为50G,目前占用宿主机1.5G空间,磁盘格式是一个qcow2的磁盘。( Y  C* i5 G1 V2 @) t: B6 U" r
现在,我们要扩容这个磁盘镜像,增容20G的空间,但是在操作之前,请先停止虚拟机,虽然不停止也可以增容成功,但是会报错,目前还不清楚,错误是否会对虚拟机以后的运行产生影响,保险起见,先停止虚拟机,然后再执行如下命令对磁盘镜像进行扩容。
1 A1 [% `" s) g5 z; p停止虚拟机后,执行如下命令
* R# F( n/ P+ |# Q
* A$ T. c) B& ~' A[root@cos7 ~]# qemu-img resize /var/lib/libvirt/images/kvm4.qcow2 +20G
, l& a1 q( ], q: f7 LImage resized.6 b. D; D8 K) X3 ~: w
增容后,再次查看磁盘镜像信息,如下,磁盘的virtual size已经从50G变成了70G; `+ T7 N! {- A
+ Y. ^4 A$ l( I8 V/ X
[root@cos7 ~]# qemu-img info /var/lib/libvirt/images/kvm4.qcow2
4 `: v9 n- Z8 O" {6 Simage: /var/lib/libvirt/images/kvm4.qcow2
5 f) k( E3 {& N/ V' P( a" u/ nfile format: qcow2& P9 N* I0 W: B" U' E
virtual size: 70G (75161927680 bytes)
8 b& ~( c% u- Y  v* x3 Xdisk size: 2.5G& @7 c  w. P: e1 j; \
cluster_size: 655366 t" A: S  K, e4 t
Format specific information:5 K5 F+ E% F, Q& k, {$ b* k
compat: 1.1; p/ S$ X; ~) k( Y, u" @$ o0 S
lazy refcounts: true
7 X4 D1 i6 L8 z" W& e) {: O磁盘扩容成功后,启动kvm4虚拟机,登录到虚拟机内,再次查看磁盘信息,发现已经变成了75G9 J, l& d& m; |/ \' H7 n
5 P* O" `  Q# |1 N; ]  G$ i
[root@kvm4 ~]# fdisk -l0 {# z4 C0 n+ R6 @# v. v) I

( ~! y9 U# w( d6 i$ S6 QDisk /dev/vda: 75.2 GB, 75161927680 bytes, 146800640 sectors+ w0 m/ l  q1 R+ T$ u6 d
Units = sectors of 1 * 512 = 512 bytes% I6 t. m' h( |6 M; p& }
Sector size (logical/physical): 512 bytes / 512 bytes
9 P9 N$ d% i+ RI/O size (minimum/optimal): 512 bytes / 512 bytes% v8 o* Y4 J* w  L6 }( ~
Disk label type: dos$ o4 w; k- {" t; {5 g- Q6 _
Disk identifier: 0x000b9417+ s0 B( y$ i! B9 j6 z
8 ^7 V4 v$ O% x8 w4 e" p
Device Boot Start End Blocks Id System3 g) M  [/ a; a8 `
/dev/vda1 * 2048 2099199 1048576 83 Linux7 h: i9 A) G; S6 |
/dev/vda2 2099200 10227711 4064256 82 Linux swap / Solaris. G6 y! B6 ?6 V" ~  k" W' H
/dev/vda3 10227712 104857599 47314944 83 Linux% G8 y  W( }0 ^! l* _
但是,根分区和对应的文件系统还没有扩容,如下,可以看到/dev/vda3分区仍然识别为48G,根文件系统仍然识别为46G。) H3 }& E8 R0 [  ^# l- U; r3 f

; @8 A7 o/ o0 L[root@kvm4 ~]# fdisk -lu /dev/vda3
/ b6 v/ @- e" q" M9 X# U
0 x; ~# \$ B2 @8 ~+ S* F1 LDisk /dev/vda3: 48.5 GB, 48450502656 bytes, 94629888 sectors# L: o# p' L2 s
Units = sectors of 1 * 512 = 512 bytes0 V% a1 B5 V) l7 ]1 F$ e8 {
Sector size (logical/physical): 512 bytes / 512 bytes+ [8 G8 t; R. @* v+ z! @9 R
I/O size (minimum/optimal): 512 bytes / 512 bytes2 L5 G- K9 Z* O+ \7 g
* k# Q( M* E3 H' G& p9 E
[root@kvm4 ~]#3 ]8 [$ H$ g/ z
[root@kvm4 ~]#
# T, F2 ~+ T% h3 L; p: T! B[root@kvm4 ~]#1 A% K6 D# i5 E4 S
[root@kvm4 ~]# df -h
$ M) s' }+ P% X  Q$ |+ L6 RFilesystem Size Used Avail Use% Mounted on
/ {6 x. `" _1 P* ]) D+ J" bdevtmpfs 1.9G 0 1.9G 0% /dev
; G/ e( A( b, o: E6 R& s* Wtmpfs 1.9G 0 1.9G 0% /dev/shm% r9 P, ~% N0 k$ V- ?7 u
tmpfs 1.9G 8.5M 1.9G 1% /run
1 s& l) D# }3 p+ }5 ~% E& Ftmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
* V3 b# Y/ Z8 p( p" [7 H/dev/vda3 46G 1.3G 44G 3% /
. c- [# s3 E' R6 _+ v& [/dev/vda1 1014M 142M 873M 14% /boot- W2 d( t( i# y; S1 @
tmpfs 379M 0 379M 0% /run/user/02 M# j# N1 V2 D: G: V
我们现在的目标就是扩容根分区和文件系统。
: |2 D+ p3 p( m7 }1 Z; _+ f此处可以参考阿里云的文档进行扩容操作,链接如下:: H$ Z& r! i4 @/ j( S  G  w
https://help.aliyun.com/document ... scm=20140722.S_help! }" {; [) d% v

7 e; [, ~: B  \9 h3 H) h我的虚拟机操作系统是centos7,分区是MBR分区,不是GPT分区,文件系统是xfs,所以,我的扩容过程可能跟实际遇到的情况不太一样,这里需要以实际情况为准,参考上面的文档,做出不同的细节处理,生产环境中最好提前克隆出一个机器或者做一个测试机进行模拟。! p/ h7 \- C0 ~$ p! T* `9 \6 p

/ d3 d/ U; v# M. a0 e首先,在虚拟机中安装cloud-utils-growpart工具(如果是GPT分区,先安装gdisk),对分区进行扩容,centos7中命令如下
5 w& m( {) k: G3 Z6 J. |5 k1 Y8 [
yum install -y cloud-utils-growpart
: l. c: d/ g8 H3 O安装完成后,执行如下命令扩容对应分区,我需要扩容vda3,所以命令中是vda 3,vda和3中间有空格( C7 w7 [( ]/ d" C; W0 h/ m5 R

1 `# a: @3 T* b; Y* f' W[root@kvm4 ~]# growpart /dev/vda 3
" v  ^0 J0 X% E4 b1 L8 u$ ZCHANGED: partition=3 start=10227712 old: size=94629888 end=104857600 new: size=136572895 end=146800607
3 s4 T4 x0 l: P) i4 H2 T: u可以看到,分区的大小已经改变,使用命令确认,vda3分区的大小已经识别为69.9G
- Y7 w. x, B9 a4 Z0 ^) @* D3 g5 ~& }) E% @0 r( d  f4 W
[root@kvm4 ~]# fdisk -lu /dev/vda3
& D) O" ^% _9 H% I. j3 D
# t+ O/ M( Z( ]8 ?& SDisk /dev/vda3: 69.9 GB, 69925322240 bytes, 136572895 sectors0 }8 ^, S  Q5 X/ c  ~
Units = sectors of 1 * 512 = 512 bytes
" L; s+ l, _4 USector size (logical/physical): 512 bytes / 512 bytes: h2 s9 m# U% {: g  j
I/O size (minimum/optimal): 512 bytes / 512 bytes5 l3 A  v& e% L# k! [" e1 k
如果扩容完成后,再次执行扩容命令,会提示NOCHANGE…it cannot be grown,这是因为,分区已经扩展完成了,没有富裕的空间可供扩展了,其实,还有一种情况也会报如下错误,导致无法扩容分区,我们一会儿再聊,先把一整套扩容流程走完,此处重复执行如下命令不会影响扩容。5 C1 T* l! w1 B8 F7 e
/ U1 [6 x& }$ f- G; Q. D
[root@kvm4 ~]# growpart /dev/vda 3" h+ Z0 P. O$ X' s9 a5 p
NOCHANGE: partition 3 is size 136572895. it cannot be grown
; s. j0 Y9 d9 {1 {vda3分区扩容完成后,需要扩容分区对应的文件系统,此处文件系统是xfs,所以执行xfs_growfs命令即可,如果是ext文件系统,需要使用resize2fs命令,此处运行的命令为xfs_growfs /dev/vda3: N0 X  ~0 C/ e
如下:
$ F  s9 Y- ]1 Q7 I* Q
" O3 @8 C* I# V8 {* r[root@kvm4 ~]# xfs_growfs /dev/vda3
7 N! n3 q& N& S' F& E! tmeta-data=/dev/vda3 isize=512 agcount=4, agsize=2957184 blks
  t" j+ Q* g( W" n= sectsz=512 attr=2, projid32bit=1
  b* {/ A( o% \/ p1 t= crc=1 finobt=0 spinodes=0
6 l% H  ?8 V) ]$ R6 o1 Kdata = bsize=4096 blocks=11828736, imaxpct=25$ q# k& l" L/ q' L( N
= sunit=0 swidth=0 blks8 K( `7 o9 Z) _7 |/ h
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
. l7 ~/ e) p4 r2 Plog =internal bsize=4096 blocks=5775, version=28 G9 {( K" H* \7 J: s- ^
= sectsz=512 sunit=0 blks, lazy-count=14 \5 m5 a3 U  U2 }
realtime =none extsz=4096 blocks=0, rtextents=0, R' |/ i% F' z  _7 J9 z
data blocks changed from 11828736 to 17071611
. g" y7 }+ ]7 G: Q" v# E% ?, f再次查看磁盘使用情况,可以看到,根分区已经从之前的46G扩容到了66G,如下
' r# z% s( [+ G# ^
; m/ U. f6 y" J7 c$ F[root@kvm4 ~]# df -h3 O6 V9 \. e+ @2 |  S; l* m- @
Filesystem Size Used Avail Use% Mounted on
" @) ^! }- W' u" r  i2 ddevtmpfs 1.9G 0 1.9G 0% /dev. r& M; s* S9 h3 w! U7 h
tmpfs 1.9G 0 1.9G 0% /dev/shm" e2 l- H: Q: q( ?) a- u
tmpfs 1.9G 8.5M 1.9G 1% /run4 p! S1 V/ ?$ ~5 w6 [# Q
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup6 \. m5 [; G& l$ T# {
/dev/vda3 66G 1.4G 64G 3% /1 ^# v" R: ^! b" O0 I
/dev/vda1 1014M 142M 873M 14% /boot  ]; G: i. z+ p+ j8 o+ ~6 q8 b& r
tmpfs 379M 0 379M 0% /run/user/0# u' B- P3 m& P1 Q- }) t
至此,整个扩容操作已经完成了。
& e0 r+ Q3 j1 C& a9 g, F, Q  H+ X0 v6 U3 _- H) r
此处有一个坑,刚才已经提到过,在扩容分区时,我们使用了growpart命令,如果重复执行此命令,会提示NOCHANGE…it cannot be grown,这是因为已经没有更多空间可供分区扩容了,但是,在某些特殊情况下,磁盘明明还有很多空间,在第一次执行growpart命令时就会提示it cannot be grown,现在咱们就来聊聊这种特殊情况。
& }5 |3 ^6 _, p) r1 u7 P/ m2 J2 F  }% D
/ r  ]) N' j, m$ b- `% H, D: Y如果磁盘有很多富裕空间可供分区扩容,但是每次执行growpart命令就提示it cannot be grown,很有可能是因为,你要扩容的分区不是磁盘的最后一个分区,上例中,我要扩容的vda3就是vda磁盘的最后一个分区,如下图,可以通过分区号或者分区区间很明显的看出,vda3就是vda的最后一个分区
' V( w) C  Q) {9 E$ Y
2 N* {6 Y* S7 |( x7 Y这种情况下,第一次执行growpart命令扩容分区时,应该是可以正常执行的。( @/ P) t# a0 C/ G9 P
但是,如果你遇到的分区是下面的情况,而你想要扩容的分区恰巧不是磁盘的最后一个分区,则无法扩容成功,会直接提示it cannot be grown
$ H" b& z8 l0 b) `$ T8 |( R1 Z. V% S; j3 G; l3 p
[root@kvm1 ~]# fdisk -l+ c/ k: M: u) o* p7 C5 u& u

) l/ O, q- W, ~% ]6 iDisk /dev/vda: 536.9 GB, 536870912000 bytes, 1048576000 sectors  E2 l, [, }: q$ H) ^% w
Units = sectors of 1 * 512 = 512 bytes
+ C9 j! u8 C* J6 bSector size (logical/physical): 512 bytes / 512 bytes
9 A# X4 s: w+ M0 L3 wI/O size (minimum/optimal): 512 bytes / 512 bytes( A: E! Y  L7 G# W: u; C' d. P
Disk label type: dos# b" ~# A+ ^$ y
Disk identifier: 0x000ac5a29 c2 V3 ?. ]5 }7 I; ]1 r- h

8 N+ ~2 S( @: T& C* XDevice Boot Start End Blocks Id System
. {$ k: z9 r  z4 H3 e* {4 x/dev/vda1 * 2048 2099199 1048576 83 Linux: Z6 ]1 t% d4 Y4 h" R% T  r
/dev/vda2 2099200 1044367359 521134080 83 Linux, Z. Z: w8 o* }6 B' P' u
/dev/vda3 1044367360 1048561663 2097152 82 Linux swap / Solaris( N  r/ I. {0 Z: ]  d
[root@kvm1 ~]#
: l+ u7 ~/ Y9 K8 f& D4 {[root@kvm1 ~]#
4 f0 z' U9 r5 G[root@kvm1 ~]# df -h
: l8 u; b5 w% \' t! X9 F4 GFilesystem Size Used Avail Use% Mounted on
5 s, W9 ~+ U0 K! S" o3 i( l+ `devtmpfs 909M 0 909M 0% /dev
: \" d+ Y" M' x( H, v* ~& Ztmpfs 919M 0 919M 0% /dev/shm
2 M$ r. ?- F# F* f) i- Y' e1 Otmpfs 919M 8.6M 911M 1% /run7 l4 r% d0 e% x; X+ O8 N& Y. j! s4 H
tmpfs 919M 0 919M 0% /sys/fs/cgroup- Z% U9 n. y" g# r! f. w& j. h, x
/dev/vda2 497G 1.3G 496G 1% /0 z+ C8 l* U1 K% ]4 U
/dev/vda1 1014M 142M 873M 14% /boot
4 G( ]/ E! V4 ]tmpfs 184M 0 184M 0% /run/user/0' s) o1 x) G) ?. r) F
如上,vda一共有三个分区,根对应的分区是vda2,即使vda磁盘有很多富裕空间,如果想要使用growpart命令扩容vda2,也是不行的,会直接提示it cannot be grown,因为上例中,vda2后面还有一个vda3分区,而上例中的情况比较好处理,因为最后一个分区是swap分区,我们只需要删除这个分区,然后再扩容vda2就好了,扩容完成后,再单独挂载一个磁盘作为swap分区或者使用文件作为swap分区,所以,在做模板机的时候要避开这个坑,别问我怎么知道的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:38 , Processed in 0.034389 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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