परिचय
आधुनिक Linux सिस्टम में सॉलिड-स्टेट ड्राइव (SSD) या NVMe स्टोरेज को नए जैसा बनाने और उनके सभी ब्लॉक्स को एक झटके में खाली करने के लिए blkdiscard एक बेहद प्रभावी यूटिलिटी है। यह टूल TRIM निर्देश भेजकर स्टोरेज कंट्रोलर को सीधे ब्लॉक्स खाली करने का निर्देश देता है। किसी भी वास्तविक हार्डवेयर पर अनपेक्षित डेटा हानि से बचने के लिए, इस गाइड में हम एक सुरक्षित वर्चुअल लूपबैक डिस्क तैयार करके इस कमांड की कार्यप्रणाली, ऑप्शन्स और बिहेवियर को प्रैक्टिकल तरीके से समझेंगे।
1. स्टोरेज ड्राइव पर TRIM कम्पैटिबिलिटी और ब्लॉक लेआउट की जांच
किसी भी स्टोरेज डिस्क को रीसेट करने से पहले यह सुनिश्चित करना आवश्यक है कि वह ड्राइव TRIM या discard ऑपरेशन को सपोर्ट करती है या नहीं। इसके सत्यापन और मौजूदा पार्टीशन संरचना देखने के लिए टर्मिनल में lsblk --discard -o NAME,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,MOUNTPOINTS कमांड चलाएं।
यदि टर्मिनल आउटपुट में DISC-GRAN और DISC-MAX कॉलम शून्य (0) के बजाय मान्य आकार (जैसे 512B या 2T) प्रदर्शित करते हैं, तो इसका सीधा अर्थ है कि लक्षित हार्डवेयर (nvme0n1) पर TRIM तकनीक पूरी तरह सक्रिय और समर्थित है।

2. सुरक्षित अभ्यास हेतु वर्चुअल लूपबैक डिस्क का सेटअप
सीधे फिजिकल ड्राइव को जोखिम में डालने के बजाय, 64MB आकार की एक टेस्ट डिस्क इमेज फाइल तैयार करने और उसमें रैंडम डेटा भरने के लिए dd if=/dev/urandom of=/tmp/test_disk.img bs=1M count=64 status=none कमांड निष्पादित करें।

तैयार की गई रॉ इमेज फाइल को एक सक्रिय ब्लॉक डिवाइस के रूप में माउंट करने हेतु रिक्त लूपबैक स्लॉट से जोड़ने के लिए sudo losetup -fP /tmp/test_disk.img कमांड रन करें।

आगे की सभी प्रक्रियाओं में डिवाइस पाथ को आसानी से इस्तेमाल करने के लिए संबद्ध लूपबैक डिवाइस का पता एक वेरिएबल में सेव करें: LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

वेरिएबल $LOOP_DEV में मैप किए गए वर्चुअल डिवाइस नोड की पुष्टि करने के लिए echo "생성된 디바이스: $LOOP_DEV" चलाएं।
कंसोल पर /dev/loop0 जैसा आउटपुट यह दर्शाएगा कि वर्चुअल ब्लॉक डिवाइस सफलतापूर्वक सक्रिय हो चुका है।

डेटा वाइप प्रक्रिया शुरू करने से पहले यह जांच लें कि वर्चुअल डिस्क में वाकई डेटा मौजूद है या नहीं। इसके शुरुआती 128 बाइट्स को हेक्साडेसिमल प्रारूप में देखने के लिए sudo hexdump -C -n 128 $LOOP_DEV रन करें।
आउटपुट में गैर-शून्य रैंडम वैल्यूज यह स्पष्ट करती हैं कि स्टोरेज ब्लॉक वर्तमान में भरे हुए हैं।

3. blkdiscard का बुनियादी उपयोग और पूरे स्टोरेज ब्लॉक को साफ करना
अभ्यास जारी रखने के लिए वर्चुअल ब्लॉक डिवाइस के पाथ को दोबारा वेरिएबल में असाइन करें: LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

कनेक्टेड ब्लॉक डिवाइस के सभी सेक्टर्स को एक साथ डिस्कार्ड करने और ऑपरेशन की विस्तृत प्रगति देखने के लिए sudo blkdiscard -v $LOOP_DEV कमांड रन करें।
कमांड निष्पादन के बाद यह दिखाई देगा कि ऑफसेट 0 से लेकर पूरी डिस्क क्षमता यानी 67,108,864 बाइट्स (64MB) को सफलतापूर्वक वाइप कर दिया गया है।

डिस्क के ब्लॉक्स वास्तव में रीसेट हुए हैं या नहीं, यह परखने के लिए शुरुआती 128 बाइट्स का दोबारा निरीक्षण करें: sudo hexdump -C -n 128 $LOOP_DEV
यदि आउटपुट में कोई कंटेंट नहीं दिखता या सिर्फ शून्य प्राप्त होता है, तो इसका अर्थ है कि पुराना रैंडम डेटा पूरी तरह से साफ हो चुका है।

4. ऑफसेट और लंबाई निर्धारित कर आंशिक वाइप (-o, -l) का अभ्यास
आंशिक डिस्क क्लीनिंग के परीक्षण के लिए लूपबैक डिवाइस वेरिएबल को फिर से सेट करें: LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

विशिष्ट रेंज को डिस्कार्ड करने की प्रक्रिया सत्यापित करने के लिए वर्चुअल डिस्क के शुरुआती हिस्से में कुछ नया डेटा लिखें: echo "TESTDATA_RELOAD" | sudo dd of=$LOOP_DEV bs=1M count=10 status=none

पूरी डिस्क मिटाने के बजाय केवल शुरुआत (ऑफसेट 0) से लेकर 10MB तक के दायरे को ही डिस्कार्ड करने के लिए sudo blkdiscard -v -o 0 -l 10M $LOOP_DEV कमांड चलाएं।
आउटपुट पुष्टि करेगा कि ऑफसेट 0 से ठीक 10,485,760 बाइट्स (10MB) का क्षेत्र सफलता से डिस्कार्ड हो गया है।

लक्षित 10MB हिस्से का डेटा साफ हुआ है या नहीं, इसे जांचने के लिए शुरुआती 64 बाइट्स का हेक्सडंप देखें: sudo hexdump -C -n 64 $LOOP_DEV
यहाँ कोई भी डेटा न दिखाई देना यह साबित करता है कि निर्दिष्ट रेंज पूरी तरह रीसेट हो चुकी है।

5. परीक्षण वातावरण को हटाना और महत्वपूर्ण सावधानियां
टेस्टिंग समाप्त होने के बाद जुड़े हुए लूपबैक डिवाइस की जानकारी वेरिएबल में लें: LOOP_DEV=$(losetup -j /tmp/test_disk.img | cut -d: -f1)

सिस्टम से टेस्ट लूपबैक डिवाइस को सुरक्षित रूप से डिटैच करने के लिए sudo losetup -d $LOOP_DEV कमांड निष्पादित करें।

अब टेस्टिंग के लिए बनाई गई अस्थायी डिस्क इमेज फाइल को हटाकर स्टोरेज स्पेस खाली करें: rm -f /tmp/test_disk.img

सिस्टम पर कोई अप्रयुक्त लूपबैक डिवाइस शेष तो नहीं है, यह जांचने के लिए losetup -a कमांड चलाएं।
कोई आउटपुट न मिलना यह दर्शाता है कि टेस्ट एनवायरनमेंट पूरी तरह साफ हो चुका है।

इस गाइड में हमने देखा कि किस प्रकार Ubuntu पर blkdiscard का उपयोग करके SSD या NVMe डिस्क को तेजी से और पूरी तरह से इनिशियलाइज किया जा सकता है।
ध्यान रखें कि इस कमांड से हटाया गया डेटा वापस रिकवर नहीं किया जा सकता, इसलिए प्रोडक्शन एनवायरनमेंट में लक्षित डिवाइस का पाथ हमेशा दो बार जांच लें।