块设备

性能排查 -- vmstat 使用

吃可爱长大的小学妹 提交于 2020-03-02 15:24:08
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如: root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2表示每个两秒采集一次服务器状态,1表示只采集一次。 实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如: root@ubuntu:~# vmstat 2 procs -----------memory---------- --

块设备/字符设备/裸设备

浪尽此生 提交于 2020-03-01 14:01:51
  弄清硬盘的低格和高格的概念   系统中可以 随机访问 (不需要按顺序)访问固定大小数据片(chunks)的设备称为块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器(floppy),CD-ROM驱动器和闪存等等许多其他块设备。注意,他们都是以安装 文件系统 的方式使用的-----这也是块设备的一般访问方式。   另一种基本的设备类型是字符设备。字符设备 按照字节流的方式 被有序访问,像串口和键盘就属于字符设备(网卡??)。如果一个硬件设备以字符流的方式被访问的话,那就应该归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么就属于块设备。   这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“fox” 这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容

Linux中的块设备和字符设备

别等时光非礼了梦想. 提交于 2020-03-01 14:01:39
系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还 有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。   另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。   这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘 这种设备提供的就是一个数据流,当你敲入“fox” 这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没 有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后 是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容, 然后又转去读取别的块的内容

linux中的块设备和字符设备

北城余情 提交于 2020-03-01 14:01:14
系统中能够随机(不需要按顺序)访问固定大小数据片( chunks )的设备被称作块设备,这些数据片就称作块。最常见的 块设备 是硬盘,除此以外,还有软盘驱动器、 CD-ROM 驱动器和闪存等等许多 其他 块设备。注意,它们都是以安装文件系统的方式使用的—— 这也是块设备一般的访问方式 。 另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。 这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“ fox ”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“ f ”,然后是“ o ”,最后是“ x ”, 最终是文件的结束 (EOF) 。 当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容

Linux字符设备和块设备的区别

故事扮演 提交于 2020-03-01 14:00:55
系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。   另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。 这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“fox” 这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续

22.Linux-块设备驱动之框架详细分析(详解)

独自空忆成欢 提交于 2020-03-01 13:57:29
1.之前我们学的都是字符设备驱动, 先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等 2.接下来本节开始学习块设备驱动 块设备: 块设备是i/o设备中的一类, 当我们的应用层对该设备读写时,是按扇区大小来读写数据的,若读写的数据小于扇区的大小,就会需要缓存区, 可以随机读写设备的任意位置处的数据,例如 普通文件(*.txt,*.c等),硬盘,U盘,SD卡, 3.块设备结构: 段(Segments): 由若干个块组成。是Linux内存管理机制中一个内存页或者内存页的一部分。 块 (Blocks): 由Linux制定对内核或文件系统等数据处理的基本单位。通常由1个或多个扇区组成。(对Linux操作系统而言) 扇区(Sectors): 块设备的基本单位。通常在512字节到32768字节之间,默认512字节 4.我们以txt 文件为例, 来简要分析下块设备流程: 比如:当我们要写一个很小的数据到txt文件某个位置时, 由于块设备写的数据是按扇区为单位,但又不能破坏txt文件里其它位置,那么就引入了一个“缓存区”,将所有数据读到缓存区里,然后修改缓存数据,再将整个数据放入txt文件对应的某个扇区中

zz`linux块设备IO栈浅析

丶灬走出姿态 提交于 2020-03-01 13:56:43
http://www.sysnote.org/2015/08/06/linux-io-stack/ 块存储,简单来说就是使用块设备为系统提供存储服务。块存储分多种类型,有单机块存储,网络存储(如NAS,SAN等),分布式块存储(目前主流的如AWS的EBS,青云的云硬盘,阿里云的云磁盘,网易云硬盘等)。通常块存储的表现形式就是一块设备,用户看到的就是类似于sda,sdb这样的逻辑设备。本文主要介绍Linux块设备,对Linux的块设备I/O栈进行分析。 1.块设备基本概念 块设备将信息存储在固定大小的块中,每个块都有自己的地址。对操作系统而言,块设备是以字符设备的外观展现的,例如/dev/sda,虽然对这种字符设备可以按照字节为单位访问,但是实际上到块设备上却是以块为单位(最小512byte,即一个扇区),这之间的转换是由操作系统来实现的。 下面介绍几个块设备的基本概念: 1)扇区:磁盘盘片上的扇形区域,逻辑化数据,方便管理磁盘空间,是硬件设备数据传送的基本单位,一般512Byte; 2)块:块是VFS和文件系统数据传送的基本单位,必须是扇区的整数倍,格式化文件系统时,可以指定块大小(一般512,1024,2048,4096字节); 3)段:一个内存页或者内存页中的一部分,包含一些相邻磁盘扇区中的数据;磁盘的每个I/O操作就是在磁盘与一些RAM单元之间相互传一些相邻扇区的内容

Linux 命令 - mknod

↘锁芯ラ 提交于 2020-02-28 14:40:07
mknod 创建块设备或者字符设备文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 mknod [选项] 设备名 设备类型 主设备号 次设备号 2、选项参数列表 选项 说明 --version 显示命令版本信息 --help 显示帮助信息 -m 或 --mode=MODE 设置权限 -Z 或 --context=CTX 设置SELinux的安全上下文 设备类型 b,块设备;c,字符设备;u,没有缓冲的字符设备;p,fifo设备 设备号 只能是十进制和八进制,如果是0x开头,那么还是十进制。对于b、c、u设备,必须给出设备号,对于p设备,必须忽略设备号 当类型为b、c或u时,必须同时指定主设备号和次设备号;当类型为p时,必须省略它们。如果主设备号或次设备号以0x或0x开头,则解释为十六进制;否则,如果以0开头为八进制,其他为十进制。 3、实例 1)创建块设备文件 [root@localhost ~]# mknod /dev/sdb4 b 1 1 //创建一个设备 [root@localhost weijie]# ls -l /dev/sdb4 brw-r--r-- 1 root root 1, 1 9月 7 08:21 /dev/sdb4 2)创建字符设备文件 [root@localhost ~]#

LiveCD及Casper调研

限于喜欢 提交于 2020-02-19 08:22:14
1.LiveCD 原理 LiveCD 本质上是 ISO 9660/El Torito 格式的 CD-ROM 。 下面对 LiveCD 涉及的各种技术做了简单的调研。 1.1. CD-ROM CD-ROM 是一种光盘存储介质。 与磁盘类似, CD-ROM 被划分为多个 track , track 又被划分为多个 sector 。 sector 大小为 2352 字节,随着 sector 所采用的编码方式的不同,其内部结构也不同,见下图。 CD digital audio 格式是 CD 唱片采用的方式, CD-ROM Mode1/2 是 CD-ROM 数据盘 (LiveCD 属于此种情况 ) 采用的方式。 1.2. ISO9660 CD-ROM 中,每个 track 上都可以构建一个独立的文件系统。 ISO 9660 便是一种构建在 CD-ROM 之上的文件系统,专为光盘存储介质而设计,又被称为 CDFS(Compact Disk File System) 。 ISO 9660 考虑了 CD-ROM 的顺序访问及只读的特性,将文件连续存储在 CD-ROM 的 track 上,对文件名的格式、属性、大小、数量、目录的层次等都作了限制。 ISO 9660 文件系统的存储格式如下 在 Data Area 的头部,有多个 Volume Descriptor ,其功能类似于 ext4

Ceph 块存储客户端配置(二)

帅比萌擦擦* 提交于 2020-02-10 17:29:43
一、Ceph RDB介绍 Ceph块设备,以前称为RADOS设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用librbd库,并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RDB有Linux内核的本地支持,这意味着RBD驱动程序从过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RDB还提供了企业特性,例如:完整和增量快照、瘦配置、写时复制克隆、动态调整大小等等。RDB还支持内存缓存,这大大提高了其性能。任何普通的Linux主机(RHEL或基于debian的)都可以充当Ceph客户机。客户端通过网络与Ceph存储集群交互以存储或检索用户数据。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。 二、客户端安装Ceph软件包 2.1 检查内核是否支持RBD [root@192-168-5-70 ~]# uname -r 3.10.0-957.el7.x86_64 [root@192-168-5-70 ~]# modprobe rbd [root@192-168-5-70 ~]# echo $? 0 2.2 安装ceph软件 # 配置yum源 [root@192-168-5-70 ~]# vim