您的位置:首页 > 运维架构 > Linux

Linux磁盘管理之设备文件详解04

2015-12-02 00:00 381 查看
Linux一切接文件,除了普通文件和目录文件,还包括一些其它的特殊文件:块设备文件、字符设备文件、套接字文件、链接文件等。今天这里主要说一下常见的块设备文件和字符设备文件,这2类是最常见的设备文件类。

设备常见有鼠标、键盘、显示器、硬盘等等。其中硬盘是块设备,鼠标、键盘、终端等是属于字符设备。这些设备在linux中也是以文件形式存在,存在于目录/dev/中,这些设备文件不占磁盘块空间,只用一个inode来表示即可,主要记录设备文件的一些信息,包括主设备号和次设备号等信息。主设备号指的是设备主类型,比如是硬盘还是串口,标示一类设备,这些设备用一个驱动程序就行;次设备号标示同类设备中的不同设备个体,比如有3个串口,每个串口的主设备号一样,此设备号分别不同用于区分不同的串口。

一、字符设备文件

举例说明,例如终端。
linux有终端的概念,其实就可以简单理解为显示器,当然这样理解有些不准确。如果连接的是真实的显示器,就是物理终端,设备文件名称就为tty*;如果用远程ssh工具连接过来的终端被称为虚拟终端,设备文件名为pts*。
物理终端设备文件名称:

[root@iNeedle ~]# ls /dev/tty*


/dev/tty    /dev/tty12  /dev/tty17  /dev/tty21  /dev/tty26  /dev/tty30  /dev/tty35  /dev/tty4   /dev/tty44  /dev/tty49  /dev/tty53  /dev/tty58  /dev/tty62  /dev/ttyS0


/dev/tty0   /dev/tty13  /dev/tty18  /dev/tty22  /dev/tty27  /dev/tty31  /dev/tty36  /dev/tty40  /dev/tty45  /dev/tty5   /dev/tty54  /dev/tty59  /dev/tty63  /dev/ttyS1


/dev/tty1   /dev/tty14  /dev/tty19  /dev/tty23  /dev/tty28  /dev/tty32  /dev/tty37  /dev/tty41  /dev/tty46  /dev/tty50  /dev/tty55  /dev/tty6   /dev/tty7   /dev/ttyS2


/dev/tty10  /dev/tty15  /dev/tty2   /dev/tty24  /dev/tty29  /dev/tty33  /dev/tty38  /dev/tty42  /dev/tty47  /dev/tty51  /dev/tty56  /dev/tty60  /dev/tty8   /dev/ttyS3


/dev/tty11  /dev/tty16  /dev/tty20  /dev/tty25  /dev/tty3   /dev/tty34  /dev/tty39  /dev/tty43  /dev/tty48  /dev/tty52  /dev/tty57  /dev/tty61  /dev/tty9




.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}

虚拟终端设备文件名称:

[root@iNeedle ~]# ls /dev/pts*


0  1  ptmx


查看当前有哪些终端在登陆可以使用以下命令:

[root@iNeedle ~]# who


root     tty1         2015-12-01 06:48


root     pts/0        2015-12-02 17:49 (172.16.1.20)


root     pts/1        2015-12-03 06:20 (222.128.159.250)


查看当前我正在使用的终端:

[root@iNeedle ~]# who am i


root     pts/1        2015-12-03 06:20 (222.128.159.250)


简单测试举例,向终端发消息:

[root@iNeedle ~]# echo "Hello World" > /dev/pts/1


Hello World



这一块的知识点感觉比较少,只需要简单了解即可。如果后续有内容再补充吧。



二、块设备文件


举例说明,典型的是硬盘。硬盘是我们最常用的设备之一,也是计算机必备的物理设备,主要作用是存储数据。在linux系统看来硬盘也是个设备,块设备,块设备读取不同于字符设备,它可以随机访问非连续的数据块,不像字符设备是字符流的形式,只能连续读取和写入。



硬盘在linux中的存储设备文件查看:

[root@iNeedle ~]# ls /dev/sd*


/dev/sda  /dev/sda1  /dev/sda2



sda表示第一块硬盘,sda1表示第一块硬盘的第一个分区,sda2表示第一块硬盘的第二个分区。如果有第二个硬盘的话,名称为sdb,第二块硬盘的第一个分区为sdb1,依次类推。




其实也可以像刚才那样向硬盘中写入数据,但是这种方式非常规写法,对硬盘数据造成不可预料的破坏,这类操作只可在虚拟机上做实验,切不可在物理机上,否则系统在下次重启的时候就启动不了了。



[root@iNeedle ~]# ls /dev/sd*


/dev/sda  /dev/sda1  /dev/sda2



这样做相当于把把这些信息填充到了sda硬盘的MBR中,如果下次启动系统就会找不到MBR信息,导致系统启动不了,所以说最好在虚拟机上做,然后恢复快照就行了。可以看出如果想毁掉一个系统是多么的简单,只需要执行这个命令,系统就再也起不了了,除非你有MBR数据的备份,这也在提示我们在真实的物理服务器上要最好MBR的备份,防止被破坏。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: