お問い合わせはこちら
+81-80-2437-0232
hosokawa@dear-jpn.com

LVMハードディスクの交換作業

LVMにてインストール済みのLinuxシステムが、何やらHDDのReadエラーを吐くようになった。

壊れる前に対処するべく、LVMにドライブを追加して、Readエラーを出しているHDDを取り外しというのをオンラインで実行してみた。

さすがに、ハードディスクの物理的な取り付けと取り外しは電源を落とす必要があったものの、停止時間は取り付け時で5分未満。取り外し時も5分未満とそれほど各所に迷惑をかけずに済んだ。

まずは、取り外し前の状態。

# vgdisplay 
  --- Volume group ---
  VG Name               i7-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.82 TiB
  PE Size               4.00 MiB
  Total PE              476742
  Alloc PE / Size       476742 / 1.82 TiB
  Free  PE / Size       0 / 0   
  VG UUID               2b3Kh3-9BAe-0g7J-F8sR-USeO-wGxO-IwUjOt
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/i7-vg/root
  LV Name                root
  VG Name                i7-vg
  LV UUID                W3rvy2-ZEay-9c2i-LrV1-Sjku-maEp-KoyOpG
  LV Write Access        read/write
  LV Creation host, time i7, 2015-09-16 11:53:36 +0900
  LV Status              available
  # open                 1
  LV Size                1.79 TiB
  Current LE             468581
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
  --- Logical volume ---
  LV Path                /dev/i7-vg/swap_1
  LV Name                swap_1
  VG Name                i7-vg
  LV UUID                nGsWKP-Mcye-PwSh-cvsd-LjJb-KDmJ-pZdmMf
  LV Write Access        read/write
  LV Creation host, time i7, 2015-09-16 11:53:36 +0900
  LV Status              available
  # open                 2
  LV Size                31.88 GiB
  Current LE             8161
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdc3
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              476742
  Free PE               0
  Allocated PE          476742
  PV UUID               LUO9EX-o8A8-VpHx-xmFi-Letp-WNcP-3mckKi

ここで、見えている/dev/sdcが問題のHDD。

# smartctl -a /dev/sdc
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-1-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda Green (AF)
Device Model:     ST2000DL003-9VT166
Serial Number:    5YD5ADGZ
LU WWN Device Id: 5 000c50 03d7ca469
Firmware Version: CC32
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    5900 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Mon Feb  6 19:50:27 2017 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      ( 119)	The previous self-test completed having
					the read element of the test failed.
Total time to complete Offline 
data collection: 		(  623) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 ( 343) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x30b7)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   106   091   006    Pre-fail  Always       -       11368688
  3 Spin_Up_Time            0x0003   093   092   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       41
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   073   060   030    Pre-fail  Always       -       73361834697
  9 Power_On_Hours          0x0032   064   064   000    Old_age   Always       -       32050
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       41
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       264
188 Command_Timeout         0x0032   100   098   000    Old_age   Always       -       8590065674
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   063   051   045    Old_age   Always       -       37 (Min/Max 27/41)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       19
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       42
194 Temperature_Celsius     0x0022   037   049   000    Old_age   Always       -       37 (0 19 0 0 0)
195 Hardware_ECC_Recovered  0x001a   028   003   000    Old_age   Always       -       11368688
197 Current_Pending_Sector  0x0012   097   001   000    Old_age   Always       -       280
198 Offline_Uncorrectable   0x0010   097   001   000    Old_age   Offline      -       280
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       32051 (57 208 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       4061581473
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       3162297486

SMART Error Log Version: 1
ATA Error Count: 263 (device log contains only the most recent five errors)
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 263 occurred at disk power-on lifetime: 31996 hours (1333 days + 4 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 ff ff ff ef 00  37d+22:35:54.119  READ DMA EXT
  ea 00 00 ff ff ff af 00  37d+22:35:53.802  FLUSH CACHE EXT
  35 00 08 ff ff ff ef 00  37d+22:35:53.802  WRITE DMA EXT
  ea 00 00 ff ff ff af 00  37d+22:35:53.789  FLUSH CACHE EXT
  35 00 10 ff ff ff ef 00  37d+22:35:53.788  WRITE DMA EXT

Error 262 occurred at disk power-on lifetime: 31991 hours (1332 days + 23 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 ff ff ff ef 00  37d+16:44:01.021  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:44:01.020  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:44:00.985  READ DMA EXT
  27 00 00 00 00 00 e0 00  37d+16:44:00.981  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00  37d+16:44:00.978  IDENTIFY DEVICE

Error 261 occurred at disk power-on lifetime: 31991 hours (1332 days + 23 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 ff ff ff ef 00  37d+16:43:57.434  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:57.408  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:55.601  READ DMA EXT
  27 00 00 00 00 00 e0 00  37d+16:43:55.597  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00  37d+16:43:55.595  IDENTIFY DEVICE

Error 260 occurred at disk power-on lifetime: 31991 hours (1332 days + 23 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 ff ff ff ef 00  37d+16:43:52.096  READ DMA EXT
  27 00 00 00 00 00 e0 00  37d+16:43:52.092  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]
  ec 00 00 00 00 00 a0 00  37d+16:43:52.089  IDENTIFY DEVICE
  ef 03 46 00 00 00 a0 00  37d+16:43:52.087  SET FEATURES [Set transfer mode]
  27 00 00 00 00 00 e0 00  37d+16:43:52.056  READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]

Error 259 occurred at disk power-on lifetime: 31991 hours (1332 days + 23 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 ff ff ff ef 00  37d+16:43:45.373  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:45.359  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:45.357  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:45.335  READ DMA EXT
  25 00 08 ff ff ff ef 00  37d+16:43:45.258  READ DMA EXT

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       70%     32044         3846617984
# 2  Short offline       Completed: read failure       90%     32020         3846617984
# 3  Short offline       Completed: read failure       90%     31996         3846617984
# 4  Short offline       Completed: read failure       90%     31995         3846617984

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

こんな感じで、エラーを吐きまくりである。

今回新しくみっつのHDD(1Tのものが2台と2Tのもの)を取り付ける。

1台はLVM用に最初から接続済みだが、LVMに参加させずに放置していたもの(1T)。

2台めは、上記の1TとRAIDを組もうと思って置いていてまったく使ってなかったもの。

そして、3台めが新規に購入した2Tのものとなる。

新規に追加した2台は、SATAの2と3に接続したので、これまでsda(USB-HDD)、sdb(使ってなかった1T)、sdc(壊れかけ)の後ろに、sddとsdeになるものだとばっかり思っていたのだが、なぜか、元のsdcがsddとなり、sdcに追加の1T、sdeに追加の2Tのものが来た。

こんなことも起きるので、デバイス名でマウントしたりせず、UUIDに変わって来たのだなと納得。

# lshw -class disk
  *-disk                    
       description: SCSI Disk
       product: Expansion Desk
       vendor: Seagate
       physical id: 0.0.0
       bus info: scsi@4:0.0.0
       logical name: /dev/sda
       version: 2207
       serial: 000000002A007258
       size: 2794GiB (3TB)
       capabilities: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=6 guid=75de576d-b34b-44a1-8de7-5b689bce30b5 logicalsectorsize=512 sectorsize=4096
  *-disk:0
       description: ATA Disk
       product: WDC WD10EZRX-00A
       vendor: Western Digital
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sdb
       version: 1A01
       serial: WD-WMC1U7958826
       size: 931GiB (1TB)
       capabilities: partitioned partitioned:dos
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096 signature=6a62e4e9
  *-disk:1
       description: ATA Disk
       product: WDC WD10EZRX-00A
       vendor: Western Digital
       physical id: 0.1.0
       bus info: scsi@0:0.1.0
       logical name: /dev/sdc
       version: 1A01
       serial: WD-WCC1U2787252
       size: 931GiB (1TB)
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096
  *-disk:0
       description: ATA Disk
       product: ST2000DL003-9VT1
       vendor: Seagate
       physical id: 0.0.0
       bus info: scsi@1:0.0.0
       logical name: /dev/sdd
       version: CC32
       serial: 5YD5ADGZ
       size: 1863GiB (2TB)
       capabilities: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=5 guid=c50fcc53-a597-425c-8457-b4b008ccde3f logicalsectorsize=512 sectorsize=512
  *-disk:1
       description: ATA Disk
       product: Generic L200 Har
       physical id: 0.1.0
       bus info: scsi@1:0.1.0
       logical name: /dev/sde
       version: ABT0
       serial: 84U8MEBTS
       size: 1863GiB (2TB)
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096

いずれにしてもオンラインで作業を行なうわけで、データを壊すことが一番怖いため、念には念を入れて、lshwコマンドやらで確認をしておいた。

というわけで、ここからこれまで使っていなかった3台分をLVMに参加させることにしよう。
まずは、以下のようになっている、/dev/sdbをパーティション削除してしまう。
どうせLVMに参加させるだけなのでパーティションを切る必要は無いためだ。

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.29.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x6a62e4e9

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdb1  *          2048 1936747951 1936745904 923.5G 83 Linux
/dev/sdb2       1936747952 1953525167   16777216     8G 82 Linux swap / Solaris

他のふたつは完全にさらな状態であるので、特にfdiksで何かをするわけではない。
/dev/sdb, /dev/sdc, /dev/sdeの3つを新たにPVとして作りなおしてやる。

# pvcreate /dev/sdb
WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: Y
  Wiping dos signature on /dev/sdb.
  Physical volume "/dev/sdb" successfully created.

一度でもパーティションを切ったことのあるHDDだとこんな確認が出るようだ。今回はきれいにしてしまいたいので、あっさりとYで応答。

# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
root@i7:~# pvcreate /dev/sde
  Physical volume "/dev/sde" successfully created.

まっさらのディスクだと何も聞かれずにあっさりと処理が終わる。

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdd3
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              476742
  Free PE               0
  Allocated PE          476742
  PV UUID               LUO9EX-o8A8-VpHx-xmFi-Letp-WNcP-3mckKi
   
  "/dev/sdc" is a new physical volume of "931.51 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               931.51 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
   
  "/dev/sde" is a new physical volume of "1.82 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sde
  VG Name               
  PV Size               1.82 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R
   
  "/dev/sdb" is a new physical volume of "931.51 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               931.51 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD

pvdisplayコマンドで状況を確認。たしかにPV(Phisical Volume)が増えている。
先ほどvgdisplayコマンドで確認した、i7-vgなるVG(Volume Group)にこれらを追加してやる。

# vgextend i7-vg /dev/sdb /dev/sdc /dev/sde
  Volume group "i7-vg" successfully extended

素直に追加された。

# vgdisplay
  --- Volume group ---
  VG Name               i7-vg
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               5.46 TiB
  PE Size               4.00 MiB
  Total PE              1430608
  Alloc PE / Size       476742 / 1.82 TiB
  Free  PE / Size       953866 / 3.64 TiB
  VG UUID               2b3Kh3-9BAe-0g7J-F8sR-USeO-wGxO-IwUjOt

ここで、確認しておくべきはAlloc PEが、476742で、最初にvgdisplayで確認した数値と「同じ」であること。
ここでAlloc済みのPEは、壊れた/dev/sdc上に存在しているものであるので、これを別のFree PE上に移動させてやれば良いことになる。
また、Free PEが、移動元となる476742よりも大きくなければ移動できないのでここも確認しておくべきだろう。
次に、pvmoveで、旧来使用していたPV上のデータを別のPV上に持っていく。この際の対象はVG(Volume Group)ではなくLV(Logical Volume)の方になる。

root@i7:~# pvmove -v -n root /dev/sdd3 
    Cluster mirror log daemon is not running.
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "i7-vg" metadata (seqno 5).
    Creating logical volume pvmove0
    Moving 468581 extents of logical volume i7-vg/root
    activation/volume_list configuration setting not defined: Checking only host tags for i7-vg/root.
    Setting up pvmove in on-disk volume group metadata.
    Creating i7--vg-pvmove0
    Loading i7--vg-pvmove0 table (254:2)
    Loading i7--vg-root table (254:0)
    Suspending i7--vg-root (254:0) with device flush
    activation/volume_list configuration setting not defined: Checking only host tags for i7-vg/pvmove0.
    Resuming i7--vg-pvmove0 (254:2)
    Loading i7--vg-pvmove0 table (254:2)
    Suppressed i7--vg-pvmove0 (254:2) identical table reload.
    Resuming i7--vg-root (254:0)
    Creating volume group backup "/etc/lvm/backup/i7-vg" (seqno 6).
    Checking progress before waiting every 15 seconds.
  /dev/sdd3: Moved: 0.00%
  /dev/sdd3: Moved: 0.08%
  /dev/sdd3: Moved: 0.17%
  /dev/sdd3: Moved: 0.25%
  /dev/sdd3: Moved: 0.33%
  /dev/sdd3: Moved: 0.42%
  /dev/sdd3: Moved: 0.50%
  /dev/sdd3: Moved: 0.59%
...

さて、この処理を行っている際も普通に使えることを確認するため、このマシン上で動いているWordpress(早い話がこのサーバなんですが)で文章書いて保存してみる。
おぉ。なんの問題もなく記事が公開された。

待つこと数時間。ようやく終わった。

...
  /dev/sdd3: Moved: 99.95%
  /dev/sdd3: Moved: 99.99%
  /dev/sdd3: Moved: 100.00%
    Polling finished successfully.

他にもスワップ用のLV(Logical Volume)が/dev/sdd3のPV上に作られていたため、こいつを削除。

# lvremove i7-vg/swap_1
Do you really want to remove active logical volume i7-vg/swap_1? [y/n]: y
  Logical volume "swap_1" successfully removed

これで、rootとswap_1のふたつのLVを持つVGが新しいHDD上のPVだけで動き出した。

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdd3
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476742
  Free PE               476742
  Allocated PE          0
  PV UUID               LUO9EX-o8A8-VpHx-xmFi-Letp-WNcP-3mckKi
   
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               i7-vg
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               238467
  Allocated PE          0
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD
   
  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               i7-vg
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               238467
  Allocated PE          0
  PV UUID               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
   
  --- Physical volume ---
  PV Name               /dev/sde
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 1.09 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476932
  Free PE               8351
  Allocated PE          468581
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R

もともと使用していた/dev/sdd3上のPVは、Total PEとFree PEが同じサイズ、すなわち使われていないことがわかる。
これで、/dev/sdd3をVGから削除することが可能になったわけだ。

# vgreduce i7-vg /dev/sdd3
  Removed "/dev/sdd3" from volume group "i7-vg"

VG i7-vgから、/dev/sdd3が削除されたことを確認しておこう。

# vgdisplay -v
  --- Volume group ---
  VG Name               i7-vg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               3.64 TiB
  PE Size               4.00 MiB
  Total PE              953866
  Alloc PE / Size       468581 / 1.79 TiB
  Free  PE / Size       485285 / 1.85 TiB
  VG UUID               2b3Kh3-9BAe-0g7J-F8sR-USeO-wGxO-IwUjOt
   
  --- Logical volume ---
  LV Path                /dev/i7-vg/root
  LV Name                root
  VG Name                i7-vg
  LV UUID                W3rvy2-ZEay-9c2i-LrV1-Sjku-maEp-KoyOpG
  LV Write Access        read/write
  LV Creation host, time i7, 2015-09-16 11:53:36 +0900
  LV Status              available
  # open                 1
  LV Size                1.79 TiB
  Current LE             468581
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
  --- Physical volumes ---
  PV Name               /dev/sdb     
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD
  PV Status             allocatable
  Total PE / Free PE    238467 / 238467
   
  PV Name               /dev/sdc     
  PV UUID               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
  PV Status             allocatable
  Total PE / Free PE    238467 / 238467
   
  PV Name               /dev/sde     
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R
  PV Status             allocatable
  Total PE / Free PE    476932 / 8351

Volume Group i7-vgには、Logical Volumeのrootが存在しており、それらは、/dev/sdb,sdc,sdeのPVにて構成されていることがわかる。
障害を起こしていた、/dev/sddが切り離されたわけだ。

# pvremove /dev/sdd3
  Labels on physical volume "/dev/sdd3" successfully wiped.

これで、PVとして利用しないよう、/dev/sdd3を切り離したわけだ。
ここまでの作業でやりたかったことは一通り実現された。
オンラインのまま不具合のあるハードディスクを切り離すことができたということになる。
とはいえ、まだ使用していないPEが大量に残っている。これをLVに追加してやって使えるようにしておこう。
まずは、先ほど不良ディスクを切り離すために削除してしまったスワップ用のLVを再作成しよう。

# lvcreate -L 32G -n swap i7-vg
  Logical volume "swap" created.

もともとは、swap_1なる名前で作られていたが、さすがにこれ以外にスワップを作るとも思えなかったので_1を外してswapとした。
スワップデバイスの名前が変わったので、忘れずに/etc/fstabを調整しておこう。
次に、未割当のPEを確認するため、以下のコマンドで再確認。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               i7-vg
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               230275
  Allocated PE          8192
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD
   
  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               i7-vg
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               238467
  Allocated PE          0
  PV UUID               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
   
  --- Physical volume ---
  PV Name               /dev/sde
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 1.09 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476932
  Free PE               8351
  Allocated PE          468581
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R

全PEは、238467+238467+476932=953866と出てくる。今後スナップショットも取りたいので、スナップショット用の領域を確保します。
だいたい10%〜20%はスナップショット用に確保するべきとのことなので、今回は20%(全体の1/5)を割り当てるべく、全体のPEが953866なので、これの1/5として、191000PEを割り当てることに決定。

# lvcreate -l 191000 -n snap i7-vg
  Logical volume "snap" created.

残ったPEは全てrootの拡張に使用する。

# lvextend -l 100%PVS i7-vg/root
  Size of logical volume i7-vg/root changed from 1.79 TiB (468581 extents) to 2.88 TiB (754674 extents).
  Logical volume i7-vg/root successfully resized.

ここまでの作業で、LVMの設定状況は以下の通り。

# vgdisplay -v
  --- Volume group ---
  VG Name               i7-vg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  17
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               3.64 TiB
  PE Size               4.00 MiB
  Total PE              953866
  Alloc PE / Size       953866 / 3.64 TiB
  Free  PE / Size       0 / 0   
  VG UUID               2b3Kh3-9BAe-0g7J-F8sR-USeO-wGxO-IwUjOt
   
  --- Logical volume ---
  LV Path                /dev/i7-vg/root
  LV Name                root
  VG Name                i7-vg
  LV UUID                W3rvy2-ZEay-9c2i-LrV1-Sjku-maEp-KoyOpG
  LV Write Access        read/write
  LV Creation host, time i7, 2015-09-16 11:53:36 +0900
  LV Status              available
  # open                 1
  LV Size                2.88 TiB
  Current LE             754674
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
   
  --- Logical volume ---
  LV Path                /dev/i7-vg/swap
  LV Name                swap
  VG Name                i7-vg
  LV UUID                vlQmwJ-OpNe-0iHI-l0lg-6hgd-SBwt-Hm9z1E
  LV Write Access        read/write
  LV Creation host, time i7, 2017-02-07 03:32:23 +0900
  LV Status              available
  # open                 0
  LV Size                32.00 GiB
  Current LE             8192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1
   
  --- Logical volume ---
  LV Path                /dev/i7-vg/snap
  LV Name                snap
  VG Name                i7-vg
  LV UUID                7Xq2bN-Wvx9-VUOR-3Nfv-kJyl-bosi-8NGvie
  LV Write Access        read/write
  LV Creation host, time i7, 2017-02-07 04:04:15 +0900
  LV Status              available
  # open                 0
  LV Size                746.09 GiB
  Current LE             191000
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2
   
  --- Physical volumes ---
  PV Name               /dev/sdb     
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD
  PV Status             allocatable
  Total PE / Free PE    238467 / 0
   
  PV Name               /dev/sdc     
  PV UUID               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
  PV Status             allocatable
  Total PE / Free PE    238467 / 0
   
  PV Name               /dev/sde     
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R
  PV Status             allocatable
  Total PE / Free PE    476932 / 0

この状態でもまだrootに割り当てたファイルシステムはサイズが大きくなっていない。1.8T程度だ。先ほどのvgdisplayの結果からすれば2.88Tになっていないといけないのだ。

# df -m /dev/i7-vg/root 
ファイルシス            1M-ブロック    使用 使用可 使用% マウント位置
/dev/mapper/i7--vg-root     1844785 1247823 503231   72% /

ファイルシステムも拡張を行っておこう。

# resize2fs -p /dev/i7-vg/root 
resize2fs 1.43.3 (04-Sep-2016)
Filesystem at /dev/i7-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 115, new_desc_blocks = 185
The filesystem on /dev/i7-vg/root is now 772786176 (4k) blocks long.

再度確認。

# df -m /dev/i7-vg/root
ファイルシス            1M-ブロック    使用  使用可 使用% マウント位置
/dev/mapper/i7--vg-root     2971200 1247828 1583871   45% /

使用%の数字が一気に下がった。
これで一安心。
念の為一度リブートしてきちんと動作するかどうかを確認しておく。

あら、スワップを有効化させるところでエラーが出てしまった。
/etcの下を調べてみたら、/etc/initramfs-tools/conf.d/resumeに、swap_1の名前が残ったままになっていたが、これが理由だろうか?
再起動。
うーん、なおらない。
さらに調べていたら、恥ずかしながら/dev/i7-vg/swapに対してmkswapをしてなかった。

# mkswap /dev/i7-vg/swap 
Setting up swapspace version 1, size = 32 GiB (34359734272 bytes)
no label, UUID=d41ad53e-77d5-4aa3-a4af-e3c461defd2e

これを実行後にswaponしてやる分にはうまくスワップが有効になることは確認できた。

# swapon -a
# free
              total        used        free      shared  buff/cache   available
Mem:       32825572     1393648    30553864       86028      878060    30954064
Swap:      33554428           0    33554428

再起動をかけると、起動時のログにswap_1を有効に出来ないというエラーは出るものの、正しくswapを有効にできるようになった。

# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.0-1-amd64

これならどうだ?
OK! 起動時のコンソールにエラーが表示されることもなくなった。
LVMの設定変更がこんなところに影響が出るとは、、、という感じではあるが解決したのでよしとする。

最後に確保しておいたスナップショットの領域は今後のバックアップ作業(スナップショット取って、バックアップを別マシンに持って行って、、、)に使う領域としていったん削除しておく。

# lvremove /dev/i7-vg/snap
Do you really want to remove active logical volume i7-vg/snap? [y/n]: y
  Logical volume "snap" successfully removed

空きができたことを確認しておく。

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda
  VG Name               i7-vg
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               191000
  Allocated PE          47467
  PV UUID               ipfeUa-AV6Q-Dy7e-FFeB-YjNq-4Dey-hcKzMD
   
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               i7-vg
  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               ZKKK49-EoJJ-zuMs-Ilsx-XroU-ct1D-ikK8yb
   
  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               i7-vg
  PV Size               1.82 TiB / not usable 1.09 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              476932
  Free PE               0
  Allocated PE          476932
  PV UUID               82Im9Q-tuVc-rMAG-bsA6-DQNR-65fb-IBZ87R