Изменить 1: Чтобы уточнить, данные не были записаны в новые экстенты. Я знаю это, потому что администратор увеличил файловую систему с помощью fdisk сразу после выполнения lvextend, а затем перезагрузился, чтобы изменения вступили в силу. После перезагрузки новое блочное устройство было потеряно.
Вот что сделал системный администратор.
Было добавлено новое блочное устройство, затем он добавил новое блочное устройство в существующую группу томов, а затем он решил сделать lvextend для группы томов:
vgextend archive1-retain /dev/sdd1
lvextend -l +31 /dev/archive1-retain/data
По сути, расширение группы томов с помощью нового физического тома. Затем он перезагрузился и каким-то образом потерял новый физический элемент тома (sdd1). Однако логический том монтируется, и все данные выглядят нетронутыми.
Я уверен, что ничто на самом деле не записало какие-либо данные в группу томов после случайного добавления второго логического экстента (sdd1). Вот что у меня осталось, обратите внимание на неизвестное (отсутствующее) устройство во второй логической области, чего и следовало ожидать:
archive1:~ # lvdisplay -am
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059711488: Input/output error
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059768832: Input/output error
Couldn't find device with uuid W0btGW-Zp3R-yoAC-dkow-PabM-1Vri-3VUQo1.
--- Logical volume ---
LV Name /dev/archive1-retain/data
VG Name archive1-retain
LV UUID fLG6tU-6tla-h49c-KOf2-LIAh-uIFy-wH0XB5
LV Write Access read/write
LV Creation host, time archive1, 2015-06-12 11:50:30 -0700
LV Status available
# open 1
LV Size 4.00 TiB
Current LE 65566
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 1024
Block device 253:3
--- Segments ---
Logical extent 0 to 65534:
Type linear
Physical volume /dev/sda
Physical extents 0 to 65534
Logical extent 65535 to 65565:
Type linear
Physical volume unknown device
Physical extents 0 to 30
Вот что я пробовал. Оглядываясь назад, я не должен был использовать --force, но, к счастью, в то время том был смонтирован:
archive1:~ # vgreduce archive1-retain --removemissing
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059711488: Input/output error
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059768832: Input/output error
Couldn't find device with uuid W0btGW-Zp3R-yoAC-dkow-PabM-1Vri-3VUQo1.
WARNING: Partial LV data needs to be repaired or removed.
There are still partial LVs in VG archive1-retain.
To remove them unconditionally use: vgreduce --removemissing --force.
Proceeding to remove empty missing PVs.
archive1:~ # vgreduce archive1-retain --removemissing --force
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059711488: Input/output error
/dev/archive1-retain/data: read failed after 0 of 512 at 4400059768832: Input/output error
Couldn't find device with uuid W0btGW-Zp3R-yoAC-dkow-PabM-1Vri-3VUQo1.
Removing partial LV data.
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
device-mapper: remove ioctl on failed: Device or resource busy
Unable to deactivate archive1--retain-data (253:3)
Unable to deactivate logical volume "data"
Дополнительная информация:
archive1:~ # lsblk
NAME MAJ:MIN RM SIZE RO MOUNTPOINT
xvdb 202:16 0 249G 0
└─xvdb1 202:17 0 249G 0 /var/log/retain-tomcat7
xvda 202:0 0 80G 0
├─xvda1 202:1 0 2G 0 [SWAP]
└─xvda2 202:2 0 78G 0 /
sda 8:0 0 4T 0
└─archive1--retain-data (dm-3) 253:3 0 4T 0 /var/opt/beginfinite/retain
sdc 8:32 0 750G 0
└─gwsystem-data (dm-0) 253:0 0 750G 0 /gwsystem
sdb 8:16 0 1T 0
└─archive1--sql-data (dm-1) 253:1 0 1024G 0 /var/lib/mysql
archive1--retain-data-missing_1_0 (dm-2) 253:2 0 2G 0
└─archive1--retain-data (dm-3) 253:3 0 4T 0 /var/opt/beginfinite/retain
Логический том монтируется и его можно использовать:
archive1:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 77G 35G 41G 46% /
udev 19G 120K 19G 1% /dev
tmpfs 19G 0 19G 0% /dev/shm
/dev/xvdb1 246G 62G 172G 27% /var/log/retain-tomcat7
/dev/mapper/gwsystem-data 739G 590G 112G 85% /gwsystem
/dev/mapper/archive1--sql-data 1.0T 330G 695G 33% /var/lib/mysql
/dev/mapper/archive1--retain-data 4.0T 2.9T 1.2T 73% /var/opt/beginfinite/retain
После размонтирования вашей FS я бы пошел следующим образом:
Шаг 1 - vgcfgrestore -l
для идентификации с файлом есть правильные метаданные lvm (тот, который непосредственно перед расширением sdd1)
Шаг 2 - vgcfgrestore -f filename
для фактического восстановления старых метаданных lvm