Linux rescan disk size

Add or Detect New Hard Disk Online Without Rebooting

As a system admin, We may come into a situation to Add a New Disk or Detect New Hard Disk Online to provide more space for the application installed.

If you are interested in learning, Request you to go through the below recommended tutorial.

How to detect new hard disk online without rebooting?

This post will help you with How to rescan or detect new hard disk online without rebooting the server.

It is possible to add or remove a SCSI device explicitly, or to re-scan an entire SCSI bus without rebooting a running Linux VM guest.

How to Rescan newly added Disk on Linux?

1. Ensure the required size is added newly online without shutting down or powered off in Hypervisors such as vmware esx, vmware workstation and Microsoft Hyper-V before carrying out the Virtual Disk increasing activity.

2. Login into the server with user root or any other user with root privilege.

3. Run the below command to list the detected disk as below screenshot shows..

Add or Detect a New Hard Disk Online Without Rebooting

The above screenshot shows as our linux machine has only single disk of 10GB (/dev/sda).

4. Run the below command to list the entire SCSI device buses,

[root@server1 ~]# ll /sys/class/scsi_host/host?/scan
—w——-. 1 root root 4096 May 11 16:03 /sys/class/scsi_host/host0/scan
—w——-. 1 root root 4096 May 11 15:58 /sys/class/scsi_host/host1/scan
—w——-. 1 root root 4096 May 11 15:58 /sys/class/scsi_host/host2/scan

Above command listed the output of number of SCSI device buses, we have to run each below command for each SCSI device buses.


[root@server1 ~]# echo «- — -» > /sys/class/scsi_host/host0/scan
[root@server1 ~]# echo «- — -» > /sys/class/scsi_host/host1/scan
[root@server1 ~]# echo «- — -» > /sys/class/scsi_host/host2/scan

Источник

Увеличение разделов в Linux на горячую

Cheatsheet (шпаргалка) по увеличению объема разделов в Linux на горячую без выключения виртуальной машины.

Увеличение разделов в Linux на горячую

Частая задача в моей текущей работе — увеличить объем раздела на виртуальной машине без выключения машины (на горячую). Под рукой постоянно держу небольшой cheatsheet (шпаргалку) по работе с разделами в Linux.

План действий

Перед изменением размеров разделов рекомендуется отмонтировать диск. Если диск системный, то нужно загружаться в recovery. Я делаю это на горячую на свой страх и риск.

  1. Делаем бекап машины! (не могу не написать этого)
  2. Увеличиваем объем диска в гипервизоре (этот пункт не затрагиваем)
  3. Сканируем диски в системе
  4. Меняем размер раздела
  5. Увеличиваем файловую систему
Читайте также:  Kernel shared memory linux

Сканируем диски в системе

После увеличения объема диска есть вероятность того, что в системе мы новый объем сразу не увидим. Проверяем. Я использую команду lsblk :

root@hostname.infra.local:/home/user# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk loop0 7:0 0 99,2M 1 loop /snap/core/10908 loop2 7:2 0 99,2M 1 loop /snap/core/10958 sda 8:0 0 32G 0 disk ├─sda1 8:1 0 1M 0 part └─sda2 8:2 0 32G 0 part / sdb 8:16 0 4T 0 disk  

Стрелкой я выделил диск, который мы увеличили до 5Т, но увеличенный объем не видим.

Нужно заставить систему просканировать диск.

echo 1 > /sys/block/sdb/device/rescan 

Сразу после этого снова выполняем lsblk :

sdb 8:16 0 5T 0 disk └─sdb1 8:17 0 4T 0 part /pgsqldb 

То что нужно. Перейдем к увеличению раздела.

Меняем размер раздела

Вообще, мы можем для любых вариантов использовать программу parted, но я покажу еще способ с программой fdisk. Он подходит для разделов объемом менее 4 терабайт.

Здесь будет несколько вариантов:

  • у нас обычная разметка диска или LVM
  • у нас диск c таблицей разметки GPT более 4 терабайт объемом

Рекомендую на этом этапе сначала выполнить команду parted -l , которая может показать ошибку и предложить опции Fix\\Ignore :

Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the current setting? Fix/Ignore? Fix 

Обычные разделы или LVM

Чаще всего я пользуюсь программой fdisk. Можно посмотреть все наши диски\разделы: fdisk -l .

Так как меняем размер раздела на диске sdb , то и заходим в fdisk /dev/sdb.

Вводим команду p и получаем наш текущий список разделов:

Device Start End Sectors Size Type /dev/sdb1 2048 8589843750 8589841703 4T Linux filesystem 

Удаляем раздел /dev/sdb1 : вводим команду d .

Command (m for help): d Selected partition 1 Partition 1 has been deleted. 

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

Создаем новый раздел n :

Command (m for help): n Partition number (1-128, default 1): First sector (34-8589934558, default 2048): Last sector, +sectors or +size (2048-8589934558, default 8589934558): Created a new partition 1 of type 'Linux filesystem' and of size 4 TiB. 

Обратите внимание, программа сообщает, что при создании раздела она нашла запись ext4 в разделе и предлагает удалить ее. Не удаляем. Нет! Не надо!

Partition #1 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: N 

Опять вводим команду p , чтобы посмотреть новую информацию:

Device Start End Sectors Size Type /dev/sdb1 2048 10751953125 10751951078 5T Linux filesystem 

Ну вроде все хорошо. Теперь вводим команду w (write). После этого ваши изменения запишутся на диск.

Большой диск GPT

Если по предыдущему пункту попробовать отресайзить диск большого объема (больше 4 терабайт), то появится ошибка Value out of range . Придется воспользоваться программой parted.

Делаем parted /dev/sdb и смотрим текущие разделы командой print :

(parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 4398GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3299GB 3299GB ext4 primary 

Меняем размер раздела командой resizepart 1 :

(parted) resizepart 1 Warning: Partition /dev/sdb1 is being used. Are you sure you want to continue? Yes/No? Yes End? [3299GB]? 4398GB 

На вопрос End? пишем новый объем раздела. Если хотим расширить его до максимума, то цифры можно подсмотреть выше в выводе команды print : Disk /dev/sdb: 4398GB

Здесь изменения происходят сразу, поэтому при отсутствии вывода после предыдущей команды можно делать quit.

Увеличение файловой системы

Тут должно быть все просто. Разница только между разметками: обычная или LVM.

Обычная разметка

Просто выполняем команду resize2fs /dev/sdb1 :

root@hostname.infra.local:/home/user# resize2fs /dev/sdb1 resize2fs 1.44.1 (24-Mar-2018) Filesystem at /dev/sdb1 is mounted on /pgsqldb; on-line resizing required old_desc_blocks = 384, new_desc_blocks = 512 The filesystem on /dev/sdb1 is now 1073730212 (4k) blocks long. 

LVM

Вообще, LVM позволяет добавлять физические диски (PV - physical volume) в VG - volume group, а в них создавать логические тома (LV - logical volume) примерно по такой схеме:

Следовательно, можно не ресайзить диск в гипервизоре, а добавить еще один. Затем добавить новый PV в VG.

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

Для просмотра информации о PV, VG, LV существуют команды pvs , vgs , lvs . И их более подробные варианты pvscan , vgscan , lvscan :

root@hostname:/home/user# pvs PV VG Fmt Attr PSize PFree /dev/sda5 t-ubuntu16-vg lvm2 a-- 49.52g 0 root@hostname:/home/user# vgs VG #PV #LV #SN Attr VSize VFree t-ubuntu16-vg 1 2 0 wz--n- 49.52g 0 root@hostname:/home/user# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root t-ubuntu16-vg -wi-ao---- 48.52g swap_1 t-ubuntu16-vg -wi-ao---- 1.00g 
  • Меняем размер PV pvresize /dev/sda1
  • Увеличиваем размер LV до максимального lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root
  • Увеличиваем файловую систему на нужном разделе resize2fs /dev/mapper/vg1-dsads-lv-root

Итог

Смотрим, что у нас получилось df -h :

root@hostname.infra.local:/home/user# df -h Filesystem Size Used Avail Use% Mounted on udev 38G 0 38G 0% /dev tmpfs 7,5G 4,4M 7,5G 1% /run /dev/sda2 32G 24G 6,3G 79% / /dev/sdb1 5,0T 3,3T 1,5T 71% /pgsqldb  

Видим новый объем. Все счастливы и довольны.

TL;DR

Кратко cheatsheet у меня выглядит так:

Смотрим, видит ли система новое место на дисках: lsblk , parted -l , fdisk -l

Если не видит: echo 1 > /sys/block/sda/device/rescan (вместо sda - нужный диск) fdisk /dev/sda (if sda)

d - удалить раздел который расширяешь

n - создать новый раздел (создастся с тем индексом, который удалишь)

В большинстве случаев везде ответы будут по умолчанию. Когда спросит про затирание метки - НЕ удалять

p - проверить что разделы имеют тот же вид что и в начале

w - записать изменения на диск

resize2fs /dev/sda1 (номер - индекс раздела)

lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root

Если ошибка с gpt

💡 Подписывайтесь на Телеграм-канал, чтобы не пропускать новые статьи

Источник

Rescan SCSI bus on Linux System

SCSI stands for Small Computer System Interface and is a set of standards for transferring data and connecting devices and computers. Sometimes you make changes to disk devices on your Linux box while online which is even more often nowadays using virtual machines. Sometimes you also add a new disk and do not want to restart your Linux system. Wether you need to add a new disk or increase an existing disk size of your virtual machine, the changes will not be instantly visible from the Linux operating system because you need to rescan SCSI bus on Linux to see the change. It is quite easy to rescan SCSI bus on Linux, you can do it with a simple one line command (depending on the number of SCSI devices you have connected).

Rescan SCSI bus on Linux

Follow the steps described below and you will see the new size of your disk.

Rescan SCSI bus on Linux

Please note that the rescan SCSI bus on Linux does not interrupt operating system operation nor remove any of the disks. Rescanning SCSI bus on Linux with the below procedure will add/freshen devices but not remove them.

When Adding a New Disk

When adding a new disk to your Linux system you need to rescan SCSI host.

You can do this with the following command:

echo "- - -" > /sys/class/scsi_host/hostX/scan

..where X is the number of SCSI host to scan.

You probably have more than one SCSI host available so to make it right you should repeat the above command for each SCSI host available.

Below is a practical example on how to rescan SCSI bus on Linux and and see the newly added disk:

[root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

The “- – -” part is where you tell the SCSI host what exactly to rescan and the hyphens are wildcards which tell SCSI host to rescan all controllers, channels and LUNs.

When Increasing Existing Disk Size

If you changed the size of an existing disk you might notice that the operating system can not see the new disk size until you rescan SCSI bus on Linux operating system.

The easiest way i’ve found is to rescan the specific device with the following command:

echo "1" > /sys/class/block/sdX/device/rescan

..where X is the device you increased and want to rescan.

Below is a practical example on how to rescan SCSI bus on Linux and and see the newly added disk:

[root@node-1 ~]# echo "1" > /sys/class/block/sdb/device/rescan

The “1” is a flag which causes the SCSI host to rescan the “sdb” block device and therefore refresh the data about the disk size. Please note that i choose this command due to the human readable “sdb” naming which is really easy to remember.

Otherwise the command could also be triggered as follows:

[root@node-1 ~]# echo "1" > /sys/class/scsi_device/2:0:1:0/device/rescan

..but in the last case you should know which device you want to rescan by the SCSI bus ID.

Источник

Оцените статью
Adblock
detector