入門指南:從國(guó)產(chǎn)系統(tǒng)適配到遷移落地全解讀)
簡(jiǎn)介一份面向信創(chuàng)入門者、政企信息化人員及技術(shù)管理者的培訓(xùn)課件系統(tǒng)講解信創(chuàng)的起源、發(fā)展背景、產(chǎn)業(yè)生態(tài)與未來趨勢(shì)。課件以2016年信創(chuàng)工委會(huì)成立為起點(diǎn)梳理了863計(jì)劃、973計(jì)劃、核高基專項(xiàng)等自主創(chuàng)新歷程并結(jié)合微軟黑屏、棱鏡門、中興華為事件及實(shí)體清單等關(guān)鍵節(jié)點(diǎn)說明為何要發(fā)展自主可控的信息技術(shù)產(chǎn)業(yè)同時(shí)歸納出技術(shù)成熟、數(shù)據(jù)安全、產(chǎn)業(yè)完整、技術(shù)先進(jìn)、自主可控五大核心要求。在產(chǎn)業(yè)層面課件將信創(chuàng)生態(tài)劃分為基礎(chǔ)硬件、基礎(chǔ)軟件、應(yīng)用軟件、信息安全四大類并具體到芯片、服務(wù)器、操作系統(tǒng)、數(shù)據(jù)庫、中間件、辦公軟件、邊界安全產(chǎn)品等環(huán)節(jié)幫助讀者快速建立對(duì)信創(chuàng)產(chǎn)業(yè)鏈的整體認(rèn)知。壓縮包內(nèi)為1個(gè)PDF文件大小約2.07MB已有85人學(xué)習(xí)。課件內(nèi)容由淺入深、結(jié)構(gòu)清晰既適合作為企業(yè)內(nèi)部信創(chuàng)培訓(xùn)的配套材料也可用于自學(xué)入門。 很多同事私下問我信創(chuàng)到底要學(xué)什么是不是就是把Windows換成國(guó)產(chǎn)系統(tǒng)就行我在帶新人做項(xiàng)目時(shí)發(fā)現(xiàn)大多數(shù)人第一次接觸信創(chuàng)環(huán)境面對(duì)的不是某個(gè)具體技術(shù)難題而是一整套陌生的名詞、目錄、工具鏈和排查思路。這篇文章就是我從培訓(xùn)課件里整理出來的精華版把信創(chuàng)是什么、涉及哪些環(huán)節(jié)、實(shí)操中會(huì)踩哪些坑講清楚。不管是剛轉(zhuǎn)崗的運(yùn)維、正在做遷移的開發(fā)者還是想了解整體框架的項(xiàng)目經(jīng)理都可以當(dāng)一份入門地圖來用。1. 拆開信創(chuàng)兩個(gè)字它不是換品牌是換體系1.1 核心概念信息技術(shù)應(yīng)用創(chuàng)新信創(chuàng)的全稱是信息技術(shù)應(yīng)用創(chuàng)新目的是構(gòu)建一套從底層芯片到上層應(yīng)用軟件都自主可控的完整IT產(chǎn)業(yè)體系。很多人把信創(chuàng)簡(jiǎn)單理解為“國(guó)產(chǎn)替代”這個(gè)說法不準(zhǔn)確。替代只是結(jié)果創(chuàng)新才是過程。因?yàn)椴皇前涯硞€(gè)國(guó)外產(chǎn)品換成同類國(guó)產(chǎn)產(chǎn)品就結(jié)束而是整個(gè)技術(shù)棧的底層邏輯、接口標(biāo)準(zhǔn)、生態(tài)工具都要重新梳理和適配。舉一個(gè)例子原來基于Windows SQL Server .NET開發(fā)的業(yè)務(wù)系統(tǒng)要遷到麒麟操作系統(tǒng) 國(guó)產(chǎn)數(shù)據(jù)庫 Java技術(shù)棧表面上是在換運(yùn)行環(huán)境實(shí)際上涉及代碼改造、數(shù)據(jù)遷移方案、中間件選型、安全加固、運(yùn)維腳本重寫一整套工作。所以信創(chuàng)項(xiàng)目的周期往往比預(yù)想的長(zhǎng)核心原因是它觸達(dá)了技術(shù)體系的每一層。1.2 為什么現(xiàn)在必須關(guān)注信創(chuàng)從產(chǎn)業(yè)趨勢(shì)看信創(chuàng)已經(jīng)成為IT基礎(chǔ)設(shè)施規(guī)劃的一個(gè)默認(rèn)選項(xiàng)。很多單位的招標(biāo)文件里會(huì)明確要求產(chǎn)品入圍相關(guān)目錄新建的機(jī)房、云平臺(tái)、大數(shù)據(jù)項(xiàng)目也大概率跑在國(guó)產(chǎn)芯片和操作系統(tǒng)上。對(duì)從業(yè)者來說這不是“要不要學(xué)”的問題而是“早晚要上手”的問題。從技術(shù)發(fā)展的角度看國(guó)產(chǎn)芯片和操作系統(tǒng)這幾年進(jìn)步明顯。以操作系統(tǒng)為例麒麟和統(tǒng)信UOS的桌面環(huán)境、軟件中心、多屏協(xié)同等體驗(yàn)已經(jīng)非常接近主流商業(yè)系統(tǒng)服務(wù)器版本的穩(wěn)定性在大量政務(wù)、金融、能源項(xiàng)目里得到驗(yàn)證。數(shù)據(jù)庫方面達(dá)夢(mèng)、人大金倉、GaussDB等產(chǎn)品在分布式場(chǎng)景和集中式場(chǎng)景都有成熟案例。整體生態(tài)已經(jīng)不是“能不能用”而是“怎么用得更好”的階段。1.3 容易誤判的點(diǎn)不是兼容是重新適配我見過最典型的失敗案例單位買了一批國(guó)產(chǎn)服務(wù)器裝好系統(tǒng)后直接把Windows上的應(yīng)用打包扔上去加個(gè)wine模擬層硬跑最后性能差、亂碼多、動(dòng)不動(dòng)崩潰。這不是設(shè)備的問題而是思路的問題。信創(chuàng)環(huán)境下的正確姿勢(shì)是理解新平臺(tái)的技術(shù)特性按Linux生態(tài)的規(guī)則去部署和優(yōu)化。比如日志編碼、字符集、文件權(quán)限、進(jìn)程守護(hù)方式、JDK版本選擇這些細(xì)節(jié)在Windows上不需要關(guān)心到了信創(chuàng)環(huán)境全都變成必須處理的點(diǎn)。2. 信創(chuàng)產(chǎn)業(yè)全景一條完整的軟硬件鏈條2.1 核心硬件層國(guó)產(chǎn)CPU與整機(jī)國(guó)產(chǎn)CPU目前有六條主要路線飛騰基于ARM架構(gòu)適合數(shù)據(jù)中心、云計(jì)算場(chǎng)景生態(tài)相對(duì)成熟是很多信創(chuàng)服務(wù)器的主力。鯤鵬華為旗下的ARM處理器主打高性能計(jì)算和算力底座配套的openEuler生態(tài)比較完善。龍芯采用自主研發(fā)的LoongArch指令集完全自主可控程度最高但軟件生態(tài)需要積累。海光基于x86指令集兼容性最好很多現(xiàn)有x86軟件無需改動(dòng)就能運(yùn)行。兆芯同樣走x86路線多用于桌面辦公和輕量級(jí)服務(wù)器。申威早期多用于超算近年也開始進(jìn)入信創(chuàng)整機(jī)市場(chǎng)。選型的時(shí)候有一個(gè)經(jīng)驗(yàn)如果業(yè)務(wù)是存量遷移優(yōu)先選海光或兆芯因?yàn)橹噶罴恢潞芏嗫犹烊槐荛_如果是新建云平臺(tái)、大數(shù)據(jù)平臺(tái)飛騰和鯤鵬的性價(jià)比和算力表現(xiàn)更突出。2.2 基礎(chǔ)軟件層操作系統(tǒng)、數(shù)據(jù)庫、中間件操作系統(tǒng)是信創(chuàng)體系里用戶感知最強(qiáng)的一層銀河麒麟Kylin分為桌面版和服務(wù)器版基于Linux內(nèi)核以V10 SP1/SP2為常見版本支持飛騰、鯤鵬、龍芯等多種架構(gòu)。中標(biāo)麒麟早期與銀河麒麟合并現(xiàn)在統(tǒng)稱為麒麟軟件。統(tǒng)信UOS基于Debian生態(tài)桌面體驗(yàn)做得細(xì)致社區(qū)活躍度高適合辦公場(chǎng)景。數(shù)據(jù)庫是信創(chuàng)替換的重點(diǎn)和難點(diǎn)。達(dá)夢(mèng)、人大金倉、GaussDBopenGauss、OceanBase、TiDB都在各行業(yè)有落地。要注意的是這些數(shù)據(jù)庫雖然兼容MySQL或Oracle的常用語法但細(xì)節(jié)差異很大尤其在存儲(chǔ)過程、分區(qū)表、字符集排序規(guī)則、事務(wù)隔離級(jí)別上遷移前必須做完整的SQL兼容性評(píng)估。中間件層面東方通TongWeb、寶蘭德、金蝶天燕是主流選擇支持Java EE規(guī)范的企業(yè)級(jí)應(yīng)用部署。2.3 上層應(yīng)用與安全體系辦公軟件以WPS Office為代表已經(jīng)深度適配麒麟和UOS環(huán)境文檔兼容性做得不錯(cuò)。安全領(lǐng)域有奇安信、深信服、綠盟等廠商的終端防護(hù)、漏洞掃描、日志審計(jì)產(chǎn)品。另外還有OA協(xié)同、郵件系統(tǒng)、電子簽章等基于信創(chuàng)環(huán)境的行業(yè)應(yīng)用這些是最終用戶直接接觸到的部分也是驗(yàn)收時(shí)最容易暴露問題的環(huán)節(jié)。3. 信創(chuàng)目錄與名錄選型采購(gòu)的硬參考3.1 目錄到底有什么用信創(chuàng)目錄和名錄可以理解為經(jīng)過權(quán)威機(jī)構(gòu)測(cè)試、符合技術(shù)標(biāo)準(zhǔn)和安全要求的產(chǎn)品清單。在國(guó)內(nèi)的政企采購(gòu)、招投標(biāo)和項(xiàng)目驗(yàn)收中是否在目錄內(nèi)往往是一項(xiàng)硬性要求雖然不是所有項(xiàng)目都強(qiáng)制但入圍目錄意味著產(chǎn)品已經(jīng)通過了基礎(chǔ)兼容性測(cè)試踩坑概率低得多。3.2 如何查詢和使用查詢渠道主要有幾類相關(guān)權(quán)威測(cè)評(píng)機(jī)構(gòu)發(fā)布的公告、地方信創(chuàng)適配中心公示的適配清單、主流廠商官網(wǎng)的產(chǎn)品兼容性列表。實(shí)際操作中我會(huì)先在目錄里鎖定候選產(chǎn)品再去廠商官網(wǎng)下載兼容性認(rèn)證報(bào)告確認(rèn)具體型號(hào)和版本能匹配最后才做POC測(cè)試。這里有個(gè)建議不要只看目錄里有名字就下單還要看詳細(xì)的適配范圍。比如某一款操作系統(tǒng)認(rèn)證了飛騰S2500處理器但你的服務(wù)器是飛騰FT-2000那就需要單獨(dú)確認(rèn)是否支持。目錄解決的是“準(zhǔn)入門檻”POC解決的是“實(shí)際可用”兩步都不能省。4. 實(shí)操環(huán)節(jié)搭一個(gè)能跑通全流程的實(shí)訓(xùn)環(huán)境4.1 硬件與系統(tǒng)準(zhǔn)備實(shí)訓(xùn)環(huán)境不一定要買昂貴的國(guó)產(chǎn)服務(wù)器。最簡(jiǎn)單的做法是用虛擬機(jī)模擬ARM64環(huán)境或者直接在一臺(tái)物理機(jī)上安裝麒麟操作系統(tǒng)。如果是生產(chǎn)環(huán)境選型推薦鯤鵬920或飛騰平臺(tái)的服務(wù)器內(nèi)存建議不低于32GB磁盤用SSD否則編譯和數(shù)據(jù)庫啟動(dòng)會(huì)明顯變慢。系統(tǒng)層面安裝銀河麒麟V10或統(tǒng)信UOS 20服務(wù)器版安裝時(shí)注意分區(qū)方案/boot給1GBswap給內(nèi)存的1.5倍/和/home根據(jù)業(yè)務(wù)量分配。網(wǎng)絡(luò)配置建議用固定IP避免DHCP導(dǎo)致重啟后IP漂移。4.2 麒麟操作系統(tǒng)配置網(wǎng)絡(luò)的兩種姿勢(shì)圖形界面環(huán)境下可以直接用設(shè)置面板改網(wǎng)絡(luò)但服務(wù)器版大多是無桌面環(huán)境必須掌握命令行方式。最推薦的是nmtui這個(gè)文本圖形界面工具操作直觀適合新手。執(zhí)行nmtui回車后選擇Edit a connection找到網(wǎng)卡條目配置IPv4地址、掩碼、網(wǎng)關(guān)和DNS。保存后執(zhí)行nmcli connection reload再重啟網(wǎng)絡(luò)。如果不習(xí)慣nmtui可以直接編輯網(wǎng)卡配置文件。在麒麟/統(tǒng)信上網(wǎng)卡配置文件在/etc/sysconfig/network-scripts/ifcfg-ens*ens后面是具體編號(hào)。核心配置項(xiàng)如下TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.1.100 NETMASK255.255.255.0 GATEWAY192.168.1.1 DNS1223.5.5.5改完后執(zhí)行systemctl restart network或nmcli connection up ens33。如果遇到重啟后配置丟失九成是ONBOOT沒有設(shè)為yes。4.3 關(guān)機(jī)與重啟命令別用錯(cuò)信創(chuàng)環(huán)境下的關(guān)機(jī)命令和普通Linux基本一致但不同場(chǎng)景有區(qū)別場(chǎng)景推薦命令說明立即關(guān)機(jī)shutdown -h now最規(guī)范會(huì)通知所有登錄用戶定時(shí)關(guān)機(jī)shutdown -h 22:00適合夜間維護(hù)窗口立即重啟shutdown -r now生產(chǎn)環(huán)境慎用強(qiáng)制關(guān)機(jī)poweroff相當(dāng)于直接斷電源非緊急不用強(qiáng)制重啟reboot -f會(huì)跳過文件系統(tǒng)同步慎用我見過有同事在麒麟系統(tǒng)上直接按電源鍵強(qiáng)制關(guān)機(jī)結(jié)果導(dǎo)致數(shù)據(jù)庫文件損壞恢復(fù)花了一整天。重啟前務(wù)必先執(zhí)行sync同步磁盤緩存再用標(biāo)準(zhǔn)命令。4.4 在信創(chuàng)環(huán)境安裝Node.js的完整步驟很多開發(fā)者在信創(chuàng)服務(wù)器上安裝node會(huì)踩坑主要原因是官方二進(jìn)制包不一定提供對(duì)應(yīng)CPU架構(gòu)的版本。以飛騰/鯤鵬的ARM64環(huán)境為例建議這樣操作# 1. 確認(rèn)架構(gòu) uname -m # 輸出aarch64表示ARM64 # 2. 下載ARM64版本的Node.js二進(jìn)制包 wget https://nodejs.org/dist/v18.20.4/node-v18.20.4-linux-arm64.tar.xz # 3. 解壓并安裝到/usr/local tar -xf node-v18.20.4-linux-arm64.tar.xz mv node-v18.20.4-linux-arm64 /usr/local/node # 4. 配置環(huán)境變量 echo export PATH/usr/local/node/bin:$PATH /etc/profile source /etc/profile # 5. 驗(yàn)證 node -v npm -v如果服務(wù)器不能訪問外網(wǎng)可以在一臺(tái)能上網(wǎng)的機(jī)器上下載好包用U盤或內(nèi)網(wǎng)傳輸工具拷貝過去。還有一點(diǎn)老項(xiàng)目的node_modules里如果有native模塊換到ARM環(huán)境后必須重新編譯安裝否則運(yùn)行時(shí)直接報(bào)錯(cuò)。4.5 實(shí)戰(zhàn)案例fastjson 2.0.64在信創(chuàng)服務(wù)器上的亂碼問題這個(gè)案例非常典型。遷移一個(gè)Java服務(wù)到麒麟系統(tǒng)后日志里出現(xiàn)大量中文亂碼尤其是JSON序列化后的中文變成了問號(hào)或亂碼字符串。排查路徑如下第一步檢查操作系統(tǒng)字符集。執(zhí)行l(wèi)ocale如果LANG不是UTF-8則編輯/etc/locale.conf設(shè)置LANGzh_CN.UTF-8。第二步檢查JVM默認(rèn)字符集。很多服務(wù)沒有顯式指定file.encoding而JVM會(huì)根據(jù)系統(tǒng)locale推斷如果系統(tǒng)是POSIX或C默認(rèn)字符集就成了ANSI_X3.4-1968ASCII中文自然亂碼。解決方法是啟動(dòng)參數(shù)加上-Dfile.encodingUTF-8比如java -Dfile.encodingUTF-8 -jar app.jar第三步檢查數(shù)據(jù)庫連接串。如果數(shù)據(jù)庫是國(guó)產(chǎn)數(shù)據(jù)庫注意連接URL里的characterEncodingUTF-8參數(shù)同時(shí)保證數(shù)據(jù)庫表本身是UTF-8編碼。第四步檢查代碼里的序列化配置。fastjson 2.0.64默認(rèn)會(huì)按照配置的字符集輸出如果業(yè)務(wù)代碼里手動(dòng)指定了GBK或者其他編碼需要改成UTF-8。這個(gè)案例的啟示是信創(chuàng)環(huán)境下的亂碼往往是“系統(tǒng)locale JVM參數(shù) 數(shù)據(jù)庫連接 業(yè)務(wù)代碼”四層中的某一層出了問題排查時(shí)從外到內(nèi)一層層驗(yàn)證不要一上來就懷疑fastjson版本。5. 常見問題排查與避坑技巧實(shí)錄5.1 高頻問題速查表問題現(xiàn)象可能原因解決思路系統(tǒng)啟動(dòng)后網(wǎng)絡(luò)不通ONBOOT未開啟或NetworkManager覆蓋配置檢查ifcfg文件執(zhí)行nmcli connection reload中文文件名顯示亂碼系統(tǒng)未安裝中文字體或locale未配置yum install fontconfig / 設(shè)置LANGzh_CN.UTF-8Java應(yīng)用啟動(dòng)報(bào)“Unsupported class file major version”JDK版本過舊升級(jí)到JDK 8u391以上或JDK 11/17npm install編譯失敗native模塊不兼容ARM64使用捐贈(zèng)版二進(jìn)制包或源碼重新編譯數(shù)據(jù)庫連接池初始化失敗國(guó)產(chǎn)數(shù)據(jù)庫驅(qū)動(dòng)版本與應(yīng)用不兼容核對(duì)驅(qū)動(dòng)和數(shù)據(jù)庫版本對(duì)應(yīng)關(guān)系WPS打開復(fù)雜Excel報(bào)錯(cuò)缺少依賴庫或字體安裝對(duì)應(yīng)辦公字體包5.2 適配遷移的通用方法論我在多個(gè)信創(chuàng)遷移項(xiàng)目中驗(yàn)證過一套四步法盤點(diǎn)畫像梳理現(xiàn)有系統(tǒng)的技術(shù)棧、依賴組件、外部接口、數(shù)據(jù)規(guī)模。這個(gè)階段特別要搞清楚哪些組件是閉源且無法在信創(chuàng)環(huán)境運(yùn)行的。方案設(shè)計(jì)確定目標(biāo)架構(gòu)比如從x86換ARM、從Oracle換達(dá)夢(mèng)、從Windows部署換麒麟容器化部署。設(shè)計(jì)階段就要做兼容性差距分析列清楚每一項(xiàng)改動(dòng)點(diǎn)。適配改造按模塊推進(jìn)遵循“先基礎(chǔ)設(shè)施、再數(shù)據(jù)層、后應(yīng)用層”的順序。每完成一個(gè)模塊都要做功能回歸測(cè)試。驗(yàn)證上線做性能壓測(cè)、高可用測(cè)試、安全加固檢查最后灰度上線。5.3 信創(chuàng)相關(guān)的證書與比賽如果想在信創(chuàng)方向深耕可以關(guān)注幾類認(rèn)證操作系統(tǒng)廠商有麒麟操作系統(tǒng)管理員認(rèn)證、統(tǒng)信UOS認(rèn)證數(shù)據(jù)庫方向有達(dá)夢(mèng)DCA/DCP認(rèn)證安全方向有CISP等通用安全證書。這些證書在信創(chuàng)項(xiàng)目招投標(biāo)時(shí)有一定加分作用對(duì)個(gè)人職業(yè)發(fā)展也有價(jià)值。比賽方面近年來各省市的信創(chuàng)職業(yè)技能競(jìng)賽、信息技術(shù)應(yīng)用創(chuàng)新大賽越來越多內(nèi)容通常覆蓋系統(tǒng)部署、數(shù)據(jù)庫操作、應(yīng)用遷移、安全配置等模塊。參賽經(jīng)驗(yàn)對(duì)理解真實(shí)項(xiàng)目非常有幫助而且比賽環(huán)境里能接觸到企業(yè)日常接觸不到的極端場(chǎng)景。最后的經(jīng)驗(yàn)分享做信創(chuàng)項(xiàng)目這幾年我最深的體會(huì)是技術(shù)上90%的問題都是Linux基礎(chǔ)問題不是國(guó)產(chǎn)化特有的問題。字符集、文件權(quán)限、JDK版本、網(wǎng)絡(luò)配置這些在任何一個(gè)Linux發(fā)行版上都會(huì)遇到。只是因?yàn)榇蠹覍?duì)Windows更熟悉才有那種“處處碰壁”的錯(cuò)覺。學(xué)習(xí)方法上我建議先把Linux操作基礎(chǔ)打牢再去研究具體發(fā)行版的差異化能力最后通過一兩個(gè)真實(shí)業(yè)務(wù)系統(tǒng)演練整個(gè)遷移流程。有了這套底子無論換哪一方CPU、哪一套系統(tǒng)都能快速上手。做信創(chuàng)不用怕它只是讓我們重新認(rèn)識(shí)了被Windows掩蓋掉的那些底層細(xì)節(jié)。本文還有配套的精品資源點(diǎn)擊獲取