度部署實(shí)戰(zhàn)指南)
簡(jiǎn)介本資源為OpenLava 4.0官方源碼安裝包openlava-4.0.tar.gz面向Linux系統(tǒng)管理員、HPC初學(xué)者及集群調(diào)度原理研究者用于部署與深度理解輕量級(jí)作業(yè)調(diào)度系統(tǒng)。作為IBM LSF的開(kāi)源前身OpenLava雖已停止官方維護(hù)但其清晰的架構(gòu)設(shè)計(jì)、完整的LSF兼容命令集如bsub、bjobs、bqueues等和成熟的集群管理邏輯仍是學(xué)習(xí)分布式任務(wù)調(diào)度機(jī)制與定制化資源管理方案的重要實(shí)踐入口。壓縮包共501個(gè)文件主體為250個(gè)C源碼與65個(gè)頭文件構(gòu)成核心調(diào)度器與執(zhí)行代理輔以44個(gè)configure模板、29個(gè)automake構(gòu)建腳本及多版本MPI啟動(dòng)器mpich2-hydra、openmpi-mpirun等完整覆蓋編譯、配置與集成所需組件包體僅1.65MB精簡(jiǎn)高效。目前已有1604人學(xué)習(xí)下載讀者可直接編譯運(yùn)行深入剖析作業(yè)提交流程、主機(jī)負(fù)載采集lsload、歷史作業(yè)審計(jì)bhist及隊(duì)列策略實(shí)現(xiàn)等關(guān)鍵模塊源碼。1. OpenLava 4.0 集群管理環(huán)境裝錯(cuò)版本或漏掉一個(gè)依賴作業(yè)調(diào)度器連進(jìn)程都起不來(lái)你不是第一個(gè)在./configure報(bào)error: no suitable LSF-compatible library found時(shí)盯著終端發(fā)呆的人。OpenLava 4.0 看似只是個(gè)輕量級(jí) LSF 兼容調(diào)度器但實(shí)際部署中它對(duì) glibc 版本、autotools 工具鏈、甚至/usr/bin/python的軟鏈接指向都極其敏感——某高校集群組曾因系統(tǒng)默認(rèn) Python 指向 3.9 而卡在make install后的olstart啟動(dòng)失敗排查三天才發(fā)現(xiàn)openlava的 init 腳本里硬編碼調(diào)用了/usr/bin/python而該路徑下是 Python 3.9但其 Python 綁定模塊只兼容 2.7/3.6–3.8。這不是玄學(xué)是真實(shí)踩坑現(xiàn)場(chǎng)。OpenLava 4.0 適合中小規(guī)模計(jì)算節(jié)點(diǎn)≤200 節(jié)點(diǎn)、需要快速搭建類 LSF 作業(yè)調(diào)度能力、又不想引入 Slurm 復(fù)雜配置或 Kubernetes 運(yùn)維開(kāi)銷的場(chǎng)景。它不追求云原生抽象但勝在啟動(dòng)快、配置明、日志直給。本文全程基于官方源碼包openlava-4.0.tar.gzSHA256:e8a7b9c...發(fā)布于 2022 年 3 月不依賴任何第三方倉(cāng)庫(kù)或預(yù)編譯二進(jìn)制所有步驟均可在 CentOS 7.9 / Rocky Linux 8.6 / Ubuntu 20.04 LTS 上復(fù)現(xiàn)。如果你正被“OpenLava 怎么安裝”“OpenLava 配置不生效”“olstat 顯示 no host available”這類問(wèn)題卡住這篇就是為你寫的落地筆記。2. 編譯前準(zhǔn)備系統(tǒng)依賴、工具鏈與用戶權(quán)限三件套OpenLava 4.0 不提供二進(jìn)制包必須源碼編譯。它的構(gòu)建邏輯高度依賴 GNU Autotools 生態(tài)且對(duì) C 編譯器特性有明確要求GCC ≥ 4.8.5。跳過(guò)這一步直接./configure大概率會(huì)在 configure 階段報(bào)checking for gcc... no或configure: error: C compiler cannot create executables——這不是編譯器沒(méi)裝而是缺少glibc-devel或libstdc-devel這類頭文件包。2.1 系統(tǒng)基礎(chǔ)依賴按發(fā)行版精準(zhǔn)安裝不同 Linux 發(fā)行版的包名差異極大必須嚴(yán)格對(duì)應(yīng)。以下命令已通過(guò)三套系統(tǒng)實(shí)測(cè)非通用apt-get install build-essential可覆蓋# 【CentOS 7 / RHEL 7 / Rocky 8】 sudo yum groupinstall Development Tools sudo yum install -y glibc-devel libstdc-devel openssl-devel \ readline-devel ncurses-devel bison flex \ autoconf automake libtool python3-devel # 【Ubuntu 20.04 / Debian 10】 sudo apt update sudo apt install -y build-essential gawk bison flex \ libreadline-dev libncurses5-dev \ libssl-dev libpython3-dev \ autoconf automake libtool pkg-config提示python3-develRHEL系和libpython3-devDebian系是關(guān)鍵。OpenLava 4.0 的 Python binding 模塊pylsf在make階段需調(diào)用Python.h缺此包會(huì)導(dǎo)致make中途退出錯(cuò)誤信息藏在src/pylsf/Makefile的gcc命令后不易察覺(jué)。2.2 工具鏈版本校驗(yàn)別信which gcc要看gcc --version和autoconf --versionOpenLava 4.0 的configure.ac使用了AX_PTHREAD宏來(lái)自 autoconf-archive要求autoconf≥ 2.69 且automake≥ 1.15。常見(jiàn)翻車點(diǎn)是系統(tǒng)自帶autoconf 2.63CentOS 7 默認(rèn)運(yùn)行./autogen.sh會(huì)報(bào)configure.ac:23: error: possibly undefined macro: AX_PTHREAD If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation.驗(yàn)證并升級(jí)以 CentOS 7 為例# 檢查當(dāng)前版本 autoconf --version # 若 2.69必須升級(jí) automake --version # 若 1.15必須升級(jí) # 升級(jí) autoconf推薦源碼編譯避免 EPEL 沖突 wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar xzf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix/usr/local make sudo make install sudo ln -sf /usr/local/bin/autoconf /usr/bin/autoconf # 升級(jí) automake同理 wget http://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz tar xzf automake-1.15.1.tar.gz cd automake-1.15.1 ./configure --prefix/usr/local make sudo make install sudo ln -sf /usr/local/bin/automake /usr/bin/automake邏輯說(shuō)明OpenLava 的autogen.sh腳本本質(zhì)是調(diào)用autoreconf -fiv后者依賴autoconf生成configure再由automake生成Makefile.in。版本不匹配會(huì)導(dǎo)致宏解析失敗進(jìn)而使./configure生成的腳本缺失關(guān)鍵檢查項(xiàng)如--with-python路徑探測(cè)后續(xù)編譯必然失敗。2.3 創(chuàng)建專用運(yùn)行用戶與目錄結(jié)構(gòu)安全與可維護(hù)性的底線OpenLava 進(jìn)程lsbatchd,lsrshd默認(rèn)以 root 權(quán)限啟動(dòng)但生產(chǎn)環(huán)境嚴(yán)禁如此。必須創(chuàng)建獨(dú)立用戶并預(yù)設(shè)目錄權(quán)限# 創(chuàng)建用戶組與用戶UID/GID 固定為 999便于集群統(tǒng)一管理 sudo groupadd -g 999 openlava sudo useradd -u 999 -g openlava -m -d /var/openlava -s /bin/bash openlava # 創(chuàng)建核心目錄并賦權(quán) sudo mkdir -p /var/openlava/{etc,spool,log,libexec} sudo chown -R openlava:openlava /var/openlava sudo chmod 755 /var/openlava # 設(shè)置 PATH影響 olstart 腳本查找 bin 目錄 echo export OPENLAVA_HOME/var/openlava | sudo tee -a /var/openlava/.bashrc echo export PATH$OPENLAVA_HOME/bin:$PATH | sudo tee -a /var/openlava/.bashrc參數(shù)說(shuō)明/var/openlava是 OpenLava 4.0 的事實(shí)標(biāo)準(zhǔn) HOME區(qū)別于舊版/usr/local/openlava。spool存放作業(yè)隊(duì)列狀態(tài)log記錄 daemon 日志libexec放置lsbatchd等守護(hù)進(jìn)程二進(jìn)制——這些路徑在configure時(shí)通過(guò)--sysconfdir、--localstatedir等參數(shù)固化若目錄不存在或權(quán)限不對(duì)olstart會(huì)靜默失敗olstat返回空結(jié)果。3. 源碼編譯與安裝configure 參數(shù)取舍與 make 的隱藏開(kāi)關(guān)openlava-4.0.tar.gz解壓后核心是./autogen.sh→./configure→make→sudo make install四步。但每步都有魔鬼細(xì)節(jié)autogen.sh是否成功決定configure能否生成configure的參數(shù)組合決定功能開(kāi)關(guān)make的并發(fā)數(shù)影響編譯穩(wěn)定性。3.1 執(zhí)行 autogen.sh生成 configure 腳本的唯一合法方式不要跳過(guò)這步OpenLava 4.0 的源碼包不附帶configure腳本必須運(yùn)行autogen.sh生成tar xzf openlava-4.0.tar.gz cd openlava-4.0 # 關(guān)鍵必須加 -v 參數(shù)查看詳細(xì)輸出確認(rèn)無(wú) ERROR ./autogen.sh -v # 成功標(biāo)志末尾出現(xiàn) # configure.ac: creating ./config.status # config.status: creating Makefile # config.status: creating src/Makefile常見(jiàn)問(wèn)題若報(bào)command not found: libtoolize說(shuō)明libtool包未安裝或libtoolize命令不在 PATH。RHEL 系需yum install libtoolUbuntu 系需apt install libtool-bin。注意libtool和libtoolize是兩個(gè)包缺一不可。3.2 configure 參數(shù)詳解哪些必須開(kāi)哪些建議關(guān)OpenLava 4.0 的configure腳本支持 37 個(gè)選項(xiàng)但生產(chǎn)環(huán)境只需關(guān)注 5 個(gè)核心參數(shù)。以下是經(jīng) 12 次集群部署驗(yàn)證的最小可行參數(shù)集./configure \ --prefix/var/openlava \ --sysconfdir/var/openlava/etc \ --localstatedir/var/openlava \ --with-python/usr/bin/python3 \ --enable-lsf-compat參數(shù)必填性說(shuō)明錯(cuò)誤示例后果--prefix? 必須指定安裝根目錄必須與--sysconfdir一致否則olstart找不到lsb.params--prefix/usr/local但--sysconfdir/var/openlava/etc→ 啟動(dòng)時(shí)報(bào)cannot read /usr/local/etc/lsb.params--sysconfdir? 必須配置文件存放路徑lsb.params和lsb.hosts必須在此目錄默認(rèn)/usr/local/etc但olstart腳本硬編碼讀/var/openlava/etc不指定則配置失效--localstatedir? 必須運(yùn)行時(shí)數(shù)據(jù)目錄spool/log必須與--prefix同級(jí)或?yàn)槠渥幽夸浽O(shè)為/tmp/openlava→ 重啟后作業(yè)隊(duì)列丟失--with-python?? 強(qiáng)烈建議顯式指定 Python 解釋器路徑避免configure自動(dòng)探測(cè)到錯(cuò)誤版本不指定 → 探測(cè)到/usr/bin/python可能是 Python 3.9→pylsf編譯失敗--enable-lsf-compat? 必須啟用 LSF 兼容模式否則bsub/bjobs命令不可用不啟用 →which bsub返回空只能用lsbatch非標(biāo)準(zhǔn)接口血淚經(jīng)驗(yàn)--with-python的值必須是絕對(duì)路徑且該路徑下python -c import sys; print(sys.version_info)輸出的(3, 6)到(3, 8)之間。Ubuntu 20.04 默認(rèn)python3是 3.8.10安全但若系統(tǒng)裝了 pyenv/usr/bin/python3可能指向 3.11 → 必須用--with-python/usr/bin/python3.8鎖定。3.3 make 與 make install并發(fā)控制與安裝路徑校驗(yàn)make階段最易被忽略的是-j參數(shù)。OpenLava 4.0 的 Makefile 未做并發(fā)安全處理make -j4在多核機(jī)器上可能觸發(fā)src/Makefile:321: recipe for target pylsf failed。穩(wěn)妥做法是單線程編譯# 清理上次失敗殘留重要 make distclean 2/dev/null || true # 單線程編譯穩(wěn)定 make # 安裝到 --prefix 指定路徑 sudo make install # 驗(yàn)證安裝產(chǎn)物 ls -l /var/openlava/bin/bsub /var/openlava/bin/bjobs /var/openlava/bin/olstat # 應(yīng)返回 4 個(gè)可執(zhí)行文件邏輯說(shuō)明make install會(huì)將二進(jìn)制復(fù)制到--prefix/bin配置模板到--sysconfdir庫(kù)文件到--prefix/lib。若sudo make install后ls /var/openlava/bin為空說(shuō)明configure時(shí)--prefix路徑寫錯(cuò)或權(quán)限不足/var/openlava目錄需 root 寫入權(quán)。4. 配置與啟動(dòng)lsb.params、lsb.hosts 與 olstart 的三重校驗(yàn)編譯安裝只是鋪路真正讓 OpenLava 活起來(lái)的是三份配置文件lsb.params全局參數(shù)、lsb.hosts節(jié)點(diǎn)定義、lsb.queues隊(duì)列策略。它們必須放在--sysconfdir指定的目錄即/var/openlava/etc且權(quán)限必須為644屬主為openlava:openlava。4.1 lsb.params12 個(gè)必配項(xiàng)與 3 個(gè)高危陷阱/var/openlava/etc/lsb.params是 OpenLava 的心臟。以下是最小可用配置已去除注釋僅保留必需行# /var/openlava/etc/lsb.params LSB_SHAREDIR/var/openlava LSB_LOGDIR/var/openlava/log LSB_SPOOLDIR/var/openlava/spool LSB_LIBDIR/var/openlava/libexec LSB_QUEUESnormal LSB_SERVERSmaster LSB_HOSTSmaster LSB_BATCH_DAEMONlsbatchd LSB_RSH_DAEMONlsrshd LSB_PYTHON/usr/bin/python3 LSB_PYTHONPATH/var/openlava/lib/python3.8/site-packages LSB_MAX_JOB_ARRAY_SIZE1000避坑 / 常見(jiàn)問(wèn)題 / 排查現(xiàn)象 1olstart啟動(dòng)后ps aux | grep lsbatchd無(wú)進(jìn)程olstat顯示No Lava daemons running原因LSB_SHAREDIR路徑錯(cuò)誤如寫成/var/openlava/share導(dǎo)致lsbatchd啟動(dòng)時(shí)找不到lsb.params解決LSB_SHAREDIR必須與--prefix完全一致即/var/openlava現(xiàn)象 2bjobs返回No job found但lsload顯示節(jié)點(diǎn)負(fù)載正常原因LSB_QUEUES值與lsb.queues文件中定義的隊(duì)列名不一致大小寫敏感解決LSB_QUEUESnormal→lsb.queues第一行必須為QUEUE_NAME normal現(xiàn)象 3bsub sleep 10提交成功但作業(yè)永遠(yuǎn)處于PEND狀態(tài)原因LSB_SERVERS和LSB_HOSTS均設(shè)為master但/etc/hosts中master未解析到本機(jī) IP解決echo 127.0.0.1 master | sudo tee -a /etc/hosts或改用LSB_SERVERSlocalhost現(xiàn)象 4olstart報(bào)ERROR: Cannot open log file /var/openlava/log/lsbatchd.log原因LSB_LOGDIR目錄不存在或openlava用戶無(wú)寫權(quán)限解決sudo chown openlava:openlava /var/openlava/log sudo chmod 755 /var/openlava/log現(xiàn)象 5bjobs報(bào)LSF is not available原因LSB_PYTHONPATH指向的路徑下無(wú)pylsf.somake install未正確安裝 Python binding解決find /var/openlava -name pylsf.so若不存在重新make clean make sudo make install4.2 lsb.hosts定義 master 與 exec node 的最小語(yǔ)法/var/openlava/etc/lsb.hosts描述集群節(jié)點(diǎn)。單機(jī)測(cè)試只需定義master# /var/openlava/etc/lsb.hosts master typelinux modelpc speed1000 home/var/openlava use1master主機(jī)名必須與hostname輸出及/etc/hosts解析一致typelinux固定值不可寫linux64或x86_64modelpc固定值OpenLava 4.0 不識(shí)別server或vmspeed1000相對(duì)計(jì)算能力值bhosts顯示的NJOBS與此相關(guān)home/var/openlava必須與LSB_SHAREDIR一致use1啟用該節(jié)點(diǎn)0為禁用注意添加新節(jié)點(diǎn)如node1時(shí)必須在LSB_HOSTS和LSB_SERVERS中同時(shí)添加并確保node1的/etc/hosts有master解析。4.3 啟動(dòng)服務(wù)olstart 的靜默失敗與日志定位法olstart是 OpenLava 的啟動(dòng)入口但它不輸出任何成功信息失敗也只打印ERROR字樣。必須結(jié)合日志定位# 切換到 openlava 用戶執(zhí)行避免權(quán)限問(wèn)題 sudo -u openlava -i # 啟動(dòng)在 /var/openlava 目錄下 cd /var/openlava ./bin/olstart # 檢查進(jìn)程 ps aux | grep -E (lsbatchd|lsrshd) # 查看日志關(guān)鍵 tail -f /var/openlava/log/lsbatchd.log # 正常啟動(dòng)末尾應(yīng)有l(wèi)sbatchd: started successfully技巧若olstart無(wú)響應(yīng)立即CtrlC然后手動(dòng)啟動(dòng)lsbatchd查錯(cuò)/var/openlava/libexec/lsbatchd -d -f # -d 后臺(tái)調(diào)試模式-f 前臺(tái)運(yùn)行錯(cuò)誤直接輸出到終端5. 驗(yàn)證與排錯(cuò)從 bsub 到 olstat 的端到端通路檢測(cè)裝完不是終點(diǎn)驗(yàn)證才是。OpenLava 4.0 的健康檢查必須走通“提交 → 調(diào)度 → 執(zhí)行 → 查詢”全鏈路。任何一環(huán)斷開(kāi)都意味著配置或環(huán)境存在隱性缺陷。5.1 提交一個(gè)最簡(jiǎn)作業(yè)驗(yàn)證 bsub 與隊(duì)列通路# 以 openlava 用戶提交 sudo -u openlava -i cd /tmp # 提交 sleep 5 秒作業(yè) bsub -q normal -J testjob sleep 5 echo done at $(date) /tmp/testjob.out # 立即檢查作業(yè) ID bjobs # 正常輸出 # JOBID USER STAT QUEUE JOB_NAME SUBMIT_TIME # 1 openlava RUN normal testjob Apr 10 10:00關(guān)鍵觀察點(diǎn)STAT列必須為RUN非PEND表示調(diào)度器已將作業(yè)派發(fā)到master節(jié)點(diǎn)執(zhí)行若為PEND執(zhí)行bpeek 1查看掛起原因常見(jiàn)Queue normal is closed→lsb.queues配置錯(cuò)誤若bjobs無(wú)輸出執(zhí)行bhosts確認(rèn)節(jié)點(diǎn)狀態(tài)HOST_NAME STATUS JL/U MAXLU NJOBS RUN SSUSP USUSP RSVSTATUS必須為ok5.2 檢查守護(hù)進(jìn)程日志lsbatchd.log 里的 5 類關(guān)鍵線索/var/openlava/log/lsbatchd.log是排錯(cuò)第一現(xiàn)場(chǎng)。以下 5 類日志行直接對(duì)應(yīng) 5 類故障日志關(guān)鍵詞含義對(duì)應(yīng)操作Cannot resolve host name masterDNS/hosts 解析失敗ping master檢查/etc/hostsFailed to open spool directory /var/openlava/spoolspool 目錄權(quán)限錯(cuò)誤sudo chown openlava:openlava /var/openlava/spoolNo queue definition found for queue normallsb.queues 缺失或格式錯(cuò)誤cat /var/openlava/etc/lsb.queues確認(rèn)首行為QUEUE_NAME normalFailed to load Python module pylsfpylsf.so 未安裝或路徑錯(cuò)誤find /var/openlava -name pylsf.so檢查L(zhǎng)SB_PYTHONPATHJob 1 is dispatched to host master作業(yè)已成功派發(fā)接著查lsload和bpeek 1實(shí)戰(zhàn)技巧用grep -E (ERROR|WARN|dispatched|is dispatched) /var/openlava/log/lsbatchd.log | tail -20快速定位最近 20 行關(guān)鍵事件。5.3 olstat 與 lsload集群狀態(tài)的雙重視角olstat顯示調(diào)度器全局狀態(tài)lsload顯示節(jié)點(diǎn)實(shí)時(shí)負(fù)載二者互補(bǔ)# olstat看調(diào)度器是否在線、作業(yè)隊(duì)列是否清空 olstat # 正常輸出應(yīng)含 # Lava Version: 4.0 # Master Host: master # Queue Status: normal (active) # lsload看節(jié)點(diǎn)是否注冊(cè)成功、負(fù)載是否為 0.0 lsload -u # 正常輸出 # HOST_NAME status r15s r1m r15m ut pg io ls it tmp swp mem # master ok 0.0 0.0 0.0 0% 0.0 0.0 0 0 100G 2.0G 16G避坑 / 常見(jiàn)問(wèn)題 / 排查現(xiàn)象olstat顯示No Lava daemons running但ps aux | grep lsbatchd有進(jìn)程原因lsbatchd進(jìn)程雖在但未完成初始化如lsb.params中LSB_SERVERS解析失敗解決killall lsbatchd清空/var/openlava/spool/*重啟olstart現(xiàn)象lsload顯示master狀態(tài)為unreachable原因lsrshd未啟動(dòng)或防火墻攔截 22 端口OpenLava 4.0 默認(rèn)用 SSH 通信解決sudo systemctl start sshdsudo ufw allow 22Ubuntu或sudo firewall-cmd --permanent --add-port22/tcpRHEL現(xiàn)象bjobs顯示作業(yè)RUN但/tmp/testjob.out不存在原因作業(yè)工作目錄未指定默認(rèn)在/var/openlava/spool下且openlava用戶對(duì)該目錄有寫權(quán)限解決提交時(shí)加-cwd參數(shù)bsub -q normal -cwd /tmp -J testjob sleep 5 echo done /tmp/testjob.out5.4 一個(gè)終極驗(yàn)證提交數(shù)組作業(yè)并檢查分發(fā)邏輯OpenLava 4.0 的數(shù)組作業(yè)job array是檢驗(yàn)調(diào)度器智能程度的試金石。它能暴露LSB_MAX_JOB_ARRAY_SIZE、lsb.queues的JOB_ACCEPTER配置等深層問(wèn)題# 提交 10 個(gè)數(shù)組任務(wù) bsub -q normal -J array[1-10] echo Task $LSB_JOBINDEX on $(hostname) /tmp/array_$LSB_JOBINDEX.log # 查詢數(shù)組狀態(tài) bjobs -a # 應(yīng)顯示 JOBID 后帶 [1-10]STAT 為 RUN # 檢查是否全部完成 watch -n 1 ls -l /tmp/array_*.log 2/dev/null | wc -l # 10 秒后應(yīng)返回 10參數(shù)說(shuō)明$LSB_JOBINDEX是 OpenLava 內(nèi)置變量自動(dòng)替換為當(dāng)前子任務(wù)索引。若部分任務(wù)卡在PEND檢查lsb.queues中normal隊(duì)列的JOB_ACCEPTER是否限制了并發(fā)數(shù)默認(rèn)無(wú)限制。從那以后我每次部署 OpenLava都強(qiáng)制走一遍bjobs -a lsload -u tail -5 /var/openlava/log/lsbatchd.log三連查哪怕只是單機(jī)測(cè)試。因?yàn)閛lstart的靜默特性太容易給人“已啟動(dòng)”的錯(cuò)覺(jué)而真正的通路必須用作業(yè)跑出來(lái)。配置文件寫錯(cuò)一個(gè)字母bjobs就永遠(yuǎn)停在PENDlsb.params里L(fēng)SB_SHAREDIR少個(gè)斜杠lsbatchd就連日志都不寫。這些不是理論風(fēng)險(xiǎn)是我在 7 個(gè)不同內(nèi)核版本、4 種 Python 環(huán)境、3 套網(wǎng)絡(luò)配置下親手驗(yàn)證過(guò)的確定性路徑。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取