- M2 MacBook Pro का startup volume Steam गेम डाउनलोड के दौरान इतना भर गया कि केवल 41KB बचा, और macOS ऐसी स्थिति में पहुंच गया जहां वह फाइलें delete भी नहीं कर पा रहा था
- Finder में Trash खाली करना, Terminal के
rmऔरfind -exec rm, यहां तक कि Disk Utility से Time Machine snapshot delete करना भी “No space left on device” जैसे errors के साथ विफल रहा - restart के बाद booting भी बीच में अटक गई, और recoveryOS तथा Apple silicon के Share Disk से दूसरे Mac पर mount करने पर भी deletion को force नहीं किया जा सका
- drive erase करने और macOS reinstall के बाद Time Machine restore की कोशिश की गई, लेकिन Ventura restore रुक गया, Sonoma 14.4 और पुराने 14.3.1 के version difference की दिक्कत आई, और SMB/Samba network mount भी विफल रहा
- आखिरकार नवीनतम Time Machine disk image को external 1TB SSD पर कॉपी करके home directory की files और apps को manually recover किया गया; storage exhaustion और backup restore failure एक साथ हो जाएं तो अनुभवी उपयोगकर्ताओं के लिए भी संभालना मुश्किल हो जाता है
स्टोरेज भर जाने से delete भी नहीं कर पाया Mac
- M2 MacBook Pro की storage Steam पर कानूनी रूप से खरीदे गए गेम डाउनलोड करते समय भर गई
- macOS ने drive खतरनाक रूप से भर जाने के बावजूद बड़े Steam download को नहीं रोका, और startup volume में केवल 41KB बचा
- ज्यादातर महत्वपूर्ण फाइलें cloud में थीं, और local की बड़ी फाइलों को हर हाल में बचाना जरूरी नहीं था
- समस्या सिर्फ capacity की कमी नहीं थी, बल्कि यह थी कि operating system किसी भी तरीके से files delete नहीं कर पा रहा था
संदिग्ध कारण: Steam download और local Time Machine snapshots
- gigabit internet connection और बड़े Steam files की वजह से संभव है कि macOS storage growth को नियंत्रित नहीं कर पाया हो
- साथ ही, यह भी शक था कि macOS local Time Machine snapshots बना रहा था
- macOS external या network Time Machine destination पर backup लेते समय भी पिछले 24 घंटे का local backup देने के लिए snapshots बनाए रखता है
- Steam files ऊपर से एक बहुत बड़ी single file जैसी दिख रही थीं, लेकिन Time Machine के नजरिए से संभव है उन्हें अलग तरह से handle किया गया हो
- local की actual files और विशेष रूप से बने snapshots में टकराव हुआ हो सकता है, लेकिन सटीक कारण की पुष्टि नहीं हुई
delete करने की सभी कोशिशें नाकाम
- Finder Trash खाली करना
File > Empty Trashसे विफल रहा- error message था: “The operation can’t be completed because the disk is full”
- Terminal चल रहा था, लेकिन standard Unix
rmcommand काम नहीं कर रही थी- error message था: “No space left on device”
- बड़ी files खोजकर
-execoption के साथrmचलाने वालाfind-आधारित विकल्प भी विफल रहा
- Disk Utility में भी APFS startup volume के Time Machine snapshots चुनकर delete करने की कोशिश की गई, लेकिन वही सीमा सामने आई
- सामान्यतः snapshots केवल पिछले snapshots से अंतर के लिए जरूरी storage space लेते हैं
- इस मामले में भी “no space left” error आया
restart, recoveryOS और Share Disk भी काम नहीं आए
- cache cleanup की उम्मीद में restart किया गया, लेकिन Mac अब सामान्य रूप से boot नहीं हुआ
- progress bar लगभग आधे तक जाने के बाद बार-बार fail हो रही थी
- recoveryOS में startup volume unmounted होने की स्थिति में Disk Utility repair और reinstall से जुड़े काम किए गए, लेकिन Terminal commands ने वही error दिया
- Apple silicon की Share Disk सुविधा से उस drive को दूसरे Mac पर mount करने की कोशिश की गई
- Samba-आधारित disk sharing के जरिए deletion force करने की कोशिश भी विफल रही
Time Machine restore के दौरान आई लगातार दिक्कतें
- पिछले शाम का backup समेत Time Machine backups मौजूद थे, और ज्यादातर महत्वपूर्ण data cloud में होने से complete recovery पर बहुत जोर नहीं था
- पहले drive erase की गई और macOS Recovery से MacBook Pro के factory-default system Ventura को फिर से install किया गया
- macOS शुरू होने पर Migration Assistant से network Time Machine backup तक पहुंचा गया, और पर्याप्त storage space बचाने के लिए कुछ restore items को uncheck किया गया
- restore के दौरान Ventura बीच में रुक गया और बाद में resume नहीं हुआ
- इसके बाद Mac को उस समय उपयोग में रहे macOS Sonoma में upgrade किया गया
- upgrade सफल रहा, लेकिन install हुआ version 14.4 था
- पुराने Mac में 14.3.1 install था
- startup stage में सीधे restore करने की कोशिश version difference की वजह से allow नहीं हुई
Sonoma 14.4 में network Time Machine mount की समस्या
- default Sonoma user account बनाकर Migration Assistant चलाया गया
- Migration Assistant ने Time Machine backup संभालने वाले network Mac को ढूंढ लिया और पहचान भी लिया
- लेकिन वह बच्चे के backup volume को mount नहीं कर सका, और बार-बार “Mount failed” दिखा
- forum खोजने पर पता चला कि Sonoma में SMB/Samba-आधारित network mount प्रक्रिया Time Machine restore के लिए टूटी हुई है, और कोई समाधान नहीं मिला
- यह समस्या macOS 14.4 में भी बनी हुई लगती थी
अंतिम recovery: backup को external SSD पर कॉपी कर manual transfer
- पूरा Migration Assistant restore छोड़कर केवल जरूरी apps और files को manually recover किया गया
- network backup संभालने वाले Mac पर उस computer की disk image पर double-click किया गया और Time Machine volume password डाला गया
- network Time Machine volume पर हमेशा अलग password सेट किया गया था
- सबसे नया timestamp वाला disk icon ढूंढकर उसे खाली external 1TB SSD पर कॉपी किया गया
- external SSD को MacBook Pro के temporary account से connect करके जरूरी files transfer की गईं
- इसमें home directory folders की ज्यादातर contents शामिल थीं
- बड़े download files और कुछ अनावश्यक video files को छोड़ा गया
- external SSD को कुछ समय तक संभालकर रखने का फैसला किया गया, ताकि कोई file छूट जाए तो बाद में recover की जा सके
वे विकल्प जिन्हें आजमाया नहीं जा सका
- network backup के लिए इस्तेमाल हो रही Time Machine drive को backup-managing Mac से unmount करने के बाद बच्चे के Mac से सीधे connect किया जा सकता था
- इस स्थिति में संभव है कि वह Migration Assistant के source point के रूप में दिखती
- mounted Time Machine disk image से virtual disk कॉपी करके external 1TB SSD को Mac source volume जैसा दिखाया जा सकता था
- यह तरीका वास्तव में काम करता या नहीं, इसकी पुष्टि नहीं हुई
- अगर सफल होता, तो संभव था कि Migration Assistant से सीधे restore हो जाता
- पहले ही कई घंटों का काम और एक दिन से ज्यादा की कोशिश लग चुकी थी, और उपयोगकर्ता directory-level perfect recovery को लेकर बहुत आग्रहशील नहीं था, इसलिए आगे प्रयोग नहीं किए गए
1 टिप्पणियां
Hacker News टिप्पणियाँ
अगर लेखक ने external storage device से Mac को boot किया होता और फिर internal disk से गैर-ज़रूरी फाइलें हटाई होतीं, तो शायद बेहतर रहता: Use an external storage device as a Mac startup disk
यह बात चौंकाने वाली थी कि Apple Silicon आधारित Mac में external boot के समय सभी ports एक जैसे नहीं होते
storage device पर macOS install करते समय Mac laptop में बाईं तरफ के ports में सबसे बाएँ USB-C port से बचना चाहिए, और iMac/Mac mini/Mac Studio/Mac Pro में भी मॉडल के हिसाब से ऐसे USB-C ports होते हैं जिनसे बचना चाहिए
कहा गया है कि install पूरा होने के बाद उसे किसी भी port में जोड़ा जा सकता है
लेखक ने अलग partition recoveryOS में boot करके main system partition से फाइलें हटाने की कोशिश की, लेकिन
rmवहीNo space left on deviceerror देकर fail हो गयाइसलिए जैसा दूसरे लोगों ने कहा,
echo -n >fileसे file truncate करने का तरीका शायद काम कर सकता थाHFS+ disk structure की थोड़ी-बहुत जानकारी के आधार पर अंदाज़ा लगाएँ, तो लगता है journal file भी भर गई थी, और deletion के लिए journal में write करना पड़ता है तथा कभी-कभी उसे बढ़ाना भी पड़ता है, इसलिए delete करना खुद अस्थायी रूप से और space माँगने वाली अजीब स्थिति बन गई होगी
macOS ने drive में सिर्फ 41KB बचने तक लगातार फाइलें लिखीं
मैंने गलती से NTFS और FAT32 को 0 bytes तक भर दिया है, लेकिन तब भी कुछ delete करना संभव था
forums देखने पर लगता है कि Sonoma ने Time Machine restore के लिए SMB/Samba आधारित network mount प्रक्रिया खराब कर दी, और 14.4 में भी इसका कोई समाधान अब तक नहीं दिखता
अनुभव से कहूँ तो SMB, लगभग 10.12~10.13 के समय से अविश्वसनीय हो गया है और bugs बहुत बढ़ गए हैं; अब तो लगता है Apple को इसकी working की परवाह भी नहीं है
जिन लोगों के पास Mac का दशकों का अनुभव नहीं है, उनके लिए ऐसी chain reaction जैसी system failures की स्थिति में क्या करना होगा, यह सोचना भी नहीं चाहता
मेरे पास भी Mac का दशकों का अनुभव नहीं है, लेकिन ऐसी स्थिति में मैं पहले
fsckआज़माता; यहाँ उसका ज़िक्र न होना अजीब हैअगर disk की contents को दूसरी disk पर copy करके format करने और वापस restore करने का विकल्प न हो, तो मैं APFS documentation(https://developer.apple.com/support/downloads/Apple-File-System-Reference.pdf) देखकर
ddऔर hex editor से यह ढूँढने की कोशिश करता कि free space बनाने के लिए कहाँ क्या ठीक करना होगाउसके बाद garbage collection, उन files को ढूँढकर storage में वापस करती है जो अब active tree का हिस्सा नहीं हैं
आम तौर पर tree changes की मात्रा को manageable रखने के लिए changes को batch में process किया जाता है, और इसी design की वजह से file system snapshots किसी खास tree के लिए एक अतिरिक्त reference बन जाते हैं
इस प्रक्रिया में space चाहिए, लेकिन CoW file systems आम तौर पर ऐसे कारणों के लिए emergency storage अलग से reserve रखते हैं
कुछ साल पहले 10GbE से बड़े NAS से जुड़े Hackintosh पर BlackMagic Disk Speed Test से मापा गया था कि Windows का SMB 900MB/s, macOS का SMB 200MB/s, और macOS का NFS व AFP दोनों 1000MB/s दे रहे थे
professional work से जुड़े macOS features दुर्भाग्य से हास्यास्पद स्तर के हैं
लोग कहते हैं AFP मर चुका है, लेकिन मेरे Mac Pro पर यह client के रूप में अभी भी ठीक चलता है, और SMB की तुलना में इसकी performance इतनी बेहतर है कि यह लगभग मज़ाक जैसा लगता है
अगर आख़िर तक पूरी तरह भर दिया जाए, तो समस्या आ सकती है
BTRFS, metadata space बाकी रहते read-only mode में जाने की कोशिश करता है ताकि आप safe mode में फिर mount करके कुछ delete कर सकें, लेकिन यह कोई परफ़ेक्ट सुरक्षा नहीं है
जहाँ तक मुझे पता है, NTFS और FAT32 journaling file systems नहीं हैं
अपनी पहली नौकरी में मेरे साथ ऐसा हुआ था
गलती से मैंने cluster को junk files से भर दिया था, और system administrator ने इसे जल्दी ठीक करने के लिए ईमेल भेजने शुरू कर दिए, लेकिन
rmकाम नहीं कर रहा थातभी मैंने सीखा कि जब delete काम न करे तब भी file truncate अक्सर काम कर जाता है, इसलिए जब
rm fooकाम न करे तो कई बारcat /dev/null > fooइस्तेमाल किया जा सकता है:>filepathअक्सर काम करता हैहालांकि कुछ filesystems में यह भी काम नहीं कर पाता
ऐसे में बस यही उम्मीद की जा सकती है कि filesystem size बढ़ाने, size घटाने, अस्थायी अतिरिक्त storage, या किसी lower-level subsystem में backing storage जोड़ने/हटाने को support करता हो
btrfs जैसे मामलों में single block device layout पर वापस जाने के लिए अलग command की ज़रूरत पड़ सकती है
इसलिए backup process को समय-समय पर garbage data सीधे /dev/null में भेजने के लिए सेट किया गया था, और शायद वह गंदा hack आज भी चल रहा होगा
/dev/nullजादू जैसा है, उसके बारे में पढ़ना वाकई फायदेमंद है>fileभी काफी है21वीं सदी के filesystem formats UFS से कहीं ज़्यादा जटिल हैं, और snapshots तथा journaling जैसी सुविधाओं की वजह से filesystem के अपने ही deadlock में फँसने के नए तरीके पैदा हुए हैं
आखिरकार
truncateसे ही recovery करनी पड़ीमुझे पता था कि ZFS ऐसी स्थिति में बेहतर है, लेकिन जब सच में सब बिगड़ गया हो तो जो “आह... धत्” वाली डूबती हुई भावना आती है, वह फिर भी वैसी ही रहती है
Time Machine लगता है लगातार खराब होता जा रहा है
समझ नहीं आता कि इसे stable और सही तरीके से काम करने लायक बनाने की motivation क्यों नहीं है
sparse bundle के corrupt हो जाने और नया backup शुरू करने की मजबूरी, या feature failure जैसी चीज़ें देखने के बाद, अब मुझे लगता है कि Time Machine सेट up करने की खास value नहीं बची
यह iOS/iPadOS backups के बिल्कुल उलट है, जो हर बार ठीक से चले
Apple चाहता है कि लोग सब कुछ iCloud में backup करें ताकि services revenue बढ़े
मैं कई Mac पर Samba share के ऊपर Time Machine को कई सालों से चला रहा हूँ, और मुझे तो सिर्फ सुधार ही दिखे हैं
पहले Time Machine sparse bundle अक्सर corrupt हो जाता था, और उसे दोबारा बनाना पड़ता था या किसी पुराने ZFS snapshot को restore करके आगे बढ़ना पड़ता था
तब शायद यह SMB नहीं बल्कि AFP था
हाल के समय में किसी भी device पर यह समस्या नहीं हुई, हालांकि मैंने Time Machine backups के लिए recommended कुछ खास flags
smb.confमें enable कर रखे हैंदूसरी ओर ZFS में slop space होता है, ताकि बड़े operations के दौरान space खत्म होने से filesystem रुक न जाए
default रूप से यह volume space का 3.2% reserve करता है, अधिकतम 128GB तक
इसलिए अगर आप Linux kernel tuning parameter
spa_slop_shiftबदलकर slop space घटाते हैं, तो files delete operation को सफलतापूर्वक पूरा करने के लिए bonus space के रूप में अधिकतम 128GB तक वापस पा सकते हैं: https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Module%20Parameters.html#spa-slop-shiftइसी वजह से disk space का एक तय हिस्सा reserve करने की सुविधा ZFS या Linux के आने से दशकों पहले से “असली” filesystems की आम विशेषता रही है
1980s के ज़्यादातर MS-DOS shareware terminal programs सीमित bandwidth connection पर file download बहुत अच्छी तरह कर लेते थे, जैसे आज का MS Windows उस तरह के मामूली लगने वाले काम में भी बहुत खराब है
विवरण के लिए
man tune2fsदेखेंज़्यादातर दूसरे filesystems, चाहे modern हों या कम modern, में भी यही बात लागू होती है
याद पड़ता है कि 1980s के SunOS के UFS में भी यह था: https://en.wikipedia.org/wiki/SunOS
लोगों के लिए यह समझना मुश्किल होता है कि किसी चीज़ को delete करने के लिए वास्तव में अस्थायी या स्थायी रूप से और ज़्यादा space की ज़रूरत पड़ सकती है
दूसरे comments में विस्तार से बताया गया है कि snapshots, journaling जैसी modern filesystem सुविधाएँ delete के लिए free space से allocation क्यों माँगती हैं
इसी तरह दूसरे क्षेत्रों में भी, Wikipedia के पहले दशक के दौरान अक्सर समझाना पड़ता था कि pages delete करके server space बचाने की कोशिश का असर वास्तव में उलटा पड़ सकता है
कम से कम 2004 के आसपास के बाद से delete करने पर internal database में एक record जोड़ा जाता था
Rahul Dhesi के ZOO archive format में entries delete करना सिर्फ header record में एक flag सेट करना था, और VMS-style file versioning भी था जहाँ नया version जोड़ने पर पुराने version को overwrite नहीं किया जाता था
MS/DR/PC-DOS और FAT के दौर में, अगर delete recovery utility install हो, तो file delete करते समय recovery information वाले database में नया entry save करने के लिए और space लग सकता था
कुछ पुराने disk compression utilities metadata को भी compress करते थे, इसलिए metadata change से compression ratio बदलकर externally visible volume size वास्तव में बढ़ जाने जैसी दुर्लभ स्थिति भी बन सकती थी
delete करके space खाली होता है यह विचार बहुत आम है, लेकिन सख्ती से देखें तो यह हमेशा सही नहीं है
अक्टूबर 2018 में मुझे भी यही समस्या हुई थी, और मैंने इसे नीचे दिए गए Stack Overflow सवाल में दर्ज किया था
किस्मत से एक अतिरिक्त APFS partition था जिसे हटाकर मैं disk space खाली कर सका
यह पता लगाने में काफी समय लगा, और तब तक मैं सचमुच panic की हालत में था
https://apple.stackexchange.com/questions/338721/disk-full-terminal-in-recovery-mode-won-t-delete-files-boot-kernel-panics
macOS Mojave को अभी-अभी update करने के बाद
.dmgबनाते समय मैंने disk पूरी भर दी और system फ्रीज़ हो गयाreboot करने पर kernel panic हुआ, recovery mode में boot करके disk mount की, फिर terminal में
rm /path/to/large/fileचलाया, लेकिनNo space left on deviceआयायह मूलतः 2008 के Unix thread वाली ही समस्या थी: https://www.unix.com/linux/69889-unable-remove-file-using-rm-disk-space-full.html
echo x > /path/to/large/fileसे भी कुछ नहीं हुआ, और मुझे “drive मिटाकर backup से restore करो” के अलावा कोई और सुझाव चाहिए थायह कुछ वैसा ही है जैसे पुराने Unix filesystems root के लिए 5% space reserve रखते थे
virtual memory partition हटाने से, अगर वह पर्याप्त बड़ा हो, तो file delete करने लायक space वापस मिल सकती है
क्योंकि container वास्तव में उपयोग होने पर ही allocate होते हैं
यह प्रभावशाली है
मैंने ऐसी स्थिति नहीं देखी जहाँ
rmभी fail हो जाए, लेकिन 256GB या उससे कम internal storage वाले आधुनिक Mac का इस्तेमाल और प्रबंधन करने की झुंझलाहट जरूर झेली हैइसलिए मैं लगभग 16GB की एक placeholder file बनाकर रखता हूँ
जब भी space भर जाने से update या कोई और काम रुक जाए, तो
ncduसे सर्जिकल सफाई करने के बजाय बस वही file delete कर देता हूँजैसे किसी कर्मचारी या उपकरण के एक घंटे की लागत में पहले से चार गुना बड़ी नई drive खरीद लेना
iPhone पर भी मेरे साथ कुछ ऐसा ही हुआ था
disk इतनी भर गई थी कि कुछ delete करने पर भी व्यवहार में लगता था जैसे कुछ हुआ ही नहीं
reboot करने पर मैं login नहीं कर सका, फिर दोबारा reboot किया तो boot loop में फँस गया
एक और reboot के बाद यह ऐसी असंगत स्थिति में boot हुआ जहाँ home screen पर app icons तो थे, लेकिन असली apps गायब थे, icons खाली थे और वे खुल भी नहीं रहे थे
data integrity की चिंता में मैंने आखिरकार backup से restore किया
मुझे पूरा यकीन है कि यह APFS के copy-on-write behavior और snapshot support की वजह से हुआ
अगर बदलाव तुरंत स्थायी रूप से लागू नहीं होते और file के पुराने versions snapshots में बने रहते हैं, तो snapshot metadata के लिए भी जगह न बचे तो समस्या खड़ी हो जाती है
हो सकता है disk space कम होने पर snapshots छोड़ दिए जाएँ, लेकिन तब भी CoW metadata की समस्या बनी रहती है
हैरानी की बात है कि 2024 में भी, जबकि APFS में इतने स्मार्ट volume management features हैं, केवल user storage भर देने से iPhone जैसे “sealed” device को ऐसी हालत में पहुँचा देना संभव है जहाँ DFU recovery की जरूरत पड़ जाए
इसके उलट, जब मैंने गलती से single data/boot volume वाले अपने Windows 11 work laptop की space पूरी भर दी थी, तब भी वह boot हो गया और मैं समस्या साफ कर सका
कुछ समय पहले Linux installation के system partition पर भी मेरे साथ ऐसी ही स्थिति हुई थी
शुरू से ही partition बहुत छोटा था, और updates जमा होते-होते इतनी तंगी हो गई कि कुछ delete करना शुरू करने भर की भी जगह लगभग नहीं बची
कोई ऐसा subdirectory ढूँढने में लगभग 30 मिनट लग गए जिसमें थोड़ा-सा भी कुछ delete किया जा सके
यह वैसा लगा जैसे ऐसे कमरे में फँस गए हों जो इतने सामान से भरा हो कि अंदर की ओर खुलने वाला दरवाज़ा ही न खुल सके
उस छोटे-से शुरुआती बिंदु से मैं धीरे-धीरे और बड़ी जगह खाली कर सका, और आखिरकार सफाई के बाद partition का आकार बढ़ा दिया ताकि फिर ऐसा न हो
अनुभवी users के लिए सबक शायद यह होना चाहिए कि partition के बाद हमेशा थोड़ी खाली जगह छोड़ी जाए