非常に長い話ですが、スペースが不足している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サイズで使用されています...
だから私は今、リポジトリを削除することでスペースを取り戻しています...それでも、宇宙ではバランスがまだ回復していません...
ファイルを削除しても、論理ボリュームのサイズは変更されません(さらに、ボリュームグループの空き領域には影響しません)。
ボリュームグループは「仮想ディスク」のように、その上の論理ボリュームはパーティションのように考えることができますが、通常のパーティションよりも操作(サイズ変更、作成、削除)がはるかに簡単です。
カミルが言うように、作業中に「スペース不足」エラーが発生した場合、直接障害が発生しているのはLVMではありません。これは単純なファイルシステムエラーであり、df -h
を使用してスペース不足のファイルシステムを特定できます。そのファイルシステムで十分なものを削除すると、最終的にはより多くのスペースが得られます。ただし、LVMを使用すると、空き領域が山ほどあるファイルシステムと空き領域がないファイルシステムがある場合は、空き領域が多いLVを縮小してから、その領域を容量が不足しているLVに割り当てることができます。より効率的にディスクを割り当てました。
ファイルシステムを縮小および拡張するプロセスは少し危険であり(バックアップがあるため)、縮小段階はマウントされていないファイルシステムで実行する必要があります(したがって、シングルユーザーモードにドロップするのが適切であり、ルートファイルシステムを縮小することはできません。ファイルシステムの場合それをサポートします(XFS、ライザー、最近のext2/3)オンライン拡張を行うことができます)。一般的に、プロセスは次のとおりです。
resize2fs /dev/mapper/VolGroup00-largeLV xG
など)。少し小さく縮小する理由は、計算を間違えてLVをファイルシステムよりも小さく縮小すると、詰め込まれてしまうためです。lvresize -L xG VolGroup00/largeLV
)resize2fs /dev/mapper/VolGroup00-largeLV
lvresize -L+nG VolGroup00/smallLV
resize2fs /dev/mapper/VolGroup00-smallLV
これで、どこにでも十分なスペースがあるはずです。
いくつかのヒント:
lvs
は、すべてのLVとそのサイズを一覧表示しますvgs
を使用すると、VGのすべてのサイズと空き容量をすばやく表示できます幸運を!
/ 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を実行すると、空き容量があることが示されます。
ボリュームグループの空き容量は変わりません。それはすべて、フォーマットしたファイルシステムによって割り当てられます。ファイルを削除すると、ファイルシステムからiノードエントリのみが削除されますが、ファイルシステムは引き続きスペースを要求します。
ボリュームグループ内のスペースを再利用する唯一の方法は、論理ボリュームのサイズを変更するか削除することです。
しかし、あなたが説明していることは、単にディスク容量が不足しているように聞こえます。 VMのdf -h
の出力を確認し、リポジトリが存在するボリュームにどれだけの空き領域があるかを確認する必要があります。
SVNサーバーを再起動してみてください。ファイルを削除してもスペースが解放されない場合は、何らかの方法でファイルを使用している必要があります。これは、アクティブなログでも発生します。私はかつて1時間に10mb増加するログを持っていたので、すぐにログを削除する必要がありましたが、そのログに吐き出されていたデーモンを再起動するまでスペースを解放しませんでした。
編集:私はこれが起こる理由を調べました。 linux/unixリファレンスはファイルをカウントしているようです。そのため、ファイルを開いているすべてのプロセスによって解放されるまで、ファイルを削除できます。