一,硬盘管理
(一),磁盘基础知识
1,磁盘在linux 的表现形式
一般在 /dev
[root@localhost data]#ll /dev/sd*
brw-rw---- 1 root disk 8, 0 2月 21 19:27 /dev/sda
brw-rw---- 1 root disk 8, 1 2月 21 19:27 /dev/sda1
brw-rw---- 1 root disk 8, 2 2月 21 19:27 /dev/sda2
brw-rw---- 1 root disk 8, 3 2月 21 19:27 /dev/sda3
此处的8代表设备的类型
8后的数字代表第几类的第几块设备
sda 指第一块硬盘
s代表接口 接口决定了数据传输的速率 scsi sata
d 代表 磁盘
a 代表第一块盘 b 代表第二块
2,硬盘接口的类型
-
IDE:133MB/s,并行接口,早期家用电脑
-
SCSI:640MB/s,并行接口,早期服务器
-
SATA:6Gbps,SATA数据端口与电源(长的电源,数据线短的)端口是分开的,即需要两条线,一条数据线,一条电源线
-
SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行。
-
M.2: 笔记本
-
光纤接口
3,服务器硬盘尺寸大小
LFF:3.5寸,一般见到的那种台式机硬盘的大小
SFF:Small Form Factor 小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘
L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考内虑增大单位密度内的磁盘容量、增强散热、减小功耗
2.5 ------> 3.5 使用
3.5 是无法转换 成 2.5
4,硬盘分类
机械硬盘,固态硬盘
如何查看磁盘是固态还是机械?
lsblk -d -o name,rota
1 固态 0 机械
(二)磁盘分区
1,为什么要分区
-
优化I/O性能 (读写性能)
-
实现磁盘空间配额限制
-
提高修复速度
-
隔离系统和程序
-
安装多个OS
-
采用不同文件系统
2,分区缺点
①一旦分区,无法修改大小
②只能使用连续的空间
③没有备份,冗余的功能
3,分区方式
① MBR
MBR 只能对2t 以下的盘进行分区
②GPT
可以对2t以上的盘进行分区
(三)磁盘分区具体原理
1,MBR具体分区方法
mbr 第一个扇区(512字节)里有:
①主引导记录:引导硬件找到操作系统 446字节 的小程序 ( 这个只是grub程序的一部分)
446字节
②分区表 记录了分区的开始和结束的位置 一个分区表要占16字节 4乘以16=64 所以mbr 只能分4个主分区
64字节
③标记位 55 aa (还有两个字节)
2字节
2,为什么MBR 只能对2t 以下的盘进行分区
MBR磁盘采用MBR分区表,由于MBR用4个字节存储分区总扇区数,最大可以表示2的32次方,1个扇区512字节,得出分区的容量或者磁盘容量都不能超过2T
3,mbr 分区类型
①主分区
可以直接使用
②扩展分区 (特殊的主分区)
不可以直接使用,无论你分多大,最后只显示1k 需要再分逻辑分区
作用:为了让你可以分超过4个分区
扩展分区不是用的,是存储了逻辑分区的分区表
③逻辑分区
需要先有扩展分区
逻辑分区的序号始终从5开始
因此总的来说,硬盘分区有 3 种,分别是主分区、扩展分区和逻辑分区。对于一个硬盘来说,主分区至少有 1 个,最多有 4 个;扩展分区可以没有,最多只能有 1 个,且主分区+扩展分区总共不能超过 4 个;逻辑分区可以有若干个。
4,GPT分区
GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动
GPT分区结构分为4个区域:
-
GPT头
-
分区表
-
GPT分区
-
备份区域
不需要逻辑分区和扩展分区
二,文件系统
用来管理(增删改查)文件的程序
(一)文件系统理论
1,超级块(super block)
负责描述 当前这个分区有哪些块组, 从哪里开始从哪里结束
2,块组描述符表
(GDT)ext文件系统每一个块组信息使用32字节描述,这32个字节称为块组描述符,所有块组的块组描述符组成块组描述符表GDT(group descriptor table)。虽然每个块组都需要块组描述符来记录块组的信息和属性元数据,但是不是每个块组中都存放了块组描述符。将所有块组的块组信息组成一个GDT保存,并将该GDT存放于某些块组中,类似存放superblock和备份superblock的块
3,块位图(block bitmap)
描述此块是否使用 0 未使用 1使用
4,节点位图 (inode bitmap)
inode节点 位图 0 未使用 1使用
(二)常见文件系统
1,XFS
-
根据所记录的 日志在很短的时间内迅速恢复磁盘文件内容
-
用优化算法,日志记录对整体文件操作影响非常小
-
是一个全64-bit的文件系统,最大可以支持8EB的文件系统,1EB=1024PB1PB=1024TB(这里才到TB1TB=1024GB
-
而支持单个文件则达到8EB能以接近裸设备I/O的性能存储
2,swap
当内存不足时 将硬盘的空间转换成 内存使用
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足。
3 ,FAT16、FAT32、
且最大只能支持32GB分区,单个文件也只能支持最大4GB
4 ,NTFS windows 默认
NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能,单个文件64GB
5,EXT4
Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024*1024TB
6,JFS
主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。1PB=1024TB
1EB=1024PB
1PB=1024TB
1TB=1024G
(三 )linux 中默认的文件系统
centos7默认是XFS
centos6默认是ext4
三,挂载
(一)挂载格式
mount 存储设备 挂载点目录
(二)挂载镜像文件
mount -o loop 没硬盘情况下
(三)挂载U盘
先将u 盘格式化
四,文件系统修复步骤
(一)查看
两种方法
badblocks 检查坏道
tune2sf -l /dev/sdb1 查看文件系统特性
(二)解挂载
umount
(三)修复
fsck /dev/sdb1 =y
(四)再挂载
注意:不一定能修复,看运气
五,如何新建一个磁盘
1,分区
在linux 必须分区
2,文件系统
是一类软件的总称 主要作用管理文件(大小,权限)
3,挂载
硬盘和系统内的文件夹做关联,使用该文件夹等于使用硬盘
(一)分区工具
lsblk 列块设备 (看硬件)
fdisk 管理MBR分区 (看磁盘)
fdisk -l 看所有
fdisk -l /dev/sda 看sda
gdisk 管理GPT分区
partprobe 重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 5,7,8
(二)实验步骤,如何新建一个磁盘并分区
1,lsblk 列出块设备,可以看到我们此时只有sda磁盘2,添加一个磁盘后,重启可以看到。但生产环境一般不允许重启,用
echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan
该命令刷新硬盘供电的三个接口,此处做了别名scan
3,可以看到sdb 磁盘
4,使用fdisk命令 分区
n 新建分区 d删除分区 p打印分区列表
w 保存退出 q 退出不保存 t改变分区类型
5,下一步选择 主分区 p
p 主分区 e 扩展分区(l逻辑分区) 建了扩展分区才有逻辑分区
6,给分区1 10G
7,分区会出现延迟的情况,因为你对硬盘的更改在内存里,内存到硬盘还需要时间。刷新 partprobe
此时可以看到sdb 有sdb1的分区了
8,分区后还需要格式化 (装文件系统)
mkfs.xfs 设备名 格式化
9,格式之后挂载
(三)永久挂载
mount 挂载是临时挂载,想自动挂载即永久挂载要写到文件里去,挂载相关的信息在 /etc/fstab
1, 输入 vim /etc/fstab
注意注意注意:设备名最好用uuid, sdb1 名字不准
2,所以我们先查询 sdb1 的uuid 输入blkid 命令
复制UUID="XXXXXXXXX" UUID= 也要复制 把双引号去掉
3,格式如下 wq 保存退出4,如果 /etc/fstab 文件里有错误,服务器就重启不了了,所以这边先重新挂载一次,防止出错
用 mount -a 命令
5,如果 /etc/fstab 文件里有错误,服务器就重启不了,会进入crtl d 报错页面
(四)总结
1,lsblk 先查看磁盘
2,装新磁盘
3,重启 或者刷新磁盘三个接口 echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan
4,看到新磁盘,使用fdisk命令 分区
5,新建一个分区后 mkfs.xfs 设备名 格式化(即给分区装文件系统)
6,永久挂载
7,先查询 分区 的uuid 输入blkid 命令
8, 输入 vim /etc/fstab 将复制的uuid号填进去,并把剩余填写完整
9,为了安全性,mount -a 重新挂载一次
六,拓展 swap 分区
当内存不足,把硬盘空间转内存
(一)查看swap
free -h
(二)增加swap
1,新建一个4G分区,分区后改类型
2,刷新
3,,格式化文件系统 再次查看swap 分区增加4G
(三)关闭swap
swapoff -a 关全部的swap 空间
swapoff 设备名 只关设备名中的swap 空间