LVM: шпаргалка

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

Перво-наперво

У нас должно быть свободное место в Volume Group.  Нет смысла без особой необходимости забивать все свободное место логическими томами, когда их свободное место будет использовано не до конца. Если у нас один хард на 500 гиг, мы делаем группу на весь этот объем, а дальше, например, делаем один том в 1G под swap, другой — в 9G под /, и, например, третий — на 50G под /home. У нас остается  440G свободного места, которое мы в любой момент можем докинуть в любой раздел, а также использовать под снапшоты. Соу…

Как добавить места на Logical Volume

Увеличение можно проделывать на смонтированной файловой системе.

Допустим, у нас есть LVM-том с линуксовым корнем /dev/mypc/root, содержащий на себе линуксовый корень. Докинуть 100 мегабайт можно командой:

 
 
  1. lvextend -L +100m /dev/mypc/root
  2. resize2fs /dev/mypc/root

 

Первая команда увеличит том, вторая — распространит на него файловую систему.

 

Как сделать и откатить снапшот

Допустим, у нас все еще есть LVM-том /dev/mypc/root, содержащий на себе линуксовый корень. Если нам нужно, например, накатить новые дрова для видюхи и мы боимся все сломать, делаем снапшот:

 
 
  1. lvcreate -L2G -s -n rootsnapshot /dev/mypc/root

 

Эта команда сделает снапшот /dev/mypc/rootsnapshot, который будет содержать состояние на момент создания снапшота. При этом есть ограничение в 2 гига на изменения в нашем корне, если превысим — снапшот перестанет быть валидным и его можно будет только удалить:

 
 
  1. lvremove /dev/mypc/rootsnapshot

 

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

 

Автоматическое увеличение размера снапшота LVM

Тут все просто, но не так просто, как часто пишут в интернетах. Нужно:

  1. Изменить файлик /etc/lvm/lvm.conf:
    snapshot_autoextend_threshold = 80
    snapshot_autoextend_percent = 20
    monitoring = 1Эти опции включают мониторинг, а так же увеличивают размер снапшота на 20% (от текущего размера) каждый раз, когда он оказывается занят изменениями на 80%.
  2. Установить dmeventd, который может не стоять, но который нужен чтобы все работало!

Теперь, когда наш снапшот умеет расти в размере и ему почти ничего не страшно, можно поиздеваться над корнем и откатить все изменения командой:

 
 
  1. lvconvert --merge  /dev/mypc/rootsnapshot

 

Вообще эта команда должна производиться при отмонтированном разделе, но так как в нашем случае это корень, то отмонтировать его не получится, и lvconvert скажет, что сделает все в лучшем виде при следующей активации тома — то есть при перезагрузке.

 

Как смигрировать на другой физический диск

Очень вкусная возможность лайв-миграции позволяет перетащить свои разделы с одного диска на второй, не отрываясь от работы.

Допустим у нас есть диск /dev/sda. На его разделе /dev/sda1 у нас покоится Volume Group «mypc» с нашими логическими томами:

  1. root — с корнем линукса (/),
  2. home — с домашними  каталогами (/home),
  3. swap — с разделом подкачки.

И нам нужно все это добро перенести на новый хард — /dev/sdb, который гол как сокол и ничего ж там нет.

Готовим новый диск

 
 
  1. # Создаем раздел на новом диске:
  2. parted -a opt /dev/sdb mkpart primary 0% 100%
  3. # Создаем физический том LVM:
  4. pvcreate /dev/sdb1
  5. # Расширяем Volume Group на новый физический том:
  6. vgextend mypc /dev/sdb1

 

Сдвигаем наши три логических тома со старого физического тома на новый:

 
 
  1. pvmove -n /dev/mypc/root /dev/sda1 /dev/sdb1
  2. pvmove -n /dev/mypc/home /dev/sda1 /dev/sdb1
  3. pvmove -n /dev/mypc/swap /dev/sda1 /dev/sdb1

 

Избавляемся от старого харда

 
 
  1. # Удаляем физический том LVM из группы "mypc":
  2. vgreduce mypc /dev/sda1
  3. # Удаляем физический том LVM:
  4. pvremove /dev/sda1

 

Устанавливаем загрузчик на новый диск и обновляем его конфиг:

 
 
  1. grub-install /dev/sdb
  2. update-grub

 

После перезагрузки останется вытащить старый диск и при необходимости выставить в биосе загрузку с нового.

Как сделать клон логического тома

Два хороших источника по этим операциям: www.voleg.info (archive.org) и redhat.com (archive.org)

Сначала делаем зеркальный рейд из тома, который хотим склонировать

 
 
  1. lvconvert --type mirror --alloc anywhere -m1 /dev/mypc/root
  2. # или, если хотим указать конкретный физически том для расположения клона
  3. lvconvert --type mirror -m1 /dev/mypc/root /dev/sdb1

Далее, когда зеркало собрано, его можно разобрать, отделив одну из копий как том с новым именем.

 
 
  1. # отрезаем от зеркала том с именем rootcopy, состоящий из 1 копии, лежащей на PV /dev/sda1
  2. lvconvert --splitmirrors 1 --name rootcopy /dev/mypc/root /dev/sda1
  3. # более общий случай: если у нас зеркало составлено из более чем двух копий:
  4. # отрезаем от зеркала том с именем rootcopy, который сам будет являться зеркалом из томов, лежащих на PV /dev/sda1 и /dev/sdс1
  5. lvconvert --splitmirrors 2 --name rootcopy /dev/mypc/root /dev/sd[ac]1

Мой первый большой и серьезный кусок кода

Сегодня у меня появился небольшой повод для гордости. Я, конечно, не программист, но админ-  периодически небольшие скрипты писать приходится. Но сегодня я дописал (до юзабельного состояния, не идеального, не суперкрасивого, но юзабельного) свой первый большой скрипт-гуй для бэкапа LVM-разделов и, собственно, восстановления из бэкапа. Процентов на 70 это была тренировка питона, ибо написано все на нем, и процентов на 30 — решение своей хотелки управления бэкапами более-менее наглядно и без переписывания неинтерактивных скриптов по каждому чиху.

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

Стартовый экран выглядит вот так:

При первом запуске он запоминает текущую директорию, в которой был запущен, и делает ее рабочей при последующих запусках. Если потом его запустить в другой дире (как на текущем скрине) — будет предлагать сохранить ее как рабочую.
Тут же, не отходя от кассы можно набить список исключений.

Допустим мы хотим забэкапиться, выбираем бэкап!

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

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

Ну и наконец — восстановление.
Выбираем файл, который хотим восстановить:

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

В общем вышла такая себе управлялка бэкапами, для наглядного процесса копирования и восстановления.

Код на гитхабе: https://github.com/qiwichupa/lvmdarbackuper/blob/master/lvmdarbackuper.py

Черепашки-ниндзя 2. И для кого они это сняли??

Ну… что ж, вот я наконец и посмотрел вторую часть черепах от Майкла Бэя (и не важно что он не режиссер — видно что фильм именно от него). Не думаю что я многого ждал от этой части, но периодически слышал мнение, что в ней поправили определенные косяки первой, и в целом она стала лучше.

Хрен там был. Возможно что-то улучшили в графике, возможно подправили героям морды, но… вот весь фильм меня не покидало ощущение, что я смотрю какое-то произведение абстракционизма. Набор сцен или даже кадров, которые мельтешат, создавая какой-то совершенно не наполненный смыслом видеоряд. Сценарий этого фильма — это не просто дно, это какая-то бездонная пропасть, в которую уронили, кажется, любые возможные и нужные фильму «обоснуи». То есть НУ ВООБЩЕ буквально все. С самого начала фильм несется бешеным локомотивом, давая понять, что все происходящее будет происходить НУ ПРОСТО ТАК, без объяснений. Почему черепахи светятся перед доставщиком пиццы, хотя должны ото всех скрываться? Почему сверхопасного Шреддера перевозят с парой каких-то дебилов-панков? Почему крэнг постоянно болтается снаружи своего тела, которое вообще-то должно быть его броней? Почему ниндзя клана фут огребает от Вернона, мешком картохи плюхнувшегося на него, а правая рука Шреддера — от Эйприл и ее ноутбука? Почему актеры играют так НИКАК??

Никаких ответов на самые очевидные, кажется даже для ребенка, вопросы фильм не дает. Дорога сценария выстлана из роялей на все 100%. Абсолютно все действия персонажей направлены на скорость происходящего, без пояснений почему все должно сработать, а срабатывает ну просто потому что в этой вселенной у хороших парней все должно складываться идеально. А если не сложилось, то через 10 минут это все поправят и все снова будет хорошо. В фильме нет вообще никакой интриги, никаких сложностей для персонажей, о которых можно было бы задуматься: «о, вот это интересно, как же они выкрутятся?»  Более того, даже небольшой лучик надежды, забрезживший из-за внутреннего конфликта персонажей (Лео как всегда строит из себя лидера и перегибает палку), тухнет по причине совершенно топорного исполнения и фактического отсутствия развития этого конфликта. Выглядит это примерно так:

(Лео) — Я тут главный, идите в жопу.
(Все) — Ну ок, будем творить хрень… ну правда это все равно пригодится.
(Лео, обнаружив хрень) — Ну йопт, зачем вы так… впрочем не до того — у нас задание, побежали!
(уходят на задание, махыч-махыч, не фортануло — упустили злодеев)
(Лео) — Мы круто махались. Но мы не команда… будем сидеть в берлоге.
(Прилетает технодром)
(Все) — Опанцы, го бить морду Крэнгу!
(Лео) — Мы — команда!

Серьезно, все так и происходит! Я упустил в этом кратком пересказе тему с мутагеном, который типа мог бы превратить черепах в людей, но фактически он является только источником конфликта и финальным флагом, отмашкой которого сценаристы показывают что конфликт исчерпан. Но сам по себе этот конфликт вообще никак и никуда не развивается, и герои с ним ничерта не делают. В том месте, где Лео признает что черепахи — братья, но не команда, это берется абсолютно из воздуха, ведь они завалили задание не потому что были как-то разобщены или действовали неслаженно! Они действовали как всегда, и ровно так же, как и в конце после «примирения»! И само «примирение» берется  ровно из того же НИЧЕГО. Если из фильма вырезать сцены этих дурацких споров, смонтировав остальные куски как они есть, можно было бы подумать что все именно так и задумывалось и фильм ничего не терял. И это особенно печально наблюдать, помня, как ровно тот же конфликт был показан в сериале 2003го года, где ему была отведена, если не ошибаюсь, одна серия — не бог весть какой хронометраж, но раскрытие персонажей при этом было на сотню голов выше чем тут.

Ну и тогда уж о персонажах, потому что в теории летний блокбастер можно построить на харизме и проработанных персонажах, раз уж с сюжетом как-то не задалось. Но и тут ждет полная жопа. В теории вроде бы черепах проработали… ну как-то. По факту: лео — лидер, раф — грубый и брутальный, дон — технарь-задрот, майки — тусовщик… Серьезно, кто-то этого не знал? И куда-то глубже фильм не копает, ни в отношении черепах, ни в отношении других персонажей. Шреддер тут просто мебель, которая за весь фильм… я тут даже задумался что же он успел сделать, потому что даже Бибопа и Рокстеди фактически произвел на свет скорее Стокман. Ну а Шреддер — сбежал, да и то не сам, от ментов в начале фильма, ну и рожей дальше светил просто ходя то туда, то сюда… В общем никакой осмысленности. Стокман. Совершенно отвратительный персонаж, который больше похож на задрота-имбецила, чем на ученого, который способен делать штуки. Я ума не приложу кому пришло в голову так обосрать персонажа, но по степени зафейленности он уверенно обошел Мандарина из третьего железного человека. Злой ученый в которого совершенно не веришь.

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

Бибоп и Рокстеди. Вот эти парни мне понравились. Они большие, графонистые и такие же дурацкие как и в мульте 80х. С них мало спроса, они дурачатся и давят на ностальгию — ну и чего от них еще хотеть? Единственный минус — пердильный юмор, который на самом деле даже подходит этим персонажам, но все же я считаю что пердеть с экрана это такой донный прием, который стоит применять ну очень к месту и в каких-то исключительных случаях, и уж точно не в детских фильмах.

Крэнг — ну, он есть. Он хочет завоевывать, и постоянно торчит вне своего костюма, наверное потому что дурак. Больше сказать как-то нечего.

Остальные персонажи — они есть, они никакие.

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

С моим мнением можно не соглашаться, но я так и не увидел какого-то улучшения по сравнению с первыми черепахами. Ни сколько-нибудь интересного сюжета, ни харизматичных проработанных персонажей — один бессмысленно мелькающий набор экшена, который, в отрыве от всего остального, словно кусок сахара без чая. Мне кажется детям старше 6-7 лет такое смотреть должно быть уже скучно. 3 из 10

Папка windows\temp забивается файлами cab_xxxx

Данная проблема вызвана сбоем службы автоматического обновления Windows, в частности при работе с серверами обновлений WSUS.

Пошаговое решение проблемы выглядит так:

  1. Остановка службы обновлений (wuauserv)
  2. Остановка службы trustedinstaller
  3. Удаление содержимого папки c:\windows\temp
  4. Удаление cab-файлов из папки c:\windows\logs\CBS
  5. Удаление папки  C:\windows\softwaredistribution
  6. Запуск сервиса trustedinstaller
  7. Запуск службы обновления

Для удаленного автоматического решения проблемы можно воспользоваться скриптом:

fix_winupdate_tmp_cab.ps1
 
  1. $Machine = read-host "Type in the Computer Name"
  2. $windowsUpdateService = 'wuauserv'
  3. $trustedInstallerService = 'trustedinstaller'
  4. function Set-ServiceState
  5. {
  6.     [CmdletBinding()]
  7.     param(
  8.         [string]$ComputerName,
  9.         [string]$ServiceName
  10.     )
  11.     Write-Verbose "Evaluating $ServiceName on $ComputerName."
  12.     [string]$WaitForIt = ""
  13.     [string]$Verb = ""
  14.     [string]$Result = "FAILED"
  15.     $svc = Get-Service -computername $ComputerName -name $ServiceName
  16.     Switch ($svc.status) {
  17.         'Stopped' {
  18.             Write-Verbose "[$ServiceName] is currently Stopped. Starting."
  19.             $Verb = "start"
  20.             $WaitForIt = 'Running'
  21.             $svc.Start()
  22.         }
  23.         'Running' {
  24.             Write-Verbose "[$ServiceName] is Running. Stopping."
  25.             $Verb = "stop"
  26.             $WaitForIt = 'Stopped'
  27.             $svc.Stop()
  28.         }
  29.         default {
  30.             Write-Verbose "$ServiceName is $($svc.status). Taking no action."
  31.         }
  32.     }
  33.     if ($WaitForIt -ne "") {
  34.         Try { # For some reason, we cannot use -ErrorAction after the next statement:
  35.             $svc.WaitForStatus($WaitForIt,'00:02:00')
  36.         } Catch {
  37.             Write-Warning "After waiting for 2 minutes, $ServiceName failed to $Verb."
  38.         }
  39.         $svc = (get-service -computername $ComputerName -name $ServiceName)
  40.         if ($svc.status -eq $WaitForIt) {
  41.             $Result = 'SUCCESS'
  42.         }
  43.         Write-Verbose "$Result - $ServiceName on $ComputerName is $($svc.status)"
  44.         Write-Verbose ("{0} - {1} on {2} is {4}" -f $Result, $ServiceName, $ComputerName, $svc.status)
  45.     }
  46. }
  47. # stop update service
  48. Write-Host "stop update service"
  49. Set-ServiceState -ComputerName $Machine -ServiceName $windowsUpdateService -Verbose
  50. #removes temp files and renames software distribution folder
  51. Write-Host "removes temp files and renames software distribution folder"
  52. Remove-Item \\$Machine\c$\windows\temp\* -recurse
  53. Rename-Item \\$Machine\c$\windows\SoftwareDistribution SoftwareDistribution.old
  54. #restarts update service
  55. Write-Host "restarts update service"
  56. Set-ServiceState -ComputerName $Machine -ServiceName $windowsUpdateService
  57. #removes software distribution.old
  58. Write-Host "removes software distribution.old"
  59. Remove-Item \\$Machine\c$\windows\SoftwareDistribution.old -recurse
  60. #stops trustedinstaller service
  61. Write-Host "stops trustedinstaller service"
  62. Set-ServiceState -ComputerName $Machine -ServiceName $trustedInstallerService
  63. #removes cab files from trustedinstaller
  64. Write-Host "removes cab files from trustedinstaller"
  65. remove-item \\$Machine\c$\windows\Logs\CBS\* -recurse
  66. #restarts trustedinstaller service
  67. Write-Host "restarts trustedinstaller service"
  68. Set-ServiceState -ComputerName $Machine -ServiceName $trustedInstallerService
  69. #rebuilds cab files from WSUS
  70. Write-Host "rebuilds cab files from WSUS"
  71. invoke-command -ComputerName $Machine -ScriptBlock { & cmd.exe "c:\windows\system32\wuauclt.exe /detectnow" }

Источник: https://community.spiceworks.com/topic/495234-windows-temp-file-is-full-of-cab_xxxx-files-on-windows-server-2008-r2

Мемуары 19го века как современный паблик

Волею случая наткнулся на мемуары Александра Васильевича Никитенко  — критика, историка, академика и блаблабла… Почему записи 50-х годов 19-го века читаются так свежо, словно читаешь какой-то паблик или блог??

20 января 1856 года
Познакомился на вечере у министра с одним из коноводов московских славянофилов, Хомяковым. Он явился в зал министра в армяке, без галстука, в красной рубашке с косым воротником и с шапкой-мурмулкой подмышкой. Говорил неумолкно и большей частью по-французски — как и следует представителю русской народности. Встреча его со мной была несколько натянута, ибо он не без основания подозревает во мне западника. Но я поспешил бросить себе и ему под ноги доску, на которой мы могли легко сойтись. Он приехал сюда хлопотать о разрешении ему издавать славянофильский журнал, и я обратился прямо к этому предмету, сказав, что ничего не может быть желательнее, как чтобы каждый имел возможность высказывать свои убеждения. Это тотчас развязало нам языки, и мы пустились рассуждать, не опасаясь где-нибудь столкнуться лбами. Он умен, но, кажется, не без того, что называется себе на уме.

 

30 марта 1856 года
Был на днях у московской барыни С.Н.К., которая приехала сюда на несколько дней. Боже мой! Что за сорочья болтовня, что за крохотные чувствованьица! Что за важничанье и умничанье! И все это без малейшей грации. Везде натяжка, фальшь, подделка, усилие казаться, а не быть. И какой решительный приговор над всеми: политики, литераторы, ученые, государственные люди — все так и заливаются мутными волнами этой болтовни, тонут в страшном хаосе слов, лишенных даже детского простодушия. В гостиной было еще несколько лиц — все под стать.
Когда насмотришься на этих людей и наслушаешься их, то совершенно теряешь веру в улучшение нашего нравственного и умственного была.

 

18 сентября 1856 года
Московские остряки сложили на нашего министра остроту: «Он без памяти любит просвещение». А в Петербурге к этому прибавляют еще: «Он без ума от своего министерства». Ах, Авраам Сергеевич, в какую тину вы залезли!

(Норов, Авраам Сергеевич — Министр народного просвещения Российской империи)

17 мая 1858 года, суббота
Мне лучше. Поутру был у князя Щербатова. Неутешительный разговор о современных делах. В главном управлении училищ генерал-губернатор П.Н.Игнатьев напал на несчастные листки, которых развелось ныне множество и которые продаются на улицах по пяти копеек. Это его пугает. Между тем в этих листках нет ничего ни умного, ни опасного. Им строго воспрещено печатать что-нибудь относящееся к общественным вопросам. Это пустая болтовня для утехи гостинодворцев, грамотных дворников и пр. Один господин литератор и мне говорил, что их следовало бы запретить. «Зачем?» — отвечал я. Конечно, это вздор, но он приучает грамотных людей к чтению — все-таки это лучше кабака и харчевни. Между тем от вздорного они мало-помалу перейдут и к дельному. Ведь и хлеб вырастает из навоза. Да и что это за система — все запрещать? К чему только протянет руку русский человек самым невинным образом, тотчас и бить его по рукам! Ведь и в старину издавались же для народа лубочные картины с разными рассказами и сказками! Но наши великие администраторы во всем видят опасность.

Такие очень важные штуки, и до сих пор всё как было…

Парфенов на ютубе

Для тех, кто по какой-то причине еще не видел — дичайше рекомендую: Парфенон — новый еженедельный… влог(?) Леонида Парфенова.

«Парфенон» — про то, что со мной было на неделе, что видел, про что думал, что почему-то вспомнилось. Разговоры под вино недели, выбранное в соответствии с обстоятельствами — потому «18»

Уже вышел седьмой выпуск, в котором Леня гуляет по родным местам, пьет вино и делится впечатлениями об Анне Карениной. Чертовски душевные влоги, хотя качество подачи материала, пусть даже просто своих мыслей о чем-то за бокалом вина, для влога смотрится весьма богато =)