arashi1977さんの投稿一覧

助け合いフォーラムの投稿
2024/06/25 コメント
ハードリンクはディスク容量を消費しない?
> 「0バイト(ディスク容量消費なし)のファイルは存在する」というのは妥当な理解 ここちょっと補足すると、「中身のない0バイトのファイルを作成した」というのも「既存ファイル(実データあり)に対するハードリンクを作成したが、実データを複製したわけではないのでハードリンク自体は容量を持たない」というのも同じことだと判断できる、という意図です。
2024/06/25 コメント
ハードリンクはディスク容量を消費しない?
ありがとうございます。 (いただいた回答から、LPIC101が求めているレベルはいつの間にかdentryの利用に関する知識レベルになっていたのか?!と驚きを持って受け止めています ^^; ) > そして私が述べていた「メタデータ」も「マッピング情報」も共に{名前,inode}という管理情報です。 こちらのご説明から、これまでのやり取りは「メタデータおよびマッピング情報=dentry」を意図していると確認できました。それでようやく当初ご質問の > ハードリンクのメタデータ(ハードリンク名や参照先iノード番号)の分 が理解できました。その前提に立てば、これまでのharmoさんのおっしゃっている内容に同意です。 また、私のこれまでの理解(ハードリンク自体はディスク容量消費しない、dentryはディスク容量消費する)は何ら変える必要がないこともわかりました。 LPIC Level1の求めるスキルは以下の通りです。 > LPIC-1は、候補者がコマンドラインでメンテナンスタスクを実行し、Linuxを実行するコンピューターをインストールして構成し、基本的なネットワークを構成する能力を検証します。 https://learning.lpi.org/ja/learning-materials/101-500/ このレベルで想定する運用観点で考えれば、この問題も私の認識でも「0バイト(ディスク容量消費なし)のファイルは存在する」というのは妥当な理解ですが、これまでのharmoさんのお話を踏まえると「データとしては0バイトかもしれないが、dentry分ディスク容量を消費しているのだから0バイトではない」となってしまい、小学校理科の知識を高校レベルで否定している感が否めません。 この問題はLPIC-1向けの学習問題ですし、求められている知識レベルに合わせた回答を意識しないと、以前のコメントの通り > 実試験で類似の問題が出題された際に「ハードリンクはディスク容量を消費しない」という内容の選択肢があった場合でも、harmoさんが自信を持って「これは不正解だ」と判断 するしかなくなり、自縄自縛になりかねないんじゃないかなぁと心配しています。 もし「メタデータも考慮しないのか!」とレベルの低さを嘆かれるようであれば、LPIC/LinuCとかでは役不足かなと思いますので、期待するレベルに合う別の認定資格をお探しになった方が良いかもしれません。
2024/06/24 コメント
ハードリンクはディスク容量を消費しない?
ありがとうございます。クリアにしたい部分がクリアにならなかったのでお尋ねするのですが > という部分等から、 > ・通常ファイルとは一意のinodeを持つファイル実体であり固有の名前を付けることはできない。 > ・普段ファイル名として扱っているのは、ディレクトリが持つinodeへのマッピング情報である。 > ・既存inodeへの別名のマッピング情報を特にハードリンクという。 > と解釈できます。 1. 前のコメントの抜粋なのですが、 > $ touch original_file > $ stat original_file > File: original_file > <SNIP> > Device: fd00h/64768d Inode: 1457210 Links: 1 ←inode: 1457210, リンク数は1 ここでは元ファイルのinode番号が1457210となっており、このoriginal_fileが「一意(1457210)のinode番号を持つファイル実体」のことだと理解しました。(「固有の名前をつけることはできない」については意図が理解しきれませんでした。original_fileという名前をつけられない、という意味?) 上記のstatコマンド出力の2行目でファイル名(original_file)が見えていますが、この「ファイル名」そのものがinodeへのマッピング情報を意味するということでしょうか?それともマッピング情報が「original_file」というファイル名を意味しているということなのでしょうか? また、「マッピング情報」と「メタデータ」は同一のものと理解して良いのでしょうか? 2. 上記のファイルについて、ls -liコマンドで確認すると、どちらも同じinode番号を示しています。(これはハードリンクなので当然だと理解しています) > $ ls -li | grep _file > 1457210 -rw-rw-r-- 2 user user 0 Jun 23 19:17 hardlink_file > 1457210 -rw-rw-r-- 2 user user 0 Jun 23 19:17 original_file また、この出力の3列目の「2」は「ハードリンク数」を示していると確認しています。この状態でoriginal_fileを削除すると以下のようになります。 > $ ls -li | grep _file > 1457210 -rw-rw-r-- 1 user user 0 Jun 23 19:17 hardlink_file ハードリンクではなく元ファイルを削除したのに「ハードリンク数」が減少しています。また、この残っているファイルを元にしたハードリンクを作成することもでき、そのinode番号も同じものです。 > $ ln hardlink_file another_file > $ ls -li | grep _file > 1457210 -rw-rw-r-- 2 user user 0 Jun 23 19:17 another_file > 1457210 -rw-rw-r-- 2 user user 0 Jun 23 19:17 hardlink_file この時以下の点についてどう理解すれば良いのかが整理できません。 > 「ハードリンク=ディレクトリファイルの実体が保持する名前とinodeポインタの組」、いうなればメタデータこそがハードリンクの本体 > ・既存inodeへの別名のマッピング情報を特にハードリンクという。 「メタデータがハードリンクの本体」であれば、ハードリンクに対するハードリンクを作成した場合「メタデータ(=名前とinodeポインタの組)への別名のマッピングとなるメタデータ(メタデータへのinodeポインタとなるメタデータ)」を作成した、ということなのでしょうか? また、original_fileを削除したということは、メタデータであるhardlink_fileのみが残り「一意のinodeを持つファイル実体」である通常ファイルは消えたという理解で良いのでしょうか? ハードリンクが通常ファイル(という表現で良いのか?)の同じinodeへの参照であれば同じデータを複製することなく異なるファイルとして存在できるので「ディスク容量を消費しない」というのが成立するという理解であったので、「ハードリンク=メタデータ」と考えるには「ハードリンク元のファイルを削除する」というのが元ファイルの実データとの観点でどういうことなのかをクリアにする必要があると思っています。 3. 私の元々の理解では「inode≒メタデータ」だったので、同一inodeで管理する情報が増えたとしてもそれはメタデータ(というかファイルの実データ)が増えるのではなく「当該ファイルを格納するディレクトリが管理するデータ量」が増えることで増加しているものであり、ハードリンクそのものがディスク容量を消費してはいないという認識でした。ですが、ハードリンクは「メタデータ」とのことなので上記の認識を変える必要があるかなと思っています。 このやり取りの中で出てきている「メタデータ」とは「ディレクトリが持つ管理情報(マッピング情報?)」のことなのか、ファイルの実データに関する管理情報であるinodeなのか、それとも別の情報のことなのでしょうか? (最初のコメントの「固定サイズのメタデータ格納用ファイル」の理解に必要な情報である認識です)
2024/06/24 コメント
ハードリンクはディスク容量を消費しない?
認識改のために考えていたのですが、わからなくなってきたので教えてください。 > 「ハードリンク=ディレクトリファイルの実体が保持する名前とinodeポインタの組」、いうなればメタデータこそがハードリンクの本体であり、ハードリンクというファイルは存在しない とのことですが、「ハードリンク」はファイルではないのでメタデータが本体だということであれば、「通常ファイル(という言い方が適切かも考え中ですが)」とは何なのでしょうか? 上記のstatの結果からすると、ハードリンクもとのファイルとハードリンクのどちらも同じinodeが割り当てられている(=同じinodeポインタを持つ)ということだと思ったのですが、通常ファイルとハードリンクはどこがどのように異なるものなのでしょうか? ハードリンクと通常ファイルの違いについて明確に解説されたドキュメントもうまく見つけられず困っています。
2024/06/23 コメント
ハードリンクはディスク容量を消費しない?
そうなのですか! ハードリンクがすでにあるファイル(実データ)への別名による参照だと理解していたので、どちらもファイルだと思っていました。 ーーー $ touch original_file $ stat original_file File: original_file Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1457210 Links: 1 ←inode: 1457210, リンク数は1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ user) Gid: ( 1000/ user) Access: 2024-06-23 19:17:16.846932371 +0900 Modify: 2024-06-23 19:17:16.846932371 +0900 Change: 2024-06-23 19:17:16.846932371 +0900 Birth: 2024-06-23 19:17:16.846932371 +0900 $ ln original_file hardlink_file user@containerlab:~/work$ stat hardlink_file File: hardlink_file Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1457210 Links: 2 ←inode番号は同じで、リンク数が2に増えた Access: (0664/-rw-rw-r--) Uid: ( 1000/ user) Gid: ( 1000/ user) Access: 2024-06-23 19:17:16.846932371 +0900 Modify: 2024-06-23 19:17:16.846932371 +0900 Change: 2024-06-23 19:17:26.863098754 +0900 Birth: 2024-06-23 19:17:16.846932371 +0900 $ rm original_file  ←ハードリンク元のファイルを削除 $ stat hardlink_file File: hardlink_file Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1457210 Links: 1 ←inode番号は変わらず、リンク数が1に減った Access: (0664/-rw-rw-r--) Uid: ( 1000/ user) Gid: ( 1000/ user) Access: 2024-06-23 19:17:16.846932371 +0900 Modify: 2024-06-23 19:17:16.846932371 +0900 Change: 2024-06-23 19:17:31.915182665 +0900 Birth: 2024-06-23 19:17:16.846932371 +0900 ーーー 「Unixではすべてのリソースがファイル」という概念を昔学んだのが根本にあったので「ハードリンクもファイル」という認識でいましたが、今は変わっているのですかね。認識を改めねば。
合格体験記の投稿
投稿がありません