Âm lượng LVM không hoạt động sau khi khởi động lại CentOS


9

Tôi đã cài đặt lại máy chủ Linux từ CentOS 6 đến 7. Máy chủ có 3 ổ đĩa - ổ SSD hệ thống (nó lưu trữ mọi thứ trừ /home) và hai ổ đĩa cứng 4TB lưu trữ /home. Mọi thứ đều sử dụng LVM. Hai ổ đĩa 4TB được nhân đôi (sử dụng tùy chọn đột kích trong chính LVM) và chúng được lấp đầy hoàn toàn với phân vùng / home.

Vấn đề là mặc dù các đĩa 4TB được nhận dạng tốt và LVM thấy âm lượng không có vấn đề, nhưng nó không tự động kích hoạt nó. Mọi thứ khác được kích hoạt tự động. Tôi có thể kích hoạt nó bằng tay, và nó hoạt động.

Tôi có một hình ảnh của ổ đĩa hệ thống cũ trong / nhà. Nó cũng chứa khối lượng LVM. Nếu tôi gắn nó với kpartx, và LVM chọn chúng và kích hoạt chúng. Nhưng tôi có thể thấy không có sự khác biệt giữa các khối lượng và những người không hoạt động.

Hệ thống tập tin gốc cũng là LVM và điều đó kích hoạt tốt.

Tôi thấy một điều đặc biệt: thực thi lvchange -aaycho tôi biết rằng tôi cần chỉ định ổ đĩa nào tôi muốn kích hoạt. Nó cũng không tự động làm điều đó. Nếu tôi chỉ định lvchange -ay lv_home- điều đó làm việc.

Tôi không thể tìm thấy bất cứ điều gì có thể chịu trách nhiệm cho hành vi này.

Đã thêm: Tôi nhận thấy rằng hệ thống cũ (sử dụng init) có vgchange -aay --sysinittrong các tập lệnh khởi động. Cái mới sử dụng systemd và tôi không thấy vgchangecuộc gọi trong tập lệnh của nó. Nhưng tôi cũng không biết đặt nó ở đâu.

Đã thêm 2: Bắt đầu tìm hiểu systemd. Tôi tìm thấy nơi các kịch bản được đặt và bắt đầu hiểu cách chúng được gọi. Cũng thấy rằng tôi có thể thấy các tập lệnh thực thi với systemctl -al. Điều này cho tôi thấy rằng sau khi bắt đầu, lvmetadnó gọi pvscancho từng thiết bị khối udev đã biết. Tuy nhiên, tại thời điểm đó, chỉ có một thiết bị khối udev đã đăng ký và đó là một trong những khối lượng lvm được công nhận. Các ổ đĩa cứng cũng có, nhưng dưới các đường dẫn khác nhau và tên dài hơn nhiều. Thiết bị khối được công nhận là một cái gì đó giống như 8:3, trong khi các ổ đĩa cứng là như thế /device/something/. Tôi không ở máy chủ nữa, vì vậy tôi không thể viết chính xác (sẽ sửa lỗi này sau).

Tôi nghĩ rằng nó có liên quan đến udev và phát hiện / ánh xạ thiết bị. Tôi sẽ tiếp tục vào buổi tối và sau đó sẽ học udev.

Nếu vẫn thất bại, tôi tìm thấy tập lệnh gọi pvscanvà kiểm tra rằng tôi có thể sửa đổi nó để quét tất cả các thiết bị mọi lúc. Điều đó khắc phục vấn đề, nhưng có vẻ như một vụ hack khá xấu xí, vì vậy tôi sẽ cố gắng tìm ra nguyên nhân gốc rễ thực sự.

Đã thêm 3 : OK, tôi vẫn không biết tại sao điều này xảy ra, nhưng ít nhất tôi đã thực hiện một cách giải quyết khá dễ dàng. Tôi đã thực hiện một dịch vụ systemd khác gọi pvscanmột lần, ngay sau khi bắt đầu lvmetad. Cuộc gọi khác cho thiết bị cụ thể vẫn còn đó và tôi nghĩ rằng nó thực sự udevgọi nó (đó là nơi duy nhất tôi tìm thấy tài liệu tham khảo về nó). Tại sao nó không gọi nó cho các ổ đĩa cứng khác - tôi không biết.


Các dịch vụ hệ thống LVM đang chạy? Điều này đã xảy ra với tôi.
Naftuli Kay

@NaftuliTzviKay - Có, các dịch vụ đang bắt đầu tốt (ít nhất lvmetadlà - Tôi chưa nhận thấy bất kỳ dịch vụ nào khác).
Vilx-

Có một dịch vụ khác có tên trốn tránh tôi vào lúc này.
Naftuli Kay

@NaftuliTzviKay - Hmm ... cũng có một số loại dịch vụ "giám sát". Điều đó cũng bắt đầu tốt, mặc dù tôi nhớ đọc về những gì nó làm và đi đến kết luận rằng nó không áp dụng cho tôi. Tuy nhiên, hiện tại tôi không có quyền truy cập vào hộp, vì vậy tôi sẽ kiểm tra lại sau.
Vilx-

Câu trả lời:


7

Tôi đã làm nó! Tôi đã làm nó! Tôi đã sửa nó đúng cách (tôi nghĩ).

Đây là câu chuyện:

Sau một thời gian, máy chủ hóa ra bị lỗi và phải bị loại bỏ. Tôi giữ đĩa và có mọi thứ mới. Sau đó, tôi cài đặt lại CentOS trên SSD và sau đó tôi gắn ổ cứng. LVM hoạt động tốt, các đĩa được nhận dạng, cấu hình được giữ. Nhưng vấn đề tương tự lại xuất hiện - sau khi khởi động lại, âm lượng không hoạt động.

Tuy nhiên lần này tôi tình cờ nhận thấy một điều khác - bộ nạp khởi động chuyển các tham số sau cho kernel:

crashkernel = auto rd.lvm.lv = centos / root rd.lvm.lv = centos / hoán đổi rhgb yên lặng

Hmm, đợi một chút, những người nhìn FAMILIAR !

Truy vấn google nhanh, và chúng tôi có :

rd.lvm.lv =

chỉ kích hoạt các khối hợp lý với tên đã cho. rd.lvm.lv có thể được chỉ định nhiều lần trên dòng lệnh kernel.

Vâng bây giờ Giải thích nó!

Vì vậy, độ phân giải là (được thu thập từ một số truy vấn khác của google):

  1. Sửa đổi /etc/defaults/grubđể bao gồm âm lượng bổ sung trong các tham số:crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swaprd.lvm.lv=vg_home/lv_homerhgb quiet
  2. Cấu hình lại grub với grub2-mkconfig -o /boot/grub2/grub.cfg
  3. Cấu hình lại initramfs với mkinitrd -f -v /boot/initramfs-3.10.0-327.18.2.el7.x86_64.img 3.10.0-327.18.2.el7.x86_64. Lưu ý: giá trị của bạn có thể thay đổi. Sử dụng uname -rđể có được phiên bản kernel đó. Hoặc chỉ cần đọc lên trên mkinitrd. (Thành thật mà nói, tôi không biết tại sao bước này là cần thiết, nhưng rõ ràng là vậy - tôi đã thử mà không có nó và nó không hoạt động)
  4. Và cuối cùng, cài đặt lại grub: grub2-install /dev/sda
  5. Khởi động lại, tự nhiên.

TA-DA! Âm lượng được kích hoạt khi khởi động lại. Thêm nó vào fstabvà thưởng thức! :)


2

Cập nhật nhỏ (cho RHEL 7 trên máy EFI (không phải BIOS) ):

Tôi đã thành công khi sử dụng các bước sau:

  1. Sửa đổi /etc/defaults/grubđể bao gồm âm lượng bổ sung trong các tham số: rd.lvm.lv=rhel/home(ngoài rhel/rootrhel/swap)
  2. Cấu hình lại grub với

    grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    

    ( lưu ý: một con đường khác!)

  3. Cấu hình lại initramfs với

    mkinitrd -f -v /boot/initramfs-$(uname -r).img $(uname -r)
    
  4. Bỏ qua cài đặt lại grub: grub2-install /dev/sda(vì tôi có một thư mục trống /usr/lib/grub/)
  5. Khởi động lại, tự nhiên.

Hmm, có vẻ như bạn đang sử dụng EFI. Trong trường hợp của tôi, đó là một hộp BIOS, vì vậy đó có thể là lý do tại sao sự khác biệt.
Vilx-

Vâng, nó là một lưỡi x240. Tôi đã thêm một ghi chú trên EFI.
jno

@ Vilx- Có một nhà cung cấp đề xuất cách giải quyết cho lỗi này. Nhưng nó thực sự xấu xí. Họ đề xuất thêm _netdevcờ để fstab, cho phép chkconfig netfs onvà thậm chí tắt use_lvmetad = 0các lvmetadtrong /etc/lvm/lvm.confchỉ trong hy vọng thiết bị này sẽ tái thăm dò và đưa lên ...
jno

Xin lỗi, không thể nhìn thấy nó, vì tôi không phải là khách hàng của RedHat. Nhưng tôi không thấy lý do tại sao các giải pháp của chúng tôi không chính xác và cần một cách giải quyết khác. Ý tôi là, đây không phải là một lỗi - mọi thứ đều hoạt động như mong muốn.
Vilx-

Tôi nghĩ, đó là một lỗi: root và trao đổi được liệt kê rõ ràng trong kernel cmdline trong khi nhà thì không. Do đó, chúng tôi có hai vols LVM được gắn và một lủng lẳng ở trạng thái "không hoạt động". Tôi đã trích dẫn đề xuất của họ ở đây chính xác để tránh sự cần thiết trong thông tin truy cập cụ thể :)
jno

1

Tôi đã có vấn đề này là tốt. Trong trường hợp của tôi, đó là sự kết hợp giữa iscsi, multath và lvm và thứ tự tạo phiên, v.v. Tôi đã giải quyết vấn đề bằng cách thêm một cuộc gọi /sbin/vgchange -a yđến /etc/rc.local.


0

Vì vậy, tôi đã thử cài đặt rd.lvm.lv = trong / etc / default / grub và nó không hoạt động

Tôi cần cả hai khối hợp lý trên nhóm âm lượng ssd_vg để hoạt động khi khởi động. Cũng như khối lượng logic home_lv trên kubfox-vg đang hoạt động

Những gì đã làm là chỉnh sửa /etc/lvm/lvm.conf Trong phần danh sách âm lượng, hãy đặt phần này vào volume_list = ["ssd_vg", "kubfox-vg / home_lv"]

kết quả sau khi khởi động lại

$ sudo lvscan không hoạt động Bản gốc '/ dev / kubfox-vg / root' [50.00 GiB] kế thừa

inactive          '/dev/kubuntu-vg/swap_1' [7.88 GiB] inherit

ACTIVE            '/dev/kubuntu-vg/home_lv' [1000.00 GiB] inherit

inactive Snapshot '/dev/kubuntu-vg/root_snap11' [50.00 GiB] inherit

inactive Snapshot '/dev/kubuntu-vg/root_snap12' [50.00 GiB] inherit

ACTIVE            '/dev/ssd_vg/root' [224.02 GiB] inherit

ACTIVE            '/dev/ssd_vg/swap_1' [7.88 GiB] inherit

0

Về phần tôi, tôi có nhận xét dòng này trong /etc/lvm/lvm.conf

auto_activation_volume_list = [ "vg00", "vg01" ]

Bởi vì nếu nó hoạt động, chỉ có khối lượng vg00 và vg01 được kích hoạt khi khởi động.

Tài liệu của lvm.conf:

If auto_activation_volume_list is defined, each LV that is to be
activated with the autoactivation option (--activate ay/-a ay) is
first checked against the list. There are two scenarios in which
the autoactivation option is used:

  - automatic activation of volumes based on incoming PVs. If all the
    PVs making up a VG are present in the system, the autoactivation
    is triggered. This requires lvmetad (global/use_lvmetad=1) and udev
    to be running. In this case, "pvscan --cache -aay" is called
    automatically without any user intervention while processing
    udev events. Please, make sure you define auto_activation_volume_list
    properly so only the volumes you want and expect are autoactivated.

  - direct activation on command line with the autoactivation option.
    In this case, the user calls "vgchange --activate ay/-a ay" or
    "lvchange --activate ay/-a ay" directly.

By default, the auto_activation_volume_list is not defined and all
volumes will be activated either automatically or by using --activate ay/-a ay.

N.B. The "activation/volume_list" is still honoured in all cases so even
if the VG/LV passes the auto_activation_volume_list, it still needs to
pass the volume_list for it to be activated in the end.

If auto_activation_volume_list is defined but empty, no volumes will be
activated automatically and --activate ay/-a ay will do nothing.

auto_activation_volume_list = []

If auto_activation_volume_list is defined and it's not empty, only matching
volumes will be activated either automatically or by using --activate ay/-a ay.

  "vgname" and "vgname/lvname" are matched exactly.
  "@tag" matches any tag set in the LV or VG.
  "@*" matches if any tag defined on the host is also set in the LV or VG


Only activate vg00 and vg01 automatically.
auto_activation_volume_list = [ "vg00", "vg01" ]
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.