第七章:储存管理
主要知识点:
基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID
一.磁盘储存管理概念
机械硬盘 HDD 固态硬盘 SSD
SSD的优势:读取速度快,闪存芯片、防震抗摔,数据丢失性可能小,重量轻。
物理硬盘: /dev/sd[a-z]
KVM虚拟化: /dev/vd[a-z]
从存储连接方式
本地存储 例如DellR730本地磁盘
外部存储 scsi线 sata线 sas线 FC线
网络存储 以太网络(iscsi, glusterFS,ceph) FC网络**
从分区方式区分
MBR <2TB fdisk 14个分区 (4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
GPT >2TB gdisk(parted) 128个主分区 注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
MBR: 磁盘引导 //分完区之后不可直接使用,需要先格式化
=====================================================================
二.磁盘基本分区
基本分区(MBR|GPT) ----> Filesystem ----> mount
实战条件:首先在虚拟机添加一块虚拟磁盘
[[email protected] ~]# ll /dev/sd* //长格式查看系统上所有的磁盘
[[email protected] ~]# lsblk //查看磁盘信息
1.fdisk 命令 【创建分区】
MBR 14个分区(4个主分区,扩展分区,逻辑分区)
[[email protected] ~]# fdisk /dev/sdc //对sdc盘进行分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xe666fc31 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m //输入'm' 可查询帮助命令
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition //删除一个已有的分区
g create a new empty GPT partition table //创建一个空的GPT格式分区表,默认为dos
G create an IRIX (SGI) partition table
l list known partition types //列出分区类型
m print this menu //打印帮助信息
n add a new partition //添加一个新的分区
o create a new empty DOS partition table // 创建一个空的DOS格式分区表,默认为dos
p print the partition table //打印当前的分区表
q quit without saving changes // 不保存退出
s create a new empty Sun disklabel
t change a partition's system id //改变分区的系统ID
u change display/entry units
v verify the partition table
w write table to disk and exit //保存分区变更
x extra functionality (experts only)
命令(输入 m 获取帮助):n // 按n创建分区 常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p //选择p,打印当前分区表
分区号 (1-4,默认 1): //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048): //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G //这里选择配置磁盘大小,可自定义。
命令(输入 m 获取帮助):n // 按n创建分区 常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p //选择p,打印当前分区表
分区号 (1-4,默认 1): //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048): //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G //这里选择配置磁盘大小,可自定义。
命令(输入 m 获取帮助):n // 按n创建分区 常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p //选择p,打印当前分区表
分区号 (1-4,默认 1): //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048): //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G //这里选择配置磁盘大小,可自定义。
命令(输入 m 获取帮助):n //注意这边已经创建三个磁盘了所以第四个就要选择扩展分区,下面选择e
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
起始 扇区 (12584960-20971519,默认为 12584960): //回车默认
Last 扇区, +扇区 or +size{K,M,G} (12584960-20971519,默认为 20971519): //注意这里是创建扩展,所以剩余的储存全部给予扩展分区,当然也可自定义
命令(输入 m 获取帮助):n //选择n创建逻辑分区
起始 扇区 (12587008-20971519,默认为 12587008): //选择默认
Last 扇区, +扇区 or +size{K,M,G} (12587008-20971519,默认为 20971519):+1G //注意,这里需要添加内存了,如果回车那就全部内存给予这一个逻辑分区
命令(输入 m 获取帮助):n //选择n
起始 扇区 (14686208-20971519,默认为 14686208): //回车默认
Last 扇区, +扇区 or +size{K,M,G} (14686208-20971519,默认为 20971519):+1G //增加储存
命令(输入 m 获取帮助):n //选择n
起始 扇区 (14686208-20971519,默认为 14686208): //回车默认
Last 扇区, +扇区 or +size{K,M,G} (14686208-20971519,默认为 20971519): //回车默认,这里默认是把所有内存都放至最后一个逻辑分区。
命令(输入 m 获取帮助):p //按p查看当前磁盘分区信息
磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8ae6b12c
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 83 Linux
/dev/sdc2 4196352 8390655 2097152 83 Linux
/dev/sdc3 8390656 12584959 2097152 83 Linux
/dev/sdc4 12584960 20971519 4193280 5 Extended
/dev/sdc5 12587008 14684159 1048576 83 Linux
/dev/sdc6 14686208 16783359 1048576 83 Linux
/dev/sdc7 16785408 20971519 2093056 83 Linux
命令(输入 m 获取帮助):w //保存分区并退出
ps:如果添加储存失败了,^c 退出重来即可。
[[email protected] ~]# lsblk //查看磁盘分区信息
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
├─sdc1 8:33 0 2G 0 part
├─sdc2 8:34 0 2G 0 part
├─sdc3 8:35 0 2G 0 part
├─sdc4 8:36 0 1K 0 part
├─sdc5 8:37 0 1G 0 part
├─sdc6 8:38 0 1G 0 part
└─sdc7 8:39 0 2G 0 part
2 gdisk
GPT 128个主分区
这里操作和以上操作类似,这里就不过多讲解了。
3.创建文件系统(格式化)centos7 默认使用xfs //系统必须格式化才可使用和window原理相同
[[email protected] ~]# mkfs.xfs /dev/sdc1 //注意每个磁盘分区完之后必须要进行格式化才能正常使用
[[email protected] ~]# mkfs.ext4 /dev/sdc2 //使用ext4格式化磁盘分区
4.挂载
[[email protected] ~]# mkdir /mnt/disk1 //创建挂载目录,名称自定义
[[email protected] ~]# mkdir /mnt/disk1 //创建挂载目录
[[email protected] ~]# mount -t xfs /dev/sdc1 /mnt/disk1 //临时挂载,重启后会失效
[[email protected] ~]# umount /mnt/disk1 //取消挂载
[[email protected] ~]# vim /etc/fstab //永久挂载配置文件
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" /mnt/disk1 auto defaults 0 0
UUID="4d26172c-7aff-4388-baa5-c6756c014d52" /mnt/disk2 ext4 ro 0 0 //格式如下,先要执行blkid查询需要挂载的UUID
[[email protected] ~]# mount -a //重新加载挂载信息
[[email protected] ~]# df -Th //查看挂载信息
如果挂载失败,导致机器无法启动:
1.开机界面按e进入grub系统界面:
2.在linux16行末尾输入 rd.break console=tty1
3.ctrl + x 重新加载启动
4.mount -o remount,rw /sysroot
5.chroot /sysroot
6.passwd #输入2次密码
7.touch /.autorelabel
8.exit
9.reboot //重新系统然后输入密码即可正常使用
=====================================================================
三.逻辑卷LVM
1.LVM 管理
在线扩容 online
数据迁移 online
创建LVM VG扩展/缩小 LV扩容 文件系统扩容 //主要学习目标
基本分区(MBR|GPT) ----> Filesystem ----> mount
逻辑卷LVM ----> Filesystem ----> mount
PE: Physical extent 物理扩展 4M 8M 16M 32M 64M 创建VG时指定 -s 8M
LE: Logical extent 逻辑扩展
实战需要准备环境可以使:/dev/sdc1
实战演示:
[[email protected] ~]# ll /dev/sdb //查看sdc磁盘
1.创建pv
[[email protected] ~]# pvcreate /dev/sdb3 //创建pv
Physical volume "/dev/sdb3" successfully created.
[[email protected] ~]# pvs //查看pv pvscan pvdisplay //都可以查看pv,三种查看方式
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb3 lvm2 --- 2.00g 2.00g
2.创建vg
[[email protected] ~]# vgcreate vg3 /dev/sdb3 //创建vg3
Volume group "vg3" successfully created //则显示成功
[[email protected] ~]# vgs //查看vg信息 vgscan vgdispay //都可查看vg信息
3.创建lv
[[email protected] ~]# lvcreate -l 20 -n lv3 vg3 //创建lv3
Logical volume "lv3" created. //显示此信息表示成功
[[email protected] ~]# lvcreate -L 200M -n lv3 vg3 //创建lv3 方法二 -L 后加上lv内存大小 -l 20代表PE,1PE等于4M,也就是80M大小
[[email protected] ~]# lvs //查看lv信息 lvscan lvmdiskscan //都可查看lv信息
4.创建文件系统并挂载
[[email protected] ~]# mkfs.xfs /dev/vg3/lv3 //创建文件系统xfs格式,并格式化
[[email protected] ~]# mkdir -pv /mnt/disk3 //创建准备挂载的目录
[[email protected] ~]# mount -t xfs /dev/vg3/lv3 /mnt/disk3 //进行挂载
[[email protected] ~]# mkfs.ext4 /dev/vg1/lv2 //创建系统文件ext4格式,并格式化
[[email protected] ~]# mkdir /mnt/lv1 /mnt/lv2 //创建lv1 lv2挂载目录
[[email protected] ~]# vim /etc/fstab //进入永久挂载系统配置文件 ,先查询blkid ,查询UUID信息。
/dev/vg1/lv1 /mnt/lv1 xfs defaults 0 0
/dev/vg1/lv2 /mnt/lv2 ext4 defaults 0 0
[[email protected] ~]# mount -a //重新加载系统信息
[[email protected] ~]# df -Th //显示所有磁盘挂载信息
5.VG管理
5.1 .扩大VG vgextend
1.pv
[[email protected] ~]# pvcreate /dev/sdd
2.vgextend
[[email protected] ~]# vgextend vg1 /dev/sdd //vg1卷组名字,将/dev/vde扩展到vg1中
3.vgs //查看vg扩展信息
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 2 2 0 wz--n- 1.99g <1.76g
5.2 减小VG //企业中坚决先备份在使用,一般不建议使用
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <29.00g 4.00m
/dev/sdb vg1 lvm2 a-- 1020.00m 780.00m
/dev/sdc vg1 lvm2 a-- 1020.00m 1020.00m
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 2 2 0 wz--n- 1.99g <1.76g
[[email protected] ~]# vgreduce vg1 /dev/sdc
Removed "/dev/sdc" from volume group "vg1"
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 1 2 0 wz--n- 1020.00m 780.00m
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <29.00g 4.00m
/dev/sdb vg1 lvm2 a-- 1020.00m 780.00m
/dev/sdc lvm2 --- 1.00g 1.00g
5.3.pvmove数据到其它PV
首先要保证有备用pv(要属于一个vg)
可以先在/dev/vdd创建出一个逻辑卷之后,进行测试
[[email protected] ~]# pvs //查看pvs
PV VG Fmt Attr PSize PFree
/dev/sdc5 vg3 lvm2 a-- 1020.00m 940.00m
/dev/sdc6 vg3 lvm2 a-- 1020.00m 1020.00m
[[email protected] ~]# pvmove /dev/sd5 /dev/sdc6 //将sdc5 数据迁移至sdc6
/dev/sdc5: Moved: 25.00%
/dev/sdc5: Moved: 100.00%
[[email protected] ~]# lsblk //查看 磁盘信息
├─sdc5 8:37 0 1G 0 part
├─sdc6 8:38 0 1G 0 part
│ └─vg3-lv3 253:4 0 80M 0 lvm
└─sdc7 8:39 0 2G 0 part
5.4LV扩容
[[email protected] ~]# vgs //查看vgs信息
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg3 2 1 0 wz--n- 1.99g 1.91g
vg4 1 0 0 wz--n- <2.00g <2.00g
[[email protected] ~]# lvextend -L 800M /dev/vg3/lv3 //扩展到800M
Size of logical volume vg3/lv3 changed from 80.00 MiB (20 extents) to 800.00 MiB (200 extents).
Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv3 vg3 -wi-a----- 800.00m
[[email protected] ~]# lvextend -L +800M /dev/vg3/lv3 //在原有基础上加800M
Size of logical volume vg3/lv3 changed from 800.00 MiB (200 extents) to 1.56 GiB (400 extents).
Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs //查看lv信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv3 vg3 -wi-a----- 1.56g
=====================================================================
四.交换分区
交换分区管理 Swap
作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)
实战:
1.查看当前的交换分区
[[email protected] ~]# free -m //查看内存信息
total used free shared buff/cache available
Mem: 1819 210 986 9 623 1388
Swap: 2047 0 2047
[[email protected] ~]# swapon -s //查看挂载信息
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 0 -2
2.增加交换分区 可以是基本分区,LVM,File
[[email protected] ~]# fdisk /dev/sdb (t转换分区的ID 82)
[[email protected] ~]# partprobe /dev/sdb 通知系统分区表的变化
[[email protected] ~]# ll /dev/sdb* //查看
[[email protected] ~]# mkswap /dev/sdb1 //初始化
[[email protected] ~]# blkid /dev/sdb1 //查找sdb1 UUID
[[email protected] ~]# vim /etc/fstab //进入永久挂载配置文件
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap default 0 0
[[email protected] ~]# swapon -a (读取/etc/fstab)
[[email protected] ~]# swapon -s
[[email protected] ~]# df -Th //查看挂载信息