何が起こったのかわかりません。昨夜、私のコンピュータのシステムパーティションに約700 MBの空き容量がありました。右テキストなどのデータ(空白の文書アイコンがあります)一部のファイルを削除しても変更は表示されません。まだ空き容量はありません。そのファイルは永久に削除され、削除プロセスでは使用されませんでした。
sync
昨日は初めて一つを指揮しました。今日私もrootとして次のことをしましたsync; sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
。
パーティションや物理ファイルシステムに問題があるようです。システムを再起動してからかなり長い時間が経ち、今すぐやりたい最後の作業はこれではありません。
また、端末にコマンド履歴がないことがわかりました。ファイルが.bash_history
空です。キャッシュ不足のためですか、それともディスクが破損していますか?最初の場合、bashの記録やその他の注目すべき点から何が消去されていますか?
昨日はファイル検索などの作業でディスクを一生懸命働かせましたが、それ以降は夜まで何の問題もありませんでした。
私が気づいたもう一つの迷惑なのは、ワーカープロセスですupdate-apt-xapian-index-dbus
。
他のエラーは見えません。システムはまだ動作し安定しています。私のシステムで何が起こっているのか知りたいです。提案するものはありますか?診断する方法?実際の空き容量とファイルサイズを表示するには?再起動する必要がありますか?
編集:もう一つのことは、Shift + Delなどのキーストロークが機能しないことです。夜に作成されたファイルを見つけようとすると、find / -ctime=0
古いファイルも表示されます-mtime
。 。
**編集:ちょうどファイル名が見つかりましたが、.xsession-errors
サイズは約650MBです。たぶん私は失われたスペース(まるで)かもしれませんが、今日1時間前にアクセスして修正しましたが、いつ作成されたのかわかりません(確認できません)。 。これはどうですか?このファイルの横にあるファイルは、.xsession-errors.old
最後の再起動日に変更され、サイズが0.5 MB未満です。今「空きスペース」を見つけましたか?
コマンドがsync
パーティショニング問題の原因になる可能性がありますか?どこか見たようですが本当に可能でしょうか? **
編集:ファイルを開いて.xsession-errors
その中に表示されているのは、ディスプレイウィンドウの説明と何千Illegal character <2e> in hex string
、何百万行もの実際のエラーでしたWrite error: Unknow error
。ディスクに空き容量ができるまで書くと思います。この文字は常に<2e>ではありませんが、最も繰り返されます。
答え1
ファイルサイズを見つけるためにパーティションが破損している場合、fsを確認するまで正しいサイズは報告されません。FSCK。fsck -P
実行して識別できるルートディスクで操作を実行し、次のdf -h
結果を得る必要があります。
user@server:~> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 25G 18G 5.9G 76% /
udev 2.0G 116K 2.0G 1% /dev
/dev/sda1 244M 20M 211M 9% /boot
/dev/sda5 4.0G 1.7G 2.2G 43% /var
/dev/sda6 4.7G 1.2G 3.3G 27% /tmp
/dev/sdb1 197G 127G 61G 68% /data
Grubからリカバリモードで起動するか、ディスクからリカバリモードで起動する必要があります(推奨)。ファイルシステムが破損すると、ユーティリティが破損して破損を引き起こす可能性があるため、ライブ環境はより良い選択/
ですfsck
。ライブ環境で起動できる場合、デフォルトではインストールされない/
ため、dfは役に立ちません。これを実行すると、sudo fdisk -l
使用可能なディスクが一覧表示され、確認されたらターゲットfsck
デバイスで実行できます。
また、アーカイブされたすべてのログをコピーする必要があります。ドライブがエラーではなく、いくつかのスペースを消去できると仮定すると、リアルタイムローリングログ出力はエラー診断に非常に重要です。次のようなものを使用することも検討できます。システムログ別のボックスのデータベースにログを記録するために使用されます。これにより、ディスクに問題があるときにログにアクセスできます。
答え2
他の答えで述べたように、できるだけ早くfsckを実行したいかもしれません。特にファイルサイズが0であるにもかかわらず、ファイルの内容にアクセスできる場合は、まずバックアップを作成します。
tarバックアップと他のコンピュータへの復元でファイルサイズを変更できることを確認してください。
cd /to/problem/area
tar -zcf - . | ssh [email protected] tar -C /some/safe/dir -zxvf -
その場合は、すべてをバックアップしてから回復モードで再起動し、すべてをfsckしてください。
答え3
1年以上私は何の理由もなく私に迫ってくる分裂と腐敗に対抗して戦ってきました。 LiveCDを使用してもデータの制御と回復に問題があります。回復ツールに移動する準備が整いましたが、gpartedとgpartが私が本当に必要なのは、データをバックアップして管理できることに気づきました。
残念ながら、gpartedは私のフォルダとファイルを正しく識別し、ドライブ構造を決定しましたが、パーティションテーブルに違いがあると報告しただけで修正はしませんでした。 「デバイス」はデータ回復機能を提供しますが、これを行うにはgpartをインストールする必要があります。 LiveCD にはなく、LiveCD で許可されている限られたストレージにはありません。どこにでも移動するには、完全なインストールとアップグレードを実行する必要があります。
ただし、完全な再構築がなければ、破損したドライブに日付をインストールすることはできません。だから
/dev/sdb1をrootとして選択し、リムーバブルドライブのスワップパーティションに加えて他のパーティションが選択されていることを確認しました。インストーラは既存のスワップパーティションも機能すると仮定しますが、これは破損したドライブの危険な前提です。インストールは順調に行われましたが、以前のディストリビューションを捨て、itdの場所でUbuntuGnome 16.04を使用しました。私は私のトラブルの原因が古いディストリビューションを非難したいのですが、確信しています。
インストールは順調に進んでいますが、状況は異なります。数時間使ってみた結果、以前のディストリビューションよりも気に入ったという確信がありました。やや原始的で欠陥のある部分もありますが、全体的にはかなり良いです。ブラウザとしてFirefoxだけがあり、gpartやparted、または他の回復ツールがないことは気に入らない。しかし、DVDディスクの弱点を見てみると、以前のディストリビューションよりもバンドルソフトウェアが2倍ほど多いためです。
私は以前のディストリビューションをもう使用しないことにしましたが、LiveCDの操作が不便であることがわかったので、2番目の新しいパーティションに2番目のインストールを実行することにしました。どちらのインストールでも、デフォルトの/dev/sdaの代わりに/dev/sdbに起動プロセスを配置しました。 / dev / sdaが破損しているため、/ homeの下にユーザーアカウントをコピーするまで記録されません。そうしないと、誤って状況が悪化する可能性があります。新しいインストールを実行するか、端末でupdate0grupを実行するたびに、現在のインストールがデフォルトのインストールになります。これでリムーバブルドライブを起動する準備が整いました。以前は、/dev/sda の 3 つのパーティションのうち 2 つから /home を除くすべてのエントリを削除しました。 LiveCDからパーティションをマウントしたら、ターミナルを使用して次のコマンドを入力できる必要があります。
sudo su root
cd /m*/*/*/home
最初のコマンドは、そのターミナルセッション内でタイムアウトなしで永続ルートIDと電力を提供します。ただし、$ HOMEと$ USERは変更されません。ただし、「~」は/rootに変更されます。 「exit」と入力するか、別のIDで「su」を実行してルートを終了できます。
2番目のコマンドは修正が必要な場合があります。 /mnt、/media、または「m」で始まる別のフォルダの下にパーティションをマウントできます。通常、Linuxシステムには2つあります。ただし、「m」がなくても「home」フォルダの2つのレベルがある場合にのみ、コマンドは成功します。 「home」があるドライブではない場合は、パーティションからフォルダ名を選択してお手伝いします。パーティションに何があるかわからない場合は、次のコマンドシーケンスを使用してほとんどの情報を確認できます。
cd /m*/$USER; dir *; dir */
スクロールすると見えないことがあります。上下にスクロールするには、Ctrl + Shiftキーを押しながら上下矢印キーを使用します。アクセスしたいパーティションを確認した後、「cd」を実行してください。今回もテキストの一部だけを入力し、*を使用して残りを埋めます。
ここでユーザーアカウントを維持し、他のすべてを削除するので、使用中の「ホーム」が正しいパーティションにあるとします。実際、この時点ではすでに.../homeにあります。したがって、削除するすべての項目は前のレイヤーにあります。現在のレベルを識別するには1つのピリオド(.)のみを使用し、前のレベルを識別するには2つのピリオド(..)を使用します。これで、「home」はこのレベルで「h」で始まる唯一のフォルダなので、作業が簡単になります。
rm -r ../[!h]*
このコマンドは、「h」で始まらないすべてのエントリを再帰的に削除します。これにはファイルとフォルダが含まれ、-r は名前に「h」が含まれているかどうかに関係なく、そのフォルダの内容を表すために使用されます。それはすべてです。可能であれば、データを削除してみてください。ただし、これを行うには、新しくインストールされた2つのパーティションのうちの1つを起動することを意味するgpartが必要です。それで、「今すぐ再起動」と入力してから、再起動プロセスを完了しました。
私は計画どおりに進んだが、apt-getや他のいくつかのコマンドを使用してターミナルウィンドウを介して必要であり、必要ないくつかのソフトウェアをインストールした後、次のように/etc/sudoersを修正することにしました。
sudo echo $USER ' ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
ファイルに何かを追加したい場合は、実際にファイルを編集する必要はありません。これにより問題が解決します。 「sudo」を使用すると、パスワードの入力を求められません。
それが終わったら、データをどのように取得するか心配する。 gpartは素晴らしい仕事をし、gpartedがそれを呼び出したときに3つのパーティションのうち2つを再び読み取ることができました。 -wパラメーターを使用すると、読み取った内容を別の場所にコピーしますが、すでに存在する内容を上書きすることもできます。 rsyncを使用すると、最新のエントリを保持するインクルードと除外との同期を可能にしますが、「cp -purf」も同様ですが、インクルードと除外の利点はありません。しかし、ゴミ以外には心配することはありません。そしてddrescue、私はダウンロードした複数のリカバリディスクISOの内容も研究していません。とにかく、私は破損したドライブを回復することに興味がなく、可能であればデータを消去して再起動するだけです。
その後、新しいインストールでパーティションの問題が発生しました。今、私はこれが2つの理由の1つであると確信しています。 ext4 waaが破損または交換されました。これは私が長い間使用してきた唯一の2つのパーティションタイプです。他のすべては変更されましたが、これら2つの定数はスワップを処理する方法がわかりませんが、長い間使用されてきました。おそらくext4である可能性が高いです。変更できます。
LiveCDとgpartedを含むリムーバブルドライブから始めました。 Oバージョンをロールバックしてext3を試してみることができると思いました。もう一度検索してみると、ext4より悪いことがわかりました。 fsckは、ext4がext3を処理していて、きれいであることが確認された新しくフォーマットされたドライブで膨大な量のエラーを発見していることを示しました。わかりましたが、別の拡張子はありませんか?この形式はもう存在しなくなり、ext4の古いコピーを取得する唯一の方法は古いLiveCDを使用することです。 1年以上サポートする必要がありますが、インストールに役立つ可能性がありますが、最初のアップグレードでは欠陥があると思われるバージョンに置き換えられます。
バグレポートを有効にしましたか?いいえ、私もそうする予定はありません。まず、これは私の個人的な経験なので、他の誰にも言うことはできません。 4台のPCと6台のハードドライブでこれが起こるのは、偶然の一致でも誤ったソフトウェアの組み合わせを反映することもあります。正しいですか?確認が必要なので、運が悪くてext4を使用している場合は、これについて議論する価値があります。
第二に、私はユーザーに証明責任を課したり、投稿や投稿を必要な概念に制限したり、すべての良い内容が枠組みから出ているわけではないサイトに疲れました。エラーがある場合は、自分で修正する必要があります。私に特定のパッケージや組み合わせを指して「ちょうどそれだ!私が見つけた!」と聞かないでください。ここではそれが私の役割ではありません。私は管理者や開発者ではなく、単なるユーザーです。
つまり、パーティションに別の構造を選択する必要がありますが、どの構造を選択する必要がありますか?オンラインで確認した結果、これは大きなトピックではなく、単に個人の選択にかかっていることがわかりました。次に、「他のもの」を使用するときにgpartedとインストーラのオプションを検討しました。彼らは同意しません。もちろん、いくつかの大会がありますが、多くはありません。 ext2、ext3、およびext4の選択はすぐに失われますが、FAT16、FAT32、およびNTFSも除外する必要があります。理由は説明しません。 WindowsやDOSの互換性が必要な場合以外は選択しないでください。簡単に説明します。 FAT16は非常に限られており、フロッピーディスクで最もうまく機能し、FAT32は弱く、NTFSにはバグがあり、WindowsやLinux側には良い回復ツールはありません。
1つのパーティションタイプを選択する代わりに、少なくとも2つを選択することにしました。 gpartedとインストーラの間の重なり合う部分は3mです。私はjfsとxfsを選択しました。各パーティションに1つずつ両方を実行しましたが、これまで問題はありません。
データ復旧の場合、3番目のパーティションは完全に消えました。スワップパーティション(4番目のパーティション)のパーティションテーブルエントリが約6 GBから約58 GBに増加し、3番目のパーティションのかなりの部分がマッピングされました。とにかく、そこに物を入れましたが、実際に使用する時間がないので、これは一般的に重複します。
私は「cp -purfを使用することにしました。フォルダとファイルが破損していない場合は簡単に入手できます。もちろん私は望んでいません。/dev/sda1/*を/dev/sdb1/に復元して/dev/sda2/* tp dev/sdb2/ 私は別のステップを踏み出しました: /dev/sda1 と /dev/sda2 を読み込んでマウントしましたが、ここ数カ月の間に多くのことが起こりました。今ここから抜け出せたらと思います。
ああ、実際に使用されたコマンドは次のとおりです。
dir /mnt
sudo -i
mkdir /mnt/sda1
mkdir /mnt/sda2
mkdir /mnt/sda3
sudo mount -o ro /dev/sda1 /mnt/sda1
sudo mount -o ro /dev/sda2 /mnt/sda2
sudo mount -o ro /dev/sda3 /mnt/sda3
dir /mnt/sda1
home hope
dir /mnt/sda2
hold home
dir /mnt/sda3
lost+found
dir /mnt/sda3/lost+found
mkdir /mnt/hold1
cp -rfup /mnt/sda1/home/* /media/$USER/sdb1/home/; cp -rfup /mnt/sda2/hold/* /media/$USER/sda1/home/; cp -rfup /mnt/sda2/home/* /media/$USER/sdb2/home/; cp -rfup /mnt/sda2/hope/* /media/$USER/sda2/home/
この手法を使用して、/dev/sda1にある2つのフォルダを/dev/sdb1にある1つのフォルダにマージし、他の2つのパーティションに対しても同じことをしました。それでは/dev/sdaで再起動し、gpartedを再起動します。破損したドライブを修理するよりも高速で徹底的です。これはせいぜい不確実な提案です。
答え4
何が起こったのかについての私の推測は次のとおりです。
- .xsession-errors ファイルが 650 MB 以上のゴミで満たされました。
- これにより、デフォルトのパーティションがいっぱいになります。
- まだ実行中の多くのプログラムが引き続き実行され、プライマリパーティションのファイルに書き込もうとします。
以下のいくつかのガイドラインは彼の問題のいくつかを説明しています。
物理ディスク領域
コンピュータのディスク使用量を確認するには、次のdf
コマンドを使用します。例は次のとおりです。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 10G 4.5G 4.5G 50% /
/dev/sda5 25G 22.5G 0G 100% /home
これにより、ディスクの空き容量が表示されます。
上記の例が少し奇妙であることがわかります。で/dev/sda1
指定されたパーティションサイズは10Gです。ただし、「Used」列と「Available」列を追加すると、9Gしか表示されません。同じです/dev/sda5
。 「used」列と「free」列は、ファイルシステムのサイズより数倍小さいです。何を提供しますか?
デフォルトでは、extパーティションは次のコマンドを使用して作成されます。予約済みスペース、ファイルシステムの一部は通常のユーザーでは使用できませんが、rootユーザーは使用できます。そのうち、両方の予約済みスペースは10%/dev/sda1
です。を使って予約済みのスペースを確認/dev/sda5
できます。/dev/sda1
tune2fs -l /dev/sda1
プログラムがディスクに書き込むときに何が起こるか
要約すると、パーティションがいっぱいになると、プログラムはファイルシステムに書き込むことができません。
しかし、プログラムがファイルシステムに書き込めない場合はどうなりますか?これを説明するには、プログラムが2つのステップでファイルシステムに書き込むことを覚えておく必要があります。
- プログラムはオペレーティングシステムからファイル記述子(書き込み権限を含む)を取得します。
- プログラムはファイル記述子にデータを送信します。その後、オペレーティングシステムは記録するデータをキューに入れることができます。
興味深いことに、これはカーネルのファイル表現と一致して、以下を区別します。
- ファイルサイズ、権限などを記述するディスクブロック - 別名インデックスノード
- ファイルの内容を格納するディスクブロック - とも呼ばれるデータブロック
Inodeはデータを保持するブロックに比べて小さい。ほとんどのファイルシステムはデータブロックが消費するスペースとinodeが消費するスペースを区別するため、これを行うとデータdf -h
ブロックのスペースのみが報告されます。使用可能なスペースの面では、inodeは含まれません。
これはあなたの状況とどのような関係がありますか?
ディスクがいっぱいであったとしても(実際には100%いっぱいであり、ディスク容量はありません)、システムがディスクに書き込むことができないという意味ではありません。プログラムはまだファイル記述子を取得でき、サイズが0の空のファイルを生成します。ただし、これらのファイルにデータを書き込むことはできません。ディスク領域の問題が原因でファイルを書き込めない場合、多くのプログラムでエラーメッセージが表示されるか、競合が発生します。ただし、最終的にはディスクにサイズが0のファイルが残ります。
書き込み失敗の例
バッシュを例に挙げましょう。
- bash は、コマンド履歴を
HISTFILE
開くように指示する変数を開始して読み込みます。.bash_history
HISTSIZE
変数に応じて、bashは1000行の履歴(または設定した内容)のみを受け入れます。- いくつかのコマンドを実行して終了します。
- bashは、レコードの最後の1000個のコマンドを.bash_historyに書き込もうとします。
- bash は書き込みファイル記述子を取得します。
.bash_history
- Linux は 0 サイズの .bash_history ファイルを生成します。
- bashは履歴ファイル記述子に1000行のデータを送信します。
- ディスク容量によるLinux書き込みエラー
- bash は書き込みファイル記述子を取得します。
- サイズが0の.bash_historyファイルが残ります。
このプロセスは、これを試みるすべてのプログラムで簡単に繰り返すことができます。書く単にファイル全体ではない追加ファイルの最後まで。したがって、ログファイルを更新したくありませんが、ゼロに設定したくありません。
ディスクへの書き込みを試みるすべてのプログラムは上記の問題の影響を受けます。
しかし、ちょっと待ってください。システムがクラッシュしたわけではありませんか?
。df
このスペースは、パーティションの合計サイズの1〜10%でなければなりません。
コンピュータを再起動する必要がない可能性があります。ただし、ディスク上の一時ファイルに変更を書き込もうとする一部のプログラムはこれを実行できないため、システムの信頼性を信頼できません。デスクトップを実行しているため、これらのプログラムが何であるかを確認するのは困難です。確実にするために、スペースを確保して再起動することをお勧めします。