یکی از مشکلاتی که ممکن است هنگام آپدیت IOS در سوئیچ سیسکو با آن مواجه شوید این است که فایل IOS جدید را روی سوئیچ کپی میکنید و حتی قبل از ریستارت همه چیز درست به نظر میرسد، اما بعد از راهاندازی مجدد متوجه میشوید سوئیچ دوباره با IOS قبلی بالا آمده است. در چنین شرایطی معمولاً خود فایل IOS جدید مشکل ندارد؛ مسئله بیشتر به تنظیمات Boot، محل ذخیره فایل، Boot Variable یا روش نصب IOS مربوط میشود.
اگر سوئیچ سیسکو بعد از ریستارت با IOS قبلی بالا میآید، قبل از اینکه دوباره فایل IOS را دانلود یا کپی کنید، بهتر است مشخص کنید دستگاه دقیقاً از چه مسیری بوت میشود. در ادامه دلایل اصلی این اتفاق و روش عیبیابی آن را مرحلهبهمرحله بررسی میکنیم.
هنگام روشن شدن یا ریستارت سوئیچ، دستگاه باید مشخص کند سیستمعامل از کدام فایل یا Package اجرا شود. این انتخاب بر اساس Boot Configuration دستگاه انجام میشود.
بنابراین صرفاً قرار دادن یک IOS جدید در Flash به این معنی نیست که سوئیچ در راهاندازی بعدی حتماً از همان نسخه استفاده خواهد کرد.
برای مثال ممکن است دو فایل زیر در Flash وجود داشته باشند:
flash:cat9k_iosxe.17.09.05.SPA.bin
flash:cat9k_iosxe.17.12.04.SPA.bin
وجود نسخه 17.12.04 بهتنهایی باعث نمیشود دستگاه آن را انتخاب کند. اگر تنظیمات Boot همچنان به نسخه قبلی یا فایل دیگری اشاره داشته باشند، سوئیچ همان مسیر قبلی را دنبال خواهد کرد.

یکی از اولین مواردی که باید بررسی کنید Boot Variable است.
با دستور زیر میتوانید اطلاعات Boot را مشاهده کنید:
show boot
بسته به مدل و نسخه IOS/IOS XE، خروجی متفاوت است، اما ممکن است چیزی شبیه این مشاهده کنید:
BOOT variable = flash:cat9k_iosxe.17.09.05.SPA.bin;
اگر IOS جدید شما نسخه 17.12.04 باشد اما Boot Variable همچنان نسخه 17.09.05 را نشان دهد، دلیل بوت شدن IOS قبلی تقریباً مشخص است.
در دستگاههایی که در Bundle Mode کار میکنند، معمولاً باید Boot Path را به فایل BIN موردنظر تغییر دهید.
برای نمونه:
configure terminal
no boot system
boot system flash:cat9k_iosxe.17.12.04.SPA.bin
end
write memory
سپس دوباره وضعیت Boot را بررسی کنید:
show boot
قبل از Reload مطمئن شوید مسیر نمایش دادهشده همان مسیری است که انتظار دارید.
یکی دیگر از دلایل رایج این است که مدیر شبکه Boot Configuration را تغییر داده اما Running Configuration را در Startup Configuration ذخیره نکرده است.
در این حالت ممکن است قبل از ریستارت همه چیز درست به نظر برسد، اما پس از راهاندازی مجدد تنظیمات ذخیرهشده قبلی دوباره اعمال شوند.
بعد از تغییر تنظیمات، میتوانید از یکی از دستورات زیر استفاده کنید:
write memory
یا:
copy running-config startup-config
سپس تنظیمات مربوط به Boot را دوباره بررسی کنید.
این موضوع فقط برای Boot System مهم نیست؛ بهطور کلی هر تغییری که فقط در Running Configuration باقی مانده باشد، ممکن است بعد از Reload از بین برود.
این مورد مخصوصاً در خانوادههای جدیدتر Catalyst اهمیت زیادی دارد.
در برخی سوئیچهای Cisco Catalyst مانند مدلهای Catalyst 9000، IOS XE میتواند با روشهای مختلفی اجرا شود. دو اصطلاح مهم در این زمینه عبارتاند از:
اگر دستگاه در Install Mode باشد، معمولاً بوت از فایل packages.conf انجام میشود، نه مستقیماً از فایل BIN.
برای بررسی حالت فعلی میتوانید از دستور زیر استفاده کنید:
show version
در خروجی به اطلاعات مربوط به Mode و فایلهای مورد استفاده توجه کنید.
اگر فقط فایل IOS جدید را در Flash کپی کرده باشید اما مراحل Install/Activate/Commit انجام نشده باشند، وجود فایل BIN جدید لزوماً به معنی ارتقای سیستمعامل فعال نیست.
این یکی از دلایلی است که ممکن است مدیر شبکه تصور کند IOS را آپدیت کرده، در حالی که دستگاه پس از ریستارت همچنان از Packageهای نسخه قبلی استفاده میکند.
در Install Mode معمولاً Boot Variable چیزی شبیه این است:
BOOT variable = flash:packages.conf;
در نگاه اول ممکن است این تنظیم کاملاً درست باشد. اما سؤال مهم این است:
packages.conf به کدام Packageها اشاره میکند؟
در Install Mode، فایل BIN جدید باید به شکل صحیح نصب شود تا Packageهای لازم استخراج و تنظیمات مربوط به بوت بهروزرسانی شوند.
بنابراین اگر فایل BIN جدید فقط داخل Flash قرار گرفته باشد، اما Install بهطور کامل انجام نشده باشد، packages.conf ممکن است همچنان Packageهای نسخه قبلی را بارگذاری کند.
این موضوع در عیبیابی Catalyst 9200، Catalyst 9300، Catalyst 9400 و دیگر مدلهای مبتنی بر IOS XE بسیار مهم است.

در برخی فرایندهای ارتقای IOS XE، فقط فعال کردن نسخه جدید کافی نیست و باید عملیات Commit نیز کامل شود.
در پلتفرمها و نسخههای مناسب IOS XE، فرایند Upgrade ممکن است با دستورهایی از خانواده install add file ... activate commit انجام شود.
برای مثال، ساختار دستور میتواند به شکل زیر باشد:
install add file flash:<ios-image.bin> activate commit
نام دقیق فایل باید با Image موجود روی دستگاه جایگزین شود و روش صحیح Upgrade باید بر اساس مدل سوئیچ و نسخه IOS XE بررسی شود.
اگر فرایند نصب ناقص بماند، دستگاه ممکن است در بوت بعدی نسخه مورد انتظار شما را اجرا نکند.
بنابراین بعد از Upgrade فقط به انتقال موفق فایل توجه نکنید؛ وضعیت نهایی نصب نیز اهمیت دارد.
وجود چند Image در Flash به خودی خود مشکلی ایجاد نمیکند. حتی نگه داشتن نسخه قبلی تا زمانی که از عملکرد نسخه جدید مطمئن شوید میتواند برای Rollback مفید باشد.
مشکل زمانی ایجاد میشود که Boot Order اشتباه باشد.
برای مثال ممکن است تنظیمات دستگاه شامل چند Boot Entry باشد و نسخه قدیمی قبل از نسخه جدید قرار گرفته باشد. در چنین حالتی دستگاه ممکن است ابتدا تلاش کند Image قدیمی را اجرا کند.
برای بررسی، از دستورات متناسب با مدل دستگاه مانند موارد زیر استفاده کنید:
show boot
و:
show running-config | include boot
اگر چند Boot Entry مشاهده کردید، ترتیب آنها را نیز بررسی کنید.
فرض کنید Boot Variable کاملاً درست است و دستگاه باید IOS جدید را اجرا کند، اما Image جدید قابل استفاده نیست.
در این شرایط ممکن است Boot Loader نتواند فایل جدید را بهدرستی بارگذاری کند و رفتار دستگاه بسته به پلتفرم و تنظیمات آن متفاوت باشد.
به همین دلیل قبل از Reload بهتر است از کامل بودن فایل و سازگاری آن با مدل دستگاه مطمئن شوید.
یکی از روشهای مهم، بررسی Hash فایل است. در پلتفرمهایی که دستور مربوطه در دسترس است، میتوان از دستورهایی مانند زیر استفاده کرد:
verify /md5 flash:<filename.bin>
مقدار بهدستآمده باید با Checksum معتبر Image موردنظر مقایسه شود.
گاهی مشکل سادهتر از چیزی است که تصور میکنید.
ممکن است Image در یک Storage Location قرار گرفته باشد، اما Boot Configuration مسیر دیگری را مشخص کرده باشد.
برای مشاهده فایلها میتوانید بسته به دستگاه از دستورهایی مانند زیر استفاده کنید:
dir flash:
سپس دقیقاً بررسی کنید که فایل موردنظر وجود دارد و نام آن با مسیری که در Boot Configuration تعریف شده یکسان است.
حتی یک اشتباه در نام فایل یا مسیر میتواند باعث شکست فرایند بوت موردنظر شود.
یکی از مهمترین دستورات برای این کار:
show version
این دستور اطلاعات مهمی درباره نسخه فعلی IOS/IOS XE، Image اجراشده، مدت زمان روشن بودن دستگاه و اطلاعات سختافزاری ارائه میدهد.
بعد از هر Upgrade، خروجی show version را بررسی کنید و فقط بر اساس فایلهای موجود در Flash نتیجه نگیرید که ارتقا موفق بوده است.
برای مثال ممکن است Flash حاوی نسخه جدید باشد، اما show version نشان دهد دستگاه هنوز نسخه قبلی را اجرا میکند.
اگر IOS را ارتقا دادهاید، قبل از Reload چند بررسی ساده میتواند از بسیاری از مشکلات جلوگیری کند.
ابتدا نسخه فعلی را بررسی کنید:
show version
سپس فایلهای Flash را ببینید:
dir flash:
بعد وضعیت Boot را بررسی کنید:
show boot
و در صورت نیاز Boot Configuration را نیز مشاهده کنید:
show running-config | include boot
در Install Mode نیز مطمئن شوید مراحل نصب IOS XE بهطور کامل انجام شدهاند و Boot Configuration مطابق روش صحیح همان پلتفرم تنظیم شده است.
در نهایت Configuration را ذخیره کنید:
copy running-config startup-config
این چند بررسی ساده قبل از Reload میتواند جلوی بسیاری از سناریوهای بوت شدن نسخه اشتباه را بگیرد.
اگر دستگاه دوباره نسخه قدیمی را اجرا کرد، بهتر است به جای تکرار سریع Upgrade، مرحلهبهمرحله علت را پیدا کنید.
اول show version را بررسی کنید تا مطمئن شوید واقعاً کدام نسخه در حال اجرا است. سپس با show boot مسیر Boot را بررسی کنید.
اگر دستگاه در Bundle Mode است، بررسی کنید Boot Variable به Image موردنظر اشاره داشته باشد.
اگر دستگاه در Install Mode است، فقط به وجود فایل BIN توجه نکنید؛ باید وضعیت Packageها، packages.conf و کامل شدن فرایند Install را نیز بررسی کنید.
همچنین Flash را بررسی کنید تا فایل موردنظر واقعاً وجود داشته باشد و فضای ذخیرهسازی نیز دچار مشکل نباشد.
این تفاوت یکی از نکات مهم در سوئیچهای جدید Cisco است.
کپی کردن Image یعنی فایل IOS XE را از یک منبع مانند TFTP، SCP یا USB به Flash انتقال دادهاید. این کار فقط باعث میشود فایل روی Storage دستگاه قرار بگیرد. اما نصب IOS شامل آمادهسازی دستگاه برای استفاده از آن نسخه است.
به زبان ساده:
Copy IOS ≠ Install IOS
بنابراین مشاهده فایل جدید در خروجی dir flash: اثبات نمیکند که دستگاه در Reload بعدی از همان نسخه بوت خواهد شد.
معمولاً بهتر است بلافاصله بعد از Upgrade موفق، نسخه قبلی را صرفاً برای مجبور کردن دستگاه به بوت از نسخه جدید حذف نکنید.
داشتن یک Image قبلی سالم میتواند در برخی سناریوهای Rollback مفید باشد. ابتدا مطمئن شوید نسخه جدید بهدرستی نصب شده، Boot Configuration صحیح است و دستگاه پس از Reload بدون مشکل کار میکند.
بعد از تأیید کامل Upgrade میتوانید بر اساس فضای Flash، روش Upgrade پلتفرم و سیاست نگهداری Imageها درباره پاکسازی فایلهای اضافی تصمیم بگیرید.
اگر سوئیچ سیسکو بعد از ریستارت با IOS قبلی بالا میآید، معمولاً اولین چیزی که باید بررسی کنید خود فایل IOS نیست، بلکه مسیر و روش Boot دستگاه است.
اشاره داشتن Boot Variable به نسخه قبلی، ذخیره نشدن تنظیمات، تفاوت Install Mode و Bundle Mode، بهروزرسانی نشدن packages.conf، کامل نشدن Install یا Commit، وجود چند Boot Entry و خرابی Image جدید از مهمترین دلایل این مشکل هستند.
دستورات show version، show boot، dir flash: و بررسی Boot Configuration نقطه شروع مناسبی برای عیبیابی هستند. در Catalystهای جدید نیز باید توجه ویژهای به Install Mode و فرایند صحیح نصب IOS XE داشته باشید.
نکته اصلی این است که کپی شدن IOS جدید داخل Flash به معنی بوت شدن خودکار سوئیچ از آن نسخه نیست. قبل از هر Reload باید مطمئن شوید دستگاه دقیقاً میداند در بوت بعدی کدام Image یا Package را اجرا کند.
وجود فایل در Flash بهتنهایی کافی نیست. Boot Configuration یا Packageهای فعال باید برای استفاده از نسخه جدید بهدرستی تنظیم شده باشند.
از دستور show version استفاده کنید. این دستور نسخه فعلی سیستمعامل و اطلاعات Image اجراشده را نمایش میدهد.
در بسیاری از سوئیچها میتوانید از دستور show boot استفاده کنید.
بله. در صورت نیاز باید Running Configuration را با copy running-config startup-config یا روش مناسب دستگاه ذخیره کنید.
در Install Mode بسیاری از سوئیچهای مبتنی بر IOS XE، packages.conf اطلاعات لازم برای بوت Packageهای سیستمعامل را در اختیار دستگاه قرار میدهد.
در Bundle Mode دستگاه مستقیماً از فایل BIN بوت میکند، در حالی که در Install Mode معمولاً از Packageهای نصبشده و packages.conf استفاده میشود.
خیر، لزوماً مشکلی ایجاد نمیکند. مهم این است که Boot Configuration و ترتیب Boot بهدرستی تنظیم شده باشند.
معمولاً خیر. حذف زودهنگام Image سالم قبلی میتواند امکان Rollback را محدود کند.
ممکن است فقط فایل جدید را کپی کرده باشید، Boot Variable هنوز صحیح نباشد یا مراحل Install/Activate/Commit بهطور کامل انجام نشده باشند.
show version، show boot، dir flash: و بررسی خطوط Boot در Running Configuration از مهمترین ابزارهای اولیه برای پیدا کردن علت هستند.