λ΄λΆμ μΌλ‘ ZFSμλ νμΌ μμ±(λΆλ³/μ½κΈ° μ μ©/λ±)μ μ¬λ°λ₯΄κ² μ²λ¦¬νκΈ° μν λͺ¨λ μ½λκ° μ΄λ―Έ μμ΅λλ€. μ΄λ¬ν μμ±μ΄ μ€μ λ λ€λ₯Έ νλ«νΌμμ νμ κ°μ Έμ€λ κ²½μ°μλ μ μ©λμ΄μΌ ν©λλ€. λλ½λ κ²μ μ¬μ©μ 곡κ°μ μ‘°μνλ λ° νμν μΈν°νμ΄μ€μ λλ€. Linuxμμλ μΌλ°μ μΌλ‘ lsattr/chattr μ νΈλ¦¬ν°λ₯Ό μ¬μ©νμ¬ μ΄ μμ μ μνν©λλ€. κ·Έλ¬λ μ΄λ¬ν λꡬμμ μ§μνλ νμΌ μμ±μ Solaris νμΌ μμ± μ§ν©κ³Ό λΆλΆμ μΌλ‘λ§ κ²ΉμΉ©λλ€. μ¦, Linuxμμ μ΄λ₯Ό μ‘°μνκΈ° μν΄ μ체 λꡬλ₯Ό μμ±νκ±°λ Solaris μ νΈλ¦¬ν°λ₯Ό μ΄μν΄μΌ ν©λλ€. μ΄ μμ μ μ μ 쑰건μ κΆνμ΄ μλ μ¬μ©μλ§ νμΌ μμ±μ μ‘°μν μ μλλ‘ λ³΄μ μ μ± νΈλ€λ¬κ° μλνλλ‘ νλ κ²μ λλ€.
λμ€μ Solaris λꡬλ₯Ό κ°μ Έμ€κΈ°λ‘ κ²°μ νλλΌλ FS__*_FL 곡κ°μμ λ³κ²½ λΆκ°λ₯, μΆκ° μ μ© λ±κ³Ό κ°μ νμ€ Linux μμ±μ μ§μνλ κ²μ κ°μΉκ° μλ€κ³ μκ°ν©λλ€. Linuxμ λ§μ λ€λ₯Έ νμΌ μμ€ν μ μ΄λ¬ν νλκ·Έλ₯Ό μ€μ νκΈ° μν΄ lsattr/chattr ioctl() μΈν°νμ΄μ€λ₯Ό μ§μνμ§λ§ μΌλΆ νμΌ μμ€ν μ μ체 μ¬μ©μ μν΄ νλκ·Έλ₯Ό (κ±°μ) λλ±ν μ¨λμ€ν¬ κ°μΌλ‘ λ³νν©λλ€.
μΌλ°μ μΌλ‘ μ μ©ν κ²½μ° FS_*_FLμ μ μμ±μ μΆκ°νλ κ²μ λΆκ°λ₯νμ§ μμ΅λλ€(Solarisμλ Linuxμ μλ μμ±μ΄ 무μμΈμ§ λͺ¨λ₯΄κ² μ΅λλ€). ν΄λΉ 곡κ°μ΄ λΆμ‘±νμ¬ κΈ°κΊΌμ΄ μΆκ°ν μλ μμ§λ§ .
λμν©λλ€. λͺ λ¬ μ μ νμ€ Linux μμ±μ μ§μνκΈ° μν΄ μ²μμΌλ‘ μ§μΆνμ΅λλ€. λΉμ λλ λΆλ³, μΆκ° μ μ© λ° nodumpκ° Solarisμ Linux κ°μ 곡ν΅μ μΈ μ μΌν μμ±μ΄λΌκ³ κ²°μ νμ΅λλ€. μμ½κ²λ μ΄ μμ μ λ§μΉ μκ°μ΄ μμμ§λ§ κ°λ° λΆκΈ°λ μ¬μ©ν μ μμ΅λλ€. λ€μμ μ°Έμ‘°μ©μΌλ‘λ§ μ¬μ©ν μ μλ zfs μμ±μ μ 체 λͺ©λ‘μ λλ€.
/* * μ μ₯λλ μΆκ° νμΌ λ 벨 μμ± * zp_flagsμ μμͺ½ μ λ° */ #define ZFS_READONLY 0x0000000100000000ull #define ZFS_HIDDEN 0x0000000200000000ull #define ZFS_SYSTEM 0x0000000400000000ull #define ZFS_ARCHIVE 0x0000000800000000ull #define ZFS_IMMUTABLE 0x0000001000000000ull #define ZFS_NOUNLINK 0x0000002000000000ull #define ZFS_APPENDONLY 0x0000004000000000ull #define ZFS_NODUMP 0x0000008000000000ull #define ZFS_OPAQUE 0x0000010000000000ull #define ZFS_AV_QUARANTINED 0x0000020000000000ull #define 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λ₯Ό μ§μλλ€. μ΄λ κ² νλ©΄ μ¬μ©μκ° chattr +i FILE ; chattr -i FILE
ZFS_NOUNLINKλ₯Ό μ§μΈ μ μμ΅λλ€.
λ―ΈμΉ μμ΄λμ΄ 1:
ZFS_READONLY, ZFS_HIDDEN, ZFS_SYSTEM λ° ZFS_ARCHIVEμ crtimeμ Samba νΈν μ¬μ©μμ 맀νν©λλ€.DOSATTRIB xattr.
λ―ΈμΉ μμ΄λμ΄ 2:
λλ ν 리μμ FS_TOPDIR_FLμ μ€μ νλ©΄ ν΄λΉ λλ ν 리μ mkdir() μμ
μ΄ μ ZFS λ°μ΄ν° μΈνΈλ₯Ό μμ±νλλ‘ μμ±μ΄ μ€μ λ©λλ€. μ΄κ²μ μλ₯Ό λ€μ΄ /homeμ μ μ©ν©λλ€. κ·Έλ¬λ©΄ Linuxμμ ZFS λ³κ²½ μ¬νμ useraddμ μ°κ²°ν νμκ° μμ΅λλ€. κ·Έλ¦¬κ³ μ΄λ―Έ ext[234]μμ chattr +T /home
μ€μ νλ κ²μ΄ ν©λ¦¬μ μ
λλ€. FS_TOPDIR_FLμ μ°κ²°νμ§ μλλΌλ μ΄ ν¨κ³Όμ λν ZFS μμ±μ μμ΄λμ΄λ /homeμμ μ¬μ ν μ μ©ν κ²μ
λλ€.
μλ νμλκΉ,
μ΄ μ£Όμ μ μ§μ μ΄ μμ΅λκΉ? μ΅κ·Όμ λ―Έλμ΄ μλ²λ₯Ό ZFSλ‘ μ ννμ§λ§ λ³κ²½ν μ μλ νλκ·Έλ₯Ό μ€μ ν κ°λ₯μ±μ΄ μμ΅λλ€. μΌλΆ νμΌμ "보νΈ"νκ³ μΆμ΅λλ€. νλκ·Έλ₯Ό μ€μ νλ ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ? μλ§λ μΈλΆ νλ‘κ·Έλ¨μ ν΅ν΄? μ΄κ² ν¨κ³Όκ° μμκΉμ?
κ°μ¬ν©λλ€!
@cyberius0 νμ¬ μ무λ μ΄ μμ μ νκ³ μμ§ μμ΅λλ€. κ·Έλ¬λ λκ΅°κ°κ° μνλ€λ©΄ λλ κ·Έκ²μ μν΄ λͺ¨λ κ²μ λλ€.
λκ΅°κ°κ° λλ₯Ό μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ μλ΄ν΄ μ€λ€λ©΄ μλν΄ λ³΄κ³ μΆμ΅λλ€. μ΄ κΈ°λ₯μ΄ νμν©λλ€.
+1
@rlaager μ Crazy Idea 2λ λ§€μ° μ μ©νκ² λ€λ¦½λλ€. κ·Έκ²μ΄ μΌμ΄ λκΈ°λ₯Ό κ°μ²νκ³ μΆμ΅λλ€.
+1
Linux νμΌ μμ± μΈν°νμ΄μ€λ Solarisμμ λ°μνμ§ μλ TOCTOU κ²½μμ κ²ͺλλ€λ μ μ μ μν΄μΌ ν©λλ€. Solaris λ° Linuxμ userland λꡬλ νμΌ μμ±μ μΈμλ‘ μμ νκ³ νμΌ μμ±μ μ½μ΄ λ° λμ€ν¬μ λΉνΈ λ§μ€ν¬λ‘ μ μ₯λμ§λ§ μ μ¬μ μ κ±°κΈ°μ λμ λλ€.
Solarisμμλ κ°μ΄ 무μμΈμ§μ ν¨κ» λ³κ²½λ κ° λͺ©λ‘μ΄ μ»€λλ‘ μ μ‘λ©λλ€. νμ¬ λΉνΈλ§μ€ν¬λ₯Ό κ°μ Έμ μμ νκ³ μ μ₯νλ μμ μ zp->z_lock μλμμ μ²λ¦¬λ©λλ€. μ΄λ κ² νλ©΄ λͺ¨λ λ³κ²½ μ¬νμ΄ μμμ μ΄λ©° μ΄κ²μ΄ μ¬λ°λ₯Έ μμ λ°©μμμ 보μ₯ν©λλ€. Linuxμμ μμ μ λν μ± μμ μ¬μ©μ μμμ μμμμ±λ©λλ€. userland μ νΈλ¦¬ν°λ νμ¬ λΉνΈλ§μ€ν¬λ₯Ό κ°μ Έμ λ³κ²½νκ³ μ΄μ λΉνΈλ§μ€ν¬λ₯Ό λ체νλ μ λΉνΈλ§μ€ν¬λ₯Ό 보λ λλ€. userlandλ μμ μ λν΄ νμΌμ μ κΈ μ μκΈ° λλ¬Έμ λμΌν νμΌμμ μλ‘ λ€λ₯Έ λΉνΈλ₯Ό μ μ΄νλ λ κ°μ λμ μ€λ λλ λ λ€ λ³κ²½λκ±°λ ν λ²λ§ λ³κ²½λ μ μμ΅λλ€.
zfsonlinux/zfs#1693μ Linux μΈν°νμ΄μ€μ Solarisμ ZFS μΈν°νμ΄μ€ κ°μ μΌλΆ λ³ν μ½λλ₯Ό ꡬννμ¬ ZFSOnLinuxλ₯Ό μ΄ λ¬Έμ μ μ·¨μ½νκ² λ§λ€μμ΅λλ€. κ³ λ§κ²λ νμΌ μμ±μ μ΄λ¬ν λΉ λ₯Έ μμ μ λλ¬ΌκΈ° λλ¬Έμ Linuxμμ νμΌ μμ±μ΄ μ²μ ꡬνλμμ λ μ΄κ²μ΄ κ°μ§λμ§ μμ κ² κ°μ΅λλ€. μ°λ¦¬λ μ°λ¦¬ μμ μ νμΌ μμ± μμ λꡬλ₯Ό ꡬνν λ Solarisκ° νλ μΌμ λ°λΌ μμ μΈν°νμ΄μ€λ₯Ό μ νΈνμ¬ Linux μΈν°νμ΄μ€λ₯Ό λ μ΄μ μ¬μ©νμ§ μμμΌ ν©λλ€. μ΄λ¬ν λꡬλ Solarisμμ μμν ZFS νμΌ μμ±μ μ 체 λ²μλ₯Ό λ ΈμΆνλ λ° νμν©λλ€.
λͺ λ°±ν 맀νμ λν μ§μμ΄ λ³ν©λμμΌλ©° 0.6.3μ μΌλΆκ° λ κ²μ λλ€.
μ΄κ²μ Linuxμ μ‘΄μ¬νμ§λ§ Illumosμλ μ‘΄μ¬νμ§ μλ μμ±μ λ€λ£¨μ§ μμΌλ©° κ·Έ λ°λμ κ²½μ°λ λ§μ°¬κ°μ§μ λλ€. μΌμ΄μ€ λ°μ΄ μΌμ΄μ€λ‘ μ²λ¦¬ν΄μΌ νλ―λ‘ μ΄ λ¬Έμ λ₯Ό μ’ λ£νλ κ²μ΄ ν©λ¦¬μ μ΄λΌκ³ μκ°ν©λλ€. μ΄λ»κ² μλν΄μΌ νλμ§μ λν μΈλΆ μ¬νμ λ ΌμνκΈ° μν΄ νμμ λ°λΌ κ° μμ±μ λν μλ‘μ΄ λ¬Έμ λ₯Ό μ΄ ββμ μμ΅λλ€.
9d31779 νμΌ μμ± μ§μ ꡬν
3b4f425 inode_owner_or_capable() autotools κ²μ¬λ₯Ό 리ν©ν°λ§ν©λλ€.
@behlendorf μ§μλλ μμ±κ³Ό ZFS μμ€ν μμ μννλ μμ μ λμ΄νλ μ€λͺ μλ μ€λͺ μκ° μμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
@behlendorf μ§μλλ μμ±κ³Ό ZFS μμ€ν μμ μννλ μμ μ λμ΄νλ μ€λͺ μλ μ€λͺ μκ° μμ΅λκΉ?