Re: [問題] 如何修改inode?
※ 引述《silence226 (賽勒斯)》之銘言:
: ※ 引述《silence226 (賽勒斯)》之銘言:
: : 標題: [問題] 如何修改inode?
: : 時間: Wed Sep 2 20:53:41 2009
: : hi all,
: : 若想修改 inode 裡面的 block pointer 位置
: : 用 C or C++,要如何能夠控制/修改 file system 的 inode呢?
: : 不知道有沒有system call可以呼叫?
: : 謝謝 :)
: : --
: : ◆ From: 60.251.70.82
: : → wheelz:沒有syscall可以呼叫,也不推荐修改inode里面的值,因為 09/04 18:35
: : → wheelz:不同的file system,在hard disk上的inode是不一樣的 09/04 18:35
: : → wheelz:當然,如果你硬要改,可以用/dev/sda這樣的方式來做,只要 09/04 18:37
: : → wheelz:該/dev/sda沒有mount 09/04 18:37
: 可否請問 wheelz 兄,在沒有 mount 的情況下該如何做呢?
: 會有這樣的想法是因為, 想要建立一個沒有 fragment 的大型檔案
: 若能夠控制 inode 內的 block pointer, 就能夠將檔案建立於連續的 block 內
: 還是有其他的做法能達到相同的目的?
: 謝謝
推文好累。呵呵。
之所以推荐XFS,不單單因為他有一個ioctl()可以預先分配空間給檔案,
也是因為他對大型檔案的支援很好。
另外,現在比較新的file system,比如ext4,也有預先分配空間的功能,
這個功能通常就是由fallocate()或者posix_fallocate()來支援的。
但要考慮到ext4還是一個比較新的file system,可能bug還蠻多的,
另外,考慮到有些以前的file system雖然也有fallocate()或者posix_fallocate(),
但他們是通過給檔案填充0的方法來達到預先分配空間的目的,這容易引起混淆。
所以我還是推荐 XFS file system以及他的ioctl(),這個比較确定。
當然,XFS的ioctl()也不是100%保証可以做到沒有fragment,他也是盡量去做。
如果disk上根本沒有連續的block,他也是做不到的,但他會做到盡可能少的fragments
另外,XFS也有 online defragmentation的功能。
可以在 disk online 的情形下 defrag,效果也不錯。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.200.16.116
→
09/07 10:55, , 1F
09/07 10:55, 1F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章