Всем привет! Недавно столкнулся с простой на первый взгляд задачей — увеличить «на горячую» размер диска на сервере Linux.

Описание задачи


Есть сервер в облаке. В моем случае, это Google Cloud — Compute Engine. Операционная система — Ubuntu, файловая система ext4 (подойдет для всех ext). Сейчас подключен диск размером 30 Гб. База растет, файлы пухнут, поэтому нужно увеличить размер диска, допустим, до 50 Гб. При этом мы ничего не отключаем, ничего не перезагружаем.

Внимание! Перед тем как начать, делаем бекап всей важной информации!

1. Для начала, проверим, сколько у нас всего свободного пространства. В консоли Linux пишем:

df -h


Простыми словами, у меня 30 Гб всего и 7.9 Гб сейчас свободно. Нужно увеличить.

2. Дальше я иду и через консоль своего хостера подключаю еще немного Гб. В Google Cloud это делается легко, без перезагрузки. Захожу в Compute Engine -> Диски -> Выбираю диск своего сервера — ему и поменяем размер:


Захожу внутрь, нажимаю «Редактировать» и увеличиваю размер диска до нужных мне размеров (в моем случае, до 50 Гб).

3. Итак, теперь у нас 50 Гб. Проверим это на сервере командой:

sudo fdisk -l

image
Видим свои новые 50 Гб, но пока использовать мы можем только 30 Гб.

4. Теперь удалим текущий раздел диска на 30 Гб, создадим новый на 50 Гб. У вас может быть несколько разделов. Возможно, вам нужно будет создать и несколько новых разделов. Для этой операции будем использовать программу fdisk, которая позволяет управлять разделами жесткого диска. Также важно понимать, что такое разделы диска и для чего они нужны — читаем тут. Для запуска программы fdisk используем команду:

sudo fdisk /dev/sda

5. Внутри интерактивного режима программы fdisk выполняем несколько операций.

Сначала вбиваем:

p

image
Команда выводит список наших текущих разделов. В моем случае один раздел на 30 Гб и еще 20 Гб в свободном плавании, если так можно сказать.

6. Затем вбиваем:

d

image
Удаляем текущий раздел для того, чтобы создать новый на все 50 Гб. Перед операцией еще раз проверяем, сделали ли мы бекап важной информации!

7. Далее указываем программе:

n

image
Команда создает новый раздел. Все параметры стоит устанавливать по умолчанию — можно просто нажимать Enter. Если же у вас какой-то особый случай, то указываете свои параметры. Как видно из скриншота, я создал раздел на 50 Гб — то, что мне нужно.

8. В итоге указываю программе:

w

image
Эта команда записывает изменения и выходит из fdisk. Не пугаемся, что чтение таблицы разделов не удалось. Следующая команда поможет это исправить. Осталось совсем чуть-чуть.

9. Мы вышли из fdisk и вернулись в основную Linux — строку. Далее вбиваем, как нам посоветовали ранее:

sudo partprobe /dev/sda

Если все прошло успешно, то вы не увидите никакого сообщения. Если у вас не установлена программа partprobe, то установите ее. Именно partprobe обновит таблицы разделов, что позволит нам расширить раздел до 50 Гб в режиме онлайн. Идем дальше.

Подсказка! Установить partprobe можно вот так:

 apt-get install partprobe

10. Теперь осталось переопределить размер раздела с помощью программы resize2fs. Она сделает это в режиме онлайн — у меня даже в этот момент скрипты работали и писали на диск.

Программа resize2fs перезапишет метаданные файловой системы. Для этого используем следующую команду:

sudo resize2fs /dev/sda1

image
Здесь sda1 — это имя вашего раздела. В большинстве случаев, это sda1, но возможны и исключения. Будьте внимательны. В итоге программа изменила нам размер раздела. Думаю, что это успех.

11. Теперь давайте убедимся, что размер раздела изменился и теперь у нас 50 Гб. Для это повторим самую первую команду:

df -h

image

Комментарии (63)


  1. tchspprt
    03.05.2019 20:32
    +2

    Я точно на Хабре? Ваша статья ещё и плюсами покрыта неслабо почему-то…


    1. KorP
      03.05.2019 21:06
      +4

      К сожалению, постить такое в последнее время стало нормальным. Где то в деревнях дали интернет и народ стал делиться своими неоценёнными знаниями в линуксе, которые описаны ещё до их рождения…


      1. tchspprt
        03.05.2019 21:12

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


        1. maxzhurkin
          04.05.2019 15:00

          А чем больше говна в магазинах, тем более затеряна, а значит, более ценима нормальная еда?
          Ну, так себе логика


          1. tchspprt
            05.05.2019 04:07

            Ой, Вы скатываетесь к «ключ для всех замков — хороший ключ, а замок, который открывается всеми ключами — плохой замок»? Аналогия — плохой инструмент в рамках дискуссии. Она годится, конечно, но скорее для объяснения каких-либо терминов или процессов тем, кто не имеет ни малейшего понятия об этих терминах или процессах.
            Ну а кейс тут другой — чем больше хороших специалистов, которые стали хорошими благодаря легкодоступности хороших статей и, соответственно, шире предложение, тем выше у Вас шанс попасть на хорошую работу или ниже? В теории, конечно, есть вероятность что выше, но что-то мне подсказывает что предложение всё-таки скорее не рождает спрос чем рождает, и владельцы дипломов с надписями «экономист» и «юрист» тому подтверждение. Если предложение и рождает спрос, то по-крайней мере не в этой недоступной для малого бизнеса стране.


      1. kinzarra Автор
        03.05.2019 21:20

        Статью написал, потому что на просторах рунета не нашел четко описанного способа увеличить размер диска. Надеюсь, многим ребятам это поможет.


        1. KorP
          03.05.2019 21:27

          Да что вы такое говорите???
          bit.ly/2VaICy1


          1. tchspprt
            03.05.2019 21:32

            Ключевое тут — на просторах рунета)) Мне лень проверять — стопроц есть.


            1. KorP
              03.05.2019 21:34
              +1

              Да чо там проверять то? :) bit.ly/2Vh37cj


            1. kinzarra Автор
              03.05.2019 21:48
              -1

              Для ребят, которые ищут материал на русском языке.


              1. roller
                03.05.2019 22:24
                +4

                для ребят которые ищут на русском языке — полезнее дать ссыллку на минимальный учебный курс английского!


                1. Ctacfs
                  05.05.2019 05:27

                  Пару дней спустя на хабре:
                  «Как быстро построить предложение в Present Simple»


        1. lioncub
          03.05.2019 21:28
          +1

          Забей в яндексе: «как увеличить размер диска linux»


          1. maxzhurkin
            04.05.2019 15:03

            Потом спам начнёт приходить о том, как другое увеличить :)


        1. temadiary
          03.05.2019 21:31
          +1

          "рубильник" суверинитета уже вкл?!
          а англ.яз. вне закона? :-(


    1. tchspprt
      03.05.2019 23:20
      +2

      ПыСы. Хаб «DevOps» у статьи очень умиляет :)


  1. legatdestr
    03.05.2019 20:53

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


    1. kinzarra Автор
      03.05.2019 21:45

      Да, верно. Дополнил. Спасибо за комментарий.


    1. Vkuvaev
      04.05.2019 01:07
      +1

      Если диск под управлением LVM, то самое простое — не увеличить диск под volume group а добавить еще один. Дальше pvcreate/vgextend/lvextend И так далее.
      Гуглите, на английском.


  1. temadiary
    03.05.2019 20:53

    а в чём польза статьи, ТС? а если у меня FS внутри LVM?
    суть про partprobe? так есть hdparm -z и blockdev --rereadpt для перечитывания без ребута.


    1. Mantikor
      03.05.2019 21:11
      +1

      Не защищаю автора, но к примеру, использовать partprobe учит Red Hat на курсах по администрированию. Хотя возможно в дебиане по другому.


      1. temadiary
        03.05.2019 21:20

        Но в том и прелесть linux, что нет шаблонного решения, что задачу можно решить разными средствами, и лучше, если это средство входит в базовое ПО.
        А что шляпа, что дебиан — всё одно.


    1. kinzarra Автор
      03.05.2019 21:17

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


      1. temadiary
        03.05.2019 21:22
        +4

        Новичкам, как и ранее, стоит читать man'ы и думать.Шаблонные решения с курсов до добра не доведут :-(


      1. tchspprt
        03.05.2019 21:22
        +1

        Не хочу показаться грубым, но для новичков есть миллиарды сайтов с туториалами. habr.com/ru/company/mailru/blog/314168 — вот контент Хабра.


      1. temadiary
        03.05.2019 21:24
        +1

        и да, упоминание resize2fs чётко ограничивает список fs до ext, что стоит указать.


      1. SlavikF
        03.05.2019 22:19

        А как узнать, если у меня LVM или нет?

        Когда ставил Убунту, то просто нажимал Next, Next, теперь вот не помню уже


        1. Mantikor
          03.05.2019 22:23
          +1

          lsblk

          Будет писать lvm в типах блочных устройств, если он есть.


          1. SlavikF
            03.05.2019 22:26

            Спасибо

            Получается, что лучше инсталлироваться без LVM — потом будет проще дисками управлять. Верно?


            1. max_rip
              03.05.2019 22:31

              Нет, если вы диск равномерно увиличиваете и между старым разделом и новым нет ещё разделов, то такой сценарий пройдет.
              А если структура более сложная или увеличение происходит за счёт другого диска то lvm единственный вариант.


            1. Mantikor
              03.05.2019 22:31

              Зависит от ситуации.
              В большинстве случаев как раз с LVM управлять разделами/дисками проще.


            1. legatdestr
              03.05.2019 22:49

              как всегда, всё зависит от задачи. Для установки, например, на домашнем ПК, когда «раз поставил и забыл», я бы не рекомендовал LVM. Все таки дополнительный слой абстракции — это доп.ресурсы (пусть и незначительные) да и восстановить данные будет сложнее в случае сбоя диска, например.


  1. ky0
    03.05.2019 21:00

    Модераторы на праздниках, смотрю, подобрели. Ждём продолжение про зачистку логов и обновление пакетов.


  1. Quei
    03.05.2019 21:17

    Заголовок даёт неоправданную волю фантазии. Может стоит уточнить, что имеется ввиду увеличение раздела диска…


    1. kinzarra Автор
      03.05.2019 21:22

      Принято.


  1. lioncub
    03.05.2019 21:20
    +3

    увеличить «на горячую»

    Удаляем текущий раздел для того, чтобы создать новый на все 50 Гб. Перед операцией еще раз проверяем, сделали ли мы бекап важной информации!

    … в наше время это «на горячую» не называли…


    1. DCNick3
      03.05.2019 21:49

      Удаляется он только в памяти. После этого сразу создаётся раздел на этом же мести. fdisk применит это только по завершении работы, поэтому состояния "ни одного раздела нет" не будет.


      1. tzlom
        03.05.2019 23:08

        Но все данные улетят, на горячую было бы — увеличить раздел пока на нём база работает, а так — что с перезагрузкой, что без, какая разница?


        1. DCNick3
          03.05.2019 23:30

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


        1. vanyas
          04.05.2019 17:46

          С чего бы данные улетели? Тут как раз на горячую, без остановки базы все и будет


  1. savostin
    03.05.2019 21:35
    +2

    А мы чего, удаляем примонтированный раздел? И давно так можно? И что прям в это время можно логи писать? И что прям ничего не потеряется и не остановится?


  1. jrthwk
    03.05.2019 21:40
    +3

    Чем только готовы заниматься люди, лишь бы не читать доку по LVM…


  1. MMik
    03.05.2019 22:34
    +4

    Прочтите `man parted` на предмет `resizepart`, чтобы не заниматься удалением раздела (пусть даже только и в памяти), заодно не понадобится использовать `partprobe`. И выше вам верно подсказали про LVM (хоть он и не всегда используется в образах виртуалок, доступных в облачных средах).


  1. navion
    03.05.2019 23:55
    +2

    1. gotch
      04.05.2019 09:12

      Ну а как же без amarao
      github.com/amarao/ptmax


      1. tchspprt
        04.05.2019 11:04
        -1

        А я думал всегда, что Вы на хабре отстаиваете честь шиндовса и принципиально игнорируете творчество данного господина и подобных)) Вы же даже постите каждую новость, связанную с "%COMPANY_NAME% отказалась от Linux на своих серверах и перешла на Windows".


        1. gotch
          04.05.2019 11:12

          Стоит ли упомянуть что в Windows нет проблем с расширением раздела и файловой системы online штатными средствами с 2008 года и с использованием dell extpart с 2003?


          1. tchspprt
            04.05.2019 11:24

            А стоит ли упомянуть, что Windows по-человечески не запустится ни в условиях как очень ограниченных ресурсов (как ОСРВ, в IoT в частности), так и очень неограниченных (HPC-кластер)? А стоит ли упомянуть, что сколько бы раз Вы классно не научились бы расширять раздел и в каком бы году это не произошло Вы не запустите ни одно мало-мальски интересное опенсорсное решение для хранения большого количества данных (Ceph, например)?


            1. gotch
              04.05.2019 12:16

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


              1. tchspprt
                04.05.2019 12:32

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


            1. Dr_Wut
              05.05.2019 19:30

              1. Windows CE и наследники? Windows for IoT?
              2. А расскажите-ка о linux-решениях? Только не надо про решения от IBM, там свой linux
              3. Почитайте про sds от МС. Azure вам яркий пример
              P.S. А ваш обожаемый Ceph ломается при каждом обновлении — тоже отличное свойство!
              P.S. Linux и Windows — просто инструменты. Где удобны — там и надо использовать.


              1. tchspprt
                06.05.2019 14:08
                -1

                1. а) Gap между WinCE и WinNT несравнимо больше оного для никсов, б) это ещё не говоря о существовании проектов Yocto и Buildroot;
                2. OpenHPC? Да даже если и не «искаробочно» — вариантов бесконечное множество при наличии соответствующих навыков;
                3. ЕМНИП оно всё построено больше на никсах, чем не на них.
                P.S. Лучше ломаться при обновлении, чем не существовать в принципе.
                P.P.S. Молоток и лупа — просто инструменты. Чем удобнее забивать гвозди — тем и забивайте. Лично я не вижу ни одного оправдания для существования Windows Server в принципе. Я не говорю о десктопе, если что. Либо же дайте мне хоть одну причину — расскажите мне про то место, в котором покупка лицензии Windows Server оправдана в пользу использования опенсорсных никс-решений. Если мы говорим не о поддержке давно построенной и давно эксплуатируемой системы, а о построении системы «с нуля», конечно.


                1. Dr_Wut
                  06.05.2019 17:49

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


                  1. tchspprt
                    06.05.2019 18:03

                    А по пунктам 1. и 2. Вы промолчите если я правильно Вас понимаю, да? :) Я, возможно, неправ насчёт эжур, но я прописал аббревиатуру «ЕМНИП», тем самым уточнив, что могу ошибаться.


                    1. Dr_Wut
                      06.05.2019 22:38

                      А смысл? Я уже сказал — у вас позиция фанатика, любые аргументы вы все равно не примете ибо вы тогда может пошатнуться ваша вера в совершенство одной платформы и ничтожность другой.
                      Знаете, я как то случайно в автобусе заговорил с женщиной фанатично верующей в бога, которая утверждала что все болезни — они от дьявола. Все мои аргументы о вирусах, биологии и прочем разбивались об одну фразу — «правильно, это происки дьявола». Так вот ваша позиция очень мне сильно это напоминает.

                      По поводу 1 и 2.
                      1. Решения есть, они используются на огромном количестве реший и это факт. Удобство — вопрос относительный, кому-то и на бутылке в кайф сидеть.
                      2. Не буду спорить, возможно и нет, возможно есть. Но я точно знаю что единственные реальные решения по HPC делаются на базе продуктов IBM и их мэйнфреймов
                      3. По поводу «лучше ломающееся чем не работающее» — очень многие с вами поспорят. Особенно те, кто имел «счастье» работать с cefh и производными.


                      1. tchspprt
                        06.05.2019 23:03

                        Вы разбивали веру человека в созидателя вашей верой в науку. Вы, получается, и сам фанатик, только фанатизм Ваш по другую сторону баррикад. Ор ноу? :)
                        Проблема атеизма в том, что он как и теизм не обладает доказательной базой. В данный момент физиками не доказано экспериментально существование самой мелкой атомарной независимой неразбиваемой частицы, ведь так? А раз существование фундаментального объекта, на котором базируется атеизм, не доказано — значит существует вероятность, что самая мелкая атомарная частица — это частица созидателя, разве нет? :)


                        1. tchspprt
                          06.05.2019 23:43

                          Под «атомарной», если что, я имею в виду «неразбиваемую», как INC и DEC в асме.


                      1. tchspprt
                        07.05.2019 10:40
                        -2

                        Ну Вы вольны минусовать сколь угодно, но Илон Маск, например, сказал, что «вероятность того, что мы не живем в компьютерной симуляции, равна одному на миллиарды». Считаете себя умнее Маска, наверное? :)


  1. Germanjon
    04.05.2019 11:08
    +1

    В зависимости от поставленной задачи, результат «мне нужно больше места на диске» может быть достигнут при помощи следующей последовательности действий:
    — создать новый раздел.
    — примонтировать его куда-надо.
    — создать симлинки при необходимости.
    Это проще, безопаснее, «горячее». Но опять-таки, всё зависит от конкретной задачи.


  1. FCron
    04.05.2019 14:08

    man growpart


    процесс сводится к трем командам:


    • lsblk чтоб узнать номер раздела
    • growpart /dev/x num — расширить на все доступное пространство
    • resize2fs /dev/x — расширить фс

    Зы. а английский всё же стоит изучать...


  1. sirmax123
    04.05.2019 18:22

    То что тут написано как минимум не сработает с gpt, как и growpart


    Не надо таких статей, потом за тоннами мусора правильную не найти ;(


  1. capitannemo
    04.05.2019 19:43

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


    1. roller
      05.05.2019 05:43

      Если будете класть /tmp на диск — обязательно пусть это будет ssd! Удачи, денег, держитесь там!