US: +1 561 2500001/EU: +359 2 4925555 LiveChat
[email protected] Sign Up Login
ITLDC
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]

Как "растянуть" файловую систему VDS после смены тарифа без потери данных?

Как «растянуть» файловую систему VDS после смены тарифа без потери данных?

Июн 18, 2019Dmytroblog, Новости

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

Вначале давайте разберемся, почему так происходит. Наши SSD VDS используют технологию полной виртуализации KVM. Это означает, что VDS представляет собой полноценный сервер — со своим BIOS, видеоадаптером, клавиатурой и, конечно, «жестким диском». Как и любой жесткий диск в представлении компьютера, он имеет свои технические параметры — количество дорожек, головок для считывания данных и т.п. Конечно, в случае с виртуальной машиной эти параметры также виртуальные, но совершенно необходимые для работы операционной системы.

Когда увеличивается размер такого диска, изменяются его параметры — грубо говоря, увеличивается количество доступных секторов для хранения данных. Представьте, что в настоящий HDD-накопитель будет добавлена еще одна «пластина» — металлический диск для хранения данных и после перезагрузки операционная система получит доступ к дополнительному пространству. Однако на таком накопителе операционная система при инсталляции уже создала «разделы» — специальную таблицу, которая хранит информацию о начальном и конечном блоке для хранения данных по каждой файловой системе (для загрузочного /boot, для виртуальной памяти swap, для корневой системы / и проч.). При смене тарифа сам размер диска увеличивается, но параметры разделов остаются прежними. По аналогии с «настоящими» дисками — представьте, что при установке ОС ей выделили только половину диска — вторая часть накопителя останется в неиспользуемом состоянии (т.н. «неразмеченной»). Теперь следует изменить таблицу разделов, а затем сделать изменение размера файловой системы — «растянуть» ее.

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

В зависимости от типа дистрибутива могут быть небольшие различия, поэтому мы рассмотрим два варианта. Первый — это Debian, Ubuntu и подобные системы. Особенности для таких ОС — корневая файловая система расположена на extended-разделе, а для корневой файловой системы используется ext4. Запускаем fdisk, указываем наш «жесткий диск» в качестве параметра и выполняем команду print для просмотра текущей таблицы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@debian8:~# fdisk /dev/vda
 
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
 
Command (m for help): print
Disk /dev/vda: 19.5 GiB, 20971520000 bytes, 40960000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4c9700d5
 
Device     Boot  Start      End  Sectors  Size Id Type
/dev/vda1  *      2048   194559   192512   94M 83 Linux
/dev/vda2       194560 30719999 30525440 14.6G  5 Extended
/dev/vda5       196608 30719999 30523392 14.6G 83 Linux
 
 
Command (m for help):

Обратите внимание — размер диска 19.5Gb, а суммарно используется 15Gb. Наведем порядок 🙂 Повторяем — скопируйте в отдельный файл или запишите значения Start и End по каждому разделу. Удаляем последовательно разделы 5 и 2:

1
2
3
4
5
6
7
8
9
Command (m for help): d
Partition number (1,2,5, default 5): 5
 
Partition 5 has been deleted.
 
Command (m for help): d
Partition number (1,2, default 2): 2
 
Partition 2 has been deleted.

Не переживайте — данные не будут затронуты. Теперь создаем новый extended раздел и новый linux-раздел:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (194560-40959999, default 194560):
Last sector, +sectors or +size{K,M,G,T,P} (194560-40959999, default 40959999):
 
Created a new partition 2 of type 'Extended' and of size 19.4 GiB.
 
Command (m for help): n
Partition type
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
 
Adding logical partition 5
First sector (196608-40959999, default 196608):
Last sector, +sectors or +size{K,M,G,T,P} (196608-40959999, default 40959999):
 
Created a new partition 5 of type 'Linux' and of size 19.4 GiB.

Небольшое пояснение — начало раздела и его последний сектор fdisk предлагает автоматически, соглашаемся с предложенными значениями. В ряде случаев начало Linux-раздела fdisk может предлагать с небольшими отличиями стартового сектора. Такое бывает, поэтому прежде, чем сохранить новую таблицу, выполним команду print и посмотрим, как она будет выглядеть:

1
2
3
4
5
6
7
8
9
10
11
12
Command (m for help): print
Disk /dev/vda: 19.5 GiB, 20971520000 bytes, 40960000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4c9700d5
 
Device     Boot  Start      End  Sectors  Size Id Type
/dev/vda1  *      2048   194559   192512   94M 83 Linux
/dev/vda2       194560 40959999 40765440 19.4G  5 Extended
/dev/vda5       196608 40959999 40763392 19.4G 83 Linux

Обратите внимание на начало (Start) разделов vda2 и vda5 — они должны совпадать с теми данными, которые были до корректировки таблицы разделов. Если все в порядке — записываем новые данные с помощью write:

1
2
3
4
5
6
Command (m for help): write
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
 
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Мы закончили работу с fdisk. Теперь перезагрузим операционную систему командой reboot и перейдем к «растягиванию» файловой системы ext4. После перезапуска уточним, какая у нас используется файловая система для корневого раздела:

1
2
root@debian8:~# mount -v |grep vda5
/dev/vda5 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

Для ext4 используем утилиту resize2fs:

1
2
3
4
5
root@debian8:~# resize2fs /dev/vda5
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/vda5 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vda5 is now 5095424 (4k) blocks long.

Готово, наша файловая система теперь использует все доступное дисковое пространство:

1
2
3
root@debian8:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda5        20G  1.1G   18G   6% /

Теперь обратим внимание на второй вариант, который обычно используется в Centos 7 — более простой. По-умолчанию в шаблонах Centos для SSD VDS используется разметка с всего двумя разделами, поэтому удалить и создать нужно только vda2. Ниже — пример изменения размера раздела с 10Gb до 15Gb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[root@centos7 ~]# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).
 
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
 
Command (m for help): p
 
Disk /dev/vda: 15.7 GB, 15728640000 bytes, 30720000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ada41
 
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048      526335      262144   83  Linux
/dev/vda2          526336    20479999     9976832   83  Linux
 
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 is deleted
 
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2):
First sector (526336-30719999, default 526336):
Using default value 526336
Last sector, +sectors or +size{K,M,G} (526336-30719999, default 30719999):
Using default value 30719999
Partition 2 of type Linux and of size 14.4 GiB is set
 
Command (m for help): p
 
Disk /dev/vda: 15.7 GB, 15728640000 bytes, 30720000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ada41
 
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048      526335      262144   83  Linux
/dev/vda2          526336    30719999    15096832   83  Linux
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Перезагружаем операционную систему с помощью команды reboot. Обратите внимание — Centos 7 использует по-умолчанию xfs в качестве файловой системы:

1
2
[root@centos7 ~]# mount -v |grep vda2
/dev/vda2 on / type xfs (rw,relatime,attr2,inode64,noquota)

Вместо resize2fs используем другую утилиту, xfs_growfs:

1
2
3
4
5
6
7
8
9
10
11
[root@centos7 ~]# xfs_growfs /
meta-data=/dev/vda2              isize=512    agcount=4, agsize=623552 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2494208, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2494208 to 3774208

Готово:

1
2
3
[root@centos7 ~]# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        15G  1.1G   14G   8% /

В некоторых случаях fdisk может предложить удалить существующую метку файловой системы (в частности, такое бывает на Debian-подобных системах):

1
2
Partition #5 contains a ext4 signature.
Do you want to remove the signature? [Y] Yes/[N] No:

В таком случае удалять сигнатуру не следует. Ответьте no на такой запрос.

Если у вас возникли какие-то вопросы при изменении размера разделов после смены тарифного плана — не спешите записывать изменения и обратитесь в поддержку, мы поможем.

Приятной работы!

Tags: centos,  debian,  linux,  vds
Related Posts
  • 🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10

  • 🐬 5 Modern MySQL-Compatible Databases Worth Knowing

  • 🛠️ Mission Complete: NL Datacenter Maintenance Report!

  • Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

← Новый датацентр — EU5.GDN, Poland!
Устанавливаем Google Chrome на VDS с Windows →

Recent Posts

  • 🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10
    🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10

    So, your server is still running CentOS...

  • 🐬 5 Modern MySQL-Compatible Databases Worth Knowing
    🐬 5 Modern MySQL-Compatible Databases Worth Knowing

    These days, saying “I’m using MySQL” is...

  • 🛠️ Mission Complete: NL Datacenter Maintenance Report!
    🛠️ Mission Complete: NL Datacenter Maintenance Report!

    Last week, while most people were enjoyi...

  • Disk Usage 🧮  in Linux: Tools, Tips, and That One Mysterious 20GB Log File
    Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

    You’re running your awesome website, cru...

  • OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy
    OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy

    TL;DR: OpenSSH just hit version 10.0, an...

  • 🛠️ DUS Datacenter Maintenance Complete: New Servers In!
    🛠️ DUS Datacenter Maintenance Complete: New Servers In!

    Guten Tag, liebe Hosting-Freunde! 🇩🇪 Gue...

  • Bash Process Management: How to Tame Your Shell Like a Pro
    Bash Process Management: How to Tame Your Shell Like a Pro

    Running Linux commands is cool. Running...

  • 🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS
    🚀 Beyond Nginx: Exploring the Best Lightweight Web Servers for PHP & HTTPS

    Nginx has long been the go-to web server...

US/APAC Support

ITLDC

PO Box #800054
Aventura
FL 33280
USA

+1 561 2500001

[email protected]

EU Support

Smart Industries LLC

187E Warm Springs Rd B218
Las Vegas
NV 89119
USA

+1 561 2500001

[email protected]

Services

  • SSD VDS
  • Dedicated Servers
  • Shared Hosting
  • Colocation
  • DDoS Protection
  • SSL Certificates
  • Backup Storage
  • Reselling

Support

  • Get Help
  • ITLDC Status
  • Looking Glass
  • Our SLA
  • Datacenters
  • FAQ & Knowledgebase
  • Data Security
  • Contact us

© Copyright 1995-2019 ITLDC Team. You can freely use or share information from this site with a hyperlink to the original page.