क्या दोनों के बीच अंतर है dd
आज्ञाओं है कि अलग अलग bs
और count
मूल्यों, जब तक कि वे गुणा करने के लिए एक ही? उदाहरण के लिए:
dd if=/dev/random of=aa bs=1G count=2
dd if=/dev/random of=aa bs=2G count=1
क्या दोनों के बीच अंतर है dd
आज्ञाओं है कि अलग अलग bs
और count
मूल्यों, जब तक कि वे गुणा करने के लिए एक ही? उदाहरण के लिए:
dd if=/dev/random of=aa bs=1G count=2
dd if=/dev/random of=aa bs=2G count=1
जवाबों:
जहां तक अंतिम परिणाम का सवाल है, वे ऐसा ही करेंगे। अंतर यह है कि dd
डेटा को कैसे संसाधित किया जाएगा। और वास्तव में, आपके दोनों उदाहरण उस संबंध में काफी चरम हैं: bs
पैरामीटर बताता है dd
कि इसे आउटपुट करने से पहले मेमोरी में कितना डेटा बफर होना चाहिए।
तो, अनिवार्य रूप से, पहली कमांड 1GB के दो टुकड़ों में 2GB पढ़ने की कोशिश करेगी , और बाद में एक बार में पूरे 2GB को पढ़ने की कोशिश करेगी और फिर इसे aa
फ़ाइल में आउटपुट करेगी ।
परिणाम वही होगा लेकिन पहले मामले में dd
दो 1GB ब्लॉक लिखेंगे जबकि दूसरे 2GB ब्लॉक में। अंतर यह है कि dd
कॉपी किए गए ब्लॉक को मेमोरी में रखता है। आपको पहले मामले में 1GB RAM और दूसरे में 2GB की आवश्यकता होगी।
मेरी राय में इतने बड़े ब्लॉक का इस्तेमाल करने की कोई जरूरत नहीं है। आप कुछ परीक्षण कर सकते हैं लेकिन मेरे मामले में मैं बहुत छोटे ब्लॉकों (<1MB) के साथ अधिक गति प्राप्त करता हूं
उपयोग किए गए ब्लॉक-आकार को स्रोत और लक्ष्य डिवाइस के लिए सर्वोत्तम गति सेटिंग्स से मेल खाना चाहिए।
यदि आप LV डिवाइस को कॉपी करने का प्रयास करते हैं तो आप अंतर देख सकते हैं। बहुत छोटे बीएस-आकार का उपयोग अनावश्यक रूप से पठन-प्रक्रिया को बाधित करेगा। एक बहुत बड़े बीएस-आकार के उपयोग से लेखन के दौरान लंबे समय तक प्रतीक्षा होगी।
चूँकि मानक LVs में सामान्य रूप से 4 MB विखंडू होते हैं, इसलिए इनके लिए भौतिक डिस्क अभिगम I bs = 4M का भी अच्छा आकार है।
16K या 256M के साथ प्रयोग करने की कोशिश करें - आप अंतर को नोट करेंगे - और कॉपी के दौरान डिस्क संकेतक देखें ...