
クリーンアップするディレクトリを見つけました。/srv/app/dataに手を加える前に、どのファイルシステムを変更しますか?Linuxでは、findmntがこのパスをそのアクティブなマウントに結び付けます。
期待されるボリュームが欠けている場合、フォルダーは親ファイルシステムでアクセス可能なままであり、書き込みは別のボリュームを満たす可能性があります。修復はファイルシステムに固有の手順に従い、しばしばアンマウントされた状態で行われます。
パスを提供するマウントを特定する
例は、findmnt、df、およびlsblkが使用可能なLinuxシェルを前提としています。/srv/app/dataを使用状況を知っている既存のディレクトリに置き換えてください。
findmnt -T /srv/app/data -o TARGET,SOURCE,FSTYPE,OPTIONS
出力は、TARGETでマウントポイントを、SOURCEでそのソースを、FSTYPEでそのタイプを特定します。-Tを使用すると、フォルダー自体がマウントポイントである必要はありません:findmntは適切な親マウントを検索します。
フォルダーの背後にあるボリュームを特定するには、パスによるこの検索を優先してください。このオプションは、findmntのマニュアルが説明するように、ファイルも受け入れます。
df -hT /srv/app/data
同じパスで、df -hTが同じファイルシステムの容量、使用スペース、利用可能スペースを確認します。findmntで取得したFSTYPEのフィールドをもとに、そのソースとタイプを照らし合わせてください。
もしSOURCEがローカルブロックデバイスを指すのであれば、このインベントリ内でUUIDを見つけてください:
lsblk -f
もしソースがNFSまたはoverlayに該当し、角括弧の間にパスを含むか、不明確な場合、ローカルディスクに対して何も行動をとらないでください。
再帰的操作の前に、サブマウントも検索してください。次のコマンドでは、/srv/app/dataをTARGETで読み取った正確なパスに置き換えます。
findmnt -R /srv/app/data
もしターゲットがマウントポイントであれば、このコマンドはそのマウントポイントとサブマウントを表示します。あなたの介入が関係する子孫を特定してください:dfが提供する容量の値は、そのツリー構造の詳細を示していません。
アクションの前に結果を比較する
成功したコマンドは、期待したボリュームとは異なるボリュームを示す可能性があります。findmntの4つのフィールドでこのずれを特定できます:
TARGET: マウントポイントを期待されるものと比較します。値/は、そのパスをルートマウントに関連付けます。専用のマウントを期待している場合は、介入を中止してください。SOURCE: データの出所を確認します。角括弧の間のパスは、特にバインドマウントやBtrfsサブボリュームを示している場合があります。FSTYPE: 表示されたタイプを期待されるものとdf -hTの結果と比較します。値nfs、nfs4、またはoverlayは、このマウントに対する適切な診断を要求します。OPTIONS:ro(読み取り専用)またはrw(読み取り・書き込み)を特定します。rwであっても、ディレクトリの権限があなたのアカウントへのアクセスを拒否する場合があります。
作成されることが予想され、マウントが特定されている場合は、このオプションのチェックで診断を補完できます。書き込み用に予定されているアカウントを使用してください:rootに切り替えると評価される権利が変更されます。
test -w /srv/app/data
printf '戻りコード : %sn' "$?"
test -wは静かです。直後に実行されるprintfはそのコードを表示します:テストが成功すると0、そうでなければ1です。これは現在のアカウントの明示的な権利のみを確認します。
このチェックは書き込みを保証しません。ディレクトリを通過する権利、利用可能なスペース、クォータ、または入出力エラーが操作をブロックする可能性があります。
マウントが不確実な場合は介入を一時停止する
バインドマウントは既存のデータを別の場所に露出させます。このアクセスによってファイルを変更すると、同じデータに影響します。OPTIONSにbindという言葉がないからといって、このマウントを排除するには不十分です:その由来が不確実な限り、操作を一時停止してください。
NFSを使用する場合、ソースはリモートエクスポートを指します。ストレージの修復は、それをホストするサーバーに属します。
パスがオンデマンドでマウントされる場合、ガイドAutofs under Linuxでその出現を理解するのに役立ちます。パスにアクセスすると、マウントがトリガーされる可能性があります。
コンテナ内で、findmntはその名前空間から見えるマウントを確認します。overlayのソースは、ホストのディスクを直接指定するものではありません。ホスト側での確認された一致がなければ、この診断をもとにボリュームへの操作はできません。
findmntは現在の状態を説明し、マウントをロックすることはありません。サービスや管理者があなたの読んだ後にそれらを変更する可能性があります。競合する変更が可能な場合、介入を一時停止してください:同じボリュームがアクションの際にパスを提供するとは限りません。