How to mount a second virtual disk in Home Assistant and share it?
Why is this necessary? If Home Assistant is installed on a virtual machine and we have increased the storage capacity on the virtual machine by adding physical media, then it may be necessary to add an additional disk to Home Assistant as network storage, for torrent rocking, for media library, photos, for video recordings from cameras and at the same time we do not occupy the main storage from Home Assistant.
What do we need?
Samba NAS Addon
Visual Studio Code on Windows
USB flash drive
Generate a key and create an authorized_keys file
Generate keys for remote access to Home Assistant, for running SSH Server, for debugging Home Assistant. Important! Not to be confused with the “SSH & Web Terminal” and “Terminal & SSH” addons, they are not involved in this and make sure that these addons do not have port 22222 specified, otherwise there will be a conflict with the debug SSH Server
Run on Windows PowerShell and enter the command
ssh-keygen -t rsa -b 4096
Then we do not specify anything and press Enter for all questions, and after that we will have two keys, private and public. We will need the public key id_rsa.pub, which will be located in the user’s folder. For example, I have here
c:\Users\Divan.ssh
id_rsa – private key
id_rsa.pub – public key (we need it)
Open id_rsa.pub in notepad++ and see the key. Copy everything except the username
Open Visual Studio Code, create a new text file
Insert the copied key
And after it should be like ISO 8859-1 and LF
We save the file to a convenient location and name it in authorized_keys, then we will upload this file to a USB flash drive
When saving, select “No extensions”, which is at the very bottom and assign the name authorized_keys
Format the flash drive in any format: FAT32 / NTFS and assign a name to the flash drive CONFIG.
Important! Specify the CONFIG name unchanged, as is. Large letters and only CONFIG
We throw the authorized_keys file on the flash drive
A VM can have multiple disks and any size. For example, I added a second disk with a capacity of 5 GB. Launch Home Assistant. Insert the flash drive later when the Home Assistant is loaded
After the Home Assistant is loaded, we need to get into the logs, and then open the supervisor logging
Insert the flash drive and throw it into the Home Assistant. We look at the logs and should see how the screenshots are, not exactly exactly, but there should be records about adding a flash drive. After this entry, you need to import the keys via the Home Assistant console with the ha os import command
In the console, enter the command ha os import and if successful, then below will be the message Command completed successfully
We look at the log where, after successful import, there should be such an entry. If this entry is there, then everything is done correctly and we have an SSH Server ready to start debugging
Open Windows PowerShell in Windows and enter the command
ssh root@ip вашего home assistant -p 22222
After a successful login, the welcome window Home Assistant OS will appear
In this mode, we can do anything with disks, format, mount, unmount.
lsblk - view the list of disks
lsblk | grep sd - view mounted disks
Mounting disks
mount /dev/sdb /mnt/data/supervisor/media/share
mount /dev/sdc1 /mnt/data/supervisor/media/usb
mount /dev/sdb /mnt/data/supervisor/media/hdd
Unmount
umount /dev/sdb
Format a disc with a label assignment
mkfs.ext4 -L VM-HDD-01 /dev/sdb1
Find out the UUIDs of the sections
blkid | grep sdb
Run the command to view the disks
Lsblk
We find our virtual disk, which we added on the virtual machine. In my case, it’s 5 GB. Pay attention to the name of the disk, in my case it is sdb, it may be different.
We need to format this section and assign it a label. Any label name, for example, I decided to specify VM-HDD-01
Formatting and assigning a label to a disc is done with this command
mkfs.ext4 -L VM-HDD-01 /dev/sdb
We check whether the disk has been assigned a name by the command. Please note that sdb is the name of the disk we are working with
blkid | grep sdb
If everything is correct, then we will see our disk with the label VM-HDD-01. We will use this label in the Samba NAS addon
We add addons to the repositories and find Samba NAS
How do I set up the Samba NAS addon?
Installing the Samba NAS addon. This Samba NAS addon is needed if we want to mount a second disk and make it available over the network, as well as allow writing to an additional disk. Be sure to use a private key. Without the key, we will not be able to download files from the torrent addon. It will be possible to upload files only from Windows as to a network drive, but we need to be able to upload files inside HAOS
-
Turn off protected mode, the disk will not be mounted without it
-
Switching to text mode
-
We specify any username and password and add the disk that we are going to connect. We specify the label of the disk and the one that we created ourselves according to the instructions “How to mount a second virtual disk in Home Assistant and share it”
moredisks:
- Be sure to turn on medialibrary and insert the key from the private key, not the public one, which is called id_rsa. Open id_rsa in notepad++ and copy the entire contents of the key and paste it as in the screenshot. It is important that the key must strictly be indented so that everything turns blue, otherwise we will not be able to apply the settings
Full view of the correct medialibrary setup
-
Save the settings and run the Samba NAS addon. We do not touch the other settings, but if you wish, you can configure the connection to MQTT.
-
We are looking at the log where we should be notified about the successful connection to SSH and mounting the disk
-
Through Windows Explorer, access to network drives can only be obtained by the HAOS host name, it will not be possible to connect to the IP address, because there is a record in the logs about the host to which we can connect.
If you don’t know the HAOS hostname, then you can see the hostname here
How do I set up Transmission?
If we mount the disk through the Samba NAS addon, then when using the Transmission addon and downloading files, the files are not uploaded to the mounted disk. The reason is that the disk is not actually mounted, so you need to configure the Samba NAS addon correctly. How to configure the Samba NAS addon read the instructions for configuring Samba NAS.
After configuring the Samba NAS addon, in the Transmission addon we prescribe 3 parameters as in the screenshot. You can find the local disks itself by opening additional parameters. We specify the paths to the disk with the label as in the screenshot below. If you do not specify the disk label, then our files will be uploaded to the main CHAOS storage, which we do not need. We need the files to be uploaded to the second disk that we have connected, so we specify the disk label.
If you want these files to be available in Multimedia, then you need to specify the /media folder and specify the paths as in the screenshot.
To check, I recommend first taking a screenshot of the storage volume. This is necessary for comparison before downloading files and after. After downloading the files, the main storage should not increase in size. If the size of the main storage has not increased, then everything has been done correctly and the file has loaded onto the second disk
Текст на русском (Text in Russian)
Как примонтировать в Home Assistant второй виртуальный диск и расшарить?
Зачем это нужно? Если Home Assistant установлен на виртуальной машине и мы увеличили объем хранилища на виртуальной машине путем добавления физического носителя, то может появиться необходимость добавить в Home Assistant дополнительный диск в качестве сетевого хранилища, для торрент качалок, для медиатеки, фото, для видеозаписей с камер и при этом мы не занимаем основное хранилище у Home Assistant.
Что нам нужно?
Аддон Samba NAS
Visual Studio Code на Windows
Флешка
Сгенерить ключ и создать файлик authorized_keys
Сгенерируем ключи для удаленного доступа к Home Assistant, для запуска SSH Server, для отладки Home Assistant. Важно! Не путать с аддонами «SSH & Web Terminal» и «Terminal & SSH», они не участвуют в этом и убедитесь, что у этих аддонов не указан порт 22222, иначе будет конфликт с отладочным SSH Server
Запускаем на Windows PowerShell и вводим команду
ssh-keygen -t rsa -b 4096
Далее ничего не указываем и нажимаем на Enter на все вопросы, а после у нас появятся два ключа, закрытый и публичный. Нам понадобится публичный ключ id_rsa.pub, который будет находиться в папке пользователя. У меня например находится здесь
c:\Users\Divan.ssh
id_rsa – приватный ключ
id_rsa.pub – публичный ключ (он нам и нужен)
Открываем id_rsa.pub в notepad++ и видим ключ. Копируем все, кроме имя пользователя
Открываем Visual Studio Code, создаем новый текстовый файл
Вставляем скопированный ключ
И после должно быть так ISO 8859-1 и LF
Сохраняем файл в удобное нам место и именуем в authorized_keys, потом этот файл закинем на флешку
При сохранении выбираем «Нет расширений», которое находится в самом низу и присваиваем имя authorized_keys
Форматируем флешку в любой формат: FAT32/NTFS и присваиваем имя флешке CONFIG.
Важно! Указывать имя CONFIG без изменении, как есть. Большие буквы и только CONFIG
Закидываем на флешку файл authorized_keys
На виртуальной машине может быть несколько дисков и любого объема. На примере я добавил второй диск с объемом 5 Гб. Запускаем Home Assistant. Флешку вставлять потом, когда Home Assistant загрузится
После того, как загрузится Home Assistant, нам нужно попасть в журналы, а после открыть журналирование супервайзера
Вставляем флешку и прокидываем в Home Assistant. Смотрим логи и должны увидеть как на скриншоты, не прям точь в точь, но должны быть записи о добавлении флешки. После этой записи нужно импортировать ключи через консоль Home Assistant командой ha os import
В консоли вводим команду ha os import и если успех, то ниже будет сообщение Command completed successfully
Смотрим лог, где после успешного импорта должна быть такая запись. Если эта запись есть, значит все сделано верно и у нас готов SSH Server для запуска отладки
Открываем в Windows Windows PowerShell и вводим команду
ssh root@ip вашего home assistant -p 22222
После успешного входа появится приветственное окно Home Assistant OS
В этом режиме мы можем делать с дисками что угодно, форматировать, монтировать, размонтировать.
lsblk - просмотреть список дисков
lsblk | grep sd - просмотреть смонтированные диски
Монтируем диски
mount /dev/sdb /mnt/data/supervisor/media/share
mount /dev/sdc1 /mnt/data/supervisor/media/usb
mount /dev/sdb /mnt/data/supervisor/media/hdd
Размонтировать
umount /dev/sdb
Форматировать диск с присвоением лейбла
mkfs.ext4 -L VM-HDD-01 /dev/sdb1
Узнать UUID’ы разделов
blkid | grep sdb
Запускаем команду для просмотра дисков
Lsblk
Находим свой виртуальный диск, который мы добавили на виртуальной машине. В моем случае это 5 ГБ. Обратите внимание на имя диска, в моем случае это sdb, он может отличаться.
Нам необходимо форматнуть этот раздел и присвоить ему лейбл. Имя лейбла любое, я к примеру решил указать так VM-HDD-01
Форматирование и присвоение лейбла диску делаем такой командой
mkfs.ext4 -L VM-HDD-01 /dev/sdb
Проверяем, присвоилось ли имя диску командой. Обратите внимание, что sdb это имя диска с которым мы работаем
blkid | grep sdb
Если все верно, то мы увидим наш диск с лейблом VM-HDD-01. Этот лейбл мы будем использовать в аддоне Samba NAS
Добавляем в репозитории аддонов и находим Samba NAS
GitHub - dianlight/hassio-addons: Hassio.io
Как настроить аддон Samba NAS?
Устанавливаем аддон Samba NAS. Данный аддон Samba NAS нужен в том случае, если хотим примонтировать второй диск и сделать его доступным по сети, а также позволить записывать на дополнительный диск. Обязательно нужно использовать приватный ключ. Без ключа у нас не будет возможности загружать файлы с аддона торрент. Можно будет загружать файлы только с Windows как на сетевой диск, но нам нужно, чтобы была возможность загружать файлы внутри HAOS
-
Выключаем защищенный режим, без этого не будет монтироваться диск
-
Переключаемся в текстовый режим
-
Указываем любой логин и пароль и добавляем диск, который собираемся подключить. Указываем лейбл диска и тот, который мы сами создали по инструкции «Как примонтировать в Home Assistant второй виртуальный диск и расшарить»
moredisks:
- Обязательно включаем medialibrary и вставляем ключ от приватного ключа, а не публичного, который именуется id_rsa. Открываем id_rsa в notepad++ и копируем все содержимое ключа и вставляем как на скриншоте. Важно, ключ строго должен иметь отступ чтобы все стало синим, в противном случаем у нас не получится применить настройки
Полный вид правильной настройки medialibrary
-
Сохраняем настройки и запускаем аддон Samba NAS. Остальные настройки не трогаем, но при желании можете настроить подключение к MQTT.
-
Смотрим журнал, где нас должны уведомить об успешном подключении к SSH и монтировании диска
-
Через проводник Windows доступ к сетевым дискам можно получить только по имени хоста HAOS, по IP адресу подключиться не получится, потому что в логах есть запись о хосте, к которому мы можем подключиться.
Если не знаете имя хоста HAOS, то имя хоста можно посмотреть здесь
Как настроить Transmission?
Если мы монтируем диск через аддон Samba NAS, то при использовании аддона Transmission и закачки файлов, файлы не загружаются на примонтированный диск. Причина тому, что диск по факту не примонтирован, поэтому необходимо настроить правильно аддон Samba NAS. Как настроить аддон Samba NAS читаем инструкцию по настройке Samba NAS.
После настройки аддона Samba NAS, в аддоне Transmission прописываем 3 параметра как на скриншоте. Сам localdisks найти можно, раскрыв дополнительные параметры. Указываем пути к диску с лейблом как на скриншоте ниже. Если не указать лейбл диска, то у нас файлы будут загружаться в основное хранилище HAOS, что нам не нужно. Нам нужно, чтобы файлы загружались на второй диск, который мы подключили, поэтому мы указываем лейбл диска.
Если хотите, чтобы эти файлы были доступны в Мультимедиа, то нужно указать папку /media и прописать пути как на скриншоте.
Для проверки рекомендую сперва сделать скриншот объема хранилища. Это нужно для сравнения до скачивания файлов и после. После загрузки файлов основное хранилище не должно увеличиться в размере. Если размер основного хранилища не увеличился, значит все сделано верно и файл загрузился на второй диск