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