硬件 运算器,控制器,存储器,I/O设备
内核:1、协调硬件工作2、抽象底层硬件功能为系统调用3、让硬件工作(硬件驱动,数字签名防恶意代码)4、cpu和内存资源分配5、网络管理6、安全管理
I/O事件的基础概念:
硬件级别:CPU通过轮循或硬件的通知机制得知事件的发生。CPU通过每个硬件都会在cpu处注册使用不同的端口,或中断控制器的不同的中断信号完成识别硬件
软件级别:系统:数字,人:字母,硬件与主板通过基于工业标准的特殊线缆连接实现交互。
不同接口的速率: IDE 133 ,SCSI: 640 SATA3.0:700 SAS 700 USB3.0 450
实际体验的速率 硬件和接口速率及电器信号的干扰。
track:存储数据的位置
cylinder: 不同盘片不同盘面的相同编号的磁道
扇区:每个磁道划分的小的区域
mbr:512bytes, uefi:4k
分区:把一个空间在逻辑层次划分为多个,当作不同的设备
分区方式:按cylinder,由外向内
设备文件:关联至一个设备驱动程序,进而能跟与之对应的硬件设备进行通信。
文件系统分为 数据区 和元数据区(filename,perm,size,owner,group,timestamps和记录数据块的编号)
内核中实现
索引和索引的编址方式组成 或 存储空间和数据存储形式以及对文件的索引
日志文件系统
存储数据时,先将元数据存在日志区中,然后将数据存储完毕后,将元数据同步至真正的元数据区。断电修复时,只找元数据区,速度快。 每写一个数据都有多余的IO
非日志文件系统
直接存储在元数据区,断电修复时,遍历文件系统,速度慢。第写一个数据时没有多余的IO,性能在早期比日志文件系统好。
虚拟内存:假设每个进程有4G可用
swap:内存消耗快满时,将磁盘中空间格式化为同内存一样的存储格式,而后把物理内存中不太有用的数据放至磁盘之上,如果需要用到此数据时,将数据拿回来即可,这种行为叫做“交换”
文件系统的组成:内核模块:调用模块实现格式化。、用户空间的程序
VFS文件系统:抽象底层各种不同的文件系统接口为一个统一的接口,简化程序员写程序
要想使用一个文件系统:
1、内核中有相应的模块
2、遵循POSIX文件系统规范
3、有对应的用户空间程序
磁盘管理
分区、格式化、修复
1、查看所有磁盘分区
# fdisk -l
2、查看指定磁盘分区
# fdisk -l DEVICE
1
2
3
4
5
6
7
8
9
10
11
12
13
|
++++++++列出的格式详解+++++++++++++++++++++++++++++++++++
磁盘
/dev/vda
大小 42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I
/O
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000efd2
设备 Boot Start End Blocks Id System
设备文件 是否可引导(*:kernel) 起始柱面 结束柱面 磁盘块数 分区标示 用在哪个系统上的分区上
/dev/vda1
* 2048 83886079 41942016 83 Linux
++++++++列出的格式详解+++++++++++++++++++++++++++++++++++
|
3、管理分区
# fdisk DEVICE
管理分区相关的命令:
n 新建一个分区
d 删除一个分区
t 修改id
l 列出id
w 保存退出
4、查看内核识别的分区
# cat /proc/partitions
5、重读分区
修改内核识别的分区,不改变分区
1)partx [-a|-d|-l] [--n M-N] disk
-n M[-N] ##指定分区范围
-l ##显示分区
-a ##添加
-d ##删除内核中识别的分区
##添加分区映射
2)kpartx -a [OPTIONS...] DEVICE
-n M[:N]
-f ##强制添加
-l
##用于centos5,添加分区映射
3)partprobe DEVICE
++++查看内核支持的文件系统
# cat /proc/filesystems
++++查看内核装载的模块
# lsmod
6、创建文件系统
方法一:mkfs.FS_TYPE [-L LABEL] DEVICE
方法二:mkfs -t FS_TYPE [-L LABEL] DEVICE
ext2 ext3 ext4 xfs btrfs vfat
方法三: mke2fs [OPTIONS...] DEVICE
-t {ext2,ext3,ext4}
-b 默认4096,小文件多,值小。大文件多,值大。
-j 直接创建ext3
-m 给管理员预留空间,5%默认
-L LABEL 为磁盘添加卷标
-i # 比率,单个inode占据磁盘块大小
-N # inode数量
-O FEATURE 启用特性
^FEATURE 关闭特性
has_journal
7、查找设备的属性信息(LABEL,UUID,TYPE)
# blkid [OPTIONS....] DEVICE
-L LABEL 通过LABEL查找DEVICE
-U UUID 通过UUID查找DEVICE
UUID 全局UID 无论设备文件名怎么变化,每一个磁盘都唯一不变的标示
TYPE 文件系统类型
8、显示设定label
# e2label DEVICE [LABEL]
显示设备的LABEL # e2label DEVICE
设定设备的LABEL # e2label DEVICE LABEL
9、修改文件设备的属性
# tune2fs [OPTIONS...] DEVICE
-l 显示超级块信息
-L LABEL修改LABEL
-m # 管理员预留空间百分比
-j 启动日志功能
-U UUID ,修改uuid,与uuidgen命令一起使用 -u $(uuidgen) 或 -u `uuidgen`
-O [FEATURE|^FEATURE] 文件系统属性启用或禁用
has_journal 拥有日志功能
-o 调整文件系统的默认挂载选项
acl 启用Posix访问控制列表。
超级块的用途:存储整个分区中的结构
为了避免超级块挂掉不能恢复,在创建文件系统时,自动在每个分区备份了super block
超级块挂掉之后,拆下硬盘,在其他主机之上用硬盘修复工具,把超级块备份复制一份出来覆盖原来的坏的超级块
inode是元数据的条目,每个元数据的条目是一个Inode
tune2fs查看超级块信息的详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@localhost ~]
# tune2fs -l /dev/sda3 显示超级块信息
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: 文件系统卷标
Last mounted on: 最近一次什么时间被挂载
Filesystem UUID: 全局唯一标示符
Filesystem magic number: 魔数
Filesystem revision
#: 1 (dynamic)
Filesystem features: 文件系统的特性:文件系统自己的特性跟是否挂载无关 sparse_super large_file (没有journal,可见为ext2文件系统)
Filesystem flags: signed_directory_hash
Default
mount
options: 默认在挂载时的默认选项
Filesystem state: 文件系统的当前状态 clean:干净状态 ,没有什么损坏
Errors behavior: Continue
Filesystem OS
type
: Linux 标示所在的操作系统
Inode count: 有多少个inode?inode是元数据的条目
Block count: 2622452 一共有多少个磁盘块
Reserved block count: 131122
Free blocks: 2575520 一共有多少个空闲磁盘块
Free inodes: 655765 一共有多少个空闲inode
|
+++++查看超块组信息及文件系统结构
dumpe2fs DEVICE
+++++查看超级块信息
dumpe2fs -h DEVICE
1
2
3
4
5
6
7
8
9
10
11
|
Group 320: (Blocks 5242880-5245189) [INODE_UNINIT, ITABLE_ZEROED]
块组编号,磁盘块起始-结束
Block bitmap at 5242880 (+0)
## Block 位图的位置
Inode bitmap at 5242896 (+16)
## Inode 位图的位置
Inode表位于 5242912-5243167 (+32)
2052
free
blocks
2048
free
inodes, 2048个未使用的inodes
0 directories,
可用块数: 5242881-5242895, 5242897-5242911, 5243168-5245189
##多少块可用
可用inode数: 655361-657408
##可用Ino
|
10、查看默认挂载选项
# tune2fs -l DEVICE
# dumpe2fs -h DEVICE
default mount optons: 调整此处挂载选项
11、mkswap [OPTIONS...] DEVICE 创建交换分区(调整分区ID为82,system)
-L LABEL 设定卷标
-U UUID 设定UUID
调整id为82
重读分区表
Partx -a /dev/sda
partx -a -n 6 /dev/sda
内核是否识别分区
/proc/partitions
创建交换分区
mkswap partitions
查看文件系统属性
blkid /dev/sda6
启动swap
swapon partitions
禁用swap
swapoff partitions
12、fsck类似mkfs
检测命令:
1)fsck.FS_TYPE
2)fsck -t FS_TYPE
查看支持的命令: fsck + 2次TAB
查看支持的文件系统: cat /proc/filesystems
修复选项:
-a auto自动修复错误
-r 交互式修复错误
3)e2fsck ext系列文件系统检测修复工具
-y 自动回答为yes
-f force 强制修复
13、linux和windows通用的文件系统: windows识别: fat32, linux识别为: vfat
windows的文件系统
fat32 ntfs cifs
linux的文件系统
vfat ext系列 xfs btrfs
U盘既能在linux
mkfs.vfat