Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: IoT Edge 1.5
Внимание
IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
Виртуальная машина Azure IoT Edge для Linux в Windows (EFLOW) изолирована от ос узла Windows, а виртуальная машина не может получить доступ к файловой системе узла. По умолчанию виртуальная машина EFLOW имеет собственную файловую систему и не может получить доступ к папкам или файлам на хост-компьютере. Механизм обмена файлами и папками EFLOW позволяет вам делиться файлами и папками Windows с виртуальной машиной Linux EFLOW CBL-Mariner.
В этой статье показано, как предоставить общий доступ к папке между ОС узла Windows и виртуальной машиной EFLOW.
Необходимые компоненты
- Обновление Azure IoT Edge для Linux в Windows 1.4.4 LTS или более поздней версии. Дополнительные сведения о заметках о выпуске EFLOW см. в разделе "Выпуски EFLOW".
- Компьютер с процессором x64 или x86.
- Windows 10 или 11 (21H2) или более поздней версии с примененным обновлением за ноябрь 2022 г.
Если у вас нет устройства EFLOW, создайте его перед продолжением работы с этим руководством. Выполните действия, описанные в статье "Создание и подготовка IoT Edge для Linux на устройстве с Windows", используя симметричные ключи для установки, развертывания и подготовки EFLOW.
Принцип работы
Azure IoT Edge для Linux в Windows использует технологию virtiofs для общего доступа к файлам и папкам. Virtiofs — это общая файловая система, которая позволяет виртуальным машинам использовать дерево каталогов в операционной системе хоста. В отличие от других подходов, он предназначен для семантики и производительности локальной файловой системы. Virtiofs не является сетевой файловой системой, которая была перепрофилирована для виртуализации. Он использует локальность виртуальных машин и гипервизора, чтобы избежать затрат на сетевые файловые системы.
Вы можете предоставлять общий доступ к папкам Windows только виртуальной машине EFLOW Linux, а не наоборот. Для безопасности при настройке общего доступа к папкам необходимо предоставить корневую папку, а все общие папки должны находиться в этой корневой папке.
Перед добавлением или удалением общих папок ознакомьтесь с этими четырьмя понятиями:
- Корневая папка: папка Windows, которая является корневым путем для вложенных папок, к которым вы предоставляете общий доступ с виртуальной машиной EFLOW. Корневая папка сама по себе не является общедоступной. Совместно используются только вложенные папки в корневой папке.
- Общая папка: папка Windows под корневой папкой , к которой вы предоставляете общий доступ с виртуальной машиной EFLOW. Все содержимое этой папки предоставляется виртуальной машине EFLOW.
- Точка подключения. Путь к виртуальной машине EFLOW, в которой отображается содержимое папки Windows.
- Вариант подключения: доступ только для чтения или чтения и записи . Этот параметр управляет доступом к файлам для подключенной папки на виртуальной машине EFLOW.
Добавление общих папок
В этих шагах показаны примеры команд EFLOW PowerShell для совместного использования одной или нескольких папок ос узла Windows с виртуальной машиной EFLOW.
Примечание.
Если вы используете Windows 10, перезагрузите операционную систему узла Windows после новой установки или обновления MSI перед добавлением общих папок Windows на виртуальную машину EFLOW.
Создайте новую корневую общую папку. Откройте Проводник, выберите место для корневой папки и создайте папку.
Например, создайте корневую папкус именем EFLOW-Shared в C:\Shared.
Создайте одну или несколько общих папок в корневой папке , чтобы предоставить общий доступ к виртуальной машине EFLOW.
Например, создайте две папки: один с именем Read-Access и один с именем Read-Write-Access.
В общей папке Read-Access создайте пример файла, который мы позже считаем внутри виртуальной машины EFLOW.
Например, используйте текстовый редактор, чтобы создать файл с именемHello-World.txt в папке Read-Access и сохранить текст в файле.
Создайте файл конфигурации общей папки с помощью текстового редактора. Этот файл содержит сведения о папках для совместного использования с виртуальной машиной EFLOW, включая точки подключения и параметры. Дополнительные сведения о файле конфигурации JSON см. в функциях PowerShell для IoT Edge для Linux в Windows.
Например, в этом сценарии дайте общий доступ к двум общим папкам, которые вы создали в корневой папке.
- Общая папка Read-Access подключена на EFLOW виртуальной машине по пути /tmp/host-read-access с доступом только для чтения.
- Общая папка Read-Write-Access смонтирована в виртуальной машине EFLOW по пути /tmp/host-read-write-access с доступом на чтение и запись.
Создайте файл конфигурации JSON с именемsharedFolders.json в корневой папкеEFLOW-Shared со следующим содержимым:
[ { "sharedFolderRoot": "C:\\Shared\\EFLOW-Shared", "sharedFolders": [ { "hostFolderPath": "Read-Access", "readOnly": true, "targetFolderOnGuest": "/tmp/host-read-access" }, { "hostFolderPath": "Read-Write-Access", "readOnly": false, "targetFolderOnGuest": "/tmp/host-read-write-access" } ] } ]
Откройте сеанс PowerShell с повышенными привилегиями, выбрав "Запуск от имени администратора".
Создайте назначение общей папки с помощью файла конфигурации (sharedFolders.json), созданного ранее.
Add-EflowVmSharedFolder -sharedFoldersJsonPath "C:\Shared\EFLOW-Shared\sharedFolders.json"
После завершения командлета виртуальная машина EFLOW может получить доступ к общим папкам. Подключитесь к виртуальной машине EFLOW и проверьте правильность общего доступа к папкам.
Перейдите в общую папку Read-Access (смонтированную в /tmp/host-read-access) и проверьте содержимое файла Hello-World.txt.
Примечание.
По умолчанию все общие папки принадлежат корневому каталогу. Чтобы получить доступ к папке, войдите в систему как пользователь root с помощью
sudo su
или измените владельца папки на iotedge-user с помощью командыchown
.sudo su cd /tmp/host-read-access cat Hello-World.txt
Если все прошло успешно, вы увидите содержимое файлаHello-World.txt в виртуальной машине EFLOW. Чтобы проверить доступ на запись, создайте файл в папке узла /tmp/host-read-write-access , а затем проверьте содержимое нового файла в папке узла Windows read-Write-Access .
Проверка общих папок
Ниже приведены примеры команд EFLOW PowerShell для проверки общих папок и параметров Windows (разрешений доступа и точки подключения) с виртуальной машиной EFLOW.
Откройте сеанс PowerShell с повышенными привилегиями, начиная с запуска от имени администратора.
Список сведений о общих папках Windows в корневой папке. Например, используя сценарий в предыдущем разделе, можно перечислить сведения общих папок Read-Access и Read-Write-Access.
Get-EflowVmSharedFolder -sharedfolderRoot "C:\Shared\EFLOW-Shared" -hostFolderPath @("Read-Access", "Read-Write-Access")
Дополнительные сведения о командлете Get-EflowVmSharedFolder
см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.
Удаление общих папок
Ниже приведены примеры команд EFLOW PowerShell, чтобы прекратить общий доступ к общей папке Windows с виртуальной машиной EFLOW.
Откройте сеанс PowerShell с повышенными привилегиями, начиная с запуска от имени администратора.
Остановите общий доступ к папке с именем Read-Access в корневой папке с виртуальной машиной EFLOW.
Remove-EflowVmSharedFolder -sharedfolderRoot "C:\Shared\EFLOW-Shared" -hostFolderPath "Read-Access"
Дополнительные сведения о командлете Remove-EflowVmSharedFolder
см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.
Следующие шаги
Выполните действия, описанные в разделе "Распространенные проблемы и решения" для Azure IoT Edge для Linux в Windows, чтобы устранить проблемы, возникающие при настройке IoT Edge для Linux в Windows.