Могут ли несколько томов lvm2 в одной группе томов быть загрузочными корневыми томами?

Учитывая sub.txtподобное:

$ cat sub.txt 
A -> Y
B -> V
C -> Q
D -> K
E -> L
F -> O
G -> P
H -> W
I -> X
J -> Z

Вы можете перебирать его в цикле оболочки, читая каждый из трех элементов в каждой строке в переменную:

while IFS=' ' read -r from ignore to; do... ; done < sub.txt

В этом цикле while$fromбудет исходным символом, а $toбудет символом, которым вы хотите его заменить. $ignoreпосередине — это просто держатель для ->.

Предполагается, что пробел и перевод строки(' 'и\n)отсутствуют в списке символов, которые вы хотите транслитерировать.

Имея это в виду, вы можете использовать tr, чтобы внести изменения и перенаправить вывод в новый файл:

while IFS=' ' read -r from discard to; do 
    printf '%s\n' "$string" | tr "$from" "$to" > changed."$from".txt
done < sub.txt 

Обратите внимание, что некоторые реализации trзавершатся ошибкой, если $fromили $toравно [или если они представляют собой многобайтовые -символы. Вышеприведенное также предполагает, что $fromне является /.

Если string="ABCDEFGHIJ", приведенная выше команда создаст эти файлы:

$ ls changed*
changed.A.txt  changed.D.txt  changed.G.txt  changed.J.txt
changed.B.txt  changed.E.txt  changed.H.txt
changed.C.txt  changed.F.txt  changed.I.txt

Со следующим содержанием:

$ for f in changed.*; do printf '%s\n' "=== $f ==="; cat "$f"; done
=== changed.A.txt ===
YBCDEFGHIJ
=== changed.B.txt ===
AVCDEFGHIJ
=== changed.C.txt ===
ABQDEFGHIJ
=== changed.D.txt ===
ABCKEFGHIJ
=== changed.E.txt ===
ABCDLFGHIJ
=== changed.F.txt ===
ABCDEOGHIJ
=== changed.G.txt ===
ABCDEFPHIJ
=== changed.H.txt ===
ABCDEFGWIJ
=== changed.I.txt ===
ABCDEFGHXJ
=== changed.J.txt ===
ABCDEFGHIZ

Это меняет каждый символ отдельно. Если вместо этого вы хотите сделать это постепенно, так что в 1-м файле будет изменен только 1-й символ, а во втором файле будут изменены как 1-й, так и 2-й символы, вы можете сделать:

tmpFile=$(mktemp) 
printf '%s\n' "$string" > "$tmpFile" 
while IFS=' ' read -r from ignore to; do 
    tr "$from" "$to" < "$tmpFile" > changed."$from".txt
    cp changed."$from".txt "$tmpFile"
done < sub.txt 

Это создаст следующие файлы:

$ for f in changed.*; do printf '%s\n' "=== $f ==="; cat "$f"; done
=== changed.A.txt ===
YBCDEFGHIJ
=== changed.B.txt ===
YVCDEFGHIJ
=== changed.C.txt ===
YVQDEFGHIJ
=== changed.D.txt ===
YVQKEFGHIJ
=== changed.E.txt ===
YVQKLFGHIJ
=== changed.F.txt ===
YVQKLOGHIJ
=== changed.G.txt ===
YVQKLOPHIJ
=== changed.H.txt ===
YVQKLOPWIJ
=== changed.I.txt ===
YVQKLOPWXJ
=== changed.J.txt ===
YVQKLOPWXZ
0
12.10.2020, 20:33
2 ответа

Я не уверен в загрузке systemd -, но grub работает с любым именем. Именование /lv root— это просто «лучшая практика», чтобы было понятно, что содержит lv. У меня есть система с root lv с именем 00и swap lv 01, и она отлично работает.

$ cat /proc/cmdline 
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.8.6-301.fc33.x86_64 root=/dev/mapper/fedora-00 ro resume=/dev/mapper/fedora-01 rd.lvm.lv=fedora/00 rd.lvm.lv=fedora/01 rhgb quiet

Возможно, загрузчик systemd -перепутан, потому что в имени есть тире. Тире обычно используется как разделитель между vg и lv name, но это всего лишь догадка.

У вас может быть несколько систем в одной vg, но будут проблемы с загрузкой--/bootнельзя разместить на lv, но возможно с общим/boot/efi(Я не уверен, я я не очень хорошо знаком с загрузкой в ​​​​системах EFI ). Но имена lv должны быть проблемой в этой настройке.

1
18.03.2021, 22:58

Раздел /boot не может быть устройством LVM, потому что при загрузке система сначала ищет /boot/vmlinuz, и в это время lvm не может быть распознан, потому что в это время не загружен модуль для lvm. Итак, раздел /boot не может быть разделом lvm.

Однако это можно сделать, но не рекомендуется, поскольку это описано в ссылке, которую я дал в комментарии.

Я никогда этого не пробовал, но вы можете прочитать:ЗАГРУЗКА LINUX ИЗ ТОМА LVM

Grub2 поддерживает загрузку на lvm.

Имя группы томов не имеет значения.

Все, что вам нужно сделать, это создать физический том, группу томов и логические тома. Неважно, как будет называться группа томов, это может быть root -vg или centos -vg, rhel -vg.

См. этот учебник, чтобы узнать:LFCS :Как управлять и создавать LVM с помощью команд vgcreate, lvcreate и lvextend

Я не знаю, могут ли многие логические тома быть загрузочными. Я полагаю, что нет. но нет знаний, чтобы ответить на этот вопрос.

1
18.03.2021, 22:58

Теги

Похожие вопросы