dev文件目录介绍
Linux中的dev文件目录的全称是device设备的英文,这个目录包含了所有linux中使用的外部设备,但是不包含外部设备的驱动信息。我们先来看看这个目录中包含哪些文件吧:
[root@ dev]# ls
agpgart disk kmsg MAKEDEV ram0 ram8 sg1 tty11 tty24 tty37 tty5 tty62 vcs3 zero
autofs dm-0 log mapper ram1 ram9 sg2 tty12 tty25 tty38 tty50 tty63 vcs4
block dri loop0 mcelog ram10 random shm tty13 tty26 tty39 tty51 tty7 vcs5
bsg dvd loop1 mem ram11 raw snapshot tty14 tty27 tty4 tty52 tty8 vcs6
btrfs-control dvdrw loop2 net ram12 root snd tty15 tty28 tty40 tty53 tty9 vcsa
cdrom fb loop3 network_latency ram13 rtc sr0 tty16 tty29 tty41 tty54 ttyS0 vcsa1
cdrw fb0 loop4 network_throughput ram14 rtc0 stderr tty17 tty3 tty42 tty55 ttyS1 vcsa2
char fd loop5 null ram15 scd0 stdin tty18 tty30 tty43 tty56 ttyS2 vcsa3
console full loop6 nvram ram2 sda stdout tty19 tty31 tty44 tty57 ttyS3 vcsa4
core fuse loop7 oldmem ram3 sda1 systty tty2 tty32 tty45 tty58 urandom vcsa5
cpu hpet lp0 port ram4 sda2 tty tty20 tty33 tty46 tty59 usbmon0 vcsa6
cpu_dma_latency hugepages lp1 ppp ram5 sda3 tty0 tty21 tty34 tty47 tty6 vcs vga_arbiter
crash hvc0 lp2 ptmx ram6 sdb tty1 tty22 tty35 tty48 tty60 vcs1 vmci
data input lp3 pts ram7 sg0 tty10 tty23 tty36 tty49 tty61 vcs2 vsock
linux将所有的设备认为是一个文件,这种文件分为两种,分别是块设备文件block和字符设备文件char。上面的结果的一些文件目录解释如下:
/dev/agpgart:agp接口设备
/dev/hd[a-t]:IDE设备 /dev/sd[a-z]:SCSI设备 /dev/fd[0-7]:标准软驱 /dev/md[0-31]:软raid设备 /dev/loop[0-7]:本地回环设备 /dev/ram[0-15]:内存 /dev/null:无限数据接收设备 ,相当于回收站 /dev/zero:无限零资源 /dev/tty[0-63]:虚拟终端 /dev/ttyS[0-3]:串口 /dev/lp[0-3]:并口 /dev/console:控制台
/dev/fb[0-31]:framebuffer
剩余的一些文件目录,暂时不是特别清楚,后面搞清楚了,再写出来,这里给出一个参考链接,感兴趣的朋友可以上去看看:https://blog.csdn.net/sinat_36184075/article/details/71598834
这里我们说下几个有用的文件:
1:/dev/null是一个非常有用的字符设备文件,送入这个设备的所有东西都被忽略,如果将任何程序的输出结果重定向到/dev/null,则看不到任何输出信息,可以将它理解为一个“无底洞”。甚至于,我们可以将某一用户的shell指向/dev/null,从而禁止其登陆;
2:stderr,stdin,stdout是标准错误,标准输入,标准输出,通常和上面的/dev/null搭配起来使用,使用方法如下:
ls -l /bin/usr 2> /dev/null
df -h命令结果解析
02
关于df -h命令,之前10月8日的文章中已经写过一篇,今天我们主要来看看df -h查询出来的这几个目录的介绍,首先看看df -h这个磁盘使用率查看命令的输出结果:
[dba_mysql@dev]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 G 6.3G G % /
tmpfs 7.8G K 7.8G % /dev/shm
/dev/sda1 M M M % /boot
/dev/mapper/data-main
G G G % /data
10.XX.XXX.242:/data/mysql
T T T % /data/backup_hp242/mysql
可以看到,命令中一共列出了5条文件系统记录,我们分别进行说明:
1.第1条和第3条都是/dev/sda开头的文件系统,要搞清楚他们的区别,首先需要了解/dev/sda这个文件目录的含义,/dev/sda是指在SATA、SCSI第一个接口上的硬盘,一般来讲,硬盘会进行分区,也就是/dev/sda1,/dev/sda2等等,上面命令结果中的文件系统就和这个一样。
2.上面结果中的第4行代码,也就是tmpfs文件,对这个文件,查询了网上的相关资料,解释如下:tmpfs是一种虚拟内存文件系统,而不是块设备,它是基于内存的文件系统,创建时不需要使用mkfs等初始化。它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。 Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。
VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。 tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M,一般情况下,是配置的小于物理内存大小的。 tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。 当删除tmpfs中文件,tmpfs文件系统驱动程序会动态地减小文件系统并释放 VM 资源。
它的用途如下:
LINUX中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。
3. /dev/mapper/data-main文件系统,Device mapper是Linux2.6内核中提供的一种从逻辑设备到物理设备的映射机制,在该机制下,用户能够很方便的根据自己的需要实现对存储资源的管理。在具体管理时需要用到Linux下的逻辑卷管理器,当前比较流行的逻辑卷管理器有 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等。
4.10.XX.XXX.242:/data/mysql 这个目录是公司的外部备份机的nfs挂载目录
关于tmpfs和/dev/mapper,还有很多相关的概念需要说明,如果有兴趣,可以在网上查看,后续看时间,有空我会整理出来tmpfs和/dev/mapper相关的文章。