Виртуальная машина не может расширить /dev/mapper/vg0 -rootvol

_=в начале строки в выводе простого набора означает, что в bash есть переменная с именем_(подчеркивание ). И его значение равно тому, что следует за =. Например, установка переменной с именем test_varна 12345даст (в bash):

$ test_var=12345

$ set | grep test_var
test_var=12345

$ declare -p test_var
test_var=12345

Эта специальная переменная bash будет установлена ​​в последний аргумент предыдущей строки:

$ echo "Testing some" "values" "in the shell" "(only bash)" "_=myvar=hello"
Testing some values in the shell (only bash) _=myvar=hello

$ echo "$_"
_=myvar=hello

$ echo "Testing some" "values" "in the shell" "(only bash)" "_=myvar=hello"
Testing some values in the shell (only bash) _=myvar=hello

$ declare -p _
declare -- _="_=myvar=hello"

Обратите внимание на два=в этом выводе.


Подробное описание

При выполнении set -a var=99, происходят три различных события (, связанные с вашим вопросом):

  1. Установите параметр(-a)(в обратном порядке, выполнивset +a)для экспорта переменных.
  2. Позиционные параметры «устанавливаются» в соответствии с параметрами ($1, установленными наvar=99).
  3. Подчеркивание переменной оболочки $_установлено в последний параметр (, расширенный ).

установить -a

Выполнение set -aпомечает все последующие (новые или измененные )переменные как экспортированные (во всех оболочках, кроме cshи некоторых родственных оболочках ).

$ set -a
$ myvariable=wer
$ env | grep myvariable
myvariable=wer

Чтобы вернуться к этой настройке, просто измените -на +:

.
$ set +a
$ unset myvariable              # to erase it from the environment if it
                                # was exported before the change of set +a
$ myvariable=456544654          # A new value of the variable.
$ env | grep "variable"         # No output means the var does not exist
                                # in the current environment

установить переменную=99

Что на самом деле должно быть set -- var=99, чтобы избежать интерпретации опции (и set has lot )со значениями, начинающимися с тире(-).

Устанавливает список аргументов (список позиционных параметров )на то, что после --. Это справедливо для всех разумных оболочек (, но не для csh и др. ). Позиционные аргументы печатаются с "$@" (или аналогичным "$ *", не равным ).

$ set -- a=1 b=2 c=3
$ echo "$@"
a=1 b=2 c=3

#_=последний _аргумент И значение внутренней переменной оболочки _изменится на последний аргумент исполняемой строки. Это НЕ верно почти для всех оболочек (jsh, ash, yash, dash, lksh, mksh, ksh93,attsh и, конечно же, csh и tcsh ), кроме bash.

$ echo one two last argument
one two last argument

$ echo "$_"
argument

$ echo This is a new: last_argument
This is a new: last_argument

$ echo "$_"
last_argument

Обратите внимание, что значение в $_— это значение после расширения :

.
$ a="A New_Argument"
$ echo Something else to test: "$a"
Something else to test: A New_Argument

$ echo "$_"
A New_Argument

Вот почему при выполнении:

$ set -a myvar=99; set | grep 'myvar'
_=myvar=99

Вы получаете описание переменной оболочки '$ _'. Это тоже работает:

$  set -a myvar=99; declare -p _
declare -- _="myvar=99"
0
16.09.2020, 12:39
2 ответа

Перед расширением логического тома необходимо расширить группу томов, поскольку логический том содержится в группе томов.

Для выполнения этих операций необходимо размонтировать файловые системы. Самый простой способ размонтировать их и при этом иметь возможность работать в системе — запустить живую операционную систему Linux.

Обычно эта работающая система находится на флэш-накопителе, но, поскольку вы используете виртуальную машину, вы можете смонтировать ISO-файл работающей системы Linux на виртуальную машину в настройках виртуальной машины, а затем установить приоритет загрузки, чтобы она загружалась. из ИСО.

Я знаю, что Ubuntu и Fedora предлагают свои установочные образы в качестве живых операционных систем, как и многие другие дистрибутивы. Вам может потребоваться установитьlvm2(пакет apt ), чтобы у вас были необходимые инструменты.

Чтобы расширить группу томов, вам необходимо создать новый физический раздел, используя свободное пространство, на которое может быть расширена группа томов.

fdisk /dev/sda/

В интерактивном меню выполните следующие действия:

n to create a new partition
3 for the third partition
Enter for default first sector
Enter again for default last sector
w to write changes and exit

Подсказки могут различаться от системы к системе, но в основном вам просто нужен новый раздел нужного размера. То, что я показал, будет использовать все свободное место на диске. Теперь раздел нужно превратить в раздел LVM или физический том

.
pvcreate /dev/sda3

Затем вы можете расширить физический том, содержащий группу томов, в новый физический том, объединив их.

pvextend /dev/vg0 /dev/sda3

Теперь, если вы выполните vgs, вы должны увидеть, что группа томов стала больше, давая место для расширения логического тома.

lvextend --size +350G /dev/mapper/vg0-rootvol

Логический том теперь должен быть больше.

lvs
1
18.03.2021, 23:04

вы не найдете больше места в /dev/sda2, потому что вы не расширили его и не создали новый раздел с новым пространством.

вы должны создать новый /dev/sda3 с 350 ГБ с помощью следующих команд:

fdisk /dev/sda 
n create new  
p primary  partition
[enter]
                 //then change the partition type to lvm using this :
t to change type 
8e is for lvm 

когда закончите, введите w, чтобы записать и перезагрузить компьютер

теперь, после создания /dev/sda3, вы можете расширить желаемую vg с помощью следующей команды s:

pvcreate /dev/sda3

vgextend vg_xxx /dev/sda3

pvscan

vgdisplay

lvextend -l +350GB /dev/vg_xxx-lv_xxyy

xfs_growfs  /dev/vg_xxx-lv_xxyy

lvdisplay

vgdisplay
1
18.03.2021, 23:04

Теги

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