CentOS分区扩容

一.前言

  • 操作系统

Linux发行版:CentOS-7-x86_64-DVD-1804.iso


二.扩容准备

1.分区规则

  • 1至4个主分区 或者 1至3个主分区和1个扩展分区(扩展分区中可再分区为逻辑分区)

2.分区工具

  • fdisk:单个分区最大只能创建2T的空间
  • parted:单个分区可超过2T的空间

3.分区类型

分区类型

空间分配

扩容命令

ext2、ext3、ext4

可扩容、可缩容

resize2fs

xfs(centos7默认)

仅扩容

xfs_growfs

4.硬盘设备名规则

  • SCSI接口:/dev/sd [a-z] ;设备名后追加的数字,表示此设备的第几个分区,例如:/dev/sda1、/dev/sda2
  • IDE接口:/dev/hd [a-z]

5.分区说明

  • /dev/mapper/centos-root:根分区(根文件系统)
  • /dev/mapper/contos-home:用户分区
  • /dev/mapper/centos-swap:交换分区(一般设置为物理内存容量的 1 至 2 倍)

三.具体操作

场景说明

  • 使用一块 4T 容量的硬盘,硬盘接口是 SCSI,分别对 root、home 和 swap 分区进行扩容
  • 两种方案选择:
  1. 一块硬盘上创建 3 个分区,然后扩容
  2. 一块硬盘上创建 1 个分区,然后扩容

1.容量分配

  • 首先考虑 swap 分区,设置为物理内存容量的 2 倍
  • 然后考虑 root 分区和 home 分区,root 分区需要部署项目或软件安装,所以分配多一点空间,而 home 分区,一般放一些用户文件,所以可以分配少一点(如果不确定目录在那个分区,可以使用下方命令查询)
  • 最终确定,root 和 home 的分配比例为 7 : 3
#-- 查询目录的所在分区,例如:/opt 在 /dev/mapper/centos-root 分区下
# df -hl /opt

#-- 查看硬盘列表
# lsblk
  • 例如:目前服务器中,新插入 4 T 的硬盘,物理内存容量为 64 GB, swap 分区为 32 GB
  • swap 分区扩容 = (64 * 2) - 32 = 96 GB
  • home 分区扩容 = (4000 - 96) * 0.3 = 1171 GB (取整)
  • root 分区扩容 = 4000 - 96 - 1171 = 2733 GB

2.第一种方案

  • 一块硬盘上创建 3 个分区,然后扩容
1)分区
  • 查看硬盘信息,找到分区的硬盘
#--查看硬盘使用情况
# df -Th
#-- 查看硬盘列表
# lsblk
#--查看硬盘信息
# fdisk -l
  • 分区操作,例如:分区硬盘是 /dev/sdb
#-- 使用 parted 工具,操作分区硬盘
# parted /dev/sdb

#-- 打印硬盘和分区信息,Disk /dev/sdb: 4000GB
# p

#-- 将 MBR 磁盘格式化为 GPT
# mklabel gpt

#-- 打印硬盘和分区信息,Partition Table: unknown 变为 Partition Table: gpt
# p

#-- 根据上一步的容量分配,创建三个主分区,期间忽略警告,根据提示输入 Ignore 或 Yes
# mkpart primary 0 96GB
# mkpart primary 96GB 1267GB
# mkpart primary 1266GB 4000GB

#-- 打印硬盘和分区信息,Disk Flags: 分区列表
# p

#-- 退出工具
# quit
  • 格式化分区
#-- 查看硬盘信息,找到需要格式化的分区
# fdisk -l
#-- 格式化分区
# mkfs.ext4 /dev/sdb1
# mkfs.ext4 /dev/sdb2
# mkfs.ext4 /dev/sdb3
2)逻辑卷管理(LVM)和扩容
  • swap 分区扩容:/dev/sdb1
#-- 查看硬盘列表
# lsblk

#-- 查看 Volume group 信息,关注 VG Name 和 Free PE / Size
# vgdisplay

#-- 创建 pv,指定分区 (物理硬盘分区初始化为物理卷)
# pvcreate /dev/sdb1
# y

#-- vg 扩容(动态扩展 LVM 卷组)
# vgextend centos /dev/sdb1

#-- lv 扩容(在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问)
# lvextend /dev/mapper/centos-swap /dev/sdb1

#-- 查看 swap 分区的情况
# free -h

#-- 卸载、创建、挂载 swap 分区
# swapoff /dev/mapper/centos-swap
# mkswap /dev/mapper/centos-swap
# swapon /dev/mapper/centos-swap
  • home 分区扩容:/dev/sdb2
#-- 创建 pv,指定分区 (物理硬盘分区初始化为物理卷)
# pvcreate /dev/sdb2
# y

#-- vg 扩容(动态扩展 LVM 卷组)
# vgextend centos /dev/sdb2

#-- lv 扩容(在线扩展逻辑卷的空间大小,且不中断应用程序对逻辑卷的访问)
# lvextend /dev/mapper/centos-home /dev/sdb2

#-- xfs_growfs 扩容
# xfs_growfs /dev/mapper/centos-home
  • root 分区扩容:/dev/sdb3
#-- 创建 pv,指定分区 (物理硬盘分区初始化为物理卷)
# pvcreate /dev/sdb3
# y

#-- vg 扩容(动态扩展 LVM 卷组)
# vgextend centos /dev/sdb3

#-- lv 扩容(在线扩展逻辑卷的空间大小,且不中断应用程序对逻辑卷的访问)
# lvextend /dev/mapper/centos-root /dev/sdb3

#-- xfs_growfs 扩容
# xfs_growfs /dev/mapper/centos-root

3.第二种方案

  • 一块硬盘上创建 1 个分区,然后扩容
1)分区
  • 查看硬盘信息,找到分区的硬盘
#--查看硬盘使用情况
# df -Th
#-- 查看硬盘列表
# lsblk
#--查看硬盘信息
# fdisk -l
  • 分区操作,例如:分区硬盘是 /dev/sdb
#-- 使用 parted 工具,操作分区硬盘
# parted /dev/sdb

#-- 打印硬盘和分区信息,Disk /dev/sdb: 4000GB
# p

#-- 将 MBR 磁盘格式化为 GPT
# mklabel gpt

#-- 打印硬盘和分区信息,Partition Table: unknown 变为 Partition Table: gpt
# p

#-- 创建一个主分区,期间忽略警告,根据提示输入 Ignore
# mkpart primary 0 4000GB

#-- 打印硬盘和分区信息,Disk Flags: 分区列表
# p

#-- 退出工具
# quit
  • 格式化分区
#-- 查看硬盘信息,找到需要格式化的分区
# fdisk -l
#-- 格式化分区
# mkfs.ext4 /dev/sdb1
2)逻辑卷管理(LVM)和扩容
  • LVM
#-- 查看硬盘列表
# lsblk

#-- 查看 Volume group 信息,关注 VG Name 和 Free PE / Size
# vgdisplay

#-- 创建 pv,指定分区 (物理硬盘分区初始化为物理卷)
# pvcreate /dev/sdb1
# y

#-- vg 扩容(动态扩展 LVM 卷组)
# vgextend centos /dev/sdb1
  • swap 分区扩容
#-- lv 扩容(在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问)
# lvextend -L +96G /dev/mapper/centos-swap

#-- 查看 swap 分区的情况
# free -h

#-- 卸载、创建、挂载 swap 分区
# swapoff /dev/mapper/centos-swap
# mkswap /dev/mapper/centos-swap
# swapon /dev/mapper/centos-swap
  • home 分区扩容
#-- lv扩容(在线扩展逻辑卷的空间大小,且不中断应用程序对逻辑卷的访问)
# lvextend -L +1171G /dev/mapper/centos-home

#-- xfs_growfs 扩容
# xfs_growfs /dev/mapper/centos-home
  • root 分区扩容
#-- lv扩容(在线扩展逻辑卷的空间大小,且不中断应用程序对逻辑卷的访问)
#-- 如果提示空间不足,使用 vgdisplay 命令查看剩余空间 Free PE / Size
# lvextend -L +2733G /dev/mapper/centos-root

#-- xfs_growfs 扩容
# xfs_growfs /dev/mapper/centos-root

四.其它

1.删除分区

  • fdisk 删除分区
# fdisk /dev/sdb
# --根据输入 m 的提示,输入 d 可删除分区,如果只有1个分区,自动删除,如果多个分区,需要输入分区数字
Command (m for help): d
#--退出
# quit
  • parted 删除分区
# parted /dev/sdb
#--输入 p 显示硬盘信息
# (parted) p
#--删除 1 分区
# (parted) rm 1
#--退出
# quit