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

裸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. R语言vtreat包自动处理dataframe的缺失值并生成对应的数据列_isbad来指示数据的原始缺失情况、查看特定字段缺失的那些数据行、查看数据集中多个字段的均值
  2. DSP与FPGA间简单通信时序
  3. ubuntu下安装极点五笔
  4. Docker远程TLS管理
  5. RecyclerView多布局的简单使用
  6. UITableViewCell在非Nib及Cell重用下设置CellStyle
  7. create-react-app 创建react项目 多页面应用
  8. Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (1) - 概述
  9. 建立索引为什么能加快查询速度 【转】
  10. 字典树实现_leetcode之820. 单词的压缩编码 | python极简实现字典树
  11. 在Flex中获取一个屏幕截图(Screenshot)并将其传递给ASP.NET
  12. js基础知识汇总11
  13. R语言地理探测器--因子探测器实现
  14. 火山图——直观的特征差异可视化
  15. C#操作Word:删除指定页(缺陷无法根据内容删除,只能固定页码;Microsoft.Office.Interop.Word.dll应用)
  16. 下载安装破解idea2018
  17. word图文混排复制到eWebEditor图片不显示
  18. 实际蒸散发和潜在蒸散发
  19. 【原创】HSV和YCrCb色彩空间介绍
  20. 第一年19元月租100g

热门文章

  1. android 工具栏沉浸 下拉,Android沉浸式状态栏总结
  2. 个人设计web前端大作业
  3. 关于feof函数多读一次的问题
  4. “智慧城市”提升桂林人生活品质
  5. 思岚产品常见问题解答(二)
  6. Selenium 详解CSS定位
  7. 星舆科技又双叒叕获奖了!雷锋网年度最佳高精度定位奖
  8. ipad手写笔排行榜,ipad手写笔平价推荐
  9. pandas计算皮尔逊相关系数
  10. MariaDB-点滴