数据库运维
记录DBA学习成长历程

第11章:系统磁盘管理

文章目录

1. 磁盘分区操作步骤

购买了多块新磁盘,真实使用磁盘,分为下面几步:
1)进行创建阵列(raid) ,把多块盘整合到一块。
  容量更大,磁盘读写性能更高,更加安全(相当于将几块地皮整合)
2) 进行分区操作 (重新规划)
3) 进行格式化操作 (清理地皮)
4) 创建文件系统 (建房子的风格)
5) 进行挂载操作 (按上房门)

2. 磁盘体系结构说明

3. 磁盘体系结构第一层-磁盘体系结构详述

—3.1 磁盘外部结构

——3.1.1 组成部分

磁盘主轴: 控制磁盘转速(RPMround per minute 转/分钟-2850就是2850转/分钟
         转速越快, 读写效率更高
         转速越低, 读写效率越低
         家用磁盘转速 7200 rpm 5400 rpm
         企业磁盘转速 15k rpm 10k rpm
磁盘盘片: 用于存储数据
磁盘磁头: 用于读取数据
磁盘接口: 用于连接主板

——3.1.2 接口分类: 磁盘类型

机械硬盘: SATA(串型接口) < SCSI(串行接口) < SAS
固态硬盘: PCI-e

—3.2 磁盘内部结构

磁头: 读取数据
磁道: 存储数据
扇区: 存储数据 数据存储最小单位 512字节
柱面: 存储数据 不同盘面上相同的磁道组成(圆柱体)
单元块: 表示单个柱面大小

—3.3 磁盘读取数据原理

——3.3.1 原理

固态硬盘 优于 机械硬盘
1)用户发出读取磁盘数据请求 /oldboy/oldboy.txt
2)磁盘开始读取数据, 从0磁头,0磁道,1扇区开始读取..10扇区
3)利用电子切换, 切换1磁头,0磁道,1扇区开始读取..10扇区
4)利用径向运动, 切换磁道信息, 继续寻找数据

——3.3.2 计算磁盘大小

centos7:
[root@linux ~]fdisk -l --- 查看磁盘具体参数信息
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 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: 0x000bf20e

centos6:
# fdisk -l # 显示磁盘大小信息
Disk /dev/sda: 53.7 GB, 53687091200 bytes
# 显示磁头数,扇区数/每磁道数, 柱面数
255 heads, 63 sectors/track, 6527 cylinders
# 单元块大小
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

计算磁盘大小公式:
1) 已知扇区数量和一个扇区大小512byte,得知磁盘总大小 centos7
[root@linux ~]awk 'BEGIN{print (104857600*512)/1000/1000/1000}'
53.6871
2) 已知扇区大小512byte,磁头数,计算每个磁道扇区数量 (磁道数量==柱面) 
[root@linux ~]awk 'BEGIN{print 512*63*6527*255/1000/1000/1000}' centos6

 

4. 磁盘体系结构第二层: 磁盘阵列配置

—4.1 磁盘阵列作用

1)提供更多存储空间
2)提高数据读写效率
3)提高数据存储安全

—4.2 磁盘阵列的配置级别

——4.2.1 raid 0 (至少两块)

1)空间 不会损失磁盘容量
2)效率 可以提升读写效率
3)安全 没有安全可言
没有企业使用raid 0 / 民用场景(游戏比赛WCG)

——4.2.2 raid 1 (至少两块)

1)空间 会损失一半容量
2)效率 不会有效率提升
3)安全 具有安全保障
企业场景: 对数据安全关注比较高的服务器 (存储服务器 数据库服务器)

——4.2.3 raid 5 (至少三块磁盘)

1)空间 只损失一块磁盘空间
2)效率 可以提升读写效率
3)安全 有安全保证(只能有一块磁盘损坏,有热备盘情况下可以坏两块,但不能同时)
企业场景: 大部分互联网服务器都会应用
raid的升级版本为raid 6

——4.2.4 raid 10(至少四块磁盘)

1)空间 损失一半
2)效率 会有提升
3)安全 具有保障(每组只能坏一块)
企业应用场景: 数据库服务器

——4.2.5 raid 01(至少四块磁盘)

a: 空间 损失一半
b: 效率 会有提升
c: 安全 具有保障(损坏机率较高)

—4.3 LVM

LVM: 可以实现磁盘分区空间弹性缩容和扩容
在企业一般不对有数据的分区进行缩容处理

LVM信息查看:https://www.cnblogs.com/yhzh/p/4995066.html
LVM配置方法:https://www.cnblogs.com/shxdyz/articles/7834980.html

配置LVM过程:
1)配置磁盘分区
2)格式化处理
3)将磁盘分区设置为PV(pvcreate)
4)将磁盘分区加入为vg(vgcreate)
5)从vg中取出相应空间容量生成新的lv(lvcreate)
6)进行挂载使用

5. 磁盘体系结构第三层: 磁盘分区说明

—5.1 系统启动引导记录MBR

MBR存放在磁盘的0磁头 0磁道 1扇区中 512字节
1)加载引导启动系统文件数据信息 446
2)分区表的信息 64字节分区

—5.2 分区表概念

主分区(primary)  --- 最多4个,每个分区占用16字节,
                     表示方式 sda1 sda2 sda3 sda4
扩展分区(extend) --- 最多只能存在一个,无法存储数据信息
                     (扩展分区进行逻辑分区才可以表示为sda5,sda6...)
逻辑分区(logical)--- 可以有多个逻辑分区,用于存放数据信息
PS: 扩展分区不能直接使用,需要建立逻辑分区才能使用

问题一: 如果主分区已经有4个了 还能再有扩展分区
最终磁盘只有4个分区

问题二: 如何有更多的分区
有主分区 还要有扩展分区
3个主分区 
1扩展分区,进行多个逻辑分区

主分区
最多4个主分区,
扩展分区
最多只能存在一个

—5.3 磁盘进行分区

——5.3.1 fdisk (磁盘小于2T)

环境准备: 需要准备两块磁盘 10M 100M
1)确认检查:
[root@linux ~]# fdisk -l
Disk /dev/sdb: 10 MB, 10485760 bytes, 20480 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 /dev/sdc: 106 MB, 106954752 bytes, 208896 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

进行分区操作:
fdisk /dev/sdb --- 对磁盘进行分区命令
Command action
d delete a partition --- 删除一个分区
l list known partition types --- 列出分区类型(8e Linux LVM)
m print this menu --- 输出帮助信息
n add a new partition --- 创建新的分区
p print the partition table --- 输出分区信息
q quit without saving changes --- 不做任何改变进行退出
t change a partition's system id --- 改变分区类型
w write table to disk and exit --- 保存分区配置

2)创建主分区操作
Command (m for help): n 创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 指定创建的是主分区
Partition number (1-4, default 1): 1 指定分区号码
First sector (2048-20479, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20479, default 20479): +5M 指定分区大小
Partition 1 of type Linux and of size 5 MiB is set

3)创建扩展分区
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e 指定创建扩展分区
Partition number (2-4, default 2):
First sector (12288-20479, default 12288):
Using default value 12288
Last sector, +sectors or +size{K,M,G} (12288-20479, default 20479): 不输大小表示剩余全部空间
Using default value 20479
Partition 2 of type Extended and of size 4 MiB is set
(ctrl+u删除误写命令)

4)创建逻辑分区
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l 需要首先创建好扩展分区
Adding logical partition 5
First sector (14336-20479, default 14336):
Using default value 14336
Last sector, +sectors or +size{K,M,G} (14336-20479, default 20479):
Using default value 20479
Partition 5 of type Linux and of size 3 MiB is set

5) 输出分区信息
Command (m for help): p
Disk /dev/sdb: 10 MB, 10485760 bytes, 20480 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: 0x43a2def7

Device Boot Start End Blocks Id System
/dev/sdb1 2048 12287 5120 83 Linux
/dev/sdb2 12288 20479 4096 5 Extended
/dev/sdb5 14336 20479 3072 83 Linux

Command (m for help): wq

6)调整分区类型
[root@linux ~]fdisk /dev/sdb
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

7)删除分区操作
[root@linux ~]fdisk /dev/sdb
Command (m for help): d
Partition number (1,2,5, default 5): 5
Partition 5 is deleted

——5.3.2 fdisk (磁盘大于2T)

fdisk /dev/sdb --- 对磁盘进行分区命令
g create a new empty GPT partition table

——5.3.3  parted (大于2T)

当一个分区大小超过2T时, 不能再使用MBR引导记录, 使用GPT来识别大容量磁盘
分区方法:
mklabel(创建分区表 MRB(msdos)/gpt)
create a new disklabel (partition table) mklabel gpt
mkpart (创建新的分区)
make a partition mkpart primary 0 20M
print(显示分区表信息)
display the partition table
rm()删除指定分区信息
delete partition NUMBER
quit(退出分区界面)
exit program

1)修改分区引导记录信息
(parted) mklabel gpt
Warning: Partition(s) on /dev/sdd are being used.
Ignore/Cancel? Ignore

2)创建分区信息
(parted) mkpart primary 0 2100G
Ignore/Cancel? Ignore
(parted)print

(parted) mkpart primary 0 2100G 2500G
Ignore/Cancel? Ignore
(parted)print

3)删除指定分区信息
rm 分区号码

6.  磁盘体系结构第四层: 创建文件系统(格式化处理)

—6.1 文件系统类型

文件系统有什么: 采用相应机制存储和管理数据
centos5: ext2 ext3
centos6: ext4
centos7: xfs
特点: 
在数据库服务器中可以更高效存储数据信息
在格式化磁盘时, 效率更高(大的磁盘)
nfs 网络文件系统 分布式文件系统

—6.2 格式化处理

在格式化前需要执行以下命令,作用是诞生inode和block信息
partprobe /dev/sdb --- 告知内核系统已经对磁盘进行了分区

做格式化处理:
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb1 --- 无法识别小分区信息(10M以下)
mkfs -t xfs /dev/sdb1

7. 磁盘体系结构第五层: 进行磁盘挂载

—7.1 手动挂载

mount /dev/sdb1 /mnt

—7.2 实现自动挂载分区

mount /dev/sdc1 /mnt_100M
方法一: 将挂载命令放入到/etc/rc.local文件中
vim /etc/rc.local
mount /dev/sdc1 /mnt_100M

说明: 需要确保rc.local目录具有执行权限
[root@linux ~]# ll -d /etc/rc.local
lrwxrwxrwx. 1 root root 13 Dec 29 16:33 /etc/rc.local -> rc.d/rc.local
[root@linux ~]# ll -d /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 499 Jan 29 11:33 /etc/rc.d/rc.local

—7.3 利用fstab文件实现分区自动挂载

[root@linux ~]# blkid
/dev/sda1: UUID="798f1832-2bfd-4e52-925a-b4bb6a60e2d4" TYPE="xfs" 
/dev/sda2: UUID="c28728ac-fdff-49b6-a551-3665a0e86951" TYPE="swap" 
/dev/sda3: UUID="9e85a724-7923-42a8-abeb-abc823377a74" TYPE="xfs" 

[root@linux ~]#vim /etc/fstab
设备文件 挂载点目录 文件系统类型 挂载的参数信息 是否进行备份 是否检查磁盘
/dev/sdc1 /mnt_100M  xfs     defaults        0           0

关闭磁盘检查:tune2fs -c 0 -i 0 /dev/sdb1
-c 定义分区磁盘挂载多少次,做一次磁盘健康检查,0表示不做检查
-i 定义分区之后间隔多少天,做一次磁盘健康检查,0表示不做检查

8. 磁盘充当内存使用企业案例

—8.1 介绍

tomcat(网站服务)--java语言编写的程序, 运行过程中比较消耗内存
临时需要添加内存 --- 将硬盘空间临时充当内存使用 -- swap分区

—8.2 增加swap分区大小

查看swap分区大小
[root@linux ~]# free -h
total used free shared buff/cache available
Mem: 3.9G 100M 3.7G 8.9M 108M 3.6G
Swap: 1.0G 0B 1.0G

第一个历程: 从磁盘中取出一定空间重当内存使用
[root@linux ~]# dd if=/dev/zero of=/tmp/1G bs=100M count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 25.9294 s, 40.4 MB/s

第二个历程: 定义文件可以被swap分区使用
[root@linux ~]# ll /tmp/1G -h
-rw-r--r-- 1 root root 1000M Jan 29 11:54 /tmp/1G
[root@linux ~]# file /tmp/1G
/tmp/1G: data
[root@linux ~]# mkswap /tmp/1G
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=a10ad568-60c9-4311-9e09-e6db844d6130
[root@linux ~]# file /tmp/1G
/tmp/1G: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, 
UUID=a10ad568-60c9-4311-9e09-e6db844d6130

第三个历程: 让swap分区可以加载swap文件
[root@linux ~]# swapon /tmp/1G
swapon: /tmp/1G: insecure permissions 0644, 0600 suggested.
[root@linux ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 99M 734M 9.5M 1.1G 1.7G
Swap: 2.0G 0B 2.0G

—8.3 将swap空间进行减小

[root@linux ~]# swapoff /tmp/1G
[root@linux ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 98M 734M 9.5M 1.1G 1.7G
Swap: 1.0G 0B 1.0G

9. 系统分区实践步骤

第一步:创建磁盘分区保存查看
第二步:告知系统分区已经创建
第三步:分区之后创建文件系统(格式化操作)
第四步:关闭系统磁盘自检功能 (centos6)
第五步:进行分区挂载检查效果
第六步:实现分区开机自动挂载
赞(1)
MySQL学习笔记 » 第11章:系统磁盘管理