歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux omfs文件系統利用bitmap管理空閒磁盤空間

Linux omfs文件系統利用bitmap管理空閒磁盤空間

日期:2017/2/28 15:56:55   编辑:Linux教程

為了管理磁盤空間,文件系統需要知道哪些block是空閒的。Omfs使用bitmap來達到這個目的。Bitmap的每一個bit對應磁盤上的一個block,當對應的block被分配後,bitmap中的相應bit會被設置為1。這個是很經典也很清晰的一個設計,下面我們看看omfs的具體做法:

相關閱讀:Linux文件系統omfs的目錄創建和刪除 http://www.linuxidc.com/Linux/2012-02/54025.htm

在上面新建的文件系統中新建一個文件aaaa:

Touch aaaa

ls -ali

total 4

3 drwxr-xr-x 2 root root 2048 2012-02-08 10:52 .

1048578 drwxr-xr-x 4 root root 4096 2012-02-08 13:44 ..

6 -rw-r--r-- 1 root root 0 2012-02-08 13:45 aaaa

再touch bbbb和touch cccc

3 drwxr-xr-x 2 root root 2048 2012-02-08 10:52 .

1048578 drwxr-xr-x 4 root root 4096 2012-02-08 13:44 ..

6 -rw-r--r-- 1 root root 0 2012-02-08 13:45 aaaa

8 -rw-r--r-- 1 root root 0 2012-02-08 13:54 bbbb

10 -rw-r--r-- 1 root root 0 2012-02-08 13:54 cccc

hexdump -C -s 0xa000 -n 8192 /dev/loop0

0000a000 ff 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

0000a010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

*

0000a050 00 00 00 00 11 00 00 00 ff ff ff ff ff ff ff ff |................|

0000a060 ff ff 00 00 c9 0c 02 00 00 00 00 00 00 00 00 00 |................|

0000a070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

*

0000a190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 |................|

0000a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

0000a1b0 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff |................|

0000a1c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|

*

0000a800 00 00 00 00 29 05 02 00 00 00 00 00 00 00 00 00 |....)...........|

0000a810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

最初是3f 現在是ff0f 。

3f =0011 1111 這六位表示block 0到block 5 block0是super block,block1和block2是root block,block3 和block4是root directory inode, block5是bitmap

因為aaaa的i_no是6,所以占用block6,block7是備份。

Bbbb的i_no是8,所以占用block8,block9是備份。

Cccc的i_no是10,所以占用block10,block11是備份。

所以是ff0f = 1111 1111 0000 1111 block0至block11都是占用的

Copyright © Linux教程網 All Rights Reserved