[Linux]字符设备块设备网络设备虚拟设备

Posted SkyBiuBiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Linux]字符设备块设备网络设备虚拟设备相关的知识,希望对你有一定的参考价值。

在 Linux 系统中,设备可以分为以下几种类型:

1. 字符设备

字符设备是一种流设备,它以字符为单位进行传输和处理,例如串口、终端和声卡等。它的主要特点是按照顺序访问数据,不支持随机访问和任意长度的读写操作。

2. 块设备

块设备是以块为单位进行读写的设备,例如硬盘、闪存器和 CD-ROM 等。与字符设备不同,块设备相对更稳定、安全,支持随机访问和任意长度的读写操作,适用于需要高速、大容量操作的场景。

3. 网络设备

网络设备通常指物理网络设备,比如网卡、路由器等。在Linux系统中,每个网卡对应一个网络接口,实现网络通讯的基本单元。Linux 通过驱动程序控制网络设备,实现数据的发送和接收,从而通过物理网络传输数据。

4. 虚拟设备

虚拟设备是一种特殊的设备,它是在操作系统和其他软件之间提供接口的模拟设备。在 Linux 系统中,常见的虚拟设备包括 Loopback 设备、RAM 设备和 TUN/TAP 设备等。

5. 其他设备

此外,还有一些特殊的设备类型,例如计时器、原始设备和 ACPI 设备等,它们在Linux系统中也有特殊的处理方式。

总的来说,在 Linux 系统中,设备分为字符设备、块设备、网络设备、虚拟设备和其他设备等几种类型,每种类型的设备都有其独特的特点和用途,它们协同工作,实现了 Linux 系统的强大功能和广泛应用。

Linux-磁盘管理1

本章内容

磁盘结构

分区类型

管理分区

管理文件系统

挂载设备

管理虚拟内存

RAID管理

LVM管理

LVM快照

 

设备文件

I/O Ports: I/O设备地址

一切皆文件:open(), read(), write(), close()

设备类型:

块设备:block,存取单位“块”,磁盘

字符设备:char,存取单位“字符”,键盘

设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:

主设备号:major number, 标识设备类型

次设备号:minor number, 标识同一类型下的不同设备

 

硬盘接口类型

并行:

IDE133MB/s

SCSI640MB/s

串口:

SATA6Gbps

SAS6Gbps

USB480MB/s

rpm: rotations

per minute

 

机械硬盘和固态硬盘

?机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤

?固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

?相较于HDDSSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD2

?相较于SSDHDD在价格、容量、使用寿命上占有绝对优势

?硬盘有价,数据无价,目前SSD不能完全取代HHD

 

设备文件

磁盘设备的设备文件命名:/dev/DEV_FILE

SCSI, SATA, SAS,IDE,USB: /dev/sd

虚拟磁盘:/dev/vd

不同磁盘标识:a-z,aa,ab

/dev/sda, /dev/sdb, ...

同一设备上的不同分区:1,2, ...

/dev/sda1, /dev/sda5

硬盘存储术语

head:磁头

track:磁道

cylinder: 柱面

sector: 扇区,512bytes

 

mknod /data/sdA b 8 1,主次设备号与/dev/sda一致的话,就是同一个设备

mknod /data/zerofile c 1 5,主次设备号与/dev/zero一致的话,就是同一个设备

 

CHSLBA

CHS

采用24bit位寻址

其中前10位表示cylinder,中间8位表示head,后面6位表示sector

最大寻址空间8GB

LBAlogical block addressing

LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址

LBA采用48bit位寻址

最大寻址空间128PB

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

 

6bit sector/track  8bit head  10bit track

echo 512*63*1024*255/1024/1024 | bc = 8032 MB = 8GB

 

使用分区空间

设备识别

设备分区

创建文件系统

标记文件系统

/etc/fstab文件中创建条目

挂载新的文件系统

 

磁盘分区

为什么分区

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

采用不同文件系统

 

分区

两种分区方式:MBRGPT

MBR: Master Boot Record1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes: boot loader

64bytes:分区表

16bytes: 标识一个分区

2bytes: 55AA

4个主分区;3主分区+1扩展(N个逻辑分区)

 

MBR分区结构

?硬盘主引导记录MBR4个部分组成

?主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序

?出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节

?分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4

?结束标志字,偏移地址01FE--01FF2个字节值为结束标志55AA

 

练习

1、破坏mbr,并恢复:

ifconfig ens33 192.168.30.129/24

dd if=/dev/sda of=/data/sda_mbr bs=1 count=512

dd if=/dev/zero of=/dev/sda bs=1 count=512

dd of=/data/sda_mbr if=/dev/sda

2、破坏55AA

dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510

55AA标识位,没数据的话就认为没有分区,是裸硬盘

 

 

GPT分区

?GPT:GUIDGlobals Unique Identifierspartition table 支持128个分区,使用64位,支持8Z512Byte/block 64Z 4096Byte/block

?使用128UUID(Universally Unique Identifier) 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位

?UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

 

列出可用的磁盘设备

图形化磁盘管理功能工具:点击“应用程序”->“系统工具”->“磁盘”或执行命令gnome-disks

 

管理分区

列出块设备

?lsblk

创建分区使用:

?fdisk创建MBR分区

?gdisk创建GPT分区

?parted高级分区操作

partprobe-重新设置内存中的内核分区表版本

 

parted命令

parted的操作都是实时生效的,小心使用

用法:parted [选项]... [设备[命令[参数]...]...]

parted /dev/sdbmklabelgpt|msdos

parted /dev/sdbprint

parted /dev/sdbmkpartprimary 1 200 (默认M

parted /dev/sdbrm1

parted l 列出分区信息

 

分区工具fdiskgdisk

gdisk /dev/sdb fdisk GPT分区工具

fdisk -l [-u] [device...] 查看分区

fdisk /dev/sdb 管理分区

子命令:

p 分区列表

t 更改分区类型

n 创建新分区

d 删除分区

v 校验分区

u 转换单位

w 保存并退出

q 不保存并退出

 

同步分区表

查看内核是否已经识别新的分区:

cat /proc/partations

centos6通知内核重新读取硬盘分区表

新增分区用

partx-a /dev/DEVICE

kpartx-a /dev/DEVICE -f: force

删除分区用

partx-d --nrM-N /dev/DEVICE

CentOS 57: 使用partprobe

partprobe[/dev/DEVICE]

 

buffer:缓冲,主要针对写操作

cache:缓存,主要针对读操作

 

文件系统

?文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

?从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等

?支持的文件系统:/lib/modules/`uname r`/kernel/fs

 

文件系统类型

Linux文件系统:ext2(Extended file system), ext3, ext4, xfsSGI, btrfsOracle, reiserfs, jfsAIX, swap

光盘:iso9660

WindowsFAT32, exFAT,NTFS

Unix: FFSfast, UFSunix, JFS2

网络文件系统:NFS, CIFS

集群文件系统:GFS2, OCFS2oracle

分布式文件系统:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre

RAW:未经处理或者未经格式化产生的文件系统

 

文件系统分类

根据其是否支持"journal"功能:

日志型文件系统: ext3, ext4, xfs, ...

非日志型文件系统: ext2, vfat

文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS

查前支持的文件系统:cat /proc/filesystems

 

创建文件系统

mkfs命令:

(1) mkfs.FS_TYPE/dev/DEVICE

ext4

xfs

btrfs

vfat

(2) mkfs-t FS_TYPE /dev/DEVICE

-L 'LABEL': 设定卷标

 

创建ext文件系统

mke2fsext系列文件系统专用管理工具

-t {ext2|ext3|ext4}

-b {1024|2048|4096}

-L 'LABEL'

-j: 相当于-t ext3

mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3

-i#: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

-N #:指定分区中创建多少个inode

-I 一个inode记录占用的磁盘空间大小,128---4096

-m #: 默认5%,为管理人员预留空间占总空间的百分比

-O FEATURE[,...]:启用指定特性

-O ^FEATURE:关闭指定特性

 

文件系统标签

指向设备的另一种方法

与设备无关

blkid:块设备属性信息查看

blkid[OPTION]... [DEVICE]

-U UUID: 根据指定的UUID来查找对应的设备

-L LABEL:根据指定的LABEL来查找对应的设备

e2label:管理ext系列文件系统的LABEL

e2label DEVICE [LABEL]

findfs:查找分区

findfs[options] LABEL=<label>

findfs[options] UUID=<uuid>

 

tune2fs

tune2fs:重新设定ext系列文件系统可调整参数的值

-l:查看指定文件系统超级块信息;super block

-L 'LABEL':修改卷标

-m #:修预留给管理员的空间百分比

-j: ext2升级为ext3

-O: 文件系统属性启用或禁用,O ^has_journal

-o: 调整文件系统的默认挂载选项,–o ^acl

-U UUID: 修改UUID

dumpe2fs

块分组管理,32768

-h:查看超级块信息,不显示分组信息

 

tune2fs -l /dev/sdb1

CentOS 6上手动创建的文件系统是默认没有acl的,需输以下命令:

tune2fs -o acl /dev/sdb1

CentOS 7上手动创建的文件系统是有acl

 

 

文件系统检测和修复

常发生于死机或者非正常关机之后

挂载为文件系统标记为“no clean

注意:一定不要在挂载状态下修复

fsck: File System Check

fsck.FS_TYPE

fsck-t FS_TYPE

-p: 自动修复错误

-r: 交互式修复错误

FS_TYPE一定要与分区上已经文件类型相同

e2fsckext系列文件专用的检测修复工具

-y:自动回答为yes

-f:强制修复

 


以上是关于[Linux]字符设备块设备网络设备虚拟设备的主要内容,如果未能解决你的问题,请参考以下文章

Linux--磁盘管理

linux设备

linux中啥是块设备和字符设备?

Linux-磁盘管理1

2017-2018-1 20179202《Linux内核原理与分析》第十周作业

Linux磁盘管理