web-dev-qa-db-ja.com

ボリュームグループのスペースが不足しています。どうすれば回収できますか?

非常に長い話ですが、スペースが不足しているSVN VM(vmwareサーバー)があります。スペースが足りないと書いてあるのでコミットできません。 VMには、1つの80GB仮想ドライブ(hda)、/ bootパーティション、および/用の大きなVG(VolGroup00)が接続されています。

古いSVNリポジトリをアーカイブしてディスクから削除していますが、空き領域が戻っていません。このスペースを再び使用できるようにするには、何をする必要がありますか?私はほとんどすべてにLinuxを使用していますが、何が起こっているのかを知るのに十分なほどLVMで遊んだことはありません。

vgdisplay出力:

--- Volume group ---
VG Name               VolGroup00
System ID             
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               74.41 GB
PE Size               32.00 MB
Total PE              2381
Alloc PE / Size       2380 / 74.38 GB
Free  PE / Size       1 / 32.00 MB
VG UUID               dPSZpL-kFBn-HpkH-ChfO-dw9q-YGg2-qHOiQF

昨日からスペースが解放されました...

Df-hの出力

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       72G   67G  959M  99% /
/dev/hda1              99M   15M   80M  16% /boot
tmpfs                  62M     0   62M   0% /dev/shm

Lvsの出力

LV       VG         Attr   LSize  Origin Snap%  Move Log Copy% 
LogVol00 VolGroup00 -wi-ao 73.38G                              
LogVol01 VolGroup00 -wi-ao  1.00G

959Mが利用可能であると書かれているので、まだ奇妙に思えますが、67Gは72Gサイズで使用されています...

だから私は今、リポジトリを削除することでスペースを取り戻しています...それでも、宇宙ではバランスがまだ回復していません...

3
Daniel Huckstep

ファイルを削除しても、論理ボリュームのサイズは変更されません(さらに、ボリュームグループの空き領域には影響しません)。

ボリュームグループは「仮想ディスク」のように、その上の論理ボリュームはパーティションのように考えることができますが、通常のパーティションよりも操作(サイズ変更、作成、削除)がはるかに簡単です。

カミルが言うように、作業中に「スペース不足」エラーが発生した場合、直接障害が発生しているのはLVMではありません。これは単純なファイルシステムエラーであり、df -hを使用してスペース不足のファイルシステムを特定できます。そのファイルシステムで十分なものを削除すると、最終的にはより多くのスペースが得られます。ただし、LVMを使用すると、空き領域が山ほどあるファイルシステムと空き領域がないファイルシステムがある場合は、空き領域が多いLVを縮小してから、その領域を容量が不足しているLVに割り当てることができます。より効率的にディスクを割り当てました。

ファイルシステムを縮小および拡張するプロセスは少し危険であり(バックアップがあるため)、縮小段階はマウントされていないファイルシステムで実行する必要があります(したがって、シングルユーザーモードにドロップするのが適切であり、ルートファイルシステムを縮小することはできません。ファイルシステムの場合それをサポートします(XFS、ライザー、最近のext2/3)オンライン拡張を行うことができます)。一般的に、プロセスは次のとおりです。

  1. スペースを削除するファイルシステムを、最終的なサイズよりも少し小さいサイズに縮小します(resize2fs /dev/mapper/VolGroup00-largeLV xGなど)。少し小さく縮小する理由は、計算を間違えてLVをファイルシステムよりも小さく縮小すると、詰め込まれてしまうためです。
  2. スペースを削除するLVを必要なサイズに縮小します(lvresize -L xG VolGroup00/largeLV
  3. そのLV上のファイルシステムをLVの新しいサイズに拡張します:resize2fs /dev/mapper/VolGroup00-largeLV
  4. 小さすぎて新しい大きいサイズのLVを成長させます:lvresize -L+nG VolGroup00/smallLV
  5. 小さすぎるLVのファイルシステムを新しい大きなサイズに拡張します:resize2fs /dev/mapper/VolGroup00-smallLV

これで、どこにでも十分なスペースがあるはずです。

いくつかのヒント:

  • lvsは、すべてのLVとそのサイズを一覧表示します
  • vgsを使用すると、VGのすべてのサイズと空き容量をすばやく表示できます
  • スワップがLVM上にある場合、マシンがあまり機能していない場合は、一時的な空き領域を確保するのに適した場所であることがよくあります。

幸運を!

8
womble

/ dev/sdaはローカルですか、それともSAN上にありますか?それがSAN上にある場合は、希望があります。ローカルで、使用可能なすべてのスペースを使用している場合は、ファイルを削除してディスクスペースを解放する必要があります。

質問を更新して、ステータスをお知らせください。

編集

ああ、それはVMです!運が良かったです(とにかく、ホストマシンに空き容量がある場合)。

VMマネージャーで、空き領域と同じ大きさの別の仮想ディスクを作成します。次に、そのディスクイメージをVMに提示します。

VMがそれを認識していることを確認します(dmesgを使用して、表示されるかどうかを確認します)。

問題

 pvcreate /dev/whatever1  

「何でも」は明らかにデバイスです。おそらくsdb。 1は、作成したばかりのパーティションです。この物理ボリュームを作成するのに問題はないはずです。

今、実行します

 vgextend VolumeGroupName /dev/whatever1 

Vgdisplayを使用して、ボリュームグループに空き領域があることを確認できます。次に、論理ボリュームを増やします。

 lvextend -l +100%FREE 

これにより、論理ボリュームが拡張され、ボリュームグループがいっぱいになります。

今トリッキーな部分。 ext3ファイルシステムがあると仮定すると、ライブでサイズを変更できるはずです。

 resize2fs /dev/volgroup/logicalvolume 

(ここで、volgroupとlogicalvolumeは、/にマウントされているものへの実際のパスです)

ボリュームがマウントされているため、ライブサイズ変更を行っていると表示されます。df-hを実行すると、空き容量があることが示されます。

2
Matt Simmons

ボリュームグループの空き容量は変わりません。それはすべて、フォーマットしたファイルシステムによって割り当てられます。ファイルを削除すると、ファイルシステムからiノードエントリのみが削除されますが、ファイルシステムは引き続きスペースを要求します。

ボリュームグループ内のスペースを再利用する唯一の方法は、論理ボリュームのサイズを変更するか削除することです。

しかし、あなたが説明していることは、単にディスク容量が不足しているように聞こえます。 VMのdf -hの出力を確認し、リポジトリが存在するボリュームにどれだけの空き領域があるかを確認する必要があります。

1
Kamil Kisiel

SVNサーバーを再起動してみてください。ファイルを削除してもスペースが解放されない場合は、何らかの方法でファイルを使用している必要があります。これは、アクティブなログでも発生します。私はかつて1時間に10mb増加するログを持っていたので、すぐにログを削除する必要がありましたが、そのログに吐き出されていたデーモンを再起動するまでスペースを解放しませんでした。

編集:私はこれが起こる理由を調べました。 linux/unixリファレンスはファイルをカウントしているようです。そのため、ファイルを開いているすべてのプロセスによって解放されるまで、ファイルを削除できます。

0
Boes