Linux磁盘管理
fdisk
查看磁盘使用情况和磁盘分区(不适用于高于 2TB 的硬盘分区,高于2TB的分区使用 parted命令)
fdisk -l # 列出所有设备的分区表信息
fdisk -l /dev/sdb # 列出指定设备的分区表信息
# 使用fdisk命令分区
fdisk /dev/sdb
# 这时可以有多个选项,主要是p、n、d、w
p选项:打印分区表
n选项:设置分区
d选项:删除分区(按下后可主动选择分区删除)
w选项:保存配置
# 按n设置分区,出现如下提示
Partition type:
p primary (0 primary, 0 extended, 4 free) # 设置主分区,0个主分区(primary),0个扩展分区,4个空闲(最多只能有4个)
e extended # 设置扩展分区
# 如果有多余的空闲主分区,则可以直接按p添加主分区,如果已有3个主分区了就分个扩展分区按e
# 这里按p直接添加一个主分区
分区号 (1-4,默认 1): # 设置分区号,回车默认就行
起始 扇区 (2048-10485759,默认为 2048): # 回车默认
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759): # 设置分区大小,回车默认将所有空间分给该分区
# 以上到这里就已经分好区了,可以按p打印查看,按w保存退出
# 逻辑分区,逻辑分区是建立在扩展分区上的,是为了突破4个主分区的限制
# 按n后,选择e,添加一个扩展分区,重复上述分配操作,在有了扩展分区后再次使用n建立分区,就没有e选项了,转而是l选项
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5) # 添加逻辑分区,因为4个主分区的限制,逻辑分区默认编号5起步
# 逻辑分区的使用空间是直接从扩展分区中划分,划分的操作都是一致的。
通知内核重读分区表
分区后centos6需要通知内核重读
# 内核记录分区表的文件
cat /proc/partitions
# 或者使用ls直接查看分区文件是否存在
ls /dev/sd
# 如果不存在,通知内核重读分区表
partx -a /dev/sdb
或
partprobe /dev/sdx
创建文件系统(格式化)
分区需要创建文件系统才能使用
# 查看系统支持的文件系统,通常用xfs或者ext4
ll /lib/modules/`uname -r`/kernel/fs
# 创建文件系统
mkfs.xfs /dev/sdb5
或
mkfs.ext4 /dev/sdb5
mount -- 挂载
# 挂载语法
mount /dev/sdc1 /mnt
# 解除挂载,同过挂载设备或者挂载点均可
umount /dev/sdc1 或 umount /mnt
# 开机挂载
# 方法一,将挂载命令写入/etc/rc.d/rc.local文件中,同时给该文件执行权限
echo mount /dev/sdc1 /mnt/sdb1 >> /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local
# 方法二,/etc/fstab,开机挂载的专用文件
vim /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
# 含义
第1列:/dev/mapper/centos-root # 可以写设备文件名,也可以使用设备的uuid,uuid是唯一建议使用uuid(查看指定设备的uuid使用:blkid /dev/sdc1)
第2列:/ # 挂载点
第3列:xfs # 文件系统类型
第4列:defaults # 文件系统的属性
第5列:0 # 供备份程序确定上次备份距现在的天数
第6列:0 # 在系统引导时检测文件系统的顺序
交换分区
系统交换分区是作为系统虚拟存储的一块区域。
# 格式化成swap分区
mkswap /dev/sdb2
# 激活swap分区
swapon /dev/sdb2
# 查看swap分区
swapon -s
# 开机挂载
vim /etc/fstab
/dev/sdb2 swap swap defaults 0 0
# 卸载swap
swapoff /dev/sdb2
# 删除/etc/fstab配置文件内的设置
parted
可创建,查看,删除和修改磁盘分区
# 列出所有设备的分区表信息
parted -l
# 列出/dev/sdb/分区表信息
parted /dev/sdb print
# 创建gpt类型分区表
parted /dev/sdb mklabel gpt # 有交换,输入yes
parted /dev/sdb print
# 创建分区,起始值为1,后面指定分区大小,如剩余空间全部划过去则'1 -1',分区号自动从1开始
# 如空间没分配完,则第二次分配时从第一次分配空间的结束大小开始
parted /dev/sdb mkpart primary '1 1G'
parted /dev/sdb mkpart primary '1G -1'
# 创建分区后同样通知内核重读分区表(centos6),创建文件系统,挂载
# 删除分区,末尾是分区号,如不指定会有交互提示让输入分区号
parted /dev/sdb rm 1
逻辑卷
逻辑卷可以将聚合多块磁盘空间到一个逻辑卷分区,同时支持扩容
# 逻辑卷相关命令pvs、vgs、lvs等,如果没有的话安装一下
yum -y install lvm2
# 创建逻辑卷分为3步,创建物理卷,创建卷组,创建逻辑卷
# 一、创建物理卷
pvcreate /dev/sdb1
# 如一块磁盘有多个分区都需要创建物理卷
pvcreate /dev/sdb{1..4}
# 查看物理卷
pvs
# 二、创建卷组
# 语法:vgcreate [-s 大小] 卷组的名字 物理卷的设备路径
# -s 指定PE(物理扩展单元)大小,默认是4M
vgcreate -s 8M 卷组名 /dev/sdb{1..4}
# 查看卷组
vgs
# 三、创建逻辑卷,指定分配空间大小
lvcreate -n 逻辑卷名 -L 1500M 卷组名
# 取卷组全部空间创建逻辑卷
lvcreate -n 逻辑卷名 -l 100%VG 卷组名
# 创建文件系统、挂载
mkfs.xfs /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt/
逻辑卷扩容
# 第1种情况:卷组内有空闲空间,直接从卷组取空间
lvextend -L +500M /dev/卷组名/逻辑卷名
# 或者直接取卷组全部空间
lvextend -l +100%FREE /dev/vg0/lv0
# 对文件系统扩容
xfs_growfs /dev/vg0/lv0
# 第2种情况:卷组内没有空间
# 根据分区创建物理卷
pvcreate /dev/sdc1
# 加入卷组(vg扩容)
vgextend vg0 /dev/sdd5
# 对逻辑卷扩容,取卷组全部空间
lvextend -l +100%FREE /dev/vg0/lv0
# 对文件系统扩容
xfs_growfs /dev/vg0/lv0
/扩容实例,添加一块新磁盘sdb
# 创建分区并创建物理卷
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary '1 -1'
pvcreate /dev/sdb1
# 查看/卷组名称,将新建物理卷加入卷组
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0 # 卷组名为centos
vgextend centos /dev/sdb1 # 将新建物理卷加入卷组
# 对/的逻辑卷进行扩容,通过df -h查看/的挂载设备全路径为/dev/mapper/centos-root
lvextend -l +100%FREE /dev/mapper/centos-root
# 对文件系统扩容
xfs_growfs /dev/mapper/centos-root
# 再次通过df -h查看扩容已完成