質問

作成後まもなく削除される数百から数千の一時的なハードまたはシンボリックリンクを作成する必要があります。私の目的のために、両方のタイプのリンクが機能します(つまり、ターゲットはディレクトリではなく、常に同じファイルシステムに存在します)

私が理解しているように、シンボリックリンクは、元のファイルへのパスを含む小さなファイルを作成します。一方、ハードリンクは同じイノード内のデータへの参照を作成します。これらのリンクを何千ものリンクを作成/削除する場合は、何千もの小さなファイル(シンリンク)またはこれらの参照(ハードリンク)を作成して削除する方が良いでしょうか?一方はハードドライブ(おそらくフラグメンテーション)に課税しているようですが、もう1つはファイルシステム自体に課税する可能性がありますか? INODE参照はどこに保存されていますか。非常に多くのハードリンクを作成して、ファイルシステムを破損する危険がありますか?スピードはどうですか?

あなたの専門知識をありがとう!

これは、FFMPEGを使用して、ディレクトリから画像の任意のサブセットから映画をエンコードできるようにするために回避されます。 FFMPEGでは、ファイルに適切に命名される必要があるため(例:Frame%04d.jpgなど)、ファイルのサブセットにハード/Symリンクを作成し、リンクに適切に名前を付けることができることに気付きました。これにより、元のファイルの名前を変更し、実際にデータをコピーする必要がなくなります。うまく機能しますが、何千ものリンクを繰り返し作成および削除する必要があります。

この問題にも対処しています:私は信じています:FFMPEGを使用して画像シーケンスを変換します

役に立ちましたか?

解決

このアクティビティがファイルシステムを破る場合、ファイルシステムはあなたではなく障害になります。ファイルシステムは一般的にかなり信頼性が高いので、それについて心配しないでください。

どちらのオプションでも、ディレクトリにエントリを追加する必要があります。シンボリックリンクには、ファイルも作成する必要があります。ファイルにアクセスすると、ハードリンクがコンテンツに直接ジャンプします。Symlinkにアクセスするには、Symlinkファイルを見つけ、読み取り、コンテンツのディレクトリを見つけ、コンテンツがどこにあるかを見つけてからアクセスする必要があります。したがって、Symlinksは、ファイルシステムのすべての作業です。

ただし、ファイル内のデータを実際に読み取る作業と比較すると、違いは微細です。したがって、私はそれについて心配することはありません。そして、あなたが望むセマンティクスをあなたに与えてくれるものをあなたと一緒に行くだけです。

他のヒント

同じファイルに数十万を作成しようとしていないため、ハードリンクはわずかにパフォーマンスが向上しています。

ただし、 /TMPのシンボリックリンク /TMPがTMPFSのパフォーマンスがさらに優れています。

ああ、シンリンクは小さすぎて断片化の問題を引き起こすには小さすぎます。

どちらのオプションでも、ディレクトリイノードにファイルエントリを追加する必要があります。ディレクトリ構造は、新しいブロックを割り当てることで成長する場合があります。

ただし、シンボリックリンクにはinodeの割り当てが必要であり、ファイルシステムにはイノデの制限があります。君の 数十万人 Symlinksはその制限に達する可能性があり、あなたは 「ファイルのための十分なスペース」 ギガバイトがない場合でもエラーメッセージ。

デフォルトでは、ファイルシステム作成ツールは、物理的なパーティションサイズに従って最大イノデの数を選択します。たとえば、Linux ext2/3/4の場合、 mkfs.ext3 aを使用します bytes-per-inode あなたがあなたの中で見つけることができる比率 /etc/mke2fs.conf.

既存のファイルシステムの場合、象徴に関する情報を取得するためのコマンドを次に示します。

# dumpe2fs /dev/sda1 | grep -i inode | less

Inode count:              979200
Free inodes:              742304
Inodes per group:         16320
Inode blocks per group:   510
First inode:              11
Inode size:               128
Journal inode:            8
First orphan inode:       441066
Journal backup:           inode blocks

結論として、あなたはすべきです ハードリンクを好む 主にディスクおよびメモリ上のリソース消費用(キャッシュのVFS構造)。

別のアドバイス:同じディレクトリにあまりにも多くのファイルを作成しないでください。2'000ファイルは、パフォーマンスの問題を回避するための合理的な制限です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top