磁盘的空间管理,使用磁盘三步:分区 安装文件系统=格式化 挂载
磁盘结构
磁盘的物理结构
盘片: 硬盘有多个盘片,每盘片2面。
磁头:每面一个磁头
磁盘的数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大) 存放数据的最小单位 512字节
- 磁道:同一盘片不同半径的同心圆
- 柱面:不同盘片相同半径构成的圆
硬盘存储容量
-
硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数 1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
-
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
MBR与磁盘分区
为什么分区
- 优化I/O性能 读写
- 实现磁盘空间配额限制
- 隔离系统和程序
- 安装多个OS系统
- 可以采用不同文件系统
现在的分区分为两种:
mbr(fdisk) 分区 (老的技术) gpt(gdisk)分区(新技术)
MBR和GPT的区别:
MBR:
支持2T 以下 的硬盘
只能分4个主区,需求更多要建立扩容,逻辑区
分区后大小固定
GPT:
支持2T以上的硬盘
可以支持128个主分区
分区后可以不固定大小
MBR
MBR: 主引导记录, 是硬盘上的第一个扇区, 想要读数据得从这个扇区开始
MBR 一共 512 字节
前 446 字节 开机引导程序, 引导硬件 找到我们的操作系统
66 /16 =4 .余2字节
后 64 字节 分区表 表明了 分区的范围, 分区从哪里到那里结束
最后 两字节 代表MBR 结束位
MBR 分区只可以分4个分区, 一个分区表要占 16字节
分区分类
主分区: 可以直接使用 , 安装操作系统 存储文件 等
扩展分区:不可以直接使用, 需要再 划分逻辑分区, 让分区超过4个
逻辑分区:可以直接使用, 存储文件
扩展分区是特殊的主分区
主分区的序号为 1-4
逻辑分区的序号 从5 开始
MBR分区
MBR磁盘采用MBR分区表,由于MBR用4个字节存储分区总扇区数,最大可以表示2的32次方,一个扇区512字节,分区的容量或者磁盘容量都不能超过2TB。常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而 扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。主分区一般 用来安装操作系统,扩展分区则多用来存储文件数据,逻辑分区依赖于扩展分区,扩展分区也不可单独使用。
MBR(主引导记录):Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
- 446bytes: boot loader 启动相关
- 64bytes:分区表,其中每16bytes标识一个分区 4 主分区 *16=64
- 2bytes: 55AA (结束位)
因此总的来说,硬盘分区有 3 种,分别是主分区、扩展分区和逻辑分区。对于一个硬盘来说,主分区至少有 1 个,最多有 4 个;扩展分区可以没有,最多只能有 1 个,且主分区+扩展分区总共不能超过 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,使得操作系统可以启动
文件系统
文件系统的组成
- 内核中的模块:ext4, xfs, vfat
- Linux的虚拟文件系统:VFS
- 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
文件系统介绍:
是操作系统用于明确存储设备或分区上的文件的使用方法和数据结构;即在存储设备上组织使用文件的 方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进 行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的 存取,安全控制,日志,压缩,加密等。
ext4 linux 常见的 -------- ntfs windows
用来管理(增删改查恢复)文件的程序
swap
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足。
FAT16、FAT32
最大只能支持32GB分区,单个文件只能支持最大4GB
NTFS(xfs)
NTFS文件系统所具备3个功能:错误预警功能、自我修复功能和日志功能,单个文件64GB
EXT4
Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024*1024TB
分区工具
fdisk
查看当前硬盘是什么模式 , 1 机械, 0 固态
格式:fdisk -l [磁盘设备]
fdisk [磁盘设备]
- m 打印出菜单
- p 打印出当前分区表
- n 新建一个分区
- d 删除一个分区
- t 改变分区的属性,系统ID
- w 保存
- q 不保存退出
blkid
可以查看块设备属性信息,最重要的是如果需要永久挂载,uuid号十分重要
mkfs
创建文件系统后做格式化常用选项 ,不格式化磁盘无法使用
mkfs.xfs /dev/sdb1
mkswap
swap
特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费
添加交换分区的空间
mkswap + 分区
swapon +分区 开启 -a 全部
swapoff +分区 关闭 -a 全部
fdisk /dev/sdb
n
m(帮助)
L
82
cat /proc/meminfo |grep "SwapTo" 查看现有空间
mkswap /dev/sdb1 ,swapon /dev/sdb1 打开分区
可以看出内存空间临时增加了
mount
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
umount 挂载点目录 (解挂载)
device:指明要挂载的设备
-
设备文件:例如:/dev/sda5
-
卷标:-L 'LABEL', 例如 -L 'MYDATA'
-
UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
-
伪文件系统名称:proc, sysfs, devtmpfs, configfs
mountpoint:挂载点目录必须事先存在,建议使用空目录
挂载规则 :
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
选项
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
挂载光驱到/data文件
mount /dev/sr0 /data
挂载sdc磁盘到/opt文件
| 选项 | 功能 |
|---|---|
| rw/ro | 是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。 |
| async/sync | 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。 |
| dev/nodev | 是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。 |
| auto/noauto | 是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。 |
| suid/nosuid | 设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。 |
| exec/noexec | 设定在文件系统中是否允许执行可执行文件,默认是允许。 |
| user/nouser | 设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。 |
| defaults | 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。 |
| remount | 重新挂载已挂载的文件系统,一般用于指定修改特殊权限。 |
永久挂载
需要 将文件写入 /etc/fstab
UUID 可以确保唯一
vim /etc/fstab
在系统挂载下空行写入永久挂载
reboot 重启查看 lsblk ,已经永久挂载
df -Th可以查看挂载情况
umount 解挂载