web-dev-qa-db-ja.com

ファイルシステムなしでUDEVルールによって生のLVMをオンラインでサイズ変更するトリックはありますか?

たとえば、ロジックボリュームは次のとおりです。

   lvcreate   -L2G -n Lv_OraD1 vg_db
   lvcreate -L180G -n Lv_OraD2 vg_db

   lvdisplay /dev/mapper/Lv_OraD*

LVを生にするUDEVルール:

   vi /etc/udev/rules.d/60-raw.rules

   ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="3", RUN+="/bin/raw /dev/raw/raw1 %N"
   ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="4", RUN+="/bin/raw /dev/raw/raw2 %N"
   ACTION=="add",KERNEL=="raw[1-9]",OWNER="grid",GROUP="dba",MODE="660"

   start_udev
   raw -qa

ASMディスクグループは次のようになります。

   CREATE DISKGROUP DATA1 NORMAL REDUNDANCY  
   FAILGROUP Fg1 DISK '/dev/raw/raw1' SIZE 2048M ,'/dev/raw/raw2' SIZE 184320M;

効果:DISKGROUPDATA1の2Gサイズアップは使用できません。

それで、この結果をオンラインで達成するためのトリックはありますか?

   lvreduce -L90G /dev/mapper/Lv_OraD2
   lvextend -L90G /dev/mapper/Lv_OraD1

ありがとう。

1
Jason Smartree

まず、ディスク名とパスを見つけます。

select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;

縮小するディスクのASMで生成された名前を見つけたら、ASMで目的のサイズに縮小します(DATA1_0002と呼ばれると仮定します。

alter diskgroup data1 resize disk DATA1_0002 size 90G;

これによりリバランスが開始され、リバランスが完了するまで待ちます。進行状況は次のように表示されます。

select * from v$asm_operation;

リバランス後、次のクエリを再度実行します。

select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;

縮小したばかりのディスクの元の184320OS_MBと92160TOTAL_MBが表示されます。次に、lvreduceを使用してLVを縮小します。

lvreduce -L 90G vg_db/Lv_OraD2

LVのサイズをASMディスクサイズTOTAL_MBより小さくしないでください。

それが完了したら、他のLVを増やします。

lvextend -L 90G g_db/Lv_OraD1

ASMに戻り、これを再度実行します。

select name, failgroup, path, os_mb, total_mb, free_mb from v$asm_disk;

ここで、最初のディスクのOS_MBは92160に増加するはずですが、TOTAL_MBはまだ2048のままです。

最後のステップは、ASMの最初のディスクサイズを増やすことです。

alter diskgroup data1 resize all;

上記は、ディスクグループ内のすべてのASMディスクのサイズをOS_MBまで変更します。これにより、別の短いリバランスがトリガーされ、それが完了すると、両方のディスクのOS_MBTOTAL_MBに92160が表示されます。

1
Balazs Papp