{"id":811,"date":"2021-06-29T22:32:41","date_gmt":"2021-06-30T01:32:41","guid":{"rendered":"https:\/\/ebasso.net\/wp\/?p=811"},"modified":"2021-06-30T10:08:16","modified_gmt":"2021-06-30T13:08:16","slug":"performance-em-lvm-no-linux","status":"publish","type":"post","link":"https:\/\/ebasso.net\/wp\/2021\/06\/29\/performance-em-lvm-no-linux\/","title":{"rendered":"Performance em LVM no Linux"},"content":{"rendered":"\n<p>Encontrei muito poucos artigos que descreviam sobre problemas de performance ao utilizar LVM no Linux. Neste artigo explico o que \u00e9 uma LVM e como identificar uma situa\u00e7\u00e3o em que ela pode afetar o seu sistema.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>O que \u00e9 Logical Volume Management (LVM)?<\/strong><\/p>\n\n\n\n<p>O Logical Volume Management (LVM) \u00e9 um recurso de extrema import\u00e2ncia dispon\u00edvel no Kernel do Linux.<\/p>\n\n\n\n<p>O LVM cria uma camada de software, que abstrai o storage\/disco r\u00edgido e o sistema operacional, permitindo expandir ou reduzir a capacidade de armazenamento de um servidor de forma din\u00e2mica, realizer snapshots, &#8230;<\/p>\n\n\n\n<p>Existem tr\u00eas tipos de volumes l\u00f3gicos LVM: volumes lineares, volumes Striped (distribu\u00eddos) e volumes espelhados. Vou descrever os dois primeiros:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>LVM Lineares<\/strong><\/li><\/ul>\n\n\n\n<p>Um volume linear agrega espa\u00e7o de um ou mais volumes f\u00edsicos em um volume l\u00f3gico sequencialmente. Por exemplo, se voc\u00ea tiver dois discos de 60 GB, pode criar um volume l\u00f3gico de 120 GB. O armazenamento f\u00edsico \u00e9 concatenado.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>LVM Striped<\/strong><\/li><\/ul>\n\n\n\n<p>Um volume Striped (distribu\u00eddo) agrega espa\u00e7o de um ou mais volumes f\u00edsicos. Mas quando voc\u00ea grava dados em um LVM Striped, o sistema de arquivos distribui os dados nos volumes f\u00edsicos subjacentes. O striping melhorar a efici\u00eancia da I\/O de dados gravando e lendo em um n\u00famero predeterminado de volumes f\u00edsicos em paralelo.<\/p>\n\n\n\n<p>Em resumo, nas LVM lineares a escrita \u00e9 serial, isto \u00e9, vai&nbsp;ocupando os primeiros discos. Nas LVM Striped a escrita \u00e9 divida entre os discos (riscos em Laranja).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"468\" src=\"https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/linear_vs_striped.png\" alt=\"\" class=\"wp-image-813\" srcset=\"https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/linear_vs_striped.png 850w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/linear_vs_striped-300x165.png 300w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/linear_vs_striped-768x423.png 768w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/linear_vs_striped-700x385.png 700w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p><strong>Como identifica se o seu LVM \u00e9 linear ou striped?<\/strong><\/p>\n\n\n\n<p>Por padr\u00e3o no Linux, as LVM s\u00e3o lineares, a n\u00e3o ser que voc\u00ea especifique o tipo na hora da cria\u00e7\u00e3o. <\/p>\n\n\n\n<p>Utilize o comando <em>lvs &#8211;segments<\/em> para isso.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># lvs --segments\n LV           VG           Attr       #Str Type   SSize\n   lv_docs      vg_docs      -wi-ao----    1 linear 475.00g\n   lv_docs      vg_docs      -wi-ao----    1 linear 475.00g\n   lv_docs      vg_docs      -wi-ao----    1 linear 475.00g\n   lv_docs      vg_docs      -wi-ao----    1 linear 475.00g\n   lv_docs      vg_docs      -wi-ao----    1 linear 100.00g<\/pre>\n\n\n\n<p>Neste exemplo o disco \u00e9 linear.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Situa\u00e7\u00e3o na vida real<\/strong><\/p>\n\n\n\n<p>Em um epis\u00f3dio no trabalho, eu tive que investigar um problema de performance. Durante essa investiga\u00e7\u00e3o, conseguimos identificar a seguinte situa\u00e7\u00e3o no Sistema Operacional:<\/p>\n\n\n\n<p>O Volume \/opt\/documents possu\u00eda 5 discos (4x450GB e 1x100GB) (<strong>item 2<\/strong> na figura abaixo) e est\u00e1vamos utilizando apenas 873GB de 2.1TB (<strong>item 1<\/strong> na figura abaixo).<\/p>\n\n\n\n<p>Analisando o volume \/opt\/documents, observamos que o I\/O se concentrava em 3 dos 5 discos (<strong>item 3<\/strong> na figura abaixo), sendo muito superior no disco \/dev\/sde1, in\u00edcio dos logical extents, e m\u00ednimo nos discos \/dev\/sdh1 e \/dev\/sdi1, final do logical extents (<strong>item 2<\/strong> na figura abaixo).<\/p>\n\n\n\n<p>Em fun\u00e7\u00e3o da formata\u00e7\u00e3o linear do volume e de como o SO cria os arquivos, ocorre a concentra\u00e7\u00e3o do I\/O no in\u00edcio do volume, n\u00e3o distribuindo igualmente a opera\u00e7\u00f5es de leitura\/escrita entre os discos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"570\" src=\"https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/lvm_linear.png\" alt=\"\" class=\"wp-image-812\" srcset=\"https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/lvm_linear.png 850w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/lvm_linear-300x201.png 300w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/lvm_linear-768x515.png 768w, https:\/\/ebasso.net\/wp\/wp-content\/uploads\/2021\/06\/lvm_linear-700x469.png 700w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Comandos utilizados<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># df -h\n# lsblk\n# iostat -x 5<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Isso pode acontecer na Nuvem?<\/strong><\/p>\n\n\n\n<p>A reposta \u00e9 <strong>SIM<\/strong> . Esse artigo mostra o funcionamento e a perfomance entre volumes lineares vs striped no ambiente da AWS &#8211;&gt; https:\/\/sysadmincasts.com\/episodes\/27-lvm-linear-vs-striped-logical-volumes<\/p>\n\n\n\n<p>Concluindo, se o seu sistema tem um requisito que precise de armazenamento extremamente r\u00e1pido em uma \u00fanica m\u00e1quina, voc\u00ea deve observar essa configura\u00e7\u00e3o da LVM. Ao usar LVM striped, normalmente quanto mais discos voc\u00ea tiver, melhor ser\u00e1 o desempenho, isto \u00e9, se voc\u00ea precisar de 2TB de uma combina\u00e7\u00e3o de 10 discos de 200GB vai performar melhor que 5 discos de 400GB, independente ser os discos forem SSD ou n\u00e3o.<\/p>\n<h3 class='related_post_title'>Leia tamb\u00e9m:<\/h3><ul class='related_post'><li><a href=\"https:\/\/ebasso.net\/wp\/2020\/06\/18\/considere-utilizar-rust\/\" title=\"Considere utilizar Rust!\">Considere utilizar Rust!<\/a><\/li><li><a href=\"https:\/\/ebasso.net\/wp\/2017\/03\/30\/migre-o-seu-domino-do-aixwindows-para-o-linux\/\" title=\"Migre o seu Domino do AIX\/Windows para o Linux\">Migre o seu Domino do AIX\/Windows para o Linux<\/a><\/li><li><a href=\"https:\/\/ebasso.net\/wp\/2020\/06\/15\/expondo-a-sua-aplicacao-no-kubernetes\/\" title=\"Expondo a sua aplica\u00e7\u00e3o no Kubernetes\">Expondo a sua aplica\u00e7\u00e3o no Kubernetes<\/a><\/li><li><a href=\"https:\/\/ebasso.net\/wp\/2020\/03\/12\/pros-e-contras-de-ter-um-ou-varios-clusters-de-kubernetes\/\" title=\"Pr\u00f3s e Contras de ter um ou v\u00e1rios Clusters de Kubernetes\">Pr\u00f3s e Contras de ter um ou v\u00e1rios Clusters de Kubernetes<\/a><\/li><li><a href=\"https:\/\/ebasso.net\/wp\/2018\/03\/23\/performance-com-strings-e-stringbuilder-em-java\/\" title=\"Performance com Strings e StringBuilder em Java\">Performance com Strings e StringBuilder em Java<\/a><\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p>Encontrei muito poucos artigos que descreviam sobre problemas de performance ao utilizar LVM no Linux. Neste artigo explico o que \u00e9 uma LVM e como identificar uma situa\u00e7\u00e3o em que &hellip; <a href=\"https:\/\/ebasso.net\/wp\/2021\/06\/29\/performance-em-lvm-no-linux\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Performance em LVM no Linux&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[252,310],"tags":[199,125,311,89],"class_list":["post-811","post","type-post","status-publish","format-standard","hentry","category-cloud","category-linux","tag-cloud","tag-linux","tag-lvm","tag-performance"],"aioseo_notices":[],"views":61801,"_links":{"self":[{"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/posts\/811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/comments?post=811"}],"version-history":[{"count":8,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/posts\/811\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/posts\/811\/revisions\/828"}],"wp:attachment":[{"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/media?parent=811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/categories?post=811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ebasso.net\/wp\/wp-json\/wp\/v2\/tags?post=811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}