sáp nhập các nhóm khối lượng LVM


7

Tình hình:

Tôi có một máy chủ với 4 ổ 1TB trong LVM như hình bên dưới. Máy chủ là một nút phần cứng openvz với hàng tá các thùng chứa openvz. Tại thời điểm này, mỗi container chỉ sử dụng một đĩa. Điều này được thiết kế tại thời điểm đó để duy trì hầu hết sự kiểm soát và phân tách trên tải io của đĩa.

# pvdisplay -s
  Device "/dev/sdd1" has a capacity of 227.51 GiB
  Device "/dev/sdc1" has a capacity of 427.51 GiB
  Device "/dev/sdb1" has a capacity of 427.51 GiB
  Device "/dev/sda2" has a capacity of 407.02 GiB

ATM mỗi PV được thiết lập với VG riêng của nó:

# vgdisplay -s
  "vg04" 931.51 GiB [704.00 GiB used / 227.51 GiB free]
  "vg03" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg02" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg01" 931.02 GiB [524.00 GiB used / 407.02 GiB free]

Một số LV tồn tại trên các VG này:

# lvdisplay | grep Name
  LV Name                /dev/vg04/swap
  VG Name                vg04
  LV Name                /dev/vg04/vz
  VG Name                vg04
  LV Name                /dev/vg03/swap
  VG Name                vg03
  LV Name                /dev/vg03/vz
  VG Name                vg03
  LV Name                /dev/vg02/swap
  VG Name                vg02
  LV Name                /dev/vg02/vz
  VG Name                vg02
  LV Name                /dev/vg01/swap
  VG Name                vg01
  LV Name                /dev/vg01/root
  VG Name                vg01
  LV Name                /dev/vg01/vz
  VG Name                vg01

Vấn đề:

Một container hiện đã phát triển đến kích thước mà tôi cần chia nó thành hai đĩa để xử lý tải.

Về cơ bản, tôi muốn hợp nhất hai LV - - dev / vg03 / vz và / dev / vg04 / vz thành một sọc LV trên hai đĩa.

Làm thế nào để tôi hoàn thành tốt nhất điều đó? Vgmerge sẽ có thể làm điều này? Trang web dành cho vgmerge khá ngắn gọn và tôi không thể tìm thấy bất kỳ cuộc thảo luận sâu hơn nào về việc sử dụng nó.

Cuối cùng, tôi có thể hoàn thành mục tiêu bằng cách di chuyển mọi thứ xung quanh nhưng có rất nhiều dữ liệu đang hoạt động và đây là những máy chủ sản xuất nên tôi muốn tránh điều đó nếu có thể.

Câu trả lời:


4

Nếu tôi đang đọc chính xác câu hỏi của bạn, điều bạn thực sự muốn làm là hợp nhất hai LV trên các VG riêng biệt. Điều này sẽ bắt buộc bạn phải di chuyển dữ liệu từ LV này sang LV khác, không có cách nào để hợp nhất trực tiếp LV.

Vì vậy, bạn đang xem xét một số loại thời gian xuống.

Bạn có thể hạn chế nó, bằng cách thực hiện như sau: LVA - Sắp có khối lượng logic lớn hơn LVB - Sắp bị xóa khối lượng logic

  1. rsync LVB đến vị trí trên LVA (tốn nhiều thời gian nhất)
  2. ** Thời gian chết bắt đầu ** - Vô hiệu hóa truy cập từ xa
  3. Thực hiện rsync cuối cùng để đảm bảo tất cả dữ liệu hiện tại trên LVA
  4. Vượt qua LVB
  5. Di chuyển dữ liệu rsynced trên LVA đến vị trí nơi nó sẽ tồn tại như thể LVB đã được gắn kết (đây phải là w / trong LVA để mv chỉ là một hoạt động inode và do đó rất ngắn).
  6. ** Kết thúc thời gian chết ** - Kích hoạt lại quyền truy cập từ xa
  7. Để giải trí, hãy thổi bay LVB và vgmerge VGB vào VGA
  8. Sau đó, bạn có thể phát triển LVA (và có thể phát triển hệ thống tệp trực tuyến)

Vâng, đó là những gì tôi có nghĩa là "di chuyển mọi thứ xung quanh". Vấn đề là mỗi hai LV này đều có một số máy ảo và trước tiên tôi phải chuyển nội dung của LV (b) sang LV (c), sau đó xóa LV (b), hợp nhất VG (b) với VG (a), tạo một sọc LV (x) mới trên hai PV, sau đó cuối cùng chuyển nội dung từ LV (a) và LV (c) trở lại sọc LV (x). Có thể nhưng cồng kềnh. Thật tuyệt nếu tôi bằng cách nào đó có thể hợp nhất hai VG, tạo trực tiếp LV (x) và di chuyển nội dung, theo cách đó tôi sẽ chỉ phải sao chép nội dung một lần. Cũng xem xét các LV này là 300G + dữ liệu mỗi.
RCD

2

Mặc dù vậy, bạn sẽ có thể hợp nhất hai VGS, tôi không nghĩ rằng bạn sẽ có thể chuyển đổi một LV từ linearđể stripedkhông xóa đầu tiên nó và tái tạo nó.

Trong mọi trường hợp, bạn có thể dễ dàng thực hiện kiểm tra với các thiết bị lặp trên các tệp thưa thớt mà hầu như không chiếm bất kỳ dung lượng đĩa nào:

truncate -s500G a
truncate -s500G b
sudo losetup /dev/loop0 a
sudo losetup /dev/loop1 b
sudo pvcreate /dev/loop0
sudo pvcreate /dev/loop1
sudo vgcreate A /dev/loop0
sudo vgcreate B /dev/loop1
sudo lvcreate ...

Điều đó sẽ không có quá nhiều vấn đề, nhưng vgmerge hợp nhất một nhóm âm lượng không hoạt động thành một nhóm âm lượng hoạt động hoặc không hoạt động - vì vậy tôi phải vô hiệu hóa một trong các VG trước khi tôi có thể hợp nhất chúng. Nếu tôi hiểu đúng điều đó có nghĩa là LV trên VG bị vô hiệu hóa sẽ không sử dụng được và đó sẽ là một vấn đề. Nó sẽ đưa tôi trở lại quảng trường một người phải di chuyển mọi thứ xung quanh để có thể hoàn thành những gì tôi muốn làm.
RCD

0

Tôi không biết làm thế nào để làm điều đó mà không phá hủy hai khối tin hợp lý /dev/vg03/vz/dev/vg04/vz, và tạo ra một LV mới một khi bạn đã sắp xếp lại không gian.

Chiến lược sau đây (tôi chưa thử nghiệm) cho phép bạn có được cấu hình mong muốn mà không có thời gian chết cho các khối khác. Bạn có thể cần một số không gian tạm thời trên một đĩa cào, lên đến kích thước lớn nhất trong số LV bạn đang xóa.

  1. Sao lưu tất cả dữ liệu từ hai LV để xóa.
  2. Vô hiệu hóa LVs ( lvchange -an).
  3. Tạo một khối lượng vật lý trên không gian đầu ( pvcreate).
  4. Thêm không gian đầu vào vg03( vgextend). Di chuyển các phạm vi ở cuối của vg03không gian đầu bằng pvmove /dev/sdXX:MMM-NNN(thay thế sdXXbằng bộ xác định phân vùng thích hợp MMMNNNbằng các số phạm vi phù hợp). Di chuyển các phạm vi mà bạn muốn chuyển đổi để sử dụng bởi LV sọc mới.
  5. Gọi pvresizeđể thu nhỏ âm lượng vật lý trên nhóm âm lượng nơi bạn vừa giải phóng một số không gian ở cuối.
  6. Sử dụng fdiskhoặc partedthu nhỏ phân vùng chứa âm lượng vật lý bạn vừa thu nhỏ. Trong khi bạn đang ở đó, hãy tạo một phân vùng mới cho phần còn lại của không gian.
  7. Gọi pvmovemột lần nữa để di chuyển tất cả dữ liệu trở lại từ không gian đầu vào PV gốc (hiện đã bị thu hẹp).
  8. Lặp lại 4 bước trước cho vg04. Sau này, bạn không còn cần không gian đầu.
  9. Bây giờ có hai phân vùng mới không có gì trên chúng. Biến chúng thành các khối vật lý ( pvcreate) và tạo một nhóm âm lượng cho hai PV ( vgcreate) này.
  10. Tạo LV sọc trên VG mới.

Cảm ơn, nhưng đây dường như chỉ là một lời giải thích (có lẽ chi tiết hơn) như đã được thảo luận trong các câu trả lời khác, với nhu cầu bổ sung cho một đĩa cào (không có chỗ cho máy chủ vì nó đã có 4 trên 4 đĩa được cài đặt).
RCD
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.