Уменьшение физического тома LVM сверху mdadm ухудшило RAID-массив, добавив запчасть и восстановив его

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

Потоки по умолчанию (и по определению) не синхронизируются.

Это означает, если Вы не принимаете меры об обратном (через блокировки, семафоры, безотносительно), не ожидайте, что потоки выполнятся в каком-то конкретном порядке. Не имеет значения, что они делают или как Вы думаете, что они, "вероятно, произойдут" на основе того, что они делают и т.д. Помещать просто: не думайте о них этот путь, который не является тем, что они или как они предназначены, чтобы использоваться. Не потрудитесь придумывать mentalizations, такой как, "Я нахожусь в однопользовательском режиме, я пробую к все еще системе как вода потому что... и.. и тому подобное" до бесконечности, и т.д., это - пустая трата времени, нет ничего для изучения того пути. Вода неизбежно не все еще, это - то, как жидкости. Конец истории. Идите дальше и наслаждайтесь.

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

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

"Что заставляет детерминированную ОС казаться недетерминированной?"

Возможно, аналогия гидроаэродинамики не так глупа. Жидкости кажутся хаотичными - дым, может даже казаться, жив - и я верю в математику, которую действительно пересекает исследование гидроаэродинамики и теории хаоса. Однако большинство людей, вероятно, не ошеломлено этим ("Удивительный! Что могло вызвать такое поведение в природном явлении? Возможно, это - доказательство Бога!"... не), потому что мы можем понять, как взаимодействие детерминированных правил (законы гидроаэродинамики) просматриваемый в определенном масштабе приведет к результатам, которые только грубо предсказуемы ("ну, Вода будет двигаться потоком из стекла...") и следовательно эффективно хаотичны или недетерминированы (шаблон всплеска на таблице). Даже если это - "только очень небольшой огонь" или стекло воды, мы распознаем, что существует движение буквально триллионов из триллионов включенных частиц.

Если Вы будете иметь когда-нибудь занятый циклично выполненный со счетчиком только, чтобы видеть, как быстро Ваш компьютер может рассчитать, Вы будете знать, что это находится на порядке миллиардов времен в секунду. Следует иметь в виду, что большинство "незначительных" системных событий, постоянно продолжающихся даже "неактивную" систему, все еще будет намного более существенным, чем поток, действие которого измеряется печатью идентификатора, если это - весь поток, делает. При движении с нашей жидкой аналогией, даже в день, который кажется "абсолютно безветренным" нам, дым все еще не формирует организованный столбец (но мы видим более ясно, как его собственное перемещение влияет на него).

Планировщик, как предполагается, гарантирует, что все процессы, выполненные сбалансированным способом (сила тяжести удостоверится вода, будут двигаться потоком), однако, не путем предоставления каждому из них точно 1 наносекунды за один раз (который мог бы сделать эксперимент более предсказуемым). Это - все хорошо и хороший с тех пор, еще раз, это не роль планировщика для синхронизации чего-либо, это должно заставить все произойти соответственно сбалансированным способом. Этими двумя целями не является то же. При вхождении в синхронизацию Вы будете ценить, как, в то время как синхронизация может достигнуть ясного баланса, она прибывает за счет эффективности.

Кроме того, планировщик Linux использует красно-черное дерево для организации его очереди, он просто не обтекает все в строке FILO (я сомневаюсь, что любой современный планировщик общего назначения сделает это). Это подразумевает большую сложность и следовательно, более по-видимому хаотическое поведение.

Я не хочу поощрять Вас сохраняться в Вашей фиксации, но если Вы заставили потоки выполнять более существенную задачу, та, которая на самом деле возьмет их что-то напоминающее время, чтобы сделать, и запустить их смещенный на несколько секунд в в других отношениях неактивной системе, затем на самом деле, Вы будете видеть абсолютно детерминированные результаты. Просто имейте в виду, что это не действительно эффективное средство синхронизации - когда ветер поднимает, и вода становится грубой, Вы будете видеть, что хаос запускается ;)

"Вы знаете о каком-либо исследовании, которое изучает влияние этих событий на планировщике ОС?"

Нет, потому что нет ничего действительно таинственного об этом, как в случае жидкостей. Планировщик на самом деле абсолютно детерминирован, просто не в смысле, или в масштабе Вы рассматриваете. Если Вы помещаете набор информативных printks в ядре кодируют и понимают алгоритм планировщика, Вы ничто не найдете недетерминированным - все произойдет точно способ, которым это, как предполагается.

8
09.07.2015, 08:40
3 ответа

Вам не нужно сокращать PV или восстановить массив. Вам просто нужно создать новый массив из новых дисков и добавить, что в качестве нового PV ( PvCreate + Vgextend ), затем Pvmove Все существующие LVS от старого PV, затем удалите старый PV ( vgreduce ) и возьмите этот диск вне обслуживания.

5
27.01.2020, 20:11

Это не lvmove, а pvmove.

pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070

Это должно сдвинуть любые значения в пределах диапазона 89600-102950 до 0-12070. Согласно опубликованным вами данным, это должно привести к перемещению ваших LV в начало вашего PV.

3
27.01.2020, 20:11

ВНИМАНИЕ: ЭТО РУКОВОДСТВО ДАЛЕКО ОТ ОПТИМАЛЬНОГО. ЗАДАЧАЕТСЯ ОТВЕТ

Хорошо, я понял, как делать то, что пытался. Это будет своего рода учебное пособие.

За это время я еще не понял, что манипуляции с LV на самом деле возможны , когда файловые системы монтируются и загружаются в какой-нибудь live дистрибутив Linux (SystemRescueCD). Люди здесь объяснили мне, что в этом нет необходимости, если вы не манипулируете с реальными файловыми системами, а просто выравниваете LV и уменьшаете PV.

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

  1. В связи с несоприкасаемостью логических томов на моем физическом томе, я должен как-то переместить их в начало физического тома. Команда pvmove, как предлагает @frostschutz, может перемещать LVs в пределах PV:

    root@wheezy:/home/a# pvmove --alloc=anywhere /dev/md0:89600-102950 /dev/md0:0-12070
    /dev/md0: Перемещен: 100.0%
    
    root@wheezy:/home/a# pvs -v -сегменты /dev/md0
     Использование физического тома(ов) в командной строке
     PV VG Fmt Attr Размер PSize PFree Начало SSize LV Начало типа PE Диапазоны 
     /dev/md0 система lvm2 a-- 465.53g 418.38g 0 38 boot 0 linear /dev/md0:0-37 
     /dev/md0 система lvm2 a-- 465.53g 418.38g 38 512 корень 0 линейный /dev/md0:38-549 
     /dev/md0 система lvm2 a-- 465.53g 418.38g 550 5120 usr 0 линейный /dev/md0:550-5669 
     /dev/md0 система lvm2 a-- 465.53g 418.38g 5670 2560 tmp 0 линейный /dev/md0:5670-8229 
     /dev/md0 система lvm2 a-- 465.53g 418.38g 8230 3840 var 0 linear /dev/md0:8230-12069
     /dev/md0 система lvm2 a-- 465.53g 418.38g 12070 107106 0 свободный 
    
  2. Теперь PV готов к сжатию до размера SSD (80 Гб). На самом деле 80 гигабайт - это 800000000 байт:

    root@wheezy:/home/a# pvresize --setphysical volumeumesize 800000000B /dev/md0
     Физический объем "/dev/md0" изменился
     1 физический(е) том(ы) изменен(ы) размер / 0 физический(е) том(ы) не изменен(ы) размер
    
    root@wheezy:/home/a# pvs
     PV VG Fmt Attr PSize PFree 
     /dev/md0 система lvm2 a-- 74.50g 27.36g
    
  3. После этого я могу изменить размер самого массива. На этом уровне нет файловых систем, поэтому в итоге я получаю только одну команду mdadm --grow, которая на самом деле может быть использована и для сокращения массивов. Размер должен быть введен в кибибайт, так что это 80000000000 / 1024 = 78125000:

    root@wheezy:/home/a# mdadm --grow --size=78125000 /dev/md0
    мдадм: размер компонента /dev/md0 установлен на 78125000K
    
    root@wheezy:/home/a# mdadm -D /dev/md0
    /dev/md0:
     Версия: 1.2
     Время создания: Ту Дек. 4 12:20:22 2014
     Уровень рейда: рейд1
     Размер массива: 78125000 (74,51 гигабайта 80,00 гигабайта)
     Размер используемого устройства: 78125000 (74,51 гигабайта 80,00 гигабайта)
     Устройства для набегов : 2
     Всего Устройства : 1
     Настойчивость : Суперблок устойчив
    
     Время обновления : Ту Дек. 4 17:56:53 2014
     Состояние: чистый, деградировавший 
     Активные устройства : 1
    Рабочие устройства : 1
     Неисправные устройства : 0
     Запасные устройства : 0
    
     Имя : хрипящий:0 (локальный для хоста хрипящий)
     UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
     События : 60
    
     
     0 8 16 0 активная синхронизация /dev/sdb
     1 0 0 1 удалён
    
  4. Теперь пришло время добавить существующий SSD в массив и позволить ему перестроить:

    root@wheezy:/home/a# mdadm --add /dev/md0 /dev/sdc
    mdadm: добавлен /dev/sdc
    
    root@wheezy:/home/a# cat /proc/mdstat 
    Личности : [рейд1] 
    md0 : активный рейд1 sdc[2] sdb[0]
     78125000 блоки супер 1,2 [2/1] [U_]
     [>....................] восстановление = 1,3% (1081920/78125000) окончание = 11,8 мин. скорость = 108192K/сек.
    
    неиспользуемые устройства: <нет>
    

После восстановления у меня есть здоровый массив. Его члены можно поменять местами, а установку GRUB можно произвести в обычном режиме (после загрузки в производственную систему) с помощью grub-install /dev/sdc.

3
27.01.2020, 20:11

Теги

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