1. ディスクがいっぱいです。

1. ディスクがいっぱいです。

veracryptで暗号化されたドライブに残っているディスク容量がないファイルを削除しても、ディスク容量は解放されません。

説明したように、あるハードドライブを別のハードドライブと同期しようとしています。ここ

ターゲットドライブがいっぱいでディスク容量を確保できません。を実行するなど、さまざまな方法でファイルを削除してみましたが、ドルフィンファイルエクスプローラに空きrm /.../fileディスク容量が表示されないだけでなく、たとえばdf -h使用可能列に0、使用率%に100%が表示されます。

実際にファイルを削除してディスク容量を解放する方法それともエラーが表示されている場合は、実際に利用可能なディスク容量を表示してもよろしいですか?私はDebianとKDEを使用しています。


詳細問題の発生方法そして私が試した他のもの:

問題は、「デバイスに残りのスペースがない」(これも発生しない)に達し、Grsyncがルート所有ファイルをバックアップしないため、エラーで完了することです。

その後、上記のようにコンソールでGrsyncのrsyncコマンドを実行しました。コマンドはsudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1 /media/veracrypt2

「非正規ファイルのスキップ」エラーがたくさん発生しましたが、これは別の問題であり(100.0%バックアップする必要があります)、デバイスに多くのGBの空きディスク容量があるにもかかわらず、「デバイスに残りのスペースなし」エラーで終わりました。ディスク1。sudo lsof | grep {diskname}disk2は何も使用されていないことを示しています。もちろん、rsyncプロセスは実行されていません。その間、ドライブを何度も再起動し、アンマウントして再インストールしました。

私が経験している問題は、他の同期を可能にするためにディスク容量を確保するためにdisk2から何かを削除したときにDolphinファイルブラウザに表示されない場合、または入力したとき、またはlsblk -f利用可能なディスク容量がある場合df(後者はまだ)表示されないことですです。列に 0) available) が表示されます。

Dolphinでファイルを右クリックして[削除]を選択してファイルを削除してみました。 「ごみ箱に移動」も試しましたが、バックアップ用のごみ箱フォルダのみがあり(Grsyncを使用して除外できません)、ドライブルートにはごみ箱フォルダはありません。

エマルジョン私は/home/パーティション(別のドライブ)で発生しましたが、再起動後に解決されました。再起動し、ドライブを取り外して再インストールし、Debian12にアップグレードした後も、ここで説明されている問題は消えません。

コンテンツを削除しても、空き容量はまだ/即時ゼロバイトです。それにもかかわらず、大きくて急成長しているファイルを確認しましたが、gdmap何も見つかりませんでした。アップグレード後にディスク上のファイルが開いているかどうかは表示されませんが、ディスク上のファイルは開いてはいけませんsudo lsof | grep "/media/"(一部のファイルが開いていても出力はありません)。

私はすでに試しました。この問題。たとえば、IUse%表示率が非常に低いです。sudo dumpe2fs /media/veracrypt2/ | grep -i reservedただ言っても出力は表示されdumpe2fs: Is a directory while trying to open /media/veracrypt2/ません。このドライブでは何も書いたり読んではいけません。sudo lsof +L1 | grep mediasudo lsof | grep deleted | grep media


不要な詳細をスキップしてください。

ログアウトしてから再度ログインしてセッションを再開すると、問題は解決すると思われましたが、問題は解決しませんでした。それでも空きディスク容量はゼロバイトとして表示されます。rm filenameまた、ディスク領域を確保しません。要求どおりに出力はlsof | grep deleted次のようになります。多くのメッセージが複数回表示され、一部の列を省略してIDを置き換えました。

pulseaudi ... /memfd:pulseaudio (deleted)
ksmserver ... /home/username/.cache/ksycoca5_{lang}_{id} (deleted)
plasmashe ... /home/username/.cache/ksycoca5_{lang}_{id} (deleted)
plasmashe ... /home/username/.cache/appstream/appcache-{id}.mdb (deleted)
vorta ... /usr/share/mime/mime.cache (deleted)
{texteditor} ... /home/username/.cache/ksycoca5_{lang}_{id} (deleted)
konsole ... /home/username/.cache/konsole/#{number} (deleted)

セッションを再開した後、プリンタプログラムは追加の.lockファイル、2つのpulseaudi、およびkonsoleファイルを開きますが、それはすべてです。 Dolphinが正しい空き容量を表示しても、lsblk -fまだディスク容量を確保できません。

もう一度試しましたが、lsof +L1それがすべてだったにもかかわらず(コンソールを開くと)、より多くのディスク容量が表示されませんでした。

COMMAND       PID     USER   FD   TYPE DEVICE SIZE/OFF NLINK    NODE NAME
konsole    549098 username   20u   REG  254,2        0     0 8257752 /home/username/.cache/konsole/#8257752 (deleted)
konsole    549098 username   21u   REG  254,2        0     0 8257764 /home/username/.cache/konsole/#8257764 (deleted)
konsole    549098 username   22u   REG  254,2        0     0 8259787 /home/username/.cache/konsole/#8259787 (deleted)
konsole    549098 username   23u   REG    0,1  3677184     0 2372415 /memfd:wayland-cursor (deleted)
veracrypt 2340184 username    9u   REG    0,1  3677184     0   69165 /memfd:wayland-cursor (deleted)
xdg-deskt 2340702 username    8u   REG    0,1  3677184     0   69892 /memfd:wayland-cursor (deleted)

私も試してみましたが、sudo lsof | grep deleted | grep mountname何の結果も得られませんでした。 mountnameは私がそこにマウントしたので、ディレクトリの一部です(sudo lsof | grep mountname1他のドライブで開いているファイルに対しては機能し、sudo lsof | grep mountname何も表示しません)。

これはベラ暗号化抜け穴、問題はここにあります

答え1

私はこのシナリオを別のコンピュータで何度も実行しました。あなたが私のような状況に直面することを保証することはできませんが、試してみる価値があると思います。

Veracryptと実際には関係のない2つの異なる質問があるようです。これだけコンテナファイルシステムの場合。

  1. ディスクがいっぱいです。一部のファイルを削除すると、ディスクはいっぱいのままです。

  2. ディスクそうしないでください。満ちる。

1. ディスクがいっぱいです。

ケース(1)はディスクを再マウントして再起動したため、削除されたファイルや説明されていないスペースには依存しません。これにより、削除されたオープンファイルが削除され、必要に応じてfsckが強制されます。

1.1何かを使い続けるディスクがいっぱいです。

もしそうなら、私たちには2つの解決策があります。一つは一部の既存のファイルに追加された内容はまだディスクに書き込まれています。(これは通常私のログファイルで発生します)。プロセスに書き込む必要がある20MBのバックログがありますが、ディスクがいっぱいで書き込めずに15MBのファイルを削除したとします。空き容量はすぐに再充填されます。これを確認する唯一の実用的な方法は、ディスクアカウントを実行し(他のデバイス上のファイルについて)、一部のファイルをls -laR削除してスペースを解放し、アカウントを再実行してから、2つのアカウントを比較することです。もちろん、2番目のファイルの一部のファイル(削除されたファイル)は消えましたが、他のいくつかのファイルも表示されたり、サイズが大きくなったことがわかります。

アカウントに開いているファイルのみを使用してこれを行うことができ、はるかに高速ですが、作成、入力、閉じられたlsofファイルが失われる可能性があります。

du -sk /mnt/disk/*/*/* > /tmp/before.txtたとえば、ディスクマウントポイントから最大3つのフォルダまで、すべてのフォルダのスペースを一覧表示することでこれを実行できます。これにより、サイズが大きくなったフォルダをすばやく消去できます。

1.2 ディスク確かに5%ルート予約のため、フル

2番目の可能性はファイルマネージャです。ルート予約スペースが正しく考慮されていません。。すべてではありませんが、ほとんどのLinuxファイルシステム予約一部のスペース(通常5%)はルート操作に使用され、いくつかの重要なパフォーマンスを向上させます。ルート起動操作でディスクがいっぱいになり、ルート以外のユーザーが残りの使用率が95%以上の一部のファイルを削除すると、ルート以外のユーザーはディスクが完全にいっぱいになっています。

以下を使用して、ファイルシステム全体と空き容量を確認できます。

tune2fs -l /dev/mapper/yourcryptdevicename

5%から1%に変更できます。

tune2fs -m 1 /dev/mapper/yourcryptdevicename

これにより、root以外のユーザーに残っている4%の空き容量が「再び表示されます」。

2. ディスクがいっぱいになってはいけません。

これは、500 GBのディスクに400 GBのファイルを挿入して埋める場合にのみ適用されます。差が 5% 未満の場合は理由 1.1 の影響なので、別途の説明なくこの方法で解決できます。

それ以外の場合、ディスク容量はデフォルトのブロック単位の倍数(4Kの可能性があります)として割り当てられます。これが発生すると、6Kファイルには2つのブロックが必要になります。これを作成すると、ディスク上の8Kの空き容量が失われます。これは時々呼び出されます。空きスペース平均は、ブロックサイズの半分に保持しているファイル数を掛けた値に等しくなります。

したがって、ラップトップからNASにソースツリーとライブラリツリーを同期させると、ラップトップには2Kブロック、NASには4Kブロック、つまり49Gbがあります。実際に使用1,797,479個のファイルがありますが、実行するとdu -sk --apparent-size44GBが得られます。 49GBは、実際には小さなファイルが多くの空き容量を占めるのを防ぐためのext4ファイルシステムのいくつかのトリックのおかげです。これらのトリックのないNASでは、最初からブロックが2倍になり、同じ44GBファイルが56GBを占めます。 SSD全体の価値を拡張すると、おそらく880GBのファイルがあるでしょう。1TB SSDドライブには適していません。

これが真であることを確認するには、次のように実行します。

tune2fs -l /dev/yourpartition | grep "Block size:"

une2fs出力には、何が起こっているのかを確認するのに役立つ追加情報があります。たとえば、同期している2つのディスクの出力を比較し、特定のファイルを削除してから同じディスクの出力を比較します。

Inode count:              365985792
Block count:              1463919616
Free blocks:              72775504
Free inodes:              176130892

答え2

以下から取得した情報Linuxのdfファイルが削除後に正しい空き領域が表示されない、他の回答、Google検索結果、経験と組み合わせられます。

多数のコメント作成者は回答の半分しか提供できません。lsof |grep deleted影響を受けたファイルのみがリストされていますが、上記のIgnacioの言葉を引用すると、次のようになります。

ファイル名を削除しても、実際にファイルが削除されるわけではありません。一部の他のプロセスがファイルを開いたままにしてファイルが削除されるのを防ぎます。ファイルを解放するには、プロセスを再起動または終了します。

使用:

lsof +L1 削除されたファイルを使用してすべてのプロセスを一覧表示します(コメントに基づいてこれを行いましたが、コメントではこれを行う理由はわかりません)。lsofは略語ですファイル記述子リストを開く。ここで重要な言葉は記述子。削除されたファイルを開いたままにしたプロセスを終了するには、ファイル記述子が必要です。これを使用してkill - 15 PIDプロセスを終了できます(PIDは上記の省略記号と共に出力にリストする必要があります)。 [参照:いつ-9プロセスを終了してはいけませんか??] または、次のように開いているファイル記述子を終了できます。

  1. cd /proc/PID/fd:PIDは楕円の中に数字でリストされます。コマンドのPIDをこの数字に置き換えます。 fdは略語ですファイル記述子
  2. procコメント作成者が提供したコマンドのバリアントを使用して、ファイルシステムの正しいPIDブランチにあることを確認してください。ls -l |grep deleted
  3. これで問題は、stderrとstdoutを次にリダイレクトする>/dev/null 2>&1ことです。(deleted)2>&1空のデバイス。また見なさい:パイプの出力を> / dev / nullにリダイレクトする方法dev/null詳細な説明とリダイレクト。

一部の読者は、最初のリダイレクト演算子の左側に何も記録されていない理由を尋ねるかもしれません。私はファイルディスクリプタディレクトリにあるので、ファイルディスクリプタは左引数であると仮定します。

答え3

私はveracryptレイヤーがディスク容量の問題に関連していないと思います。 Veracryptは、ファイルシステムについて何も知らないブロック階層です。 Ext4はブロックデバイスの上に位置するファイルシステムです。ディスク領域を回復しないと、ファイルシステムの問題です。

ブロックサイズ以外の考慮事項(他の回答で議論)は、スパースファイルとは別にコピーされるハードリンクファイルです。両方ともフラグによって管理されますrsync。どちらも選択したフラグによって無視されます。次の2つのコマンドのディスク使用量を比較することでこれを確認できます。

du -hsx /media/veracrypt1
du -hsxl --apparent-size /media/veracrypt1

リンクした質問から、システム全体のバックアップについて話しました。この場合/devと一般的に/tmp。しかし、ここではディレクトリパスを使用しているので、ここではそのパスを使い続けます。

rsync -axHS /media/veracrypt1/ /media/veracrypt2

メモ:

  1. スパースフラグは既存のファイルをスパースファイルに置き換えません。これらのファイルを直接処理するか、最初に削除する必要があります。
  2. 同様に、rsync同じですがまだハードリンクされていないファイルはすべてハードリンクされません。
  3. 元のコマンドでソースディレクトリパスサフィックスを追加する/media/veracrypt2/veracrypt1と、/最初にsourceというサブディレクトリを作成せずにターゲットに直接コピーを実行できます。

関連情報