ওএস এক্স কি কখনও কখনও ড্রাইভগুলি সহ স্পষ্টভাবে সমর্থিত নয় এমন স্বল্প পরিচিত ট্রিম রুটিন চালায়?


3

ওএস এক্স কি কখনও কখনও ড্রাইভগুলি দিয়ে স্পষ্টভাবে সমর্থিত নয় এমন ট্রিম রুটিন চালায়?

যখন এইচএফএস প্লাসের ভলিউমটি আনমাউন্ট করা হয় বা বের করে দেওয়া হয়, তখন?

পটভূমি

কনসোল-এ সম্প্রতি উল্লেখ করা হয়েছে, যখন বারবার / আক্রমণাত্মকভাবে একটি সাধারণ ইউএসবি ফ্ল্যাশ ড্রাইভ বিভক্ত করা হয়েছে এবং এর একাধিক ভ্রমণকৃত এইচএফএস প্লাস ফাইল সিস্টেমগুলি মুছে ফেলছে, বার্তা যেমন:

2013-12-29 21:56:18.000 kernel[0]: hfs_unmap_free_ext: ignoring trim vol=swivel @ off 4698607616 len 159744 

সিস্টেম তথ্যতে ড্রাইভ - একটি কিংস্টন ডেটা ট্র্যাভেলার 400 - কে শক্ত রাষ্ট্রের মাধ্যম হিসাবে ধরা হয় না এবং 'ট্রিম সাপোর্ট:' লাইন নেই।

আমি কোড করি না, তবে আমার কাছে মনে হচ্ছে ট্রিম উপেক্ষা করা কোডের একটি অংশে উপস্থিত হয়েছে - hfs_unmap_free_extentরুটিন - এটি ট্রিম যেখানে কোনওভাবে সমর্থিত সেখানে প্রযোজ্য।

এটি আমাকে ভাবছে যে - কোনও ফাইল সিস্টেম মাউন্ট করার সময় চলতে পারে এমন অনুমান ন্যানোসেকেন্ড-সমালোচনামূলক রুটিন (গুলি) ছাড়াও - অন্যান্য সময়ে কম-পরিচিত এবং অপেক্ষাকৃত অপরিশোধিত (কম সমালোচিত) রুটিন চলতে পারে কিনা তা নিয়ে  ।


সংশ্লিষ্ট

অভ্যন্তরীণ এসএসডি + এইচডিডি ড্রাইভস (২০১১) এর জন্য ম্যাকবুক প্রোটি অনুকূলিত করুন , যেখানে গ্রান্ট প্যানেলের একটি ডিজিটালডিজেএন.আর্টির প্রতিক্রিয়ায় হিরমের জুলাই ২০১১ সালের মন্তব্যে গৃহীত উত্তরগুলি মনোযোগ আকর্ষণ করেছে । এই মন্তব্যের মধ্যে:

… অ্যাপল খুব ভাল কারণে ট্রিম সমর্থন লক করেছে - তাদের কোড এসএসডি এর সাথে নির্ভরযোগ্যতার সাথে কাজ করে যা তারা ব্যবহার করার জন্য বেছে নিয়েছে এবং অন্য কেউ নেই, কারণ তারা ন্যানোসেকেন্ড-সমালোচনামূলক সময় লুপগুলিতে প্রোগ্রাম করেছে যা ব্যবহৃত নিয়ন্ত্রকদের অ্যাক্সেসের সময়গুলির সাথে পুরোপুরি মেলে they অ্যাপল এর এসএসডি। ...

তবে, ২০১১ সালের নভেম্বরে ডিজিটালডিজে.টর্নাম হিরমের কিছু বক্তব্য নিয়ে সন্দেহ প্রকাশ করেছে। নির্দিষ্টভাবে:

… এমন কোনও শূন্য প্রমাণ রয়েছে যে পড়ার জন্য এবং লেখার জন্য অ্যাপলের কাছে তাদের নির্দিষ্ট এসএসডি হার্ডওয়্যার পরিচালনা করার জন্য নির্দিষ্ট কোড রয়েছে। ...

দয়া করে মনে রাখবেন, এই প্রশ্ন হল না তৃতীয় পক্ষের সম্পর্কে TRIM enabler কথা বলা ইত্যাদি। এটি সম্পর্কে:

  • অপারেটিং সিস্টেমের সাথে কী অবিচ্ছেদ্য

- এবং আমি অনুমোদনমূলক উত্তর চাই like সম্ভব হলে প্রমাণ-ভিত্তিক, যদিও আমি প্রশংসা করি যে ওএস এক্সের বদ্ধ উত্স অংশগুলি এটি কঠিন করে তুলতে পারে।


কার্নেলের জন্য এইচএফএস-সম্পর্কিত উত্স কোড থেকে

/* 
 ;________________________________________________________________________________ 
 ; 
 ; Routine:       hfs_unmap_free_extent 
 ; 
 ; Function:      Make note of a range of allocation blocks that should be 
 ;                unmapped (trimmed).  That is, the given range of blocks no 
 ;                longer have useful content, and the device can unmap the 
 ;                previous contents.  For example, a solid state disk may reuse 
 ;                the underlying storage for other blocks. 
 ; 
 ;                This routine is only supported for journaled volumes.  The extent 
 ;                being freed is passed to the journal code, and the extent will 
 ;                be unmapped after the current transaction is written to disk. 
 ; 
 ; Input Arguments: 
 ;    hfsmp            - The volume containing the allocation blocks. 
 ;    startingBlock    - The first allocation block of the extent being freed. 
 ;    numBlocks        - The number of allocation blocks of the extent being freed. 


;________________________________________________________________________________
 */
static void hfs_unmap_free_extent(struct hfsmount *hfsmp, u_int32_t startingBlock, u_int32_t numBlocks)
{
    u_int64_t offset;
    u_int64_t length;
    u_int64_t device_sz;
    int err = 0;

    if (hfs_kdebug_allocation & HFSDBG_UNMAP_ENABLED)
        KERNEL_DEBUG_CONSTANT(HFSDBG_UNMAP_FREE | DBG_FUNC_START, startingBlock, numBlocks, 0, 0, 0);

    if (ALLOC_DEBUG) {
        if (hfs_isallocated(hfsmp, startingBlock, numBlocks)) {
            panic("hfs: %p: (%u,%u) unmapping allocated blocks", hfsmp, startingBlock, numBlocks);
        }
    }

    if (hfsmp->jnl != NULL) {
        device_sz = hfsmp->hfs_logical_bytes;
        offset = (u_int64_t) startingBlock * hfsmp->blockSize + (u_int64_t) hfsmp->hfsPlusIOPosOffset;
        length = (u_int64_t) numBlocks * hfsmp->blockSize;

        /* Validate that the trim is in a valid range of bytes */
        if ((offset >= device_sz) || ((offset + length) > device_sz)) {
            printf("hfs_unmap_free_ext: ignoring trim vol=%s @ off %lld len %lld \n", hfsmp->vcbVN, offset, length);
            err = EINVAL;
        }

        if (err == 0) {
            err = journal_trim_add_extent(hfsmp->jnl, offset, length);
            if (err) {
                printf("hfs_unmap_free_extent: error %d from journal_trim_add_extent for vol=%s", err, hfsmp->vcbVN);
            }
        }
    }

    if (hfs_kdebug_allocation & HFSDBG_UNMAP_ENABLED)
        KERNEL_DEBUG_CONSTANT(HFSDBG_UNMAP_FREE | DBG_FUNC_END, err, 0, 0, 0, 0);
}

অ্যাপল ওপেন সোর্সটিতে প্রথম উপস্থিতি: http://www.opensource.apple.com/source/xnu/xnu-2050.9.2/bsd/hfs/hfscommon/ মিস / ভলিউম অ্যালোকেশন.সি (ম্যাক ওএস এক্স 10.8.1)

সর্বাধিক সাম্প্রতিক উপস্থিতি: http://www.opensource.apple.com/source/xnu/xnu-2422.1.72/bsd/hfs/hfscommon/ মিস / ভলিউম অ্যালোকেশন.সি

পরবর্তীকালের থেকেও:

/* 
 * Validation Routine to verify that the TRIM list maintained by the journal 
 * is in good shape relative to what we think the bitmap should have.  We should 
 * never encounter allocated blocks in the TRIM list, so if we ever encounter them, 
 * we panic.   
 */ 

...

/* 
 ;________________________________________________________________________________ 
 ; 
 ; Routine:     hfs_track_unmap_blocks 
 ; 
 ; Function:    Make note of a range of allocation blocks that should be 
 ;              unmapped (trimmed).  That is, the given range of blocks no 
 ;              longer have useful content, and the device can unmap the 
 ;              previous contents.  For example, a solid state disk may reuse 
 ;              the underlying storage for other blocks. 
 ; 
 ;              This routine is only supported for journaled volumes.   
 ;  
 ;              *****NOTE*****:  
 ;              This function should *NOT* be used when the volume is fully  
 ;              mounted.  This function is intended to support a bitmap iteration 
 ;              at mount time to fully inform the SSD driver of the state of all blocks 
 ;              at mount time, and assumes that there is no allocation/deallocation 
 ;              interference during its iteration., 
 ; 
 ; Input Arguments: 
 ;    hfsmp           - The volume containing the allocation blocks. 
 ;    offset          - The first allocation block of the extent being freed. 
 ;    numBlocks       - The number of allocation blocks of the extent being freed. 
 ;    list            - The list of currently tracked trim ranges. 
 ;________________________________________________________________________________ 
 */ 

… ইত্যাদি।

উত্তর:


1

সুতরাং, এর গুণাবলী দ্বারা:

এই প্রশ্নটি তৃতীয় পক্ষের টিআআআআআআআআআআএমআরআর এবং পছন্দ সম্পর্কিত নয়

এটি "সঠিক উত্তর" বলে মনে হবে না। তবে যদি প্রশ্ন না হয় তবে এটি, উম, "সঠিক উত্তর" কী রকম? সুতরাং আমি এটিকে যাইহোক শট দেব ...

শিরোনাম প্রশ্নের সংক্ষিপ্ত উত্তর: সংক্ষেপে, না।

শুধুমাত্র এক বাস্তবায়ন ... হয় সমর্থিত নিয়ামক প্রতি

hfs_unmap_free_extফাংশন উল্লেখ করে না । hfs_unmap_free extent

এটি সেই কেক্সটকে বোঝায় যা "ইঙ্গিত" করে hfs_unmap_free

ভূল,

hfs_unmap_free_ext: ignoring trim এক বা দুটি কারণে দুটি কারণে ঘটতে পারে:

  • ড্রাইভটি এমন একটি যা সমর্থিত নিয়ামক ব্যবহার করে তবে অ্যাপল সিরিয়াল নম্বর এবং ফার্মওয়্যার দিয়ে "আশীর্বাদ" পায় নি। এই ক্ষেত্রে, এই সুরক্ষাটি কার্নেল এক্সটেনশান - ট্রিম সক্ষমকারী যা করে তা বাইরে বের করা ট্রামকে সক্ষম করবে যেহেতু হার্ডওয়্যারটিতে একটি ড্রাইভার রয়েছে যা এটি সমর্থন করে।

    (এছাড়াও, আমি নিজেই, কার্নেলটি প্যাচিংকে অপারেটিং সিস্টেমের অন্তর্নিহিত কোনও কিছুর সংজ্ঞা হিসাবে বিবেচনা করব))

  • এটি উপেক্ষা করা হয়েছে কারণ যদিও ডিভাইসটি বিজ্ঞাপন দেয় যে এটি ট্রিমকে সমর্থন করে, তবুও এই নিয়ামকের জন্য কার্নেলের মধ্যে কোনও ট্রিম ড্রাইভার নেই, কারণ অ্যাপল কখনই সেই নিয়ামকের উপর ভিত্তি করে কোনও ড্রাইভ প্রথম স্থানে পাঠায়নি। সুতরাং এটি কেবল জেনেরিক এটিএ কমান্ড ব্যবহার করে।

(এটি সম্ভবত আপনার ড্রাইভের ক্ষেত্রে, "এসএসডি হিসাবে স্বীকৃত নয়" বিটের কারণে)


যদিও:

তারা ন্যানোসেকেন্ড-সমালোচনামূলক সময় লুপগুলিতে প্রোগ্রাম করেছে যা অ্যাপলের এসএসডিগুলিতে ব্যবহৃত নিয়ন্ত্রকদের অ্যাক্সেসের সময়ের সাথে পুরোপুরি মেলে

এটি একটি সত্য বক্তব্য, এ কারণেই অ্যাপল ড্রাইভগুলি লক করে। তারা এটি করে যাতে আপনি কোনও তৃতীয় পক্ষের ড্রাইভের জন্য ইন-ওয়ারেন্টি সমর্থন পেতে পারেন না।

অ্যাপল ড্রাইভ করে না; তবে আপনি যদি পড়েন যে টিম কুক (সিওও থাকাকালীন) কয়েক বছর আগে কীভাবে এশিয়ান ন্যান্ড ফ্ল্যাশ মার্কেটটি কোণঠাসা করেছিলেন - কেন তিনি আজ প্রধান নির্বাহী ছিলেন - আপনি বুঝতে পারবেন কেন ফ্ল্যাশ নির্মাতারা অ্যাপলকে এই জাতীয় জিনিস নির্ধারণের অনুমতি দেয়।

তা ছাড়া, আমি নিশ্চিত নই যে আপনি "প্রামাণিক" যা ভয় পেয়েছেন তার চেয়ে অনেক বেশি আপনি খুঁজে পাবেন। যেমনটি আপনি বলেছেন, এই জিনিসগুলির বেশিরভাগটি বন্ধ উত্স, যদিও আপনি এই জায়গাগুলির মতো অন্তর্ভুক্ত সহ সর্বত্র বিচ্ছুরিত চিহ্নগুলি খুঁজে পেতে পারেন । এছাড়াও, নোট করুন যে ট্রিম একটি স্ট্যান্ডার্ডের চেয়ে ধারণা / বাস্তবায়নের জিনিস (কমপক্ষে SATA 3.1 এর পূর্বে যে কোনও কিছু দিয়ে)।

আমি আত্মবিশ্বাসের সাথে বলতে পারি যে ট্রিম সক্ষম / অ্যাপল-লোগো ব্র্যান্ডযুক্ত এসএসডি কেবল জিএসএক্স (বা ধূসর বাজার) এর মাধ্যমে কেনা যাবে। এবং এই ট্রিম সক্ষমকারী বেশ ভাল কাজ করে। আমি অনেক উত্পাদন পরিবেশে (আরও সাম্প্রতিক সংস্করণগুলি) ইনস্টল করেছি।

কয়েকটি লিঙ্ক:
http://www.anandtech.com/show/5453/trim-enabler-20-for-os-x-lion- রিলিজড http://en.wikedia.org/wiki/Trim_( কমপিউটিং)


+1 - hfs_unmap_free_extপার্থক্য এবং পরবর্তী বুলেট পয়েন্টগুলি বিশেষভাবে কার্যকর। ধন্যবাদ।
গ্রাহাম পেরিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.