关于对裸设备进行读写操作的问题!
我现在有一块不用的磁盘分区,
没有进行过格式化,那它应该算是裸设备了吧?
我现在的问题是,应该如何对这块磁盘分区进行读写操作呢?
有相应的API接口吗?
与磁盘相关的那些扇区、磁道、LBA等等的参数,这些不需要自己在程序里面设置吗?
多谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
"知道磁盘分区的开始扇区信息", 就知道了该分区的LBA!!! 为什么你还问“能不能计算出LBA”?
en ,我先看看吧 ^_^
我在google上搜了好久,发现很多网页上都是提供了lba和柱面扇区的转换公式,
并没有提lba和写入数据块的关系,
你看看会不会提供了相关的ioctl命令阿
直接采用原始的对文件操作的读写接口应该能够完成,但是能否得到LBA的信息呢?
比如说在磁盘分区上从0便宜地址处写了一个数据块,知道磁盘分区的开始扇区信息,知道数据块的大小,能不能计算出LBA(logical block address)呢?
如果没有对磁盘进行格式化的话,也就是说,磁盘对你来说就是一整块可随机存储的介质;
你对磁盘进行的操作不是通过文件系统接口,而是直接通过磁盘块设备驱动程序的接口;在linux下的读写接口都是同一通过open,read,write之类来完成的,磁盘块设备的驱动程序也不列外;
所以,你就直接可以用如open("/dev/hda1", O_RDWR)来打开,然后对这一大块介质进行读写、定位等操作。
:)
gparted调用的是dd命令来完成不同文件系统上的copy工作的,
它并没有自己实现的部分。
gparted主要的用途是提供了一个GUI界面和对不同文件系统的支持,它把许多的磁盘管理功能都集成到一起去了。
gparted?
好的,我先看看里面的实现。
多谢落
我的想法是
要对一个没有格式化过的磁盘直接进行读写,这样可以绕过文件系统,如果程序没有什么错误的话,它的读写效率应该要比经过文件系统的读写要快很多。
在对块设备文件进行读写的时候, 逻辑块地址lBA需要自己在程序中指定吗?
应该怎么往磁盘上写呢?
你看一下gparted源代码