第一次听到这个词,当然也是一脸懵.

裸I/O 是什么东西呢?

裸I/O又称为直接I/O和非直接I/O相反,这不是“”废话“”么?

可是书上还真是这么写的。

究竟是什么呢?

直接 I/O(裸I/O),是指跳过操作系统的页缓存,直接跟文件系统交互来访问文件。
非直接 I/O 正好相反,文件读写时,先要经过系统的页缓存,然后再由内核或额外的系统调用,真正写入磁盘。

磁盘是一个存储设备(确切地说是块设备),可以被划分为不同的磁盘分区。而在磁盘或者磁盘分区上(lvm是直接可以基于磁盘直接做成lv的),还可以再创建文件系统,并挂载到系统的某个目录中。这样,系统就可以通过这个挂载目录,来读写文件。
换句话说,磁盘是存储数据的块设备,也是文件系统的载体。所以,文件系统确实还是要通过磁盘,来保证数据的持久化存储。

Linux 中一切皆文件,块设备、套接字、管道... 都是文件

通过相同的文件接口,来访问磁盘和文件(比如 open、read、write、close 等)

在读写普通文件时,I/O 请求会首先经过文件系统,然后由文件系统负责,来与磁盘进行交互。而在读写块设备文件时,会跳过文件系统,直接与磁盘交互,也就是所谓的“裸I/O”

sda是一个物理磁盘属于块设备

 servers]# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                          7:0    0     5M  0 loop /mnt
sda                            8:0    0 558.9G  0 disk
├─sda1                         8:1    0   500M  0 part /boot/efi
├─sda2                         8:2    0   500M  0 part /boot
└─sda3                         8:3    0 557.9G  0 part ├─rootvg-rootlv (dm-0)     253:0    0     5G  0 lvm  /├─rootvg-swaplv (dm-1)     253:1    0    16G  0 lvm  [SWAP]├─rootvg-homelv (dm-2)     253:2    0    15G  0 lvm  /home├─rootvg-varlv (dm-3)      253:3    0    80G  0 lvm  /var├─rootvg-locallv (dm-4)    253:4    0     2G  0 lvm  /usr/local├─rootvg-optlv (dm-5)      253:5    0    12G  0 lvm  /opt├─rootvg-usrlv (dm-6)      253:6    0    10G  0 lvm  /usr├─rootvg-tmplv (dm-7)      253:7    0    15G  0 lvm  /tmp└─rootvg-gpmasterlv (dm-8) 253:8    0   400G  0 lvm  /gpmasterservers]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Dec 12  2019 /dev/sda

lv 是一个链接文件,指向dm2

servers]# ll /dev/mapper/rootvg-homelv
lrwxrwxrwx 1 root root 7 Mar 27 11:06 /dev/mapper/rootvg-homelv -> ../dm-2

dm2还是块设备。

 servers]# ll /dev/dm-2
brw-rw---- 1 root disk 253, 2 Mar 27 11:06 /dev/dm-2

类似于这种就是裸I/O

dd if=/dev/sdb of=/dev/null bs=1M count=1024

如果if后面是一个有文件系统的目录则就是非直接I/O。先要经过系统的页缓存,然后再由内核或额外的系统调用,最后写入磁盘的。

Linux 裸I/O相关推荐

  1. linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)

    SUSE Linux 10 配置裸设备(raw devices) 裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对 它进行 ...

  2. linux 裸设备 逻辑卷,Linux通过逻辑卷使用裸设备

    本文不涉及基础概念,只是简单列一下Linux上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. (一)创建裸设备 1.用fdisk命令为磁盘阵列划分区(如sdc1,sdc2.... ...

  3. linux裸设备文件系统,Linux当中的文件系统

    1. 设备专用文件(设备文件) 设备专用文件与系统的某个设备相对应.在内核中,每种设备类型都有阈值向对应的设备驱动程序,用来处理设备的所有I/O请求.可以将设备划分为字符设备和块设备两种. 每个设备文 ...

  4. Linux裸设备管理详解--

    裸设备概述 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备.裸设备可以绑定一个分区,也可以绑定一个磁盘. 字符设备:对字符设备的读写不需 ...

  5. linux裸分区如何区分,Linux 裸设备基础知识

    此内容只在kernel 2.6, oracle 10.2.0.2 以上有效. linux LVM 在oracle 10.2.0.2 不支持块设备(Notes: 357492.1), 所以只可以在fdi ...

  6. linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO

    我们在创建DMS表空间容器时可以选择使用裸设备或文件系统,下面我们来看看两者的区别.我们知道,内存的读写效率比磁盘高近万倍,因此数据库通常会在内存中开辟一片区域,称为Buffer Pool,使数据的读 ...

  7. ZYNQ Linux+裸核

    目录 一.工程目标 二.Linux系统设置 三.SDK设置 1.CPU1设置 2.FSBL设置 3.生成BOOT.BIN 四.运行测试 1.Linux系统测试 2.裸核测试 一.工程目标 CPU0运行 ...

  8. Linux 裸设备基础知识(转)

    1.裸设备定义:一块没有分区的硬盘,称为原始设备(RAW DEVICE) 或者是一个分区,但是没有用EXT3,OCFS等文件系统格式化,称为原始分区(RAW PARTITION) 以上两者都是裸设备 ...

  9. linux 裸设备使用,Linux上如何使用裸设备

    本文不涉及基础概念,只是简单列一下Redhat上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. 1.创建pv pvcreate -M2 --metadatasize 100M / ...

最新文章

  1. 谷歌出现新冠肺炎确诊病例,限制员工出行;比尔·盖茨:可能成百年不遇的大流行病...
  2. eclipse rcp 多线程
  3. 《现代操作系统》第7章读书笔记--虚拟化和云(未完成)
  4. VTK:几何对象演示用法实战
  5. CNN结构:SPP-Net为CNNs添加空间尺度卷积-神经元层
  6. SAP UIVeri5 跳过检查 Google Chrome driver 版本检查的方法
  7. CRM呼叫中心里的Java stack
  8. 【手算】逆序数树形计算方法
  9. 背包——多重背包(hdu2191)
  10. JavaScript多种跨域方式
  11. JSP:src路径里有中文,产生乱码问题
  12. 快手封禁网红殷世航:涉及炒作卖货、低俗表演等违规行为
  13. STM32F103基本定时器使用
  14. (转)B-树、B+树、B*树
  15. MAC 下开发 不区分大小写问题及解决
  16. 如何学好一门开发技术
  17. 使用sama5d4硬件解码器
  18. 转】M1卡密钥破解,收藏
  19. Android studio 突然连接不上夜神模拟器
  20. java并发编程第二课 线程锁和线程安全

热门文章

  1. 【MySQL】数据库相关操作思维导图
  2. 谁再说mysql难学,我一张思维导图就扔过去,看完再说话
  3. Verilog之i2c协议
  4. if函数成绩分三个等级MySQL_excel怎么使用if函数判断成绩等级?
  5. 基于JPA实现的动态查询工具类
  6. 2022-2028年全球与中国USB充电器行业竞争格局与投资战略研究
  7. 发票OCR扫描识别技术
  8. 由两个栈组成一个队列
  9. vivos9解锁密码关闭(图文教程分享)
  10. 【设计模式】理解高内聚、松耦合