本文主要是介绍zfs块申请机制研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看了下面的这个文章,熟悉了zfs的块的申请的机制。
https://blogs.oracle.com/roch/entry/doubling_exchange_performance
首先如果某个zio要请求vdev,申请一个block,他会经过zio流水线的一级 zio_dva_allocate。
在块申请的时候 首先 会选择出top vdev,然后通过这个top vdev,找到一个metaslab,然后再在metaslab当中,找到所要请求块的dva。
(Data Virtual Address),挑选metaslab是系统写性能问题的核心和关键。
一个vdev被分为200个metaslab,每个metaslab可能会在内存当中,可能不会放到内存当中。放到内存当中的部分,将会有一个spacemap与之对应。并且我们可以从中申请块。
同时也有可能不在内存当中,那么我们不能申请不在内存当中的metaslab,但是我们却可以释放(由于copy on write的原
这篇关于zfs块申请机制研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!