管理磁盘流程三部曲
分区(MBR或者GPT) ---->文件系统 Filesystem ----> 挂载mount
1.查看磁盘信息
方法1
注意:kvm虚拟化磁盘vda,真实服务器上sda
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 1月 25 09:35 /dev/sda
brw-rw----. 1 root disk 8, 1 1月 25 09:35 /dev/sda1
brw-rw----. 1 root disk 8, 2 1月 25 09:35 /dev/sda2
brw-rw----. 1 root disk 8, 16 1月 25 09:35 /dev/sdb
brw-rw----. 1 root disk 8, 32 1月 25 09:35 /dev/sdc
brw-rw----. 1 root disk 8, 48 1月 25 09:35 /dev/sdd
方法2
[root@server0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk
vdc 252:32 0 8G 0 disk
名称 设备类型 序号 是否可移动设备 大小 是否只读 磁盘或分区 挂载点
注意
vmware的磁盘名称/dev/sda
kvm的磁盘名称/dev/vda
2.创建分区
fdisk(MBR)
MBR 管理分区
1.创建分区
[root@localhost ~]# fdisk /dev/sdb
n //创建新分区
p //主分区
1 //1号分区
回车 //起始扇区
+100M //结束大小
w //保存分区设置。
查看分区创建信息
# fdisk -l /dev/sdb
# partprobe /dev/sdb //在有缓存的时候,刷新磁盘分区表。
[root@localhost ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x787eea5e
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 411647 204800 83 Linux
/dev/sdb2 411648 1026047 307200 83 Linux
/dev/sdb3 1026048 1435647 204800 83 Linux
/dev/sdb4 1435648 4194303 1379328 5 Extended
/dev/sdb5 1437696 1847295 204800 83 Linux
/dev/sdb6 1849344 2258943 204800 83 Linux
/dev/sdb7 2260992 4194303 966656 83 Linux
[root@localhost ~]#
不管是ll 还是fdisk,都能看到多个新分区,sdb1sdb3是主分区,sdb4扩展分区,sdb57逻辑分区。
3.创建文件系统(格式化)centos7默认使用xfs
文件系统:储物柜;格子柜
方法一:# mkfs.ext4 /dev/sdb1
问题:未挂载的分区,如何查询文件系统
方法二:# mkfs.xfs /dev/sdb2(了解)
文件系统类型XFS和EXT4在后续章节讲解。在此使用哪种都可以。
后续的分区,如果使用,就必须格式化
4.挂载mount
方法一:手动挂载(重启失效)
创建挂载点,一个分区一个挂载点
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t ext4 /dev/sdb1 /mnt/disk1(了解) //手动不推荐
# mount -t xfs /dev/sdb2 /mnt/disk2 //手动不推荐
方法二:自动挂载(重启不失效)
第一步:查看分区的ID
# blkid
第二步:使用UUID来自动挂载分区
# vim /etc/fstab
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" /mnt/disk1 auto defaults 0 0
UUID="4d26172c-7aff-4388-baa5-c6756c014d52" /mnt/disk2 ext4 defaults 0 0
分区信息 挂载点(文件夹) 文件系统类型 属性(默认) 压缩 检测
第三步:手动刷新
# mount -a
注意/etc/fstab中有固定格式
磁盘 挂载点 文件系统 属性 备份 检测
/dev/vdb1 /mnt/disk1 xfs或者auto default 0 0
5.查看挂载信息
方法1 df -hT
[root@server0 ~]# df -Th
2.逻辑卷LVM
目的:管理磁盘的一种方式,性质与基本磁盘无异
特点:随意扩张大小,缩减大小,快照备份。
流程
基本分区(MBR|GPT) ----> Filesystem ----> mount
逻辑卷 ----> Filesystem ----> mount
工作原理
名词
PV:物理卷(Physical volume)
VG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
PE:物理块(Physical Extent)
LE:逻辑块(Logical Extent)
一、创建LVM
准备物理磁盘
0. 准备物理磁盘(可以是: /dev/sdb /dev/sdc1 (建立在RIAD之上))
[root@server0 ~]# ll /dev/sd*
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd
brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde
建议使用相同的磁盘名称。
如果再CENTOS6中,千万记得将分区类型更改为8E
1. pv
1 将物理磁盘,转换成物理卷-PV
[root@server0 ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
查看PV信息
[root@server0 ~]# pvscan
PV /dev/vdd lvm2 [2.00 GiB]
Total: 1 [2.00 GiB] / in use: 0 [0 ] / in no VG: 1 [2.00 GiB]
[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdd lvm2 a-- 2.00g 2.00g
[root@server0 ~]# pvdisplay
2. vg
2.创建卷组-VG
[root@server0 ~]# vgcreate vg1 /dev/sdc
Volume group "vg1" successfully created
查看卷组信息
第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g
第二种方法,扫描卷组信息。
[root@server0 ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
第三种方法。显示卷组详细信息。
[root@server0 ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.00 GiB //重点观察
PE Size 4.00 MiB //重点观察
Total PE 511 //重点观察
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
3. lv
方法一:
[root@server0 ~]# lvcreate -L 200M -n lv2 vg1
指定大小,单位M,G
查看LV
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit
4. 创建文件系统并挂载
方法一:手动挂载
创建文件系统
[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2
创建挂载点
[root@server0 ~]# mkdir /mnt/lv2
挂载
[root@server0 ~]#mount /dev/vg1/lv2 /lv2
查看挂载结果
方法二:自动挂载
vim /etc/fstab
/dev/vg1/lv1 /mysql_data ext4 defaults 0 0
分区 挂载点 文件系统 属性 压缩 检测
mount -a
VG管理
==扩大VG vgextend==
环境:/dev/vg1 容量由4G 扩容到 6G。
==扩大VG vgextend==
步骤1,创建PV。而后使用第二步,将PV增加到VG中。
[root@server0 ~]# pvcreate /dev/sdd1
步骤2:扩展VG,同时包含方法1.
[root@server0 ~]# vgextend vg1 /dev/sdd1
Volume group "vg1" successfully extended
扩容完成
查看VG
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 3.99g 3.76g
==减小VG vgreduce==
警告
==减小VG ,命令虽少。但千万需要注意的是数据迁移。
环境介绍:
卷组vg1
物理卷sdc,sdd1和sde(查看物理卷pvs命令)
sdc物理卷中有数据
为了避免vg缩减影响数据,请先将sdd中的数据移动到sde中。
1.查看当前的VG中PV的使用情况
[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc vg1 lvm2 a-- 2.00g 1.76g
/dev/sdd1 vg1 lvm2 a-- 2.00g 2.00g
/dev/sde vg1 lvm2 a-- 2.00g 2.00g
注意观察,PV的空间。一个是使用过的,一个是满的。
2. pvmove,会将sdd中的数据,移动到sde中。
[root@server0 ~]# pvmove /dev/sdc
/dev/sdc: Moved: 16.7%
/dev/sdc: Moved: 100.0%
可以看到移动过程。
再次查看,空间已经发生变化。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdc vg1 lvm2 a-- <2.00g <2.00g
/dev/sdd1 vg1 lvm2 a-- <2.00g 1.80g
/dev/sde vg1 lvm2 a-- <2.00g <2.00g
3.vgreduce VG缩减。
[root@server0 ~]# vgreduce vg1 /dev/sdd
Removed "/dev/sdd" from volume group "vg1"
再次观察,VG中少了一个PV
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 2 0 wz--n- 2.00g 1.76g
观察,PV的数量变少了。
LV扩容
扩大LV lvextend
1. lv扩容
1.查看VG空间。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g
请观察,VG是否有剩余空间。
2.扩容LV。
[root@server0 ~]# lvextend -L +200M /dev/vg1/lv2
增加200M空间,给lv2
查看LV
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [300.00 MiB] inherit
观看LV大小已经发生改变。
如果希望缩减LV,1请注意数据保存。2使用lvreduce
注意
xfs的lvm不支持缩容
Xfs filesystem shrinking is unsupported
FS扩容
先观察文件系统当前容量。
[root@server0 ~]# df -Th
/dev/mapper/vg1-lv2 ext4 240M 32M 192M 15% /mnt/lv2
. ext2/3/4文件系统扩容
[root@server0 ~]# resize2fs /dev/vg1/lv2
再次观察df -hT 的分区大小。和上一次的对比一下。大小已经发生改变。
查看FS
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 765M 67M 698M 9% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
请注意对比,之前的输出结果,文件系统的大小发生改变。
如果您的文件系统,不是EXT4。那请用下列命令来更新XFS文件系统
xfs文件系统扩容请注意,不同的文件系统,扩容指令不同。
[root@server0 ~]# xfs_growfs /dev/vg1/lv1
减小LV lvreduce
减容注意事项(了解)
环境介绍
逻辑卷/dev/vg1/lv2,大小400M,并挂载到/mnt/lv2
需要先将lv卸载(umount),再进行减容操作。
1.首先查看磁盘使用情况
df -hT
注意分区大小400M
/dev/mapper/vg1-lv2 ext4 380M 2.3M 356M 1% /mnt/lv2
2、卸载
umount /dev/vg1/lv2
3、调整分区大小
e2fsck -f /dev/vg1/lv2
resize2fs -p /dev/vg1/lv2 200M
4、设置空闲空间,减容
lvreduce -L 200M /dev/vg1/lv2
5、挂载上/mnt/lv2,查看磁盘使用情况
mount /dev/vg1/lv2 /mnt/lv2/
df -h
看到分区大小已经200M
/dev/mapper/vg1-lv2 ext4 186M 1.6M 171M 1% /mnt
千万注意,不要对已经挂载的LV进行兼容,会损坏文件系统。
千万注意,缩减后的LV大小,要大于存储数据的大小。
(重新格式化才能用)
LVM快照snapshot
快照的目的
快速-------备份数据。
快照与备份
备份原理
备份窗口
数据一致性
快照技术
COW
ROW
1. 创建快照 (EXT4)
快照之前准备一些文件
1. 创建快照 卷(EXT4)
[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2
或者这样看呢,创建LV,名字lv2-snap,根据lv2进行快照,大小128M
lvcreate -n lv2-snap -s /dev/vg1/lv2 -L 128M
查询快照卷大小。
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 5.92
实验到这里就结束了。
注意:制作快照限制,受VG大小。
2.挂载快照卷,恢复数据(验证)
3 将快照卷挂载,拷贝出数据。可以用作回复数据使用了。
[root@server0 ~]# mkdir /mnt/lv2-snap
[root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/
查看Snapshot
1 查看两个卷的挂载情况。
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
/dev/mapper/vg1-lv2--snap ext4 488M 32M 429M 7% /mnt/lv2-snap
2 查看两个卷的关系
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
ACTIVE Original '/dev/vg1/lv2' [512.00 MiB] inherit
ACTIVE Snapshot '/dev/vg1/lv2-snap' [128.00 MiB] inherit
3 查看文件内容。根据情况进行使用。
[root@server0 ~]# ls /mnt/lv2
etc lost+found
[root@server0 ~]# ls /mnt/lv2-snap/
etc lost+found
4. 观察Snapshot
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 30.56
4.提示xfs文件系统快照注意事项
XFS:不识别uuid ,所以需要单独加上一个-o nouuid 来忽略掉。就可以使用xfs的快照了。
[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据
交换分区管理 Swap
简介
作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)
swap大小
推荐
设置交换分区大小为内存的2倍
生产
大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。
一、查看当前的交换分区
一、查看当前的交换分区
[root@server0 ~]# free -m
total used free shared buff/cache available
Mem: 489 140 145 4 202 304
Swap: 0 0 0
[root@server0 ~]# swapon -s
当前系统中,没有swap。如果你的系统中有,请观察大小,后续实验会增加swap大小。
二、增加交换分区
类型
可以是分区或者LVM或者File
===分区/LVM===
===分区===
1. 准备分区(准备将/dev/sde磁盘,划分为1G分区)
[root@server0 ~]# fdisk /dev/sde (t转换分区的ID 82)
[root@server0 ~]# partprobe /dev/sde
[root@server0 ~]# ll /dev/sde*
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1
2.格式化
[root@server0 ~]# mkswap /dev/sde1
3.挂载
[root@server0 ~]# blkid /dev/sde1
/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"
[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0
[root@server0 ~]# swapon -a (读取/etc/fstab)
[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/vdb1 partition 524284 0 -1
===File===(了解)
===File===
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 10G 3.3G 6.8G 33% /
[root@server0 ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
或者
[root@server0 ~]# dd </dev/zero >/swap2.img bs=1M count=512
[root@server0 ~]# mkswap /swap2.img
[root@server0 ~]# vim /etc/fstab
/swap2.img swap swap defaults 0 0
由于文件型扩展SWAP会提示权限不够。所以扩大一下权限。
[root@server0 ~]# swapon -a
swapon: /swap2.img: insecure permissions 0644, 0600 suggested.
[root@server0 ~]# chmod 600 /swap2.img
[root@server0 ~]# swapon -a
[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/vdb1 partition 524284 0 -1
/swap2.img file 524284 0 -2
对交换分调优 [扩展]
关于swap优先级
swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0
这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区)
设置swap优先级
多个交换分区分布在不同的磁盘
挂载时,使用相同的优先级
[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0
UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是优先级的意思,设置相同即可。
[root@server0 ~]# swapon -a
[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/sdb1 partition 524284 0 1
/dev/sdc1 partition 524284 0 1
网友评论