磁盘
磁盘空间的管理
- 分区
- 文件系统
- 格式化
- 挂载
磁盘的结构
硬盘的物理结构
盘片:硬盘有多个盘片,每盘片2面 磁头:每面一个磁头
硬盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大)
- 磁道:同一盘片不同半径的同心圆
- 柱面:不同扇片相同半径构成的圆柱面(柱面和磁道数量相同)
硬盘存储容量
-
硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数
1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
-
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
硬盘接口的类型
- IDE:133MB/s,并行接口,早期家用电脑
- SCSI:640MB/s,并行接口,早期服务器
- SATA:6Gbps,SATA数据端口与电源(长的电源,数据线短的)端口是分开的,即需要两条线,一条数据线,一条电源线
- SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行。
- M.2:
- 光纤接口
MBR与磁盘分区
如何在linux中使用硬盘
- 分区:linux中必须要分区
- 初始化文件系统
- 挂载
为什么分区
- 优化读写性能
- 实现磁盘空间配额限制
- 提高修复速度
- 隔离系统和程序
- 安装多个OS
- 采用不同文件系统
MBR分区
- MBR位于硬盘的第一个物理扇区
- MBR中包含硬盘的主引导程序和硬盘分区表示
- 分区表中有4个分区记录,每个分区记录去占16字节
MBR是用32位表示扇区数,分区不超过2T(就是只能对小于2T的硬盘进行分区)
- 前446字节: boot loader 启动相关的文件
- 后64字节:分区表,其中每16字节标识一个分区,就是最多有4个分区表,只能分4个区
- 最后2字节: 保留位
GPT分区
GPT:支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
使用128位UUID表示磁盘和分区, GPT分区表自动备份在头和尾两份,并有CRC校验位UEFI (统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动
文件系统
- 是操作系统用于明确存储设备或分区上的文件的使用方法和数据结构;即在存储设备上组织使用文件的 方法。
- 操作系统中负责管理和存储文件信息的软件结构称为文件管理系统
- 用来管理(增删改查恢复)文件的程序
文件系统的组成
- 内核中的模块:ext4, xfs, vfat
- Linux的虚拟文件系统:VFS
- 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
/lib/modules/`uname -r`/kernel/fs
#查看支持的文件系统
xfs
- 存放文件和目录数据的分区
- 高性能的日志型文件系统
- CentOS7系统中默认使用的文件系统
swap交换文件系统
- 是系统RAM的补充,swap分区支持虚拟内存
- 当没有足够的 RAM 保存系统处理的数据时会将数据写入 swap分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程
- 配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足
df
列出文件系统的整体磁盘空间使用情况
常用选项
- T:文件系统类型
- h:以人性化的方式显示
分区工具
- lsblk:列出块设备
- blkid:显示硬件设备的uuid
- fdisk:管理MBR分区
- gdisk:管理GPT分区
- parted:高级分区操作,可以是交互或非交互方式
- partprobe:重新设置内存中的内核分区表版本,适合于除了CentOS6以外的其它版本
- mkswap:特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费,添加交换分区的空间
- mkswap + 分区
- swapon +分区 开启 -a 全部
- swapoff +分区 关闭 -a 全部
给虚拟机添加硬盘
echo "- - -" >/sys/class/scsi_host/host0/scan
刷新接口的命令
alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan
可以给刷新接口的命令设置一个别名,vim ~/.bashrc然后把别名命令输进去,把别名写到配置文件可以永久使用,如果只是输入这个命令,只能暂时使用,关机重启之后就无法使用了
lsblk
可以查看磁盘的空间
fdisk
CentOS7中只能给2T以下的硬盘进行分类
格式:fdisk -l [磁盘设备]或fdisk [磁盘设备]
进入交互模式后的常用指令
指令 | 作用 |
---|---|
m | 打印出菜单 |
p | 打印出当前分区表 |
n | 新建一个分区 |
d | 删除一个分区 |
t | 改变分区的属性,系统ID |
w | 保存 |
q | 不保存退出 |
fdisk -l 不加设备名,可以查看所有的硬盘设备
mkfs
格式化文件系统
- mkfs -t补全类型
- mkfs.补全类型
挂载与解挂载
mount:挂载
- mount [ -t 类型 ] 存储设备 挂载点目录
- mount -o loop ISO镜像文件 挂载点目录 挂载规则
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
- 临时挂载,重启之后就没有了
umount:解挂载
- umount 设备名|挂载点
- 卸载时:可使用设备,也可以使用挂载点
永久挂载
重启后挂载点还在 vim /etc/fstab
- /dev/sdb1:设备名字(生产环境中一定要用uuid,可以用blkid查看uuid,我这里实验的话就用的硬盘名字)
- /mnt:挂载点
- xfs:文件系统类型
- defaults:权限(defaults)
- 0:备份
- 0:开机是否检测
永久挂载案例
1.查看设备的uuid
2.写配置文件
vim /etc/fstab
- UUID=40f8c912-184f-4b6f-ac43-b55badaa2bc4 :设备名字(生产环境中一定要用uuid)
- /mnt:挂载点
- xfs:文件系统类型
- defaults:权限(defaults)
- 0:备份
- 0:开机是否检测
3.重新挂载
mount -a
4.排错
分区案例1
1.给sdb硬盘进行分区
2.格式化文件系统
3.挂载
分区案例2
建立逻辑分区,需要先建立扩展分区
1.分区
2.格式化文件类型
3.挂载
4.查看文件系统空间使用情况
分区案例3
添加swap交换分区
1.分区
2.修改id、类型
3.格式化swap分区
4.开启swap分区
5.关闭swap分区
blkid
blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询
总结
- fdisk只能分2T以下的硬盘
- gdisk和fdisk用法一样,这个命令需要自己安装( yum install gdisk.x86_64 -y)
- parted不建议使用,很难用,而且即时生效,生产环境中使用的话没有反悔的余地
- partprobe当用lsblk查看新建的硬盘时,发现没有出现,用这个命令刷新分区
- 建立swap分区之后不用挂载,是开启swap分区
- 永久挂载在生产环境中设备名一定要用uuid -mount -a重新挂载时不能重新启,立即排错