目录
一.磁盘
磁盘空间的管理,使用硬盘三步
-
分区:
-
文件系统:
-
格式化:
-
挂载:
磁盘损坏数据没了,容错,提高性能raid
逻辑卷空间动态化扩容,空间变大变小
1磁盘结构
物理结构
盘片:硬盘有多个盘片,每盘片2面
磁头:每面一个磁头
数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘是最小存储单位。
磁道:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹。
柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
2硬盘存储容量
硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数
1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
3接口类型
IDE、SATA、SCSI、SAS、光纤通
二.磁盘分区表示
1为什么分区
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
2MBR分区
MBR位于硬盘第一个物理扇区处 , MBR中包含硬盘的主引导程序和硬盘分区表
MBR总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-512字节中
分区表有4个分区记录区,每个分区记录区占16字节
Linux中将硬盘、分区等设备均表示为文件
3GPT分区
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
1XFS
存放文件和目录数据的分区
高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间。
CentOS 7系统中默认使用的文件系统
2swap
swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存不足。
3FAT16、FAT32
最大只能支持32GB分区,单个文件也只能支持最大4GB。
4NTFS(xfs)
NTFS文件系统所具备3个功能:错误预警功能、磁盘自我修复功能和日志功能,单个文件64GB
5EXT4
Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升1EB=1024PB=1024TB
四.管理磁盘及分区
1. fdisk命令-查看或管理磁盘分区
格式:
fdisk -l [磁盘设备]
fdisk [磁盘设备]
- m 打印出菜单
- p 打印出当前分区表
- n 新建一个分区
- d 删除一个分区
- t 改变分区的属性,系统ID
- w 保存
- q 不保存退出
Device:分区的设备文件名称。
Boot:是否是引导分区。若是,则有“*”标识。主系统
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,与之相关的知识将在后面的章节介绍。
System:分区类型。识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。在 Linux 操作系统中,分区和格式化的过程是相对独立的
分区id
83 普通的分区id
82 swap交换分区的id
8e LVM分区的id
fd raid磁盘整列的id
2.blkid
3.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 关闭指定
[root@localhost ~]# mkfs mkfs -t ext4=mkfs.ext4
mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
#文件系统检测和修复
-a 自动修复
-r 交互式修复错误
4.mkswap
swap
特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费
添加交换分区的空间
mkswap + 分区
swapon +分区 开启 -a 全部
swapoff +分区 关闭 -a 全部
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# cat /proc/meminfo |grep "SwapTo" //先查看现有交换分区容量
SwapTotal: 2097148 kB
[root@localhost ~]# mkswap /dev/sdb3
mkswap: /dev/sdb3: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 20971516 KiB
无标签,UUID=2b417485-49bd-4b72-9fce-89594647fcd1
[root@localhost ~]# swapon /dev/sdb3
[root@localhost ~]# cat /proc/meminfo |grep "SwapT"
SwapTotal: 23068664 kB
[root@localhost ~]# swapoff /dev/sdb3
[root@localhost ~]# cat /proc/meminfo |grep "SwapT"
SwapTotal: 2097148 kB
5.lsblk
[root@localhost ~]#lsblk -d -o name,rota
#查看当前硬盘是什么模式 固态 机械 1 机械 0 固态
NAME ROTA
sda 1
sr0 1
五.挂载与解挂载
1.挂载
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:挂载点目录必须事先存在,建议使用空目录
挂载规则
一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂载点一般是已存在空的目录
[root@localhost ~]# mount /dev/sr0 /opt
mount: /dev/sr0 #写保护,将以只读方式挂载
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 37G 5.7G 32G 16% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 1014M 161M 854M 16% /boot
tmpfs 199M 12K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /opt
2.永久挂载
需要 将文件写入 /etc/fstab
UUID 可以确保唯一
第 1 字段:设备名或设备卷标名。
第 2 字段:文件系统的挂载点目录的位置。
第 3 字段:文件系统类型,如 XFS、Swap 等。
第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。
第 5 字段:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1时表示需要,设为 0 时将被 dump 忽略
第 6 字段:该数字决定在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。
通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。例如,执行以下操作将添加自动挂载分区/dev/sdb1 的配置记录
3.解挂载
umount 设备名|挂载点
卸载时:可使用设备,也可以使用挂载点
fuser -v MOUNT_POINT
查看正在访问指定文件系统的进程
fuser -km MOUNT_POINT
终止所有在正访问指定的文件系统的进程
4.df
用来检查文件系统的磁盘空间占用情况,使用权限是所有用户
-T :显示文件系统类型
-h :以容易理解的格式印出文件系统大小,例如133kb 2mb 21G
df [OPTION]... [FILE]
六.总结
本次主要学习了磁盘的基本结构,以及如何在Linux中给磁盘分区以及如何永久挂载和解挂载