Linux 裸I/O
第一次听到这个词,当然也是一脸懵.
裸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相关推荐
- linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)
SUSE Linux 10 配置裸设备(raw devices) 裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对 它进行 ...
- linux 裸设备 逻辑卷,Linux通过逻辑卷使用裸设备
本文不涉及基础概念,只是简单列一下Linux上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. (一)创建裸设备 1.用fdisk命令为磁盘阵列划分区(如sdc1,sdc2.... ...
- linux裸设备文件系统,Linux当中的文件系统
1. 设备专用文件(设备文件) 设备专用文件与系统的某个设备相对应.在内核中,每种设备类型都有阈值向对应的设备驱动程序,用来处理设备的所有I/O请求.可以将设备划分为字符设备和块设备两种. 每个设备文 ...
- Linux裸设备管理详解--
裸设备概述 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备.裸设备可以绑定一个分区,也可以绑定一个磁盘. 字符设备:对字符设备的读写不需 ...
- linux裸分区如何区分,Linux 裸设备基础知识
此内容只在kernel 2.6, oracle 10.2.0.2 以上有效. linux LVM 在oracle 10.2.0.2 不支持块设备(Notes: 357492.1), 所以只可以在fdi ...
- linux裸设备文件系统,关于裸设备,文件系统,CIO/DIO
我们在创建DMS表空间容器时可以选择使用裸设备或文件系统,下面我们来看看两者的区别.我们知道,内存的读写效率比磁盘高近万倍,因此数据库通常会在内存中开辟一片区域,称为Buffer Pool,使数据的读 ...
- ZYNQ Linux+裸核
目录 一.工程目标 二.Linux系统设置 三.SDK设置 1.CPU1设置 2.FSBL设置 3.生成BOOT.BIN 四.运行测试 1.Linux系统测试 2.裸核测试 一.工程目标 CPU0运行 ...
- Linux 裸设备基础知识(转)
1.裸设备定义:一块没有分区的硬盘,称为原始设备(RAW DEVICE) 或者是一个分区,但是没有用EXT3,OCFS等文件系统格式化,称为原始分区(RAW PARTITION) 以上两者都是裸设备 ...
- linux 裸设备使用,Linux上如何使用裸设备
本文不涉及基础概念,只是简单列一下Redhat上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. 1.创建pv pvcreate -M2 --metadatasize 100M / ...
最新文章
- R语言vtreat包自动处理dataframe的缺失值并生成对应的数据列_isbad来指示数据的原始缺失情况、查看特定字段缺失的那些数据行、查看数据集中多个字段的均值
- DSP与FPGA间简单通信时序
- ubuntu下安装极点五笔
- Docker远程TLS管理
- RecyclerView多布局的简单使用
- UITableViewCell在非Nib及Cell重用下设置CellStyle
- create-react-app 创建react项目 多页面应用
- Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (1) - 概述
- 建立索引为什么能加快查询速度 【转】
- 字典树实现_leetcode之820. 单词的压缩编码 | python极简实现字典树
- 在Flex中获取一个屏幕截图(Screenshot)并将其传递给ASP.NET
- js基础知识汇总11
- R语言地理探测器--因子探测器实现
- 火山图——直观的特征差异可视化
- C#操作Word:删除指定页(缺陷无法根据内容删除,只能固定页码;Microsoft.Office.Interop.Word.dll应用)
- 下载安装破解idea2018
- word图文混排复制到eWebEditor图片不显示
- 实际蒸散发和潜在蒸散发
- 【原创】HSV和YCrCb色彩空间介绍
- 第一年19元月租100g