Linux根分区自动/自适应扩容

参考:

租户已发放的VM:

https://support.telefonicaopencloud.com/en-us/usermanual/ecs/en-us_topic_0078300749.html

https://support.telefonicaopencloud.com/en-us/usermanual/ecs/en-us_topic_0078300750.html

租户的私有镜像:

https://support.telefonicaopencloud.com/en-us/usermanual/ims/en-us_topic_0076880304.html


背景

当前租户发放VM时,系统盘的大小与镜像的min_size设置有关,大部分场景为40GB,而租户在发放时可以选择180GB,发放成功后在OS中观察,系统盘并不是180GB。

解决

root分区在最末尾分区

以CentOS6.5 64bit 系统盘为40为例,介绍root分区在最末尾分区时如何自定义可自动扩容root分区的Linux私有镜像的配置方法。

a. 执行如下命令查看/dev/xvda的磁盘分区。
parted -l /dev/xvda
回显信息如下所示,此时root分区为第二分区,大小为38.7GB。
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.7GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
  
Number Start End Size Type File system Flags  
1 1049kB 4296MB 4295MB primary linux-swap(v1)  

2 4296MB 42.9GB 38.7GB primary ext4 boot

b. 为了支持镜像自动扩容到root分区,请安装growpart工具。
执行以下命令确认growpart是否已安装。
growpart
回显信息如下所示,表示已安装growpart工具,则跳过第3步安装步骤;否则,顺序执行即可。
growpart disk partition 
   rewrite partition table so that partition takes up all the space it can 
   options: 
    -h | --help       print Usage and exit 
         --fudge F    if part could be resized, but change would be 
                      less than 'F', do not resize (default: 20480) 
    -N | --dry-run    only report what would be done, show new 'sfdisk -d' 
    -v | --verbose    increase verbosity / debug 
    -u | --update  R  update the the kernel partition table info after growing 
                      this requires kernel support and 'partx --update' 
                      R is one of: 
                       - 'auto'  : [default] update partition if possible 
                       - 'force' : try despite sanity checks (fail on failure) 
                       - 'off'   : do not attempt 
                       - 'on'    : fail if sanity checks indicate no support 
 
   Example: 
    - growpart /dev/sda 1 
      Resize partition 1 on /dev/sda 

must supply disk and partition-number

c.(Optional) 执行以下命令完成growpart安装。

yum installcloud-*

d. 执行如下命令,获取文件系统类型和UUID。
blkid
回显信息如下所示。
/dev/xvda1: UUID="25ec3bdb-ba24-4561-bcdc-802edf42b85f" TYPE="swap"   

/dev/xvda2: UUID="1a1ce4de-e56a-4e1f-864d-31b7d9dfb547" TYPE="ext4" 

f.     执行如下命令,对分区扩容

growpart /dev/xvda 1

观察分区是否扩容成功,重启系统,df -h观察是否已更新。

root分区在非末尾分区且无扩展分区

以CentOS7.3 64bit系统盘为40G为例,介绍root分区在非末尾分区时如何自定义可自动扩容root分区的Linux私有镜像的配置方法。
a. 执行如下命令查看/dev/xvda的磁盘分区。
parted -l /dev/xvda
回显信息如下所示,此时,第一个分区是root分区,大小为40.9GB。第二个分区是swap分区。
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.9GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
Disk Flags:   
  
Number  Start   End     Size    Type     File system     Flags  
1      1049kB  41.0GB  40.9GB  primary  ext4            boot  
2      41.0GB  42.9GB  2000MB  primary  linux-swap(v1)


b. 执行如下命令,查看/etc/fstab文件的配置。

tail -n 3 /etc/fstab

回显信息如下所示,可以看到两个分区的UUID信息。
#  
UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea /                       ext4    defaults        1 1  
UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap                    swap    defaults        0 0
c. 执行如下命令,打开/etc/fstab文件,按“i”键进入编辑状态。
vi /etc/fstab
d. 清除swap分区配置,按“ESC”键退出编辑状态并执行如下命令保存配置。
wq!
e. 执行如下命令,查看配置是否已更改。

tail -n 3 /etc/fstab

回显信息如下所示,此时只有root分区的UUID信息。
UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea /                       ext4    defaults        1 1
f. 执行如下命令,关闭swap设备。
swapoff -a
g. 执行如下命令,查看/dev/xvda磁盘分区情况。
parted /dev/xvda
回显信息如下所示。
[root@test-0912 bin]# parted /dev/xvda  
GNU Parted 3.1  
Using /dev/xvda  
Welcome to GNU Parted! Type 'help' to view a list of commands.  
(parted) 
h. 输入如下命令,查看当前分区情况。
p
回显信息如下所示。
(parted) p                                                       
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.9GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
Disk Flags:   
  
Number  Start   End     Size    Type     File system     Flags  
 1      1049kB  4296MB  4295MB  primary  linux-swap(v1)  
 2      4296MB  42.9GB  38.7GB  primary  xfs             boot  
(parted) 
i. 输入如下命令,删除第2个磁盘分区。
rm 2
回显信息如下所示。
(parted) rm 2  
(parted)
j. 输入如下命令,查看当前分区情况。
p
回显信息如下所示。
(parted) p                                                                 
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.9GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
Disk Flags:   
  
Number  Start   End     Size    Type     File system  Flags  
1      1049kB  41.0GB  40.9GB  primary  ext4         boot
k. 输入quit退出。
l. 执行如下命令,查看/dev/xvda磁盘分区情况。
parted -l /dev/xvda
回显信息如下所示,swap分区已经删除。
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.9GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
Disk Flags:   
  
Number  Start   End     Size    Type     File system  Flags  
1      1049kB  41.0GB  40.9GB  primary  ext4         boot
m. 为了支持镜像自动扩容到root分区,请安装growpart。
执行以下命令确认growpart是否已安装。
growpart
回显信息如下所示,表示已安装growpart工具,则跳过第14步安装步骤;否则,顺序执行即可。
growpart disk partition 
   rewrite partition table so that partition takes up all the space it can 
   options: 
    -h | --help       print Usage and exit 
         --fudge F    if part could be resized, but change would be 
                      less than 'F', do not resize (default: 20480) 
    -N | --dry-run    only report what would be done, show new 'sfdisk -d' 
    -v | --verbose    increase verbosity / debug 
    -u | --update  R  update the the kernel partition table info after growing 
                      this requires kernel support and 'partx --update' 
                      R is one of: 
                       - 'auto'  : [default] update partition if possible 
                       - 'force' : try despite sanity checks (fail on failure) 
                       - 'off'   : do not attempt 
                       - 'on'    : fail if sanity checks indicate no support 
 
   Example: 
    - growpart /dev/sda 1 
      Resize partition 1 on /dev/sda 
must supply disk and partition-number
n. 执行以下命令完成growpart安装。

yum installcloud-*

o. 执行如下命令,将/dev/xvda的swap分区扩容给root分区所在的第1个分区。
growpart /dev/xvda 1
回显信息如下所示:
CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=83873317,end=83875365
p. 执行如下命令,查看/dev/xvda磁盘分区情况。
parted -l /dev/xvda
回显信息如下所示。
Model: Xen Virtual Block Device (xvd)  
Disk /dev/xvda: 42.9GB  
Sector size (logical/physical): 512B/512B  
Partition Table: msdos  
Disk Flags:   
  
Number  Start   End     Size    Type     File system  Flags  
1      1049kB  42.9GB  42.9GB  primary  ext4         boot
q. 执行如下命令,获取文件系统类型和UUID。
blkid
回显信息如下

/dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4"  

重启系统

root分区在非末尾分区且有扩展分区

以Ubuntu16.04 64bit 系统盘为40G为例,介绍root分区在非末尾分区且有扩展分区时如何整改公共镜像完成配置的方法。
1.  执行如下命令查看/dev/xvda的磁盘分区。
parted -l /dev/xvda
回显信息如下所示,此时,第一个分区是root分区,大小为38.7GB。第二个分区是扩展分区,第三个分区为swap分区。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start   End     Size    Type      File system     Flags
 1      1049kB  38.7GB  38.7GB  primary   ext3            boot
 2      38.7GB  42.9GB  4294MB  extended
 5      38.7GB  42.9GB  4294MB  logical   linux-swap(v1)
2.  执行如下命令,查看/etc/fstab文件的配置
cat /etc/fstab
回显信息如下所示,可以看到两个分区的UUID信息。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#        
# / was on /dev/xvda1 during installation
UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34 / ext3 errors=remount-ro 0  1
# swap was on /dev/xvda5 during installation
UUID=7a44a9ce-9281-4740-b95f-c8de33ae5c11 none swap  sw 0 0
3.  执行如下命令,打开/etc/fstab文件,按“i”键进入编辑状态。
vi /etc/fstab
4.  清除swap分区配置,按“ESC”键退出编辑状态并执行如下命令保存配置。
wq!
5.  执行如下命令,查看配置是否已更改。
tail -n 3 /etc/fstab
回显信息如下所示,此时只有root分区的UUID信息。
UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34 / ext3 errors=remount-ro 0  1


6.  执行如下命令,关闭swap设备。
swapoff -a
7.  执行如下命令,查看/dev/xvda磁盘分区情况。
parted /dev/xvda
回显信息如下所示。
GNU Parted 2.3
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
8.  输入如下命令,查看当前分区情况。
p
回显信息如下所示。
(parted) p                                                                
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start   End     Size    Type      File system     Flags
 1      1049kB  38.7GB  38.7GB  primary   ext3            boot
 2      38.7GB  42.9GB  4294MB  extended
 5      38.7GB  42.9GB  4294MB  logical   linux-swap(v1)
9.  输入如下命令,先删除swap分区。
rm 5
回显信息如下所示。
(parted) rm 5 
(parted)
10.  输入如下命令,再删除扩展分区。
rm 2
回显信息如下所示。
(parted) rm 2 
(parted)
11.  输入如下命令,查看当前分区情况。
p
回显信息如下所示,此时扩展分区和swap分区已删除。
(parted) p                                                                
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9G
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  38.7GB  38.7GB  primary  ext3         boot
12.  输入quit退出。
13.  执行如下命令,查看/dev/xvda磁盘分区情况。
parted -l /dev/xvda
回显信息如下所示,只有root分区。
Model: Xen Virtual Block Device (xvd) 
Disk /dev/xvda: 42.9GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:  
Number Start End Size Type Filesystem Flags 
1 1049kB 41.0GB 40.9GB primary ext4 boot
14.  为了支持镜像自动扩容到root分区,需要使用growpart工具。
执行以下命令确认growpart是否已安装。
growpart
回显信息如下所示,表示已安装growpart工具,则跳过第15步安装步骤;否则,顺序执行即可。
growpart disk partition
   rewrite partition table so that partition takes up all the space it can
   options:
    -h | --help       print Usage and exit
         --fudge F    if part could be resized, but change would be
                      less than 'F', do not resize (default: 20480)
    -N | --dry-run    only report what would be done, show new 'sfdisk -d'
    -v | --verbose    increase verbosity / debug
    -u | --update  R  update the the kernel partition table info after growing
                      this requires kernel support and 'partx --update'
                      R is one of:
                       - 'auto'  : [default] update partition if possible
                       - 'force' : try despite sanity checks (fail on failure)
                       - 'off'   : do not attempt
                       - 'on'    : fail if sanity checks indicate no support
   Example:
    - growpart /dev/sda 1
      Resize partition 1 on /dev/sda
must supply disk and partition-number
15.  执行以下命令完成growpart安装。
yum installcloud-*
16.  执行如下命令,给/dev/xvda的第1个分区扩容。
growpart /dev/xvda 1
回显信息如下所示:
CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=209710462,end=209712510
17.  执行如下命令,获取文件系统类型和UUID。
blkid
回显信息如下
/dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4" 
重启系统

你可能感兴趣的:(Linux)