Oracle

是否有任何技巧可以在沒有文件系統的情況下通過 UDEV 規則線上調整原始 LVM 大小?

  • March 11, 2016

例如,這裡是邏輯卷:

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

   lvdisplay /dev/mapper/Lv_OraD*

UDEV 規則原始 LV:

   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 Diskgroup 可能是這樣的:

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

效果:無法使用 DISKGROUP DATA1 最大 2G 的大小。

那麼有什麼技巧可以線上實現這個結果嗎?

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

謝謝。

首先找到磁碟名稱和路徑:

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_MB的92160 TOTAL_MB

引用自:https://dba.stackexchange.com/questions/131931