linux磁盘管理
1、磁盘管理体系概述
2、磁盘基础
2.1 磁盘概述
- 内存: 临时存放,断电后丢失
- 磁盘: 永久保存
2.2 磁盘分类
- 机械硬盘(HDD):电机带动磁盘高速旋转,读取数据.速度可以达到5400,7200 rpm(round per minute每分钟多少转)
- 固态硬盘(SSD):集成电路与芯片,存储芯片
2.3 磁盘接口
接口分类 | 说明 |
---|---|
SATA | 一般家用,一般用于机械硬盘,也有固态硬盘,容量大,价格较低 |
SAS | 给企业环境使用,一般用于机械硬盘,也有固态硬盘 |
PCIE | 企业级使用,固态硬盘用 |
U.2 | 企业级固态硬盘使用。PCI-E类似 |
2.4 企业级环境磁盘选择
磁盘选型 | 应用建议 |
---|---|
一般情况下,数据备份 | SATA硬盘,10k rpm 4tb,8tb存放备份 |
网站服务器使用 | SAS接口 15k rpm 300G 600G 900G |
高并发网站服务器 | 可以选择固态硬盘PCI-E,SAS,SATA |
2.5 机械VS固态
分类 | 机械硬盘 | 固态硬盘 |
---|---|---|
性价比 | 容量大价格低 | 容量小价格高 |
稳定 | 抗击打能力弱 | 抗击打能力强 |
速度 | 读写速度稍慢 | 读写速度会很快 |
数据安全 | 数据恢复易 | 数据恢复难 |
寿命 | 无限 | 1~2w次 |
固态硬盘存储颗粒: SLC,TLC,MLC,3D Nand
2.6 机械硬盘内部结构
内部组成 | 说明 |
---|---|
盘片 | 实际存放数据地方 |
磁头 | 贴近盘片,读写数据 |
磁道 | 磁盘中的圆环形区域,从0开始 |
扇区 | 磁盘上最小存储单位,默认512字节 |
柱面 | 不同盘面上相同的磁道组成的形状 |
3、raid详解
3.1 什么是raid
raid是一种磁盘冗余阵列,管理磁盘的方式
在使用物理服务器的时候,多块硬盘,这些硬盘需要通过raid卡(设备),统一进行管理
大部分需要做raid后才能安装系统,部署服务
3.2 raid的特点
可以获取更高的容量
可以获取更高的性能
可以获取更高的冗余安全
3.3 常见的raid级别
raid级别 | 原理 | 最少需要几块 | 冗余安全 | 可用容量 | 性能 | 使用场景 | 举例 |
---|---|---|---|---|---|---|---|
raid0 | 条带串联 | 1 | 最低 | 磁盘容量总和 | 读写最快 | 不要求安全,只要速度 | 从库,web服务器 |
raid1 | 镜像 | 只能有2块 | 100% | 一半的容量 | 写入慢,读取可以 | 对安全性要求较高的 | 系统盘,监控服务器 |
raid5 | 镜像 | 3 | 最多坏一块 | 损失一块盘的容量 | 写入性能不好,读取可以 | 对于速度和安全有要求的 | 普通数据库,访问量不高 |
raid10 | 镜像 | 4 | 可以坏一半 | 损失一半硬盘的容量 | 读写很快 | 对于性能和安全要求较高的 | 高并发高访问量的主库 |
- raid5工作原理
- raid10工作原理
4、物理机使用流程
4.1 服务器分类
- 机架式服务器
- 塔式服务器
- 刀片式服务器
4.2 服务器尺寸
- 19英寸机柜
- 每个服务器高度单位是U ,1U表示4.45cm,常用2U,1U,4U,更多U数的服务器一般小型机,大型机
- 路数: 2路表示这个服务器有2颗CPU
4.3 上架拆箱全流程
- 拆箱
- 上架
- 开机
- 配置idrac
- dell idrac
- ibm imm
- hp ilo
- 华为 ibmc
- 配置raid(raid卡实现) 系统raid1 剩余raid5
- 安装系统(U盘安装) 如果大量服务器装机,可以通过cobbler批量装机
- 正常安装系统即可
- 根据要求部署服务
- 关机
5、磁盘分区
5.1 磁盘分区概念
- 主分区、扩展分区、逻辑分区、MBR/GPT
- MBR:每一块硬盘上存放磁盘引导程序,引导程序在磁盘开头部分,用于引导系统启动
- 位置:磁盘分区表 磁盘的开始部分:0磁头,0磁道,1扇区(512字节)
- 512字节分别包括:引导程序446字节(MBR)、磁盘分区表(64字节) 4个分区表、结束标记55AA,2字节
分区表64字节,每个分区占用16字节,最多只有4个分区
这4个分区叫做主分区,如果只划分1分区使用所有空间,将无法继续划分分区,如果划分了4个分区,但是磁盘空间还有剩余,剩余空间将无法继续使用
MBR中分区表的组织将磁盘的可寻址存储空间限制为2TB(232×512字节)。并且只支持4个主分区,或者3个主分区和1个扩展分区的组合。如果要创建更多分区,则需要将其中一个主分区设为“扩展分区”,然后在扩展分区内创建更多逻辑分区
5.2 主分区-扩展分区-逻辑分区的概念
扩展分区是用于解决主分区数量主分区只能有4个问题,扩展分区无法直接使用,需要将其中一个主分区设为“扩展分区”,然后在扩展分区内创建更多逻辑分区
逻辑分区->扩展分区,用于存放数据
基于MBR的分区方案正在被新计算机中的GUID分区表(GPT) 方案取代,因为GPT分区表磁盘支持长达2^64个块的卷,例如对于具有512-字节扇区,即9.44ZB–zettabytes,并且能够拥有多达128个主分区。但是GPT与操作系统的兼容性不如MBR
5.3 如何判断分区是MBR还是GPT
https://blog.csdn.net/m0_49562857/article/details/128523829?spm=1001.2014.3001.5502
5.4 磁盘分区的命名方式
#磁盘文件或分区文件放在/dev/下面
#磁盘接口:
sas/sata/scsi接口的硬盘,硬盘名字是以sd开头
虚拟机(kvm)/公有云: 硬盘名字是以vd开头
#第几块硬盘:通过字母表示从字母a开始一次类推。
/dev/sda
#分区命名是根据分区类型进行命名的。
如果是主分区或者扩展分区则分区号从1-4范围。
如果是逻辑分区,逻辑分区的分区号从5开始
#案例
第2块SATA硬盘的第1个主分区 /dev/sdb1
第3块SAS硬盘的第2个逻辑分区 /dev/sdc6
第5块公有云的云盘的第3个主分区 /dev/vde3
6、磁盘分区实战
6.1 分区三部曲
- 创建分区
- 创建文件系统
- 挂载
挂载:给设备设置个入口,如果不挂载,这个设备无法访问,类似于没有门窗的监狱
6.2 磁盘分区
- 操作磁盘的命令fdisk
- 常用的参数
命令 | 单词 | 说明 |
---|---|---|
p | 输出磁盘分区信息 | |
n | new | 创建分区 |
d | delete | 删除分区 |
w | write | 保存并退出 |
q | quit | 退出不保存 |
- 创建20MB的分区
Command (m for help): n #创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #提示选择类型
e extended
Select (default p): p #输入p或回车默认使用主分区
Partition number (1-4, default 1): #分区号回车使用默认的1号
First sector (2048-2097151, default 2048): #回车,使用默认的起点
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +20M #+20M分区20MB
Partition 1 of type Linux and of size 20 MiB is set
Command (m for help): p 通过p查看分区信息
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7e6b1a38
Device Boot Start End Blocks Id System
/dev/sdc1 2048 43007 20480 83 Linux
Command (m for help): w #w保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#lsblk查看磁盘分区
6.3 格式化文件系统
mkfs.xfs /dev/sdc1
xfs是文件系统类型,CentOS 7默认的文件系统类型。 mkfs.ext4 文件系统类型,用于CentOS 6.x 或公有云使用
常见的格式化报错:
mkfs.xfs: /dev/sdc1 appears to contain an existing filesystem (xfs). #磁盘分区已经格式化
mkfs.xfs: Use the -f option to force overwrite. #强制格式化mkfs.xxxx -f参数
6.4 挂载
Linux中的设备,需要通过挂载命令,给设备指定入口(已经存在的空目录),否则将无法使用
- 临时挂载,重启后失效
mount /dev/sdc1 /mnt/ #临时挂载
df -h #检查挂载情况
umount /mnt/ #卸载
mount /dev/cdrom /media/ #挂载光盘本地的镜像
ls -l /mnt/Packages/*.rpm |wc -l #查看光盘内的rpm包
- 永久挂载
- 方式一:把挂载命令mount /dev/sdb1 /mnt/ 写入到/etc/rc.local,注意命令最好写为绝对路径
- 方式二:修改专业的开机自动挂载的配置文件/etc/fstab
- /etc/fstab每一列含义
第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 |
---|---|---|---|---|---|
设备名字 | 挂载点 | 文件系统类型: xfs,ext4,swap | 一般是defaults, 挂载选项 | 是否备份 | 是否检查 |
设备名字方式:/dev/sdc1 UUID形式: UUID=“048c0c5e-332a-44b6-bf70-99ff0c3fb2ff” | /mnt/ | xfs | defaults | 0 | 0 |
7、MBR与GPT的区别
分区表 | 特点 | 命令 |
---|---|---|
MBR | 支持2tb以内的硬盘,大于2tb则只识别2tb. 区别主分区,扩展分区,逻辑分区 | fdisk/parted |
GPT | 支持大容量硬盘,主分区无限使用(100多个) | gdisk/parted |
parted /dev/sdd
(parted) mktable gpt #创建gpt格式的分区表,也可以使用mklabel gpt,但是MBR格式的分区表在这里叫做msdos
Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue? #销毁现有的磁盘信息,数据丢失,是否继续
Yes/No? yes
(parted) mkpart print 0% 50% #可以平均分成几份,也可以按照大小分,格式为mkpart print 0 10,分一个10M大小的分区
(parted) mkpart print 50% 100%
(parted) print #查看分区信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 537MB 536MB print
2 537MB 1073MB 536MB print
(parted) rm 1 #删除第一个分区
(parted) quit #退出
使用parted命令进行分区时一定要检查对齐各个分区,达到最佳性能
align-check 检查分区N的类型(min|opt)是否对齐
8、创建swap交换分区
8.1 什么是swap交换分区
swap是磁盘的一块区域(分区/文件),当物理内存不够用时,系统会将内存中不常访问的数据保存到swap中,而当系统内存空闲的时候再将数据移到内存中,这也是常说的换入换出(swap in / swap out)
8.2 故障案例-系统swap空间被占用
#很多时候系统会告警->内存空间不足,swap空间被占用,如何解决?
1、保证系统正常运行,增加swap空间
2、寻找开发排查问题原因
#临时增加swap空间流程
1、创建指定大小的文件1g的文件
dd if=/dev/zero of=/tmp/1g bs=1M count=1000
if = input file 输入文件/dev/zero不断输出空.
of = ouput file 输出文件
bs = block size 每次读取多少
count = 读取次数
2、格式化将普通文件转为swap
mkswap /tmp/1g
file /tmp/1g #查看文件类型
/tmp/1g: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=f5038e61-e7f2-4efe-9e12-419e3f950530
3、激活这个swap,把它加入到原本的swap空间中
free -h
chmod 600 /tmp/1g
swapon /tmp/1g
free -h
swapoff /tmp/1g #卸载掉这块swap空间
4、配置永久挂载
/tmp/1g swap swap defaults 0 0
9、企业分区方案
- 服务器存放的数据不重要
分区 | 作用与大小 |
---|---|
/boot/引导分区 | 引导系统启动与存放引导文件,存放系统内核镜像. 推荐1G即可 |
swap | 根据实际内存配置,大于8G,swap配置8G即可. 低于实际内存低于8G, 1.5倍或2倍,最大8G. 公有云可以不配置, 如果是java建议配置一些 |
/根分区 | 所有剩余空间给根 |
- 服务器存放重要的数据
分区 | 作用与大小 |
---|---|
/boot/引导分区 | 引导系统启动与存放引导文件,存放系统内核镜像. 推荐1G即可 |
swap | 根据实际内存配置,大于8G,swap配置8G即可. 低于实际内存低于8G, 1.5倍或2倍,最大8G. 公有云可以不配置, 如果是java建议配置一些 |
/根分区 | 给40G-200G,主要安装一些软件,重要数据单独存放,系统盘足够大可以给1.2T |
/data/ | 剩余所有空间 |
- 不知道是否重要
分区 | 作用与大小 |
---|---|
/boot/引导分区 | 引导系统启动与存放引导文件,存放系统内核镜像. 推荐1G即可 |
swap | 根据实际内存配置,大于8G,swap配置8G即可. 低于实际内存低于8G, 1.5倍或2倍,最大8G. 公有云可以不配置, 如果是java建议配置一些 |
/根分区 | 给40G-200G,主要安装一些软件,重要数据单独存放,系统盘足够大可以给1.2T |
剩余空间不划分 | 未来谁使用谁划分 |
10、文件系统
常见文件系统 | 说明 |
---|---|
xfs | centos 7默认的文件系统即可 |
ext4 | centos 6.x ubuntu 默认的文件系统 |
ext3 | centos 5.x 默认的文件系统 |
swap | 交换分区,也算是个文件系统 |
11、磁盘性能指标
磁盘性能指标 | 说明 |
---|---|
吞吐量io | 一般值得是磁盘读写速度 |
iops | 每秒可以进行的io数量(io per second),每秒可以进行读写次数 |
延迟 | 进行读写的时候操作延时 |
故障间的平均时间 | 固态硬盘 基本都是百万小时 |
连续读写: dd命令测试
随机读写: fio测试
fio可以测试这些指标