Di chuyển một khối hợp lý từ nhóm âm lượng này sang nhóm âm lượng khác


18

Có thể di chuyển một khối hợp lý từ nhóm này sang nhóm khác trong toàn bộ không?

Có thể tạo một lv phù hợp (nhiều hơn hoặc ít hơn) và sao chép dữ liệu qua, nhưng có cách nào để làm điều này chỉ với các công cụ LVM không?

Nếu không, có một lý do lý thuyết hoặc giới hạn kỹ thuật (kích thước phạm vi)?

Câu trả lời:


13

Một nhóm khối lượng bao gồm toàn bộ khối lượng vật lý. Một khối lượng vật lý bao gồm nhiều phạm vi (một phạm vi thường là 4MB); mỗi mức độ có thể thuộc về một khối lượng logic khác nhau. Để chuyển một âm lượng hợp lý sang một nhóm khác, bạn không thể đơn giản chuyển phạm vi, vì điều đó có thể phân chia âm lượng vật lý giữa VG nguồn và VG đích.

Những gì bạn có thể làm là chuyển một hoặc nhiều PV từ VG nguồn sang VG đích, bằng vgsplitlệnh. Bạn có thể chỉ định PV nào bạn muốn chuyển hoặc LV nào (nhưng chỉ một PV mỗi lần). Nếu bạn chỉ định LV, nó và các LV khác trong VG nguồn phải nằm trên các PV riêng biệt. VG đích sẽ được tạo nếu không có VG tồn tại với tên được chỉ định.

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

Bạn có thể cần sử dụng pvmovetrước để sắp xếp các khối hợp lý mà bạn muốn chuyển sang các PV riêng biệt.

Nếu bạn có ý định giữ lại các ranh giới vật lý của VG và di chuyển dữ liệu, thì không có công cụ tích hợp nào, nhưng bạn có thể tạo một bản sao rồi xóa bản gốc .


Có vẻ như target_group có thể là một cái tồn tại trước?
XtL

8

Tính đến LVM trong Debian căng (9.0), cụ thể là 2.02.168-2, nó có thể làm một bản sao của một khối lượng hợp lý giữa các nhóm khối lượng sử dụng kết hợp vgmerge, lvconvertvgsplit. Vì di chuyển là sự kết hợp của một bản sao và xóa, nên điều này cũng sẽ hoạt động cho một di chuyển.

Ngoài ra, bạn có thể sử dụng pvmoveđể chỉ di chuyển âm lượng.

Một phiên ví dụ hoàn toàn khép kín sử dụng các thiết bị lặp và làm lvconverttheo.

Tóm tắt: chúng ta tạo ra volume group vg1với khối lượng hợp lý lv1, và vg2với lv2, và tạo một bản sao của lv1năm vg2.

Tạo tập tin.

truncate pv1 --size 100MB
truncate pv2 --size 100MB

Thiết lập các thiết bị lặp trên các tập tin.

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

Tạo khối lượng vật lý trên các thiết bị vòng lặp (khởi tạo các thiết bị vòng lặp để LVM sử dụng).

pvcreate /dev/loop1 /dev/loop2

Tạo các nhóm âm lượng vg1 và vg2 trên / dev / loop1 và / dev / loop2 tương ứng.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Tạo khối lượng logic lv1 và lv2 trên vg1 và vg2 tương ứng.

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

Tạo các hệ thống tập tin ext4 trên lv1 và lv2.

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

Tùy chọn, viết một cái gì đó trên lv1 để sau này bạn có thể kiểm tra bản sao đã được tạo chính xác. Làm cho vg1 không hoạt động.

vgchange -a n vg1

Chạy lệnh hợp nhất trong chế độ thử nghiệm. Điều này hợp nhất vg1 thành vg2.

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

Và sau đó là thật.

vgmerge -A y -l -v vg2 vg1

Sau đó, tạo một cặp nhân bản RAID 1 từ lv1việc sử dụng lvconvert. Các dest-pvđối số nói lvconvertđể làm cho bản sao nhân bản trên /dev/loop2.

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

Sau đó tách gương. LV mới bây giờ lv1_copy.

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

Làm cho vg2/lv1không hoạt động.

lvchange -a n /dev/vg2/lv1

Sau đó (chế độ thử nghiệm)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

Cho thật

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

Kết quả đầu ra:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

GHI CHÚ:

1) Hầu hết các lệnh này sẽ cần phải được chạy dưới quyền root.

2) Nếu có bất kỳ sự trùng lặp nào về tên của các khối hợp lý trong hai nhóm âm lượng, vgmergesẽ từ chối tiếp tục.

3) Khi hợp nhất, khối lượng logic trong vg1phải không hoạt động. Và khi phân chia, khối lượng logic vg2thuộc về vg1phải không hoạt động. Trong trường hợp của chúng tôi, đây là lv1.


2

Tôi sẽ cung cấp của riêng tôi:

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

nếu mọi thứ đều tốt, hãy xóa nguồn

lvremove vgsource/lv0

Điều này là khá nhiều ngược lại với câu hỏi. Vấn đề là di chuyển âm lượng thay vì sao chép dữ liệu sang dữ liệu mới.
XtL
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.