web-dev-qa-db-ja.com

LVMシンプールを削除できません-tdata、tmetaを非アクティブ化できません

どういうわけか、ubuntu 14.04でシンプロビジョニングされたlvmボリュームを台無しにしたので、すべてのボリュームとデータが含まれているシンプールを削除することから始めます。残念ながらこれは失敗し、解決策を見つけることができません。

論理ボリュームは次のようになります。

user@server1:~$ Sudo lvs
  dm_report_object: report function failed for field data_percent
  LV             VG   Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  project2       vg0  Vwi-i-tz-  22.00g mythinpool       
  project1       vg0  Vwi---tz-  20.00g mythinpool                                      
  project3       vg0  Vwi---tz-  21.00g mythinpool                                      
  home           vg0  -wi-ao--- 140.00g                                                 
  mythinpool     vg0  twi-i-tz-  78.82g                    52.15                        
  root           vg0  -wi-ao---  10.00g                                                 
  swap           vg0  -wi-ao---   4.00g                                                 
  tmp            vg0  -wi-ao---   5.00g           

次に、3つのlvmsが含まれているシンプールを削除します。

Sudo lvremove /dev/vg0/mythinpool

Removing pool mythinpool will also remove 3 thin volume(s). OK? [y/n]: y
Do you really want to remove and DISCARD logical volume project1? [y/n]: y
  device-mapper: message ioctl on  failed: Invalid argument
  Unable to deactivate open vg0-mythinpool_tdata (252:5)
  Unable to deactivate open vg0-mythinpool_tmeta (252:4)
  Failed to deactivate vg0-mythinpool-tpool
  Failed to resume mythinpool.
  Failed to update thin pool mythinpool.

Mythinpool内のデータは気にしませんが、ボリュームグループvg0の残りの部分はそのままにしておく必要があります。どうすればこの問題を解決できますか?これについて助けてくれてありがとう.

EDIT 1:shodanshokからの回答に従って、CentOS7を起動して1つのLVMイメージを削除することができましたが、シンプールを含む他の2つのボリュームに問題はありません別のエラーメッセージを返します-transaction_idの不一致:

enter image description here

Lvconvert --repairに使用できるスペースもありません

3
merlin

私は最後に、ここで説明するいくつかの簡単な手順でそれを非常に解決しました: 破損したLVMシンプールを削除

vgcfgbackup -f  vg.bak   vgname

//edit vg.bak and remove all thinp related volumes

vgcfgrestore -f vg.bak  vgname

@shodanshokのアドバイスに従って、USBスティック上のサーバーに固定されたLive CentOS7を起動した後、説明されているコマンドを発行し、最終的に同じ内部にあるルートファイルシステムを損傷することなく、破損したシンプールを取り除くことができました。ボリュームグループ。

最終的に解決策に導いた有益なアドバイスをありがとうございました。

4
merlin

何かが、シンボリュームを開いたままにしています。以下を行ってください:

  • ボリュームがマウントされているかどうかを確認します。その場合は、マウントを解除します
  • アンマウントできない場合は、実行中のプロセスによって一部のファイルがまだ開かれている可能性があります。 lsof | grep mountpointを使用して、問題のプロセスを見つけることができます。それらを殺し、ファイルシステムをアンマウントしてみてください
  • これが失敗した場合は、マシンを再起動して、シンボリュームに関連するファイルシステムをアンマウントしてください。
  • それでもボリュームをアンマウントできない場合は、シングルユーザーモードで再起動し、ボリュームをアンマウントして、ボリュームを削除してください。
  • 他のすべてが失敗した場合は、ライブCD/USBイメージを使用してPCを起動し、問題のあるボリュームを削除します。

編集:

ライブイメージは使用できず、レスキューシステムはシンボリュームをサポートしていないため、別のルートを試すことができます。基本的に、シンボリューム/プールに「スキップアクティベーションフラグ」を設定し、マシンを再起動します。次の手順を実行します:

  • アクティベーションスキップを設定:lvchange -ky vg0/project1 ; lvchange -ky vg0/project2 ; lvchange -ky vg0/project3 ; lvchange -ky vg0/mythinpool
  • マシンを再起動すると、ボリュームが非アクティブになります
  • lvremoveで削除できます

ただし、これらのボリュームのいずれかがマシンの起動に必要な場合は、起動できないマシンで終了します。リカバリコンソールなどを使用してマシンを復元するには、必ず「プランB」を用意してください。

編集2

システムが-kフラグをサポートしていない場合は、lvchange -aay volumenameを使用して再起動できます。これにより、ボリュームが自動アクティベーション用に設定されます。これは、/etc/lvm.confで指定されたボリュームに対してのみ機能します

1
shodanshok