前言
新增硬盘扩容大致可以分为两种情况:
-
新增的磁盘挂载到某个目录下面
-
新增的磁盘扩展已有卷组并扩容已有逻辑卷
方案图谱:
说明:左侧分支为挂载方案,右侧分支为扩展已有卷组方案
方案一:新增磁盘挂载到目录
查看当前容量
-
命令
df -Th
-
示例
[root@localhost ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 908M 0 908M 0% /dev tmpfs tmpfs 919M 0 919M 0% /dev/shm tmpfs tmpfs 919M 8.6M 911M 1% /run tmpfs tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 47G 1.3G 46G 3% / /dev/sda1 xfs 1014M 150M 865M 15% /boot tmpfs tmpfs 184M 0 184M 0% /run/user/0
-
说明
df 的-T参数就可以显示文件系统的类型,-h参数让其显示的更人性化。
查找新加磁盘
-
命令
fdisk -l
-
示例
[root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000d6763 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
-
说明
磁盘 /dev/sda 下有两个分区 磁盘 /dev/sdb 为新增的磁盘
新磁盘创建分区
-
命令
fdisk /dev/sdb
-
示例
[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x63b1e474 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。
-
说明
n ##新建分区 p ##分区类型为主分区 1 ##设置分区号为1 回车 ##默认起始扇区值 回车 ##默认结束扇区值 w ##保存分区操作
创建新的物理卷
-
命令
pvcreate /dev/sdb1
-
示例
[root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000d6763 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x63b1e474 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 83 Linux 磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 ## =================================================== [root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb1 centos lvm2 a-- <20.00g 0
-
说明
fdisk -l ##查看分区 pvcreate /dev/sdb1 ##创建物理卷 pvs ##查看物理卷,同 pvdisplay 命令
创建新的卷组
-
命令
vgcreate vgnew /dev/sdc1
-
示例
[root@localhost ~]# vgcreate vgnew /dev/sdc1 Volume group "vgnew" successfully created. [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 38.99g 0 centos 1 0 0 wz--n- <20.00g <20.00g
-
说明
vgcreate vgnew /dev/sdc1 ##创建物理卷 vgs ##查看卷组,同 vgdisplay 命令
创建新的逻辑卷
-
命令
lvcreate -n lvnew -l 100%FREE vgnew
-
示例
[root@localhost ~]# lvcreate -n lvnew -l 100%FREE vgnew Logical volume "lvnew" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 36.99g swap centos -wi-ao---- 2.00g lvnew vgnew -wi-ao---- <10.00g
-
说明
lvcreate -n lvnew -l 100%FREE vgnew ##使用整个(空余的100%)卷组vgnew 创建一个逻辑卷(lvnew 为自定义逻辑卷名) lvcreate -n lvnew -l 50%FREE vgnew ##创建逻辑卷时,也可以只使用卷组的部分空余空间,如50%FREE 等 lvcreate -n lvnew -L 5G vgnew ##也可以使用具体指定存储容量创建逻辑卷 lvs ##查看当前所有逻辑卷(或使用 lvdisplay 命令)
格式化并挂载
-
命令
mkfs.xfs /dev/vgnew/lvnew mount /dev/vgnew/lvnew /newdir vi /etc/fstab
-
示例
-
说明
mkfs.xfs /dev/vgnew/lvnew ##格式化磁盘(格式化磁盘分为xfs、ext4、ext3等格式) mount /dev/vgnew/lvnew /newdir ##挂载磁盘 vi /etc/fstab ##编辑实现开机自动挂载(内容:/dev/mapper/vgnew-lvnew /newdir xfs defaults 0 0)
方案二:新增磁盘扩容到已有逻辑卷
查看当前容量
- 参考挂载方案
查找新加磁盘
- 参考挂载方案
新磁盘创建分区
- 参考挂载方案
创建新的物理卷
- 参考挂载方案
扩展已有卷组
-
命令
vgdisplay vgextend centos /dev/sdb1 vgs
-
示例
[root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <19.00 GiB PE Size 4.00 MiB Total PE 4863 Alloc PE / Size 4863 / <19.00 GiB Free PE / Size 0 / 0 VG UUID UMJme6-1Zuh-hXuA-kHZN-tIBs-76mN-kCCkew ########################################################## [root@localhost ~]# vgextend centos /dev/sdb1 Volume group "centos" successfully extended [root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 38.99 GiB PE Size 4.00 MiB Total PE 9982 Alloc PE / Size 4863 / <19.00 GiB Free PE / Size 5119 / <20.00 GiB VG UUID UMJme6-1Zuh-hXuA-kHZN-tIBs-76mN-kCCkew ########################################################## [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 38.99g <20.00g
-
说明
vgdisplay ##查看已有卷组 vgextend centos /dev/sdb1 ##扩展已有卷组 vgs ##查看扩展后的卷组
扩容逻辑卷
扩展逻辑卷的逻辑边界
-
命令
lvs lvextend -l +100%FREE /dev/mapper/centos-root
-
示例
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to 36.99 GiB (9470 extents). Logical volume centos/root successfully resized.
-
说明
lvs ##查看已有逻辑卷 lvextend -l +100%FREE /dev/mapper/centos-root ##扩展逻辑卷的逻辑边界
扩展逻辑卷的文件系统大小
-
命令
xfs_growfs /dev/mapper/centos-root 或 resize2fs /dev/mapper/centos-root
-
示例
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=4455424, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 4455424 to 9697280
-
说明
xfs_growfs ##针对文件系统xfs resize2fs ##针对文件系统ext2 ext3 ext4
方案三:已有磁盘分配新空间后扩容(虚拟机等)
扩容相关知识
文件系统结构图
扩容相关操作图谱
任务 | PV阶段 | VG阶段 | LV阶段 | FileSystem(XFS) | FileSystem(EXT4) |
---|---|---|---|---|---|
搜寻(scan) | pvscan | vgscan | lvscan | lsblk、blkid | lsblk、blkid |
创建(create) | pvcreate | vgcreate | lvcreate | mkfs.xfs | mkfs.ext4 |
列出(display) | pvdisplay | vgdisplay | lvdisplay | df、mount | df、mount |
增加(extend) | vgextend | lvextend (lvresize) | xfs_growfs | resize2fs | |
减少(reduce) | vgreduce | lvreduce (lvresize) | 不支持 | resize2fs | |
删除(remove) | pvremove | vgremove | lvremove | umount或格式化 | umount或格式化 |
改变容量(resize) | lvresize | xfs_growfs | resize2fs | ||
改变属性(attribute) | pvchange | vgchange | lvchange | /etc/fstab、remount | /etc/fstab、remount |
评论区