Linux: Добавляем диски на лету без перезагрузки

festplatte

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

Для начала посмотрим какие диски видит система:

[testhost]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bceec

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1175     9231360   83  Linux
/dev/sda3            1175        1306     1048576   82  Linux swap / Solaris

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

[testhost]# echo - - - > /sys/class/scsi_host/host
host0/ host1/ host2/

У нас 3 хоста, на котором может находиться наш новый жесткий диск.

[testhost]# echo - - - > /sys/class/scsi_host/host0/scan
[testhost]# echo - - - > /sys/class/scsi_host/host1/scan
[testhost]# echo - - - > /sys/class/scsi_host/host2/scan

Снова запрашиваем «fdisk -l», и как видим вывод поменялся, добавился диск /dev/sdb:

[testhost]# fdisk -l

...

Disk /dev/sdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders

«dmesg | tail» аналогично покажет нам новый найденный диск

Sep 23 12:15:56 testhost kernel: scsi 2:0:1:0: Direct-Access     VMware   Virtual disk     1.0  PQ: 0 ANSI: 2
Sep 23 12:15:56 testhost kernel: scsi target2:0:1: Beginning Domain Validation
Sep 23 12:15:56 testhost kernel: scsi target2:0:1: Domain Validation skipping write tests
Sep 23 12:15:56 testhost kernel: scsi target2:0:1: Ending Domain Validation
Sep 23 12:15:56 testhost kernel: scsi target2:0:1: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: Attached scsi generic sg2 type 0
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] 104857600 512-byte logical blocks: (53.6 GB/50.0 GiB)
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Write Protect is off
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Cache data unavailable
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Assuming drive cache: write through
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Cache data unavailable
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Assuming drive cache: write through
Sep 23 12:15:56 testhost kernel: sdb: unknown partition table
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Cache data unavailable
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Assuming drive cache: write through
Sep 23 12:15:56 testhost kernel: sd 2:0:1:0: [sdb] Attached SCSI disk

Далее все просто: создаем новый раздел через fdisk и форматируем командой mkfs.ext4 (если диск по объему достаточно большого объема, больше 2Tb, то рекомендую ознакомиться с постом про большие диски в Linux)

Основа сделана, осталось добавить  созданный диск в /etc/fstab.

Для этого нам необходимо узнать uuid диска.

Тут существует подводный камень: при миграции виртуалки методом копирования (клонирования) uuid диска может смениться, без указания uuid в fstab существует вероятность, что диски на новом месте встанут в другом порядке, т.е. sda станет sdb.

Узнать uuid можно двумя командами:

[testhost ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Sep 10 15:58 09411d25-...-ed51d66071c4 -> ../../sda3
lrwxrwxrwx 1 root root 10 Sep 10 15:58 26315ab0-...-57bbc1f00849 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 23 13:36 c6f6cfe5-...-1e8f4d1c64d3 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 10 15:58 cfc3f31f-...-200cacf7df7b -> ../../sda1

Или

[testhost]# blkid
/dev/sda1: UUID="cfc3f31f-...-200cacf7df7b" TYPE="ext3"
/dev/sda2: UUID="26315ab0-...8-9780-57bbc1f00849" TYPE="ext4"
/dev/sda3: UUID="09411d25-...-9102-ed51d66071c4" TYPE="swap"
/dev/sdb1: UUID="c6f6cfe5-...-81d1-1e8f4d1c64d3" TYPE="ext4"

Добавляем необходимые строчки в fstab, делаем mount, в моем случае mount /mnt/sdb1, и если все верно в выводе команды df мы увидим смонтированный раздел:

[testhost]# grep "sdb" fstab
UUID=c6f6cfe5-...-1e8f4d1c64d3 /mnt/sdb1               ext4    defaults        1 1

[testhost]# mount /mnt/sdb1

[testhost]# df -H
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.4G 1.4G 7.6G 15% /
tmpfs 2.1G 0 2.1G 0% /dev/shm
/dev/sda1 204M 100M 94M 52% /boot
/dev/sdb1 53G 189M 50G 1% /mnt/sdb1

На сегодня все. Встретимся в сети!

Вы можете оставить комментарий ниже.