منح الوحدات حق الوصول إلى التخزين المحلي للجهاز
ينطبق على:
IoT Edge 1.1 IoT Edge 1.2 ![]()
بالإضافة إلى تخزين البيانات باستخدام خدمات تخزين Azure أو في سعة تخزين الحاويات في جهازك، يمكنك أيضا تخصيص مساحة تخزين على جهاز IoT Edge المضيف نفسه لتحسين المصداقية، خاصة عند العمل أثناء وضع دون الاتصال.
قم بربط وحدة التخزين النمطية بتخزين الجهاز
لتمكين الارتباط من وحدة تخزين نمطية إلى التخزين على نظام المضيف قم بإنشاء متغير محيط الوحدة النمطية التي تشير إلى مجلد تخزين في الحاوية. ثم قم باستخدام خيارات الإنشاء لربط مجلد التخزين هذا بمجلد على الجهاز المضيف.
على سبيل المثال، إذا كنت تريد تمكين مركز IoT Edge من تخزين الرسائل في وحدة التخزين المحلية لجهازك واستردادها لاحقا، فيمكنك تكوين متغيرات البيئة وخيارات الإنشاء في مدخل Azure في قسم الإعدادات وقت التشغيل.
لكل من مركز IoT Edge وعامل IoT Edge، قم بإضافة متغير محيط يسمى ملف التخزين والذي يشير إلى دليل في الوحدة النمطية.
لكل من مركز IoT Edge وعامل IoT Edge، قم بإضافة ربط لتوصيل دليل محلي على الجهاز المضيف إلى دليل في الوحدة النمطية. على سبيل المثال:

أو بإمكانك تكوين التخزين المحلي مباشرة في بيان التوزيع. على سبيل المثال:
"systemModules": {
"edgeAgent": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.1",
"createOptions": {
"HostConfig": {
"Binds":["<HostStoragePath>:<ModuleStoragePath>"]
}
}
},
"type": "docker",
"env": {
"storageFolder": {
"value": "<ModuleStoragePath>"
}
}
},
"edgeHub": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": {
"HostConfig": {
"Binds":["<HostStoragePath>:<ModuleStoragePath>"],
"PortBindings":{"5671/tcp":[{"HostPort":"5671"}],"8883/tcp":[{"HostPort":"8883"}],"443/tcp":[{"HostPort":"443"}]}}}
},
"type": "docker",
"env": {
"storageFolder": {
"value": "<ModuleStoragePath>"
}
},
"status": "running",
"restartPolicy": "always"
}
}
قم باستبدال <HostStoragePath>و<ModuleStoragePath> مع مسار تخزين المضيف والوحدة النمطية؛ يجب أن يكون لكلا القيمتين مسارا مطلقا.
على سبيل المثال، في نظام Linux "Binds":["/etc/iotedge/storage/:/iotedge/storage/"] يعني الدليل /etc/iotedge/storage على نظام المضيف الخاص بك يتم تعيينه إلى الدليل /iotedge/storage/ في الحاوية. في نظام Windows، كمثال آخر، "Binds":["C:\\temp:C:\\contemp"] يعني الدليل C:\temp على نظام المضيف الخاص بك يتم تعيينه إلى الدليل C:\contemp في الحاوية.
يمكنك العثور على مزيد من التفاصيل حول إنشاء خيارات من مستندات docker.
أذونات النظام المضيف
على أجهزة Linux، تأكد من أن ملف تعريف المستخدم الخاص بالوحدة النمطية يحتوي على أذونات القراءة والكتابة والتنفيذ المطلوبة لدليل النظام المضيف. عند الرجوع إلى المثال السابق لتمكين مركز IoT Edge لتخزين الرسائل في التخزين المحلي لجهازك، فقد تحتاج إلى منح أذونات وصول لملف تعريف المستخدم الخاص به، UID 1000. هناك عدة طرق لإدارة أذونات الدليل على أنظمة Linux، بما في ذلك استخدام chown لتغيير مالك الدليل ثم chmod لتغيير الأذونات، مثل:
sudo chown 1000 <HostStoragePath>
sudo chmod 700 <HostStoragePath>
على Windows الأجهزة ، ستحتاج أيضا إلى تكوين الأذونات في دليل النظام المضيف. يمكنك استخدام PowerShell لتعيين الأذونات:
$acl = get-acl <HostStoragePath>
$ace = new-object system.security.AccessControl.FileSystemAccessRule('Authenticated Users','FullControl','Allow')
$acl.AddAccessRule($ace)
$acl | Set-Acl
البيانات المشفرة في وحدة تخزين الوحدة النمطية
عندما تستدعي الوحدات النمطية واجهة برمجة تطبيقات عبء العمل الخاصة ب IoT Edge daemon لتشفير البيانات، يتم اشتقاق مفتاح التشفير باستخدام معرف الوحدة النمطية ومعرف إنشاء الوحدة النمطية. يتم استخدام معرف الجيل لحماية الأسرار إذا تمت إزالة وحدة نمطية من النشر ثم يتم نشر وحدة نمطية أخرى بنفس معرف الوحدة النمطية لاحقا على نفس الجهاز. يمكنك عرض معرف إنشاء الوحدة النمطية باستخدام أمر Azure CLI az iot hub module-identity show.
إذا كنت ترغب في مشاركة الملفات بين الوحدات النمطية عبر الأجيال ، فيجب ألا تحتوي على أي أسرار وإلا ستفشل في فك تشفيرها.
الخطوات التالية
للحصول على مثال إضافي للوصول إلى مساحة تخزين المضيف من وحدة نمطية، راجع تخزين البيانات على الحافة باستخدام Azure Blob Storage على IoT Edge.