내 Debian Wheezy
시스템에는 RAID-1(미러)에 여러 개의 500GB HDD가 있고 mdadm
그 위에 LVM
총 크기가 47.15GiB인 5개 파티션( , , 및 )이 있는 논리 볼륨이 있습니다. 물리적 볼륨에는 418.38GiB를 사용할 수 있습니다. 두 드라이브 모두에 설치됩니다.boot
root
usr
var
tmp
GRUB
HDD 중 하나에 오류가 발생하여 이제 어레이 성능이 저하되었지만 데이터는 손상되지 않았습니다.
내가 원하는 것은 시스템을 처음부터 다시 설치하지 않고 HDD 2개를 모두 80GB SSD로 교체하는 것입니다. 여기서 미묘한 점은 SSD의 크기에 맞게 LVM 물리 볼륨을 축소해야 하지만 논리 볼륨이 연속되어 있지 않아(처음에는 여유 공간이 많음) 논리 볼륨을 SSD 내에서 이동해야 한다는 것입니다. 어떻게 든 물리적 볼륨. 그리고 lvmove
데비안에는 명령이 없습니다.
어떻게 이를 달성할 수 있나요?
일부 콘솔 출력:
버전:
root@wheezy:~# uname -a && mdadm --version && lvm version
Linux wheezy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
mdadm - v3.2.5 - 18th May 2012
LVM version: 2.02.95(2) (2012-03-06)
Library version: 1.02.74 (2012-03-06)
Driver version: 4.22.0
어레이 세부정보:
root@wheezy:~# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 4 12:20:22 2014
Raid Level : raid1
Array Size : 488148544 (465.53 GiB 499.86 GB)
Used Dev Size : 488148544 (465.53 GiB 499.86 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Dec 4 13:08:59 2014
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : wheezy:0 (local to host wheezy)
UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
Events : 26
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 0 0 1 removed
LVM 간략한 설명:
root@wheezy:~# pvs && vgs && lvs
PV VG Fmt Attr PSize PFree
/dev/md0 system lvm2 a-- 465.53g 418.38g
VG #PV #LV #SN Attr VSize VFree
system 1 5 0 wz--n- 465.53g 418.38g
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
boot system -wi----- 152.00m
root system -wi----- 2.00g
tmp system -wi----- 10.00g
usr system -wi----- 20.00g
var system -wi----- 15.00g
PV 분석:
root@wheezy:~# pvs -v --segments /dev/md0
Using physical volume(s) on command line
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md0 system lvm2 a-- 465.53g 418.38g 0 89600 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 89600 38 boot 0 linear /dev/md0:89600-89637
/dev/md0 system lvm2 a-- 465.53g 418.38g 89638 512 root 0 linear /dev/md0:89638-90149
/dev/md0 system lvm2 a-- 465.53g 418.38g 90150 5120 usr 0 linear /dev/md0:90150-95269
/dev/md0 system lvm2 a-- 465.53g 418.38g 95270 3840 var 0 linear /dev/md0:95270-99109
/dev/md0 system lvm2 a-- 465.53g 418.38g 99110 1280 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 100390 2560 tmp 0 linear /dev/md0:100390-102949
/dev/md0 system lvm2 a-- 465.53g 418.38g 102950 16226 0 free
답변1
PV를 축소하거나 어레이를 다시 구축할 필요가 없습니다. 새 드라이브에서 새 어레이를 생성하고 이를 새 pv( pvcreate
+ vgextend
)로 추가한 다음 pvmove
이전 PV에서 기존 lv를 모두 제거한 다음 이전 pv( vgreduce
)를 삭제하고 드라이브의 서비스를 중단하면 됩니다.
답변2
하지만 .lvmove
pvmove
pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070
이렇게 하면 89600-102950 범위의 모든 항목이 0-12070 범위로 이동됩니다. 게시한 데이터에 따르면 LV가 PV의 시작 부분으로 재배치됩니다.
답변3
참고: 이 가이드는 최적의 가이드와는 거리가 멀습니다. 수락된 답변을 확인하세요.
좋아, 내가 시도한 것을 수행하는 방법을 알아냈습니다. 이것은 일종의 튜토리얼이 될 것입니다.
이 기간 동안 LV의 운영이 실제로가능한파일 시스템이 일부 live
Linux 배포판(SystemRescueCD)에 마운트되고 부팅되는 경우. 여기 사람들은 실제 파일 시스템을 조작하지 않고 단지 LV를 정렬하고 PV를 축소하는 경우에는 이 작업을 수행할 필요가 없다고 설명했습니다.
따라서 이 가이드를 사용하면 원하는 것을 확실히 달성할 수 있지만 LVM의 본질, 즉 작업 수행 가능성에 직면하기 때문에 효율적인 방법은 아닙니다.살다.
물리 볼륨에서 논리 볼륨의 불연속성으로 인해 어떻게든 물리 볼륨의 시작 부분으로 이동해야 합니다.
pvmove
@frostschutz가 제안한 것처럼 명령은 다음LVs
위치로 이동할 수 있습니다PV
.root@wheezy:/home/a# pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070 /dev/md0: Moved: 100.0% root@wheezy:/home/a# pvs -v --segments /dev/md0 Using physical volume(s) on command line PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/md0 system lvm2 a-- 465.53g 418.38g 0 38 boot 0 linear /dev/md0:0-37 /dev/md0 system lvm2 a-- 465.53g 418.38g 38 512 root 0 linear /dev/md0:38-549 /dev/md0 system lvm2 a-- 465.53g 418.38g 550 5120 usr 0 linear /dev/md0:550-5669 /dev/md0 system lvm2 a-- 465.53g 418.38g 5670 2560 tmp 0 linear /dev/md0:5670-8229 /dev/md0 system lvm2 a-- 465.53g 418.38g 8230 3840 var 0 linear /dev/md0:8230-12069 /dev/md0 system lvm2 a-- 465.53g 418.38g 12070 107106 0 free
이제
PV
SSD 크기(80GB)로 축소할 준비가 되었습니다. 80GB는 실제로 80000000000바이트입니다.root@wheezy:/home/a# pvresize --setphysicalvolumesize 80000000000B /dev/md0 Physical volume "/dev/md0" changed 1 physical volume(s) resized / 0 physical volume(s) not resized root@wheezy:/home/a# pvs PV VG Fmt Attr PSize PFree /dev/md0 system lvm2 a-- 74.50g 27.36g
그런 다음 배열 자체의 크기를 조정할 수 있습니다. 이 수준에는 파일 시스템이 없으므로
mdadm --grow
배열 축소에도 실제로 작동하는 명령 하나만 사용하게 되었습니다. 크기는kibibytes
80000000000 / 1024 = 78125000으로 입력되어야 합니다.root@wheezy:/home/a# mdadm --grow --size=78125000 /dev/md0 mdadm: component size of /dev/md0 has been set to 78125000K root@wheezy:/home/a# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Dec 4 12:20:22 2014 Raid Level : raid1 Array Size : 78125000 (74.51 GiB 80.00 GB) Used Dev Size : 78125000 (74.51 GiB 80.00 GB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Update Time : Thu Dec 4 17:56:53 2014 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Name : wheezy:0 (local to host wheezy) UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a Events : 60 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 0 0 1 removed
이제 기존 SSD를 어레이에 추가하고 재구축할 차례입니다.
root@wheezy:/home/a# mdadm --add /dev/md0 /dev/sdc mdadm: added /dev/sdc root@wheezy:/home/a# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc[2] sdb[0] 78125000 blocks super 1.2 [2/1] [U_] [>....................] recovery = 1.3% (1081920/78125000) finish=11.8min speed=108192K/sec unused devices: <none>
재구축 후 건강한 배열을 갖게 되었습니다. 해당 멤버를 교환할 수 있으며 GRUB 설치를 사용할 수 있습니다 grub-install /dev/sdc
.