問題タブ [ext2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - inodeビットマップとinodeテーブルの違いは何ですか
inode ビットマップと inode テーブルの違いを (ext2 ファイル システムのドキュメントから) 理解しようとしていますが、わかりません。誰でも説明できますか?
caching - コールド キャッシュとウォーム キャッシュの概念とはどういう意味ですか?
ある論文を読んだところ、コールド キャッシュとウォーム キャッシュという用語が使用されていました。この用語についてグーグルで検索しましたが、役に立つものは見つかりませんでした (スレッドのみがここにあります)。
これらの用語はどういう意味ですか?
linux - FTP 対 SFTP 対 HDFS 対 NTFS 対 EXT2、EXT3
これらのプロトコルとファイル システムが相互にどのように関連しているか、それぞれがどこで使用されているかを知りたいだけです。
FTP 対 SFTP 対 HDFS 対 NTFS 対 EXT2、EXT3
任意の助けをいただければ幸いです。
ありがとう。
linux - fsync のパフォーマンスは、Linux 2.6.32 ext2 ファイルシステムで混在した結果になりました
Linux マシンで fsync のパフォーマンスをテストしているときに、fsync はファイルにデータを挿入するとファイルのサイズが大きくなり、非常に時間がかかることがわかりました。
環境: 12 コアの 2-CPU Linux バージョン 2.6.32_1-14-0-0 (scmpf@pwd) (gcc バージョン 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP 月 3 月 31 日10:42:09 CST 2014 ext2 ファイルシステム
テストコード:
結果:
上記の test_fsync プログラムを "echo "" >/home/zhangguangzhou/tmp/0" の後に実行すると、各 fsync は平均で 8 ミリ秒かかります。しかし、繰り返し実行すると、平均で 50 ミリ秒かかります。2回目以降の実行で。ファイルの途中から insertint データをテストしたり、異なるサイズのデータで挿入したりしましたが、結果はほとんど変わりませんでした。
質問: 書き込みによってファイルが大きくなる場合、fsync の余分な時間がかかるのは何ですか?
fysnc の inode IO について考えてみましたが、どちらもファイル変更時の inode メタデータを更新する必要があるため、ファイル増加書き込みとファイル増加なし書き込みの両方で inode IO は同じです。
bootloader - ext2 i ノード 5 (EXT2_BOOT_LOADER_INO) はオペレーティング システムで使用されていますか?
ext2 には、ルート ディレクトリである inode 2 など、多数の予約済み inode があります。Linux ext2 ヘッダー ファイルでは、inode 5 が「ブート ローダー inode」として定義されています。
実際にこれを使用するオペレーティングシステムはありますか?
この inode をどのように読み書きしますか?
c - Linux カーネルの ext2 関数 ext2_statfs() のメモリ バリア
Linuxカーネルのext2機能の理由を誰かが説明できますか
int ext2_statfs (struct dentry * dentry, struct kstatfs * buf)
問題smp_rmb()
と場合smp_wmb()
には
else if (sbi->s_blocks_last != le32_to_cpu(es->s_blocks_count)) {
?
これはアップストリーム カーネル コミット2235219b7721b8e74de6841e79240936561a2b63で追加されました。これにより .statfs の不要な計算が省略されますが、メモリ バリアが追加された理由を理解できませんでした。
linux-kernel - 新しく作成された ext2 i ノードにストレージが割り当てられるのはいつですか?
ext2fs で新しい通常ファイルを作成する方法については、 Understanding the Linux Kernel, 3rd Editionを読んでいます。
(書籍は複数の場所でオンラインで入手できます。合法性については不明です。関連する章のみの最新版はO'reilly のサイトにありますが、すべての関連データが含まれているわけではありません)
私が見たところ、Linux カーネルは新しい i ノードを作成し、それに必要なブロックを割り当てる必要があります。
この本では、次の手順の概要が説明されています。
Creating inodes
(p.758)Allocating a Data Block
(p.764)
私が理解していないのは、カーネルがいつ新しい i ノードのデータ ブロックを割り当てるかということです。
Creating inodes
手順の終わり近く (パラグラフ 14) に、次のように表示されます。
ext2_preread_inode()
inode を含むブロックをディスクから読み取り、そのブロックをページ キャッシュに入れるように呼び出します。このタイプの先読みが行われるのは、最近作成された i ノードがすぐに書き戻される可能性が高いためです。
したがって、その直前に、inode のブロックを割り当てる論理的な場所のように思えます。ただし、ext2 アーキテクトが割り当てを別のタイミングで行うことにした可能性があります。
新しく作成された ext2 i ノードにいつストレージが割り当てられるか知っている人はいますか?
filesystems - Linux ext2 ファイル システムのディスク イメージを作成しますか?
ファイル システムのディスク イメージを作成し、そのディスク レイアウトをビットマップ ファイルで確認するにはどうすればよいでしょうか。どのようにディレクトリを追加しますか? dd を使用して作成したファイルで mkfs.ext2 を使用しましたが、正しく行われたかどうかはわかりません。inode と inode テーブルを表示し、それらがブロックとどのように関連しているかを確認できる必要があります。
c - ext2 イメージ内の特定の inode にアクセスする (C)
C 言語を使用して、ext2 イメージ内の特定の i ノード (その番号を使用) にアクセスしたいと考えています。open() システムコールで ext2 イメージを開き、inode に到達するまで、適切なオフセットで lseek() を使用してトラバースすることで、これを実行しようとしています。これは正しいです?それとも私は何か間違ったことをしていますか?open() の使用が正しいのか、それともこれを行うためのより適切な関数があるのか、少し混乱しています。
inode に到達するまで、startPosition にオフセットを追加する必要がありますか? しかし、特定の inode を検索するにはどうすればよいでしょうか?
UPDATED(より具体的に)
私はすでに ext2 ファイル システム ( http://www.nongnu.org/ext2-doc/ext2.html ) のレイアウトを持っています。これにより、必要なすべて (すべてのオフセット) が得られます。そして、メタデータとデータを操作する C プログラムを作成する必要があります。たとえば、ファイルの削除とコピーのように。
何をすべきかはわかっていますが、それを実装するのに問題があります。
例: 自分が何をしているかを理解しているかどうかをテストするために、教授から提供された ext2 ディスク イメージの空き inode の数を読み取ろうとしています。
私が受け取る出力は次のとおりです。「空き inode の数: 32767」
read() から取得したデータを正しく解釈していますか? 受け取ったこの値が正しいかどうかはわかりません。
java - Ext2: グループ記述子
ext2ファイルシステムイメージを通過してナビゲートするJavaプログラムを作成しています。私は fs がリビジョン 1 (またはそれ以上) であることを知っているので、グループ 0、1、および 3、5、7 のべき乗であるスーパーブロックのコピーがあることを知っています。スーパーブロックのないグループ?ありますか?ある場合、それはグループの最初のブロックにあるということですか? 3 番目のグループの inode テーブルはどこで探すべきですか?
私の fs には 3 つのグループ (0,1,2) があり、それぞれ 8192 ブロックの長さで、blocksize=1024 です。