ubuntu LVM disk 命令行给带有extended 扩展分区的磁盘分区扩容

目录

说明

用parted来调整分区

1.进入parted命令行模式

2.输入print输出分区结构

3.输入resizepart 调整分区大小

4.查看调整后结构

5.退出parted命令行模式

6.更新系统分区

输入lsblk查看

输入df -hT显示磁盘分区:

输入resize2fs命令:

重新df -hT命令进行确认:


说明

虚拟机加了磁盘空间后系统里还要调整一下磁盘空间才可以使用,如果是本地主机那么用GParted Live启动盘引导后进行调整很方便。

如图,先调整 /dev/sda2 的容量,再调整/dev/sda5 的容量点应用就可以了。但是有时候无法用启动盘该怎么做呢?

用parted来调整分区

1.进入parted命令行模式

输入命令:

parted
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

2.输入print输出分区结构

(parted) print                                                            
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 275GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type      File system  Flags
 1      1049kB  538MB  537MB  primary   fat32        boot
 2      539MB   275GB  136GB  extended
 5      539MB   275GB  136GB  logical   ext4

(parted)   

 这里可以看到Number  2是Extended扩展分区,后面的Number  5 和 2是一样的,根据前面的GParted图形界面就可以理解分区结构,我们要先调整2的容量后才可以调整5的容量。

3.输入resizepart 调整分区大小

(parted) resizepart                                                       
Partition number? 2                                                       
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? yes                                                               
End?  [136GB]? -0                                                         
(parted) resizepart                                                       
Partition number? 5                                                       
Warning: Partition /dev/sda5 is being used. Are you sure you want to continue?
Yes/No? yes                                                               
End?  [136GB]? -0                                                         
(parted) quit                                                             
Information: You may need to update /etc/fstab.

 

这里End?  [136GB]?后输入了-0 ,代表分配所有剩余空间,也可以输入 100%

注意:这里必须是先2再5,不然会报Error: Can't have overlapping partitions.错误。

4.查看调整后结构

输入print

(parted) print                                                            
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 275GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type      File system  Flags
 1      1049kB  538MB  537MB  primary   fat32        boot
 2      539MB   275GB  274GB  extended
 5      539MB   275GB  274GB  logical   ext4

(parted) 

5.退出parted命令行模式

输入quit

(parted) print                                                            
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 275GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type      File system  Flags
 1      1049kB  538MB  537MB  primary   fat32        boot
 2      539MB   275GB  274GB  extended
 5      539MB   275GB  274GB  logical   ext4

(parted) quit                                                             
Information: You may need to update /etc/fstab.

6.更新系统分区

输入lsblk查看

lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0      2:0    1     4K  0 disk 
loop0    7:0    0  97.9M  1 loop /snap/core/10583
loop1    7:1    0  98.4M  1 loop /snap/core/10823
loop2    7:2    0  55.4M  1 loop /snap/core18/1944
loop3    7:3    0  55.5M  1 loop /snap/core18/1988
loop4    7:4    0 162.9M  1 loop /snap/gnome-3-28-1804/145
loop5    7:5    0 217.9M  1 loop /snap/gnome-3-34-1804/60
loop6    7:6    0   219M  1 loop /snap/gnome-3-34-1804/66
loop7    7:7    0  64.8M  1 loop /snap/gtk-common-themes/1514
loop8    7:8    0  64.4M  1 loop /snap/gtk-common-themes/1513
loop9    7:9    0 663.1M  1 loop /snap/intellij-idea-community/270
loop10   7:10   0 424.7M  1 loop /snap/pycharm-community/224
loop11   7:11   0   662M  1 loop /snap/intellij-idea-community/273
loop12   7:12   0    51M  1 loop /snap/snap-store/498
loop13   7:13   0    51M  1 loop /snap/snap-store/518
loop14   7:14   0  31.1M  1 loop /snap/snapd/10707
loop15   7:15   0 424.8M  1 loop /snap/pycharm-community/226
loop16   7:16   0  31.1M  1 loop /snap/snapd/11036
sda      8:0    0   256G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0     1K  0 part 
└─sda5   8:5    0 255.5G  0 part /

可以看到sda/sda5已经是扩容成功了

输入df -hT显示磁盘分区:

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  919M     0  919M   0% /dev
tmpfs          tmpfs     190M  2.6M  187M   2% /run
/dev/sda5      ext4      125G  110G  8.2G  94% /
tmpfs          tmpfs     948M     0  948M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     948M     0  948M   0% /sys/fs/cgroup
/dev/loop1     squashfs   99M   99M     0 100% /snap/core/10823
/dev/loop0     squashfs   98M   98M     0 100% /snap/core/10583
/dev/loop2     squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop3     squashfs   56M   56M     0 100% /snap/core18/1988
/dev/loop5     squashfs  218M  218M     0 100% /snap/gnome-3-34-1804/60
/dev/loop4     squashfs  163M  163M     0 100% /snap/gnome-3-28-1804/145
/dev/loop6     squashfs  219M  219M     0 100% /snap/gnome-3-34-1804/66
/dev/loop7     squashfs   65M   65M     0 100% /snap/gtk-common-themes/1514
/dev/loop8     squashfs   65M   65M     0 100% /snap/gtk-common-themes/1513
/dev/loop9     squashfs  664M  664M     0 100% /snap/intellij-idea-community/270
tmpfs          tmpfs     7.9G     0  7.9G   0% /www/tmp
/dev/loop10    squashfs  425M  425M     0 100% /snap/pycharm-community/224
/dev/loop11    squashfs  663M  663M     0 100% /snap/intellij-idea-community/273
/dev/loop12    squashfs   52M   52M     0 100% /snap/snap-store/498
/dev/loop13    squashfs   52M   52M     0 100% /snap/snap-store/518
/dev/loop14    squashfs   32M   32M     0 100% /snap/snapd/10707
/dev/loop15    squashfs  425M  425M     0 100% /snap/pycharm-community/226
/dev/loop16    squashfs   32M   32M     0 100% /snap/snapd/11036
/dev/sda1      vfat      511M  4.0K  511M   1% /boot/efi
tmpfs          tmpfs     190M     0  190M   0% /run/user/0

这里发现容量还是没有变

输入resize2fs命令:

sudo resize2fs /dev/sda5
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
old_desc_blocks = 16, new_desc_blocks = 32
The filesystem on /dev/sda5 is now 66977280 (4k) blocks long.

进行进行刷新。

重新df -hT命令进行确认:

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  919M     0  919M   0% /dev
tmpfs          tmpfs     190M  2.6M  187M   2% /run
/dev/sda5      ext4      251G  110G  131G  46% /
tmpfs          tmpfs     948M     0  948M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     948M     0  948M   0% /sys/fs/cgroup
/dev/loop1     squashfs   99M   99M     0 100% /snap/core/10823
/dev/loop0     squashfs   98M   98M     0 100% /snap/core/10583
/dev/loop2     squashfs   56M   56M     0 100% /snap/core18/1944
/dev/loop3     squashfs   56M   56M     0 100% /snap/core18/1988
/dev/loop5     squashfs  218M  218M     0 100% /snap/gnome-3-34-1804/60
/dev/loop4     squashfs  163M  163M     0 100% /snap/gnome-3-28-1804/145
/dev/loop6     squashfs  219M  219M     0 100% /snap/gnome-3-34-1804/66
/dev/loop7     squashfs   65M   65M     0 100% /snap/gtk-common-themes/1514
/dev/loop8     squashfs   65M   65M     0 100% /snap/gtk-common-themes/1513
/dev/loop9     squashfs  664M  664M     0 100% /snap/intellij-idea-community/270
tmpfs          tmpfs     7.9G     0  7.9G   0% /www/tmp
/dev/loop10    squashfs  425M  425M     0 100% /snap/pycharm-community/224
/dev/loop11    squashfs  663M  663M     0 100% /snap/intellij-idea-community/273
/dev/loop12    squashfs   52M   52M     0 100% /snap/snap-store/498
/dev/loop13    squashfs   52M   52M     0 100% /snap/snap-store/518
/dev/loop14    squashfs   32M   32M     0 100% /snap/snapd/10707
/dev/loop15    squashfs  425M  425M     0 100% /snap/pycharm-community/226
/dev/loop16    squashfs   32M   32M     0 100% /snap/snapd/11036
/dev/sda1      vfat      511M  4.0K  511M   1% /boot/efi
tmpfs          tmpfs     190M     0  190M   0% /run/user/0

可以看到空间已经变大了。

<think>嗯,用户想要了解如何在制作OpenStack镜像时使用cloud-init自动扩容分区。这个问题听起来涉及到镜像制作和cloud-init配置,可能用户需要为云环境准备自定义镜像,并确保实例启动时根分区能自动扩展。首先,我需要回忆一下相关步骤,确保没有遗漏关键点。 首先,制作OpenStack镜像通常需要使用工具比如virt-manager、qemu-img等,或者直接从现有虚拟机导出镜像。而自动扩容分区的部分,我记得cloud-init有一个growpart的模块,可以处理分区扩展。不过可能需要确认镜像中的分区表类型,比如是MBR还是GPT,以及文件系统是否支持resize,比如ext4或者xfs。 接下来,用户可能需要安装cloud-init到镜像中,并配置正确的数据源,因为OpenStack通常使用ConfigDrive或者Metadata服务。在配置cloud-init时,需要确保启用了growpart和fs_resize模块。此外,镜像的磁盘布局也很重要,根分区必须是最后一个分区,这样growpart才能正确扩展。如果有交换分区或者其他分区在根分区之后,可能会导致问题。 然后,可能需要修改grub配置,确保内核参数中包含rootflags=discard,这样文件系统扩展后可以释放空间。另外,检查cloud-init的配置文件,比如/etc/cloud/cloud.cfg,确保有正确的配置,比如datasource列表里包含OpenStack,以及cloud_init_modules里包含growpart和resizefs。 用户可能遇到的常见问题包括:分区没有正确扩展,可能是因为分区不是最后一个,或者文件系统不支持在线调整大小。还有可能是cloud-init没有正确安装或配置,导致模块没有执行。此外,镜像本身可能需要安装必要的工具,比如cloud-utils、growpart或者dracut-modules-growroot,具体取决于发行版。 还有一点需要考虑的是,不同Linux发行版的处理方式可能不同。例如,CentOS和Ubuntu在cloud-init的配置和包管理上可能有差异,需要分别处理。此外,如果使用LVM,步骤会有所不同,可能需要调整自动扩展的逻辑。 最后,测试镜像的步骤也很重要。用户可能需要上传镜像到OpenStack,启动实例,检查cloud-init日志,确认分区是否扩展成功。可能需要查看/var/log/cloud-init.log来调试问题。 总结来说,步骤大致包括:准备基础镜像,安装配置cloud-init,调整分区和文件系统配置,验证并测试。需要确保每个环节都正确无误,才能实现自动扩容分区的目标。</think>制作OpenStack镜像时,通过`cloud-init`实现根分区自动扩容需要以下步骤: --- ### 一、基础镜像准备 1. **选择基础镜像** 建议使用官方支持的云镜像(如Ubuntu Cloud、CentOS Generic Cloud),这类镜像已预装`cloud-init`并针对云环境优化。 2. **验证分区类型** - 使用`fdisk -l`确认根分区磁盘的最后一个分区(自动扩容仅支持扩展最后一个分区) - 推荐使用`GPT`分区表(支持大容量磁盘)或`MBR`+`extended`分区 --- ### 二、安装配置cloud-init 1. **安装依赖** ```bash # Ubuntu/Debian apt install cloud-init cloud-utils growpart # CentOS/RHEL yum install cloud-init cloud-utils-growpart dracut-modules-growroot ``` 2. **配置数据源** 修改`/etc/cloud/cloud.cfg`,确保包含OpenStack数据源: ```yaml datasource_list: [ ConfigDrive, OpenStack ] ``` 3. **启用自动扩容模块** 在`cloud-init`配置中激活以下模块: ```yaml cloud_init_modules: - growpart - resizefs ``` --- ### 三、分区与文件系统调整 1. **禁用交换分区(可选)** 如果交换分区位于根分区之后,建议删除或迁移,否则会阻碍扩容: ```bash swapoff -a && rm -f /swapfile ``` 2. **修改GRUB配置** 确保内核参数允许在线扩容: ```bash sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 rootflags=discard"/' /etc/default/grub update-grub # Ubuntu/Debian grub2-mkconfig -o /boot/grub2/grub.cfg # CentOS/RHEL ``` 3. **重建initramfs** ```bash dracut -f # CentOS/RHEL update-initramfs -u # Ubuntu/Debian ``` --- ### 四、验证与镜像生成 1. **清理镜像** ```bash cloud-init clean rm -rf /var/log/cloud-init* ``` 2. **转换为OpenStack格式** ```bash qemu-img convert -f qcow2 -O raw input.qcow2 output.raw ``` 3. **上传镜像** 通过OpenStack Dashboard或CLI上传镜像,指定`hw_disk_bus=virtio`和`hw_scsi_model=virtio-scsi`属性。 --- ### 五、测试实例 1. **启动实例时指定磁盘大小** ```bash openstack server create --flavor m1.small --image my-image --block-device source=image,dest=volume,size=20,shutdown=preserve,bootindex=0 instance-01 ``` 2. **验证扩容结果** ```bash # 检查分区 lsblk # 查看文件系统 df -Th / # 查看cloud-init日志 tail -f /var/log/cloud-init.log ``` --- ### 六、故障排查 1. **常见问题** - **分区扩展**:检查是否为最后一个分区,确认`growpart`和`resizefs`模块执行成功 - **文件系统未调整**:确保文件系统类型支持在线扩容(ext4/xfs) - **内核参数缺失**:验证`rootflags=discard`是否生效 2. **手动触发扩容** ```bash growpart /dev/vda 1 resize2fs /dev/vda1 # ext4 xfs_growfs / # xfs ``` --- 通过以上步骤,可在OpenStack实例启动时自动完成根分区扩容,适应不同规格的云主机需求。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值