Zfs: سمات الملف

تم إنشاؤها على ٣ مايو ٢٠١١  ·  12تعليقات  ·  مصدر: openzfs/zfs

داخليًا ، يوجد لدى ZFS بالفعل جميع التعليمات البرمجية للتعامل مع سمات الملف بشكل صحيح (غير قابل للتغيير / للقراءة فقط / إلخ). يجب أن يتم فرضها حتى إذا قمت باستيراد تجمع من نظام أساسي مختلف مع مجموعة السمات هذه. ما هو مفقود هو الواجهات المطلوبة لمساحة المستخدمين للتعامل معها. في نظام Linux ، يتم ذلك عادةً باستخدام الأدوات المساعدة lsattr / chattr. ومع ذلك ، فإن سمات الملف التي تدعمها هذه الأدوات تتداخل جزئيًا فقط مع مجموعة سمات ملف Solaris. هذا يعني أننا إما بحاجة إلى كتابة أداتنا الخاصة للتلاعب بها على Linux ، أو نحتاج إلى نقل الأداة المساعدة Solaris. سيكون الشرط الأساسي لهذا العمل هو تشغيل معالجات نهج الأمان لضمان قدرة المستخدمين المصرح لهم فقط على معالجة سمات الملف.

Feature

التعليق الأكثر فائدة

behlendorf هل هناك وثائق أو دليل يسرد السمات المدعومة وماذا تفعل على نظام ZFS؟

ال 12 كومينتر

أعتقد أنه من المفيد دعم سمات Linux القياسية مثل الثبات ، والإلحاق فقط ، وما إلى ذلك في مساحة FS _ * _ FL ، حتى إذا قررت لاحقًا استيراد أداة Solaris لنفسها. تدعم العديد من أنظمة الملفات المختلفة على Linux واجهة lsattr / chattr ioctl () لتعيين هذه العلامات ، على الرغم من أن بعض أنظمة الملفات تترجم الإشارات إلى (تقريبًا) قيم على القرص مكافئة لاستخدامها الخاص.

ليس من المستحيل إضافة سمات جديدة إلى FS _ * _ FL إذا كانت مفيدة بشكل عام (لا أعرف ما هي السمات التي يمتلكها Solaris والتي لا يمتلكها Linux) ، على الرغم من أن هذه المساحة تنفد ، لذا لا يمكن إضافتها بشكل طوعي .

أوافق ، قبل بضعة أشهر ، قمت بغزو أولي لمحاولة دعم سمات Linux القياسية. لقد حددت في ذلك الوقت أن السمات الثابتة ، والملحقة فقط ، و nodump كانت السمات الوحيدة المشتركة بين Solaris و Linux. لسوء الحظ ، لم أتمكن من إيجاد الوقت لإنهاء هذا العمل ولكن فرع التطوير متاح. يوجد أدناه قائمة كاملة بسمات zfs للرجوع إليها فقط.

 / *
 * سمات مستوى الملف الإضافية ، التي يتم تخزينها
 * في النصف العلوي من zp_flags
 * /
 # تعريف ZFS_READONLY 0x0000000100000000ull
 # تعريف ZFS_HIDDEN 0x0000000200000000ull
 # تعريف ZFS_SYSTEM 0x0000000400000000ull
 # تعريف ZFS_ARCHIVE 0x0000000800000000ull
 # تعريف ZFS_IMMUTABLE 0x0000001000000000ull
 #define ZFS_NOUNLINK 0x0000002000000000ull
 #define ZFS_APPENDONLY 0x0000004000000000ull
 #define ZFS_NODUMP 0x0000008000000000ull
 #define ZFS_OPAQUE 0x0000010000000000ull
 # تعريف ZFS_AV_QUARANTINED 0x0000020000000000ull
 # تعريف ZFS_AV_MODIFIED 0x0000040000000000ull
 #define ZFS_REPARSE 0x0000080000000000ull
 #define ZFS_OFFLINE 0x0000100000000000ull
 #define ZFS_SPARSE 0x0000200000000000ull

كما ذكرت في القائمة البريدية ، نظرت في هذا وفكرت في التعيينات. ها هي أفكاري للآخرين ليأخذوها في الاعتبار بقدر ما يراه مناسباً:

تعيينات واضحة:
ZFS_IMMUTABLE <-> FS_IMMUTABLE_FL
ZFS_APPENDONLY <-> FS_APPEND_FL
ZFS_NODUMP <-> FS_NODUMP_FL

ربما فكرة جيدة لأسباب التوافق:
إذا تم تعيين ZFS_IMMUTABLE على الإطلاق ، فقم بإلغاء تحديد ZFS_NOUNLINK. سيسمح هذا للمستخدم بمسح ZFS_NOUNLINK بـ: chattr +i FILE ; chattr -i FILE

فكرة مجنونة 1:
قم بتعيين ZFS_READONLY و ZFS_HIDDEN و ZFS_SYSTEM و ZFS_ARCHIVE و crtime لمستخدم متوافق مع Samba.

فكرة مجنونة 2:
يؤدي تعيين FS_TOPDIR_FL على دليل إلى تعيين خاصية بحيث تقوم عمليات mkdir () في هذا الدليل بإنشاء مجموعات بيانات ZFS جديدة. سيكون هذا مفيدًا لـ / home ، على سبيل المثال. ثم لا تحتاج إلى ربط تغييرات ZFS في useradd على Linux. وهي فكرة معقولة أن chattr +T /home على تحويلة [234] بالفعل. حتى إذا لم تربط FS_TOPDIR_FL به ، فإن فكرة خاصية ZFS بهذا التأثير ستظل مفيدة على / home.

أهلا،

هل يوجد تقدم في هذا الموضوع؟ لقد قمت مؤخرًا بتحويل خادم الوسائط الخاص بي إلى ZFS ولكني أفتقد إمكانية تعيين العلم الثابت. أرغب في "حماية" بعض الملفات ، هل هناك أي حل بديل لتعيين العلم؟ ربما عبر برنامج خارجي؟ هل هذا العمل؟

شكرا لك!

@ cyberius0 لا أحد يعمل على هذا حاليًا. ولكن إذا رغب شخص ما في ذلك.

أود أن أجربها إذا وجهني شخص ما في الاتجاه الصحيح. أحتاج هذه الميزة.

+1

تبدو فكرة

+1

تجدر الإشارة إلى أن واجهة سمات ملف Linux تعاني من سباق TOCTOU لا يحدث في Solaris. تقوم أدوات userland في كل من Solaris و Linux بإجراء تعديلات على سمات الملف كوسائط ويتم تخزين سمات الملف في المركز وعلى القرص كأقنعة بت ، لكن أوجه التشابه تنتهي عند هذا الحد.

في Solaris ، يتم إرسال قائمة بالقيم التي ستتغير ، مصحوبة بقيمها ، إلى النواة. تتم معالجة عملية أخذ قناع البت الحالي وتعديله وتخزينه تحت zp-> z_lock. هذا يضمن أن تكون جميع التغييرات ذرية ، وهي الطريقة الصحيحة للقيام بالأشياء. في Linux ، يتم الاستعانة بمصادر خارجية لمسؤولية التعديلات إلى userland. ستحصل الأداة المساعدة userland على قناع البت الحالي ، وتقوم بإجراء التغييرات وإرسال قناع بت جديد يحل محل القديم. نظرًا لأنه لا يمكن لـ userland قفل الملف ضد التعديلات ، يمكن أن تكون خيوط المعالجة المتزامنة التي تلامس وحدات بت مختلفة في نفس الملف إما كلا التغييرين أو تغيير واحد فقط.

جعل zfsonlinux / zfs # 1693 ZFSOnLinux عرضة لهذه المشكلة من خلال تنفيذ بعض كود الترجمة بين واجهة Linux وواجهة ZFS من Solaris. لحسن الحظ ، يعد مثل هذا التعديل السريع لسمات الملف أمرًا نادرًا ، وهذا على الأرجح سبب عدم اكتشاف ذلك عند تطبيق سمات الملف لأول مرة على Linux. يجب علينا إهمال واجهة Linux لصالح واجهة ذرية على غرار ما يفعله Solaris عندما ننفذ أدوات تعديل سمات الملفات الخاصة بنا ، وستكون هناك حاجة إلى الكشف عن النطاق الكامل لسمات ملف ZFS التي ورثناها من Solaris.

تم دمج دعم التعيينات الواضحة وسيكون جزءًا من 0.6.3.

  • ZFS_IMMUTABLE <-> FS_IMMUTABLE_FL
  • ZFS_APPENDONLY <-> FS_APPEND_FL
  • ZFS_NODUMP <-> FS_NODUMP_FL

لا يغطي هذا السمات الموجودة على Linux ولكن ليس على Illumos والعكس بالعكس. نظرًا لأنه سيتعين علينا التعامل مع هؤلاء في كل حالة على حدة ، أعتقد أنه من المنطقي إغلاق هذه المشكلة. يمكننا فتح عدد جديد لكل سمة حسب الحاجة لمناقشة تفاصيل كيفية تصرفها.

9d31779 تنفيذ دعم سمة الملف
3b4f425 Refactor inode_owner_or_capable () فحص الأدوات التلقائية

behlendorf هل هناك وثائق أو دليل يسرد السمات المدعومة وماذا تفعل على نظام ZFS؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات