磁盘
一、磁盘分区
计算机容量单位:
一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,
硬盘空间使用,经历的步骤
- 识别硬盘 => 分区规划 => 格式化 => 挂载使用
分区模式分2种:
- MBR
- 分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区
- 最多只能有4个主分区
- 扩展分区可以没有,至多有一个
- 1~4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)
- 最大支持容量为 2.2TB 的磁盘
- 扩展分区不能格式化,空间不能直接存储数据
- 可以用于存储数据的分区:主分区与逻辑分区
- GPT
- 突破固定大小64字节的分区表限制
- 最多可支持128个主分区,最大支持18EB容量
1、MBR
1.1 分区fdisk
常用交互指令:
m 列出指令帮助
p 查看现有的分区表(存放分区信息的表格)
n 新建分区
d 删除分区
q 放弃更改并退出
w 保存更改并退出
[root@localhost ~]# fdisk /dev/sdb
n 创建新的分区----->分区类型 回车----->分区编号 回车---->起始扇区 回车----->在last结束时 +1G
p 查看分区表
n 创建新的分区----->分区类型 回车----->分区编号 回车---->起始扇区 回车----->在last结束时 +2G
w 保存并退出
[root@localhost ~]# lsblk
[root@localhost ~]# ls /dev/sdb[1-2]
1.2 格式化
文件系统:数据在空间中存放的规则
Windows常见的文件系统:NTFS FAT(兼容性强)
Linux常见的文件系统:ext4(RHEL6) xfs(RHEL7) FAT
mkfs.ext4 /dev/sdb1 #格式化文件系统ext4
mkfs.xfs /dev/sdb2 #格式化文件系统xfs
blkid /dev/sdb1 #查看文件系统类型
blkid /dev/sdb2 #查看文件系统类型
1.3 挂载使用
]# mkdir /mypart1
]# mount /dev/sdb1 /mypart1
]# df -h #显示正在挂载的设备信息
[root@localhost ~]# vim /etc/fstab #vmware虚拟机
/dev/sdb1 /mypart1 ext4 defaults 0 0
/dev/sdb2 /mypart2 xfs defaults 0 0
[root@localhost ~]# umount /mypart1 #卸载
[root@localhost ~]# umount /mypart2 #卸载
[root@localhost ~]# df -h | grep mypart
[root@localhost ~]# mount -a
检测/etc/fstab开机自动挂载配置文件,格式是否正确
检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载
# 当fstab有误时,重启机器会进入救援模式,输入root密码,修改fstab再次重启修复
2、GPT
2.1 分区parted
常用分区指令
–help #查看指令帮助
–mktable gpt #建立指定模式分区表,也可以用于MBR分区
–mkpart #分区的名称 文件系统类型 start end
#指定大小或百分比%作为起始、结束位置
–print #查看分区表
–rm 序号 #删除指定的分区
–quit #退出交互环境
[root@localhost ~]# parted /dev/sdc
(parted) mktable gpt #指定分区模式
(parted) mkpart #划分新的分区
分区名称? []? haha #随意写
文件系统类型? [ext2]? ext4 #随意写,不会进行格式化
起始点? 0
结束点? 5G
忽略/Ignore/放弃/Cancel? Ignore #选择忽略,输入i(tab)补全
(parted) print #查看分区表信息
(parted) quit
[root@localhost ~]# lsblk
2.2 格式化
同上
2.3 挂载使用
同上
二、交换分区
利用硬盘的空间,充当内存的空间
CPU----->内存----->硬盘
当物理内存占满了,CPU可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
交换空间最好为内存的2倍,交换空间最大不会超过16G
1、利用硬盘制作交换空间
利用分区好的磁盘
1.1 制作
mkswap /dev/sdc1 #格式化交换文件系统
blkid /dev/sdc1 #查看文件系统类型
swapon #查看交换空间组成的成员信息
swapon /dev/sdc1 #启用交换分区
swapoff /dev/sdc1 #停用交换分区
swapon #查看交换空间组成的成员信息
free -m #查看交换空间的大小
1.2 挂载使用
[root@localhost ~]# vim /etc/fstab
/dev/sdc1 swap swap defaults 0 0
[root@localhost ~]# swapoff /dev/sdc1 #停用
[root@localhost ~]# swapon #查看交换空间组成的成员信息
[root@localhost ~]# swapon -a #专门检测交换分区的书写
[root@localhost ~]# swapon #查看交换空间组成的成员信息
2、使用文件方式制作交换空间
1.生成较大的文件
dd if=数据的源头 of=生成的文件 bs=每次读写数据的大小 count=次数
/dev/zero:拥有无限的数据
]# dd if=/dev/zero of=/opt/sw.txt bs=1M count=2048
]# ls -lh /opt/sw.txt
]# mkswap /opt/sw.txt
]# swapon /opt/sw.txt
swapon: /opt/sw.txt:不安全的权限 0644,建议使用 0600。
]# swapon
三、逻辑卷
作用:1.整合分散的空间 2.空间支持扩大
逻辑卷制作过程:将众多的物理卷(PV)组建成卷组(VG),再从卷组中划分出逻辑卷(LV)
LVM管理常用工具集
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvs | vgs | lvs |
Create 创建 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | / | vgextend | lvextend |
卷组划分空间的单位 PE
默认1个PE的大小为4M
]# vgdisplay systemvg
PE Size 4.00 MiB
1、制作PV (可省略)
pvcreate /dev/vd{b,c}
pvremove /dev/vd{b,c}
2、制作VG
格式:vgcreate 卷组名 设备路径…….
Successfully:成功
[root@localhost ~]# vgcreate systemvg /dev/sdc[1-2]
[root@localhost ~]# vgcreate -s 16M systemvg /dev/sdc[1-2] #制定PE为16M
[root@localhost ~]# pvs #查看系统所有物理卷信息
[root@localhost ~]# vgs #查看系统卷组信息
[root@localhost ~]# vgremove systemvg #删除VG
3、制作LV
格式: lvcreate -L 大小G -n 逻辑卷名字 卷组名
[root@localhost ~]# lvcreate -L 16G -n vo systemvg #指定大小为16G
[root@localhost ~]# lvcreate -l 50 -n vo systemvg #指定大小为50个PE
[root@localhost ~]# vgs #查看卷组信息
[root@localhost ~]# lvs #查看逻辑卷信息
4、使用LV
mkfs.xfs /dev/systemvg/vo #格式化xfs文件系统
blkid /dev/systemvg/vo #查看文件系统类型
vim /etc/fstab
/dev/systemvg/vo /mylv xfs defaults 0 0
mkdir /mylv
mount -a #检测fstab文件内容书写是否正确
df -h /mylv #查看查看正在挂载使用的设备
5、扩展VG
vgextend systemvg /dev/sdc3 /dev/sdc5 # 卷组名 设备1 设备2 设备3。。。
6、扩展LV
要在VG空间足够的情况下才能扩展LV
lvextend -L 25G /dev/systemvg/vo
lvs
df -h /mylv
xfs_growfs /dev/systemvg/vo #刷新文件系统
df -h /mylv
7、缩减
xfs文件系统:不支持缩减
ext4文件系统:支持缩减
8、删除
删除卷组的前提:基于此卷组创建的所有逻辑卷,要全部删除
删除逻辑卷的前提:不能删除正在挂载使用的逻辑卷
按顺序删除
先umount–>删除LV—>删除VG—>删除PV
四、RAID
- 廉价冗余磁盘阵列 Redundant Arrays of Inexpensive Disks
- 通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘
- 阵列的价值:提升I/O效率、硬件级别的数据冗余
- 不同RAID级别的功能、特性各不相同
1、RAID 0
- 条带模式
- 同一个文档分散存放在不同磁盘
- 并行写入以提高效率
- 至少需要两块磁盘组成,磁盘利用率100%
2、RAID 1
- 镜像模式
- 一个文档复制成多份,分别写入不同磁盘
- 多份拷贝提高可靠性,效率无提升
- 至少需要两块磁盘组成,磁盘利用率50%
3、RAID 5
- 高性价比模式
- 相当于RAID0和RAID1的折中方案
- 需要至少一块磁盘的容量来存放校验数据
- 至少需要三块磁盘组成,磁盘利用率n-1/n
4、RAID 6
- 高性价比/可靠模式
- 相当于扩展的RAID5阵列,提供2份独立校验方案
- 需要至少两块磁盘的容量来存放校验数据
- 至少需要四块磁盘组成,磁盘利用率n-2/n
5、RAID 1+0 | RAID 0+1
- 整合RAID 0、RAID 1的优势
- 并行存取提高效率、镜像写入提高可靠性
- 至少需要四块磁盘组成,磁盘利用率50%
6、制作使用RAID
6.1 制作mdadm
创建RAID可以使用mdadm命令
[root@node1 ~]# yum provides mdadm
[root@node1 ~]# yum -y install mdadm-4.0-13.el7.x86_64
格式: mdadm [模式] 选项 《设备》
选项:
-C 创建
-l 制定RAID级别
-n 制定磁盘个数
-x 制定备用设备个数
-G 修改阵列大小
-a 添加磁盘
-f 失败磁盘
-r 移出磁盘
mdadm -C /dev/md0 -l 0 -n 3 /dev/vdb1 /dev/vdb2 #RAID 0
mdadm -C /dev/md1 -l 1 -n 3 /dev/vdd1 /dev/vdd2 # RAID 1
mdadm -C /dev/md5 -l5 -n3 /dev/vdb1 /dev/vdb2 /dev/vdc1 #raid5
mdadm -C /dev/md6 -l6 -n4 /dev/vdb1 /dev/vdb2 /dev/vdc1 /dev/vdc2 #raid6
# 创建 名字 类型 设备数 设备
mdadm --detail /dev/md0 #查看RAID0信息
mdadm --detail /dev/md1 #查看RAID1信息
mdadm --detail /dev/md5 #查看RAID1信息
mdadm --detail /dev/md6 #查看RAID1信息
mdadm --detail /dev/md1 #查看RAID1信息
6.2 格式化挂载使用
临时挂载
mkdir /raid0 /raid1
mkfs.xfs /dev/md0
mkfs.xfs /dev/md1
mount /dev/md0 /raid0
mount /dev/md1 /raid1
df -h #会发现raid1的容量只有一半。这是因为raid1的原理导致的。
开机自动挂载
vim /etc/mdadm.conf
DEVICE /dev/vdb1 /dev/vdb2 /dev/vdc1 /dev/vdc2
echo -Evs >> /dev/mdadm.conf
vim /etc/fstab
/dev/md5 /raid5 xfs defaults 0 0
6.3 速度测试
感觉不准,测了几次,每次都不一样。
[root@node4 ~]# time dd if=/dev/zero of=txt bs=1M count=1000 #正常磁盘
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,4.33342 秒,242 MB/秒
real 0m4.351s
user 0m0.010s
sys 0m1.841s
[root@node4 ~]# cd /raid0
[root@node4 raid0]# time dd if=/dev/zero of=txt bs=1M count=1000 #raid0
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,2.38002 秒,441 MB/秒
real 0m2.383s
user 0m0.000s
sys 0m0.498s
[root@node4 raid0]# cd /raid1
[root@node4 raid1]# time dd if=/dev/zero of=txt bs=1M count=1000 #raid1
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,21.3319 秒,49.2 MB/秒
real 0m21.336s
user 0m0.005s
sys 0m0.443s
[root@node4 raid5]# time dd if=/dev/zero of=txt bs=1M count=1000 #raid5
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,2.04004 秒,514 MB/秒
real 0m2.043s
user 0m0.005s
sys 0m0.414s
[root@node4 raid6]# time dd if=/dev/zero of=txt bs=1M count=1000 #raid6
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,2.34012 秒,448 MB/秒
real 0m2.350s
user 0m0.002s
sys 0m0.426s
6.4 删除
[root@node4 ~]# umount /raid1 #取消挂载
[root@node4 ~]# umount /raid0
[root@node4 ~]# mdadm -S /dev/md0 #停止raid
mdadm: stopped /dev/md0
[root@node4 ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1
[root@node4 ~]# mdadm --zero-superblock /dev/vdb1 #干掉超级块
[root@node4 ~]# mdadm --zero-superblock /dev/vdb2
[root@node4 ~]# mdadm --zero-superblock /dev/vdd1
[root@node4 ~]# mdadm --zero-superblock /dev/vdd2
6.5 故障模拟
mdadm -C /dev/md5 -l5 -n3 /dev/vdb1 /dev/vdb2 /dev/vdc1 -x1 /dev/vdc2 #备用盘
[root@node4 ~]# mkfs.xfs /dev/md5
[root@node4 ~]# mount /dev/md5 /raid5
[root@node4 ~]# time dd if=/dev/zero of=txt bs=1M count=1000
[root@node4 raid5]# mdadm /dev/md5 -f /dev/vdb1 #模拟一块磁盘故障
[root@node4 raid5]# mdadm --detail /dev/md5 #会使用备用盘重建数据
Number Major Minor RaidDevice State
- 0 0 0 removed
1 253 18 1 active sync /dev/vdb2
4 253 33 2 spare rebuilding /dev/vdc1
0 253 17 - faulty /dev/vdb1
3 253 34 - spare /dev/vdc2
五、VDO
Virtual Data Optimizer(虚拟数据优化器)
1.功能
VDO是基于块设备层之上的,也就是在原设备基础上映射出mapper虚拟设备,然后直接使用即可
重删:减少磁盘的空间占用,以及减少复制带宽。相同的内容存一份。
压缩 :对每个单独的数据块进行处理
虚拟大小:动态扩容,避免浪费
前提制作VDO需要2G以上的内存
2.制作
2.1装包
~]# yum -y install vdo kmod-kvdo #所需软件包
2.2制作
[root@svr7 ~]# vdo create --name=haha --device=/dev/vdb --vdoLogicalSize=200G #最后的可以不要
2.3查看 删除
vdo list 查看
–vdo status -n VDO卷名称
–vdo remove -n VDO卷名称 删除
3.格式化文件系统
mkfs.xfs –K /dev/mapper/VDO卷名称 xfs
mkfs.ext4 -E nodiscard /dev/mapper/VDO卷名称 ext4
4.挂载
4.1临时挂载
[root@svr7 ~]# mkdir /vdo
[root@svr7 ~]# mount /dev/mapper/haha /vdo
4.2开机自动挂载
[root@svr7 ~]# vim /etc/fstab
/dev/mapper/haha /vdo xfs defaults,_netdev 0 0
[root@svr7 ~]# mount -a
[root@svr7 ~]# df -h