Назад | Перейти на главную страницу

(LVM) Перемещение данных на другой физический том в том же логическом томе

У меня есть логический том под названием storage. Он содержит два физических тома размером ~ 1 ТБ: /dev/sdc и /dev/sdd. smartctl -a /dev/sdd сообщает мне, что /dev/sdd не работает. Я все еще могу считывать данные с него, и я только что сделал резервную копию всего содержимого LV.

У меня около 200 ГБ реальных данных - достаточно мало, чтобы один из PV мог вместить их все. я хочу удалить /dev/sdd с логического тома и передать все его данные другим PV (/dev/sdc) на этом LV.

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

Размер LV "хранилища" составляет 2 ТБ. Вы не можете удалить половину физического пространства, не повредив его.

Что вы можете сделать, так это уменьшить размер файловой системы, затем изменить размер LV, а затем вы можете безопасно удалить PV из группы томов.

  1. Отключить "хранилище": umount /dev/spinny/storage
  2. Уменьшите файловую систему, чтобы она могла поместиться только на SDC. Поскольку у вас только 200 Гбит / с, вы можете для безопасности снизить до 900 Гбит / с. В зависимости от типа вашей файловой системы необходимый вам инструмент различается, и если ваша файловая система не поддерживает сжатие, вам не повезло. Если вы используете ext4, возможно, вам повезет: fsck -C0 -f /dev/spinny/storage && resize2fs /dev/spinny/storage 800G.
  3. Уменьшите логический том, чтобы он был не меньше размера файловой системы (см. Выше) и не больше размера sdc .: lvresize -L900G spinny/storage
  4. Поскольку sdd - это второй диск, скорее всего, у вас уже не будет расширений. pvs на этом этапе должно быть показано, что на SDD нет данных и вы можете безопасно удалить их с помощью vgreduce spinny /dev/sdd.

Теперь вы можете увеличить LV и файловую систему, чтобы заполнить SDC, если хотите:

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