磁盘结构
硬盘的物理结构
盘片:硬盘有多个盘片,每盘片有2面(正反两面)
磁头:每面一个磁头,并不是只有一个磁头,磁头等于盘片数量
硬盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大)
- 磁道:同一盘片不同半径的同心圆
- 柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)
- 一个扇区 512 字节
硬盘存储容量
-
硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数
1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
-
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
硬盘接口类型
IDE/SCSI/SATA/SAS/M.2/光纤接口
服务器硬盘大小
lff:3.5寸
sff:2.5寸
机械与固态
机械硬盘(hdd)
固态硬盘(ssd)
MBR与磁盘分区
分区的优点:
- 优化I/O性能 实现磁盘空间配额限制
- 提高修复速度
- 隔离系统和程序
- 安装多个OS
- 采用不同文件系统
MBR分区
MBR(主引导记录):Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
- MBR位于硬盘第一个物理扇区处
- MBR中包含硬盘的主引导程序和硬盘分区表
- 分区表有4个分区记录区,每个分区记录区占16个字节
- 主和扩展分区对应的1–4,/dev/sda3,逻辑分区从5开始,/dev/sda5
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,使得操作系统可以启动
文件系统
作用:用来管理(增删改查恢复)文件的程序
文件系统的组成
- 内核中的模块:ext4, xfs, vfat
- Linux的虚拟文件系统:VFS
- 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
XFS - 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
- 用优化算法,日志记录对整体文件操作影响非常小
- 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,1EB=1024PB1PB=1024TB(这里才到TB1TB=1024GB
- 而支持单个文件则达到8EB能以接近裸设备I/O的性能存储
SWAP
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据
时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过
多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足。
FAT16、FAT32
且最大只能支持32GB分区,单个文件也只能支持最大4GB。
NTFS
NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能,单个文件64GB
EXT4
Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分
区是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件
(16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024TB
JFS
主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。1PB=1024TB
分区工具
lsblk 列出块设备
fdisk 管理MBR分区
gdisk 管理GPT分区
parted 高级分区操作,可以是交互或非交互方式
格式:parted [选项]… [设备 [命令 [参数]…]…]
注意:parted的操作都是实时生效的,小心使用
- -l 列出所有硬盘分区信息
partprobe 重新设置内存中的内核分区表版本,
fdisk
格式:fdisk -l [磁盘设备]
fdisk [磁盘设备]
-
m 打印出菜单
-
p 打印出当前分区表
-
n 新建一个分区
-
d 删除一个分区
-
t 改变分区的属性,系统ID
-
w 保存
-
q 不保存退出
blkid
作用:可以查看块设备属性信息
mkfs
作用:创建文件系统(格式化)常用选项
-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块 block 大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i
-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128—4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,…] 启用指定特性-O ^FEATURE 关闭指定
注:#文件系统检测和修复
fsck.FS_TYPE
fsck -t FS_TYPE
-a 自动修复
-r 交互式修复错误
e2fsck:ext系列文件专用的检测修复工具
xfs_repair:xfs文件系统专用检测修复工具
mkswap
作用:特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费
添加交换分区的空间
mkswap + 分区
swapon +分区 开启 -a 全部
swapoff +分区 关闭 -a 全部
挂载与解挂载
mount
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
device:指明要挂载的设备
-
设备文件:例如:/dev/sda5
-
卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
-
UUID: -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
-
伪文件系统名称:proc, sysfs, devtmpfs, configfs
mountpoint:挂载点目录必须事先存在,建议使用空目录
umount
umount 设备名|挂载点
卸载时:可使用设备,也可以使用挂载点
挂载规则:
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
永久挂载
需要 将文件写入 /etc/fstab
UUID 可以确保唯一
umount
umount 设备名|挂载点
卸载时:可使用设备,也可以使用挂载点
fuser -v MOUNT_POINT
查看正在访问指定文件系统的进程
fuser -km MOUNT_POINT
终止所有在正访问指定的文件系统的进程
df
格式df [OPTION]… [FILE]
在这里面配置
vim /etc/fstab
软raid
mdadm
-C 创建
-v 显示过程
-f 卸载
实验
创建主分区
创建扩展分区
创建逻辑分区