web-dev-qa-db-ja.com

(LVM)同じ論理ボリューム内の別の物理ボリュームへのデータの移動

storageという論理ボリュームがあります。 /dev/sdc/dev/sddの2つの〜1TBの物理ボリュームが含まれています。 smartctl -a /dev/sddは、/dev/sddが失敗していることを通知します。それでもデータを読み取ることができ、LVからすべてのコンテンツをバックアップしました。

私は約200GBの実際のデータを持っています—PVの1つがすべてを保持できるほど十分ではありません。論理ボリュームから/dev/sddを削除し、そのすべてのデータをこのLV上の他のPV(/dev/sdc)に転送したいと思います。

pvmoveは、すべてのエクステントが割り当てられているため失敗します。

# pvmove /dev/sdd /dev/sdc
  WARNING: No free extents on physical volume "/dev/sdc".
  No specified PVs have space available.

問題:/dev/sddに「実際の」データがないことを確認し、安全に削除するにはどうすればよいですか?

以下の出力から、この質問に関係のない他のLVM組織を除外しました。

# lvdisplay --maps
  --- Logical volume ---
  LV Path                /dev/spinny/storage
  LV Name                storage
  VG Name                spinny
  LV UUID                LeJEIR-0Zvf-YBLD-GrCT-Kvv0-mcvz-4a66Ib
  LV Write Access        read/write
  LV Creation Host, time archiso, 2020-01-01 12:32:05 -0500
  LV Status              available
  # open                 0
  LV Size                <1.82 TiB
  Current LE             476934
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1

  --- Segments ---
  Logical extents 0 to 238466:
    Type        linear
    Physical volume /dev/sdc
    Physical extents    0 to 238466

  Logical extents 238467 to 476933:
    Type        linear
    Physical volume /dev/sdd
    Physical extents    0 to 238466
# pvdisplay --maps
  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               spinny
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               0
  Allocated PE          238467
  PV UUID               fMOJ38-TiZZ-DspR-hOy3-4aGn-lKXo-4mYSrU

  --- Physical Segments ---
  Physical extent 0 to 238466:
    Logical volume  /dev/spinny/storage
    Logical extents 0 to 238466

  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               spinny
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               0
  Allocated PE          238467
  PV UUID               XJ2D5p-l3iP-VBlR-peXB-up1y-ZpNh-UDkcfB

  --- Physical Segments ---
  Physical extent 0 to 238466:
    Logical volume  /dev/spinny/storage
    Logical extents 238467 to 476933
# blkid
/dev/sdc: UUID="fMOJ38-TiZZ-DspR-hOy3-4aGn-lKXo-4mYSrU" TYPE="LVM2_member"
/dev/sdd: UUID="XJ2D5p-l3iP-VBlR-peXB-up1y-ZpNh-UDkcfB" TYPE="LVM2_member"
/dev/mapper/spinny-storage: UUID="108a53d4-dc5a-48b7-971f-b62c617fdb15" BLOCK_SIZE="4096" TYPE="ext4"
# smartctl -a /dev/sdd
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.6.11-Arch1-1] (local build)
# ... clipped ...
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   001   001   051    Pre-fail  Always   FAILING_NOW 14946
  3 Spin_Up_Time            0x0027   170   169   021    Pre-fail  Always       -       2466
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       80
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       3728
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       80
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       19
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       66
194 Temperature_Celsius     0x0022   103   096   000    Old_age   Always       -       40
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   183   183   000    Old_age   Always       -       2919
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: unknown failure    90%      3680         -
# 2  Extended offline    Completed: read failure       90%      3663         2064
1
Emily Horsman

「ストレージ」LVのサイズは2TBです。物理的なスペースの半分を損傷せずに削除することはできません。

できることは、ファイルシステムのサイズを縮小し、次にLVのサイズを変更することです。そうすれば、ボリュームグループからPVを安全に削除できます。

  1. 「ストレージ」のマウントを解除します:umount /dev/spinny/storage
  2. ファイルシステムを縮小して、sdcだけに収まるようにします。あなたは200Gしかないので、安全のために900Gまで下げることができます。ファイルシステムの種類によって、必要なツールは異なります。ファイルシステムが縮小をサポートしていない場合は、運が悪いことになります。 ext4を使用している場合は、fsck -C0 -f /dev/spinny/storage && resize2fs /dev/spinny/storage 800Gで運が良かったかもしれません。
  3. 論理ボリュームをファイルシステムのサイズ(上記)以上、sdcのサイズ以下に縮小します。:lvresize -L900G spinny/storage
  4. Sddは2番目のドライブであるため、今では拡張機能がない可能性があります。この時点でpvsは、sddにデータがないことを示しているはずであり、vgreduce spinny /dev/sddを使用して安全に取り出すことができます。

必要に応じて、LVとファイルシステムを拡張してsdcを埋めることができます。

  1. lvresize -l 100%PV spinny/storage
  2. resize2fs /dev/spinny/storage
1
chutz