Linuxで3ストライプボリュームを作成するには、2ストライプLVMに3番目のデバイスを追加します。

Linuxで3ストライプボリュームを作成するには、2ストライプLVMに3番目のデバイスを追加します。

現在LVMのない2TBハードドライブがあり、すぐに2番目のハードドライブを追加して2ストライプボリュームを構成します。そのため、3番目のハードドライブを追加する必要がある場合は、将来の拡張を計画しています。したがって、解決すべき問題は、データで満たされた2つのストライプLVMボリュームを形成するための2つの物理ドライブ、3つのストライプボリュームを形成するために3つの物理ドライブを「マージ」する必要があることです。

これ一般的に答えは、新しいスペースに3ストライプボリュームを作成して既存のデータをコピーした後、元のストレージを空にしてからスペースをすべて再占める方法を推奨することだ。ただし、この方法は、新しく追加されたスペースが元のスペースより小さい設定では機能しないようです。つまり、2 TBのデータを新しい2 + 2 TBの空の場所にコピーできますが、明らかに4 TBが2 TBに入ることはできません。

これまで、私は仮想マシンで実験をしてきました。

  1. 新しい単一の「ハードドライブ」を3つの物理ボリュームに分割します。
  2. これを使用して、3つのストライプを持つLVMボリュームを作成します。
  3. データをそこに移動します(50%のみ)。
  4. スペースを解放した後、元のディスクのPVとLVを減らします。
  5. 3 台目のドライブの PV を 1 つずつ元のドライブに移動して拡張し、空き領域を徐々に再占めることで、3 つのドライブに対して 3 つの PV を含む LVM ボリュームが作成されます。

ただし、元のドライブのLVMを縮小せずにこれを行う方法はありません。ほとんどのデータを削除した後もすべてのスペースが割り当てられているように見えるため、これは実現可能には見えません。

検索は、ストライプ化されていないボリュームまたはすべてのデータを一時的に保存するための余分なスペースがある状況に対する回答のみを提供します。
安全に縮小する方法はありますか?ストライプLVMボリューム?
それとも、上記の3つのドライブに加えて追加のストレージを必要としないこのトピックのタスクを実行する別の方法がありますか?

#pvs
PV         VG   Fmt  Attr PSize    PFree
  /dev/vdb1  lv_s lvm2 a--  1020.00m    0 
  /dev/vdc1  lv_s lvm2 a--  1020.00m    0 
  /dev/vdd1  lt_t lvm2 a--   336.00m    0 
  /dev/vdd2  lt_t lvm2 a--   336.00m    0 
  /dev/vdd3  lt_t lvm2 a--   336.00m    0

#vgs
VG   #PV #LV #SN Attr   VSize    VFree
lt_t   3   1   0 wz--n- 1008.00m    0 
lv_s   2   1   0 wz--n-    1.99g    0

小さいサイズは無視してください。これは仮想マシンのサンプル設定にすぎません。

man lvreduceでは、まずPVサイズを小さくすることをお勧めします。ただし、pvresizeは100%割り当てられているため、ボリュームを縮小することはできません。

pvresize --setphysicalvolumesize 700M /dev/vdb1 
/dev/vdb1: Requested size 700.00 MiB is less than real size 1022.00 MiB. Proceed?  [y/n]: y
  WARNING: /dev/vdb1: Pretending size is 1433600 not 2093056 sectors.
  /dev/vdb1: cannot resize to 174 extents as 255 are allocated.
  0 physical volume(s) resized or updated / 1 physical volume(s) not resized

このドライブで使用される実際のスペースを手動で計算できるようですが(ファイルサイズの合計に基づいて)、これはアドバイスに反しています。まず、LVを希望の範囲に縮小してからPVを縮小します。しかし、これは危険に見えます。

また、ファイルマネージャでスペースを開いてファイルを合計しなくても、使用されたスペースの正確な量を読み取る方法がわかりません。このテスト環境では、実際にいっぱいの店舗はありませんが、関係なく次のような結果が得られます。

#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/vdd1
  VG Name               lt_t
  PV Size               340.00 MiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              84
  Free PE               0
  Allocated PE          84
  PV UUID               4vph5m-kReY-yukF-Crre-k2G9-c2UK-2pob7V
   
  --- Physical volume ---
  PV Name               /dev/vdd2
  VG Name               lt_t
  PV Size               340.00 MiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              84
  Free PE               0
  Allocated PE          84
  PV UUID               LfE23C-rU4f-N404-5bBa-zstP-qHd8-SbwYru
   
  --- Physical volume ---
  PV Name               /dev/vdd3
  VG Name               lt_t
  PV Size               340.00 MiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              84
  Free PE               0
  Allocated PE          84
  PV UUID               peDK1t-SZW6-VX0x-q0v1-7TUL-QZqq-unBeAV
   
  --- Physical volume ---
  PV Name               /dev/vdb1
  VG Name               lv_s
  PV Size               1021.00 MiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              255
  Free PE               0
  Allocated PE          255
  PV UUID               8sCpwh-2D5S-V5VP-v1N8-sgpd-dyra-xeqNXD
   
  --- Physical volume ---
  PV Name               /dev/vdc1
  VG Name               lv_s
  PV Size               1022.00 MiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              255
  Free PE               0
  Allocated PE          255
  PV UUID               OF4fxd-f3eN-keTP-sf8p-ahVc-r35C-x7sb6l

関連情報