随笔 - 81  文章 - 0  评论 - 1  阅读 - 15万

Linux常用硬盘分区格式扩容案例详解

1、MBR格式ext4磁盘删除分区再扩容(无损)
使用fdisk -l查看新增加磁盘信息
# fdisk -l

创建磁盘部分忽略,用户自行补上

挂载新磁盘
#mkfs.ext4 /dev/sdb1
#mount /dev/sdb1 /data
创建测试文件
#touch file {1..54}
开始扩展磁盘
# fdisk /dev/sdb
Command (m for help): p
Command (m for help): d
选择分区1
重点删除分区后不能进行保存,不然数据会全部丢失
Command (m for help): p
Command (m for help): n
Partition number (1-4): 1
回车
回车
Command (m for help): w
再次分好区后进行保存不会数据丢失,这就是在分区情况下无损扩容
# lsblk
# e2fsck -f /dev/sdb1
# partprobe /dev/sdb1
# resize2fs /dev/sdb1
#mount /dev/sdb1 /data
# df -Th
查看数据没有丢失,磁盘空间已经扩展到3G 

2、MBR格式ext4磁盘删除分区再扩容(有损这里只供测试对比,生产业务的环境不会使用)

# umount /data
# fdisk /dev/sdb
Command (m for help): p
Command (m for help): d
Command (m for help): n
Partition number (1-4): 1
Command (m for help): w
# df -Th
#mount /dev/sdb1 /data


3、MBR格式xfs磁盘分区扩容(无损)
# lsblk
#df -Th
这里先使用上次扩展后的3G做基础容量,后续增加到4G,此处文件系统格式已经是XFS格式

下面开始扩容磁盘
#fdisk /dev/sdb
Command (m for help): p
Command (m for help): d
Selected partition 1
重点删除分区后不能进行保存,不然数据会全部丢失
Command (m for help): p
Command (m for help): n
Partition number (1-4): 1
回车
回车
Command (m for help): w
再次分好区后进行保存不会数据丢失,这就是在分区情况下无损扩容
# partprobe
# lsblk
# xfs_growfs /dev/sdb1
#df -Th

查看/data目录下文件

4、MBR格式xfs磁盘分区扩容(有损这里只供测试对比,生产业务的环境不会使用)
# fdisk /dev/sdb
Command (m for help): n
Select (default p): d
Partition number (1-4, default 1): 1
Command (m for help): w
# partprobe
# mount /dev/sdb1 /data


5、MBR格式ext4磁盘分区LVM扩容
#lsblk
#lvdisplay
# fdisk -l
#fdisk /dev/sdb
Command (m for help): p
Command (m for help): n
e
1
回车
回车
p
n
l
t
回车
回车
转换格式t
选择磁盘分区号1
8e

w
# partprobe
# partx -a /dev/sdb5 /dev/sdb
# pvcreate /dev/sdb5
# vgextend vgdata /dev/sdb5
# lvextend -l +100%FREE /dev/vgdata/lvdata
# resize2fs /dev/vgdata/lvdata

# df -Th查看磁盘扩容情况

6、xfs磁盘分区LVM扩容(扩容步骤基本上和EXT4格式相同)
#fdisk /dev/sdb
Command (m for help): p
Command (m for help): n
e
4
回车
回车
p 打印磁盘信息
n 新建磁盘分区
回车
回车
转换格式t
选择磁盘分区号5
8e
w
# partprobe
#fdisk /dev/sdb
Command (m for help): p
Command (m for help): n
e
4
回车
回车
p
n
l
e
回车
回车
转换格式t
选择磁盘分区号5
8e
w
# partprobe
# pvcreate /dev/sdb5
# vgextend vgdata /dev/sdb5
# lvextend -l +100%FREE /dev/vgsoft/lvsoft
# xfs_growfs /dev/vgsoft/lvsoft
# df -Th


7、EXT4裸磁盘不分区扩容

#df -h
#resize2fs /dev/sdb
#df -h

8、XFS裸磁盘不分区扩容

#df -Th
#lsblk
# xfs_growfs /dev/sdb
#df -Th

9、ext4裸磁盘LVM扩容

# df -Th
#lsblk
#lvdisplay
# pvresize /dev/sdb
# lvextend -L +2G /dev/vgdata/lvdata1
# lvextend -l +100%FREE /dev/vgdata/lvdata2
# lsblk
# resize2fs /dev/vgdata/lvdata1
# resize2fs /dev/vgdata/lvdata2
# df -Th

10、xfs裸磁盘LVM扩容

# df -Th
#lsblk
#lvdisplay
# pvresize /dev/sdb
# lvextend -L +500M /dev/vgsoft/lvsoft
# lvextend -l +100%FREE /dev/vgsoft/lvsoft 
# xfs_growfs /dev/vgsoft/lvsoft 
# xfs_growfs /dev/vgsoft/lvdata
# lsblk
# df -Th

11、直接使用mkfs.xfs 或 mkfs.ext4删除分区后重新改成裸磁盘或者LVM
无法挂载情况处理
#vim /etc/fstab删除所有关联的磁盘分区
#systemctl daemon-reload


12、使用growpart和resize2fs工具完成Linux系统盘分区扩容及文件系统扩展的

高版本内核
yum install cloud-utils-growpart
如果云主机无法访问外网,下载相应的包上传到服务器安装
阿里云开源镜像站资源目录
yum install xfsprogs
检查实例的内核版本,例如运行uname -a命令查看内核版本。
内核版本大于3.6.0,该情况请参见高内核版本的操作步骤。
内核版本小于3.6.0,该情况请参见低内核版本的操作步骤。
df -h命令查看云盘分区大小
命令调用growpart为需要扩容的云盘和对应的第几个分区扩容


[root@ecshost ~]# growpart /dev/vda 1
运行resize2fs <PartitionName>命令调用resize2fs扩容文件系统
[root@ecshost ~]# resize2fs /dev/vda1
命令总结:

#yum install -y cloud-utils-growpart
#yum install -y xfsprogs
#growpart /dev/vda 1  命令表示扩容系统盘的第1个分区
#resize2fs /dev/vda1

低版本内核:
此处以CentOS 6操作系统为例演示分区扩展的步骤
安装dracut-modules-growroot工具
[root@ecshost ~]# yum install -y dracut-modules-growroot
覆盖已有的initramfs文件
[root@ecshost ~]# dracut -f

运行fdisk -l命令查看现有云盘大小。
以下示例返回云盘(/dev/vda1)容量是100GiB。

# fdisk -l
Disk /dev/vda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003a7b4
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        2611    20970496   83  Linux


运行df -h命令查看云盘分区大小。
以下示例返回分区(/dev/vda1)容量是20GiB。
[root@ecshost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 7.8G 0 7.8G 0% /dev/shm
/dev/vda1 20G 1.1G 18G 6% /


运行growpart <DeviceName> <PartionNumber>命令调用growpart为需要扩容的云盘和对应的第几个分区扩容。
EXT3/4 示例命令表示为系统盘的第一个分区(/dev/vda1)扩容。
[root@ecshost ~]# growpart /dev/vda 1
当挂载了文件系统需要卸载,建议先使用lsblk -af ,fdisk -l查看原来挂载
#umount -lf /dev/sda1
#e2fsck -f /dev/sda1 重点:实际测试只需要执行了dracut -f然后从这个命令开始直接扩容即可
#resize2fs /dev/sda1
命令总结:(分区可使用)

#yum install -y dracut-modules-growroot
#dracut -f
#umount -lf /dev/sdb1
#growpart /dev/vdb 1
#e2fsck -f /dev/sdb1
#resize2fs /dev/sdb1
或
xfs文件系统:运行#xfs_growfs /data


13、当使用分区方式创建LVM卷进行扩容方法
命令总结:

growpart /dev/sdb 1
pvresize /dev/sdb1
lvextend -r -l +100%FREE /dev/vgtest/lvtest
resize2fs /dev/vgtest/lvtest 

特别注意:
-r 参数将是fsadm 在扩展LV后自动调整文件系统大小


实例:
# growpart /dev/sdb 1
CHANGED: partition=1 start=2048 old: size=23066591 end=23068639 new: size=31455199 end=31457247
# pvresize /dev/sdb1
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sdb1 vgtest lvm2 a-- <15.00g 4.00g
#
# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgtest 1 1 0 wz--n- <15.00g 4.00g

# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <97.09g
swap centos -wi-a----- 1.91g
lvtest vgtest -wi-ao---- <11.00g
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 976M 0 976M 0% /dev
tmpfs tmpfs 992M 0 992M 0% /dev/shm
tmpfs tmpfs 992M 1.2M 991M 1% /run
tmpfs tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 98G 7.8G 90G 9% /
/dev/sda1 xfs 1014M 260M 755M 26% /boot
/dev/mapper/vgtest-lvtest ext4 11G 41M 11G 1% /data
tmpfs tmpfs 199M 0 199M 0% /run/user/0
#
[root@harbor ~]# lvextend -r -l +100%FREE /dev/vgtest/lvtest
Size of logical volume vgtest/lvtest changed from <11.00 GiB (2815 extents) to <15.00 GiB (3839 extents).
Logical volume vgtest/lvtest successfully resized.

# resize2fs /dev/vgtest/lvtest 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgtest/lvtest is mounted on /data; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/vgtest/lvtest is now 3931136 blocks long.
# df -Th
Filesystem                Type      Size  Used Avail Use% Mounted on
devtmpfs                  devtmpfs  976M     0  976M   0% /dev
tmpfs                     tmpfs     992M     0  992M   0% /dev/shm
tmpfs                     tmpfs     992M  1.2M  991M   1% /run
tmpfs                     tmpfs     992M     0  992M   0% /sys/fs/cgroup
/dev/mapper/centos-root   xfs        98G  7.8G   90G   9% /
/dev/sda1                 xfs      1014M  260M  755M  26% /boot
/dev/mapper/vgtest-lvtest ext4       15G   41M   14G   1% /data
tmpfs                     tmpfs     199M     0  199M   0% /run/user/0

知识补充1
创建物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录
dmsetup linux 命令 在线中文手册
dmsetup 是一个底层的逻辑卷管理, dm 应该是 Device Mapper的简称

# dmsetup status          
servera_01_vg-servera_01_lv: 0 499712 linear 
servera_01_vg-servera_01_lv: 499712 319488 linear

使用 dmsetup remove xxx 移除掉就可以创建PV了:

# dmsetup remove /dev/sdc1
# dmsetup remove /dev/sdc2

重新创建物理卷成功

# pvcreate /dev/sdc1
  Physical volume "/dev/sdc2" successfully created.
# pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created.

知识补充2:
wipefs
wipefs是linux自带的程序,用来擦除文件系统的签名,不会清空文件系统或设备中的任何其他数据。默认情况下, wipefs 不会擦除非整个磁盘设备上的嵌套分区表
作用
用来擦除磁盘签名(遇到无法格式化的磁盘可以使用)
当确定磁盘不在需要,需要重新分区分配使用,有时候出现无法擦除分区表,使用一下命令进行擦除
wipefs -a /dev/sda

posted on   幽夜卡尔  阅读(1289)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示