2020年2月27日 星期四

華碩伺服器的磁碟控制器無法建立 RAID 5/6 及硬碟失敗處理

無法建立 RAID 5/6

參考華為的網站

Personality Mode设置为JBOD-Mode导致RAID卡部分功能不可以用

正常應該可以建立 RAID 6 的磁碟陣列,但是設成 JBOD 就只有 RAID 0, 1, 00, 10 可以選。

開機後,按“Ctrl+R”進入 RAID 管理界面。再按“Ctrl+P”或“Ctrl+P”切换到“Ctrl Mgmt”頁簽。

再選擇“Next”並按“Enter”,進入下一頁設定,將“Personality Mode”設置為「RAID-Mode」。


設置完成的 Disk Array 如下。



在 Properties 頁,分別顯示如下




開機時的相片

硬碟失敗處理

建立了由 6顆 6TB HD 組成的 RAID 6,覺得可以放心了。但有一天,卻回報 3顆 HD 亮紅燈,真慘。

把伺服器關掉重開,硬碟抽出再重新插入,看看重新開機會不會就好了。但很不幸,還是一樣 3顆 HD 亮紅燈。只好冷靜下來,看有沒有機會救回來。

使用 megacli 指令觀察硬碟狀態,有一顆 Failed,2顆 OffLine,Failed 和 OffLine 有什麼差別呢。

[root@get-182 ~]# ]# megacli -PDList -aALL -Nolog|grep '^Firm'
Firmware state: JBOD
Firmware state: Failed
Firmware state: Online, Spun Up
Firmware state: Offline
Firmware state: Offline
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up

看看 disk array 的資訊,因為有 2 個 disk array,所以這個是 Virtual Drive: 1。

[root@get-182 ~]# ]# megacli -ldinfo -lALL -aALL
                                    
Virtual Drive: 1 (Target Id: 1)
Name                :VD_24TB
RAID Level          : Primary-6, Secondary-0, RAID Level Qualifier-3
Size                : 21.830 TB
Sector Size         : 512
Is VD emulated      : Yes
Parity Size         : 10.915 TB
State               : Offline
Strip Size          : 256 KB
Number Of Drives    : 6
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAhead, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
Bad Blocks Exist: No
PI type: No PI

Is VD Cached: No

上面的 State 顯示為 OffLine。

既然有2顆硬碟是 OffLine,是不是可能是好的呢? 只是因為一些原因被設為 OffLine。若把它設為 OnLine,會如何呢? 就死馬當活馬醫吧,來試試看吧。

為了保險起見,先將其中一顆設為 OnLine 就好,若成功再設另一顆。但事後證明這想法實在錯了,應該同時將兩顆都設為 OnLine。因為後來上線後,硬碟內容就改變了,另一顆再加進來就整個死了。後來花了不少時間 rebuild,而且為了加快 rebuild 的速度,還不能 mount,整個伺服器不能運作。但事情很難講,也許將兩顆同時設為 OnLine 也不能成功。總之,磁碟陣列恢復運作,很高興,就等另一顆硬碟送回裝上吧。

將其中一顆設為 OnLine,磁碟陣列的 State 顯示為 Degraded,等到另一顆加上,rebuild 完成後,磁碟陣列的 State 顯示為 Partially Degraded。全部硬碟都加入,rebuild 完成後,State 則為 Optimal。

將硬碟設為 OnLine 的方式,可以用下指令的,但太不保險了。直接重新開機,按 Ctrl-R 進入磁碟陣列的管理界面,在 [PD Mgmt] 的功能下,移到 OffLine 的硬碟,將其設為 OnLine 即可。會跳出警告的畫面,提醒磁碟陣列可能無法運作。這提醒是有意義的,第一次的結果是恢復運作,但第二次就不能運作了,只好將其再次設為 OffLine。

最後要將另一顆 OffLine 的硬碟加回去,就費了一些功夫。因為只要插回去,它就會被認為是原來的一個硬碟。只好把它拔下來,用另個 Linux 系統,使用 cfdisk 把原來的資訊都清掉。cfdisk 會提醒磁碟含有 disk array 的資訊,就不管了。然後再將硬碟插回去,它就直接 rebuild 了。

2020年2月26日 星期三

Gentoo Linux -- 建立自己用的 overlay


在此,將自用的 overlay 放在 ~/overlays/mybox 的目錄下。在此目錄下,必須包含下面 2個檔。

(1) ~/overlays/mybox/profiles/repo_name,內容只有一行,如下,

localrepo

(2) ~/overlays/mybox/metadata/layout.conf ,內容如下,

masters = gentoo
sign-commits = false
sign-manifests = false

然後在 /etc/portage 的目錄下,建立目錄 repos.conf (假如此目錄不存在的話)。再在該目錄下建立 my-overlay.conf 檔案,內容如下,

[localrepo]
location = /home/ajax/overlays/mybox
priority = 100

注意,repo_name 要互相對應。

另外,要記得把自己加入 portage 的 group。

ebuild 測試步驟摘要

  • 修改後,執行 ebuild gcin-2.8.5.ebuild digest,重新建立 Manifest
  • ebuild gcin-2.8.5.ebuild clean,清除暫存檔
  • ebuild gcin-2.8.5.ebuild prepare,執行 src_prepare() 的部分
  • ebuild gcin-2.8.5.ebuild configure,執行 src_configure() 的部分
  • ebuild gcin-2.8.5.ebuild compile,執行 src_compile() 的部分
  • ebuild gcin-2.8.5.ebuild install,執行 src_install() 的部分
  • ebuild gcin-2.8.5.ebuild qmerge,移除舊版本,安裝新的版本

參考 ArchLinux 的安裝檔

環境隨時都在改變,常常某個地方改變,程式就安裝失敗。以個人之力,不可能找出各種問題。出錯時,或要更新至新版時,ArchLinux 的安裝檔,就是非常好的參考。

2020年1月20日 星期一

ikbc Table E401 拆解

ikbc Table E401 是 87鍵發光機械式鍵盤,使用 Cherry 軸。也是難得可以買到搭配一體式手托的87鍵機械鍵盤。適合用來加裝 Trackpoint 小紅點指標,因為要在空白鍵的下方加裝按鍵,有一體式手托會比較好固定。

既然是要改裝,第一個最關心的是好拆裝嗎? 挖孔固定 Trackpoint 電路後,會影響到多少電路,好復原嗎? 所以一拿到鍵盤,第一步當然是要把它拆開。

因為網路上找不到別人拆解的紀錄,只好自己慢慢拆。翻過來,從背面完全看不到螺絲。在網路上有找到別人拆其他型號的 ikbc 鍵盤的說明,說只有卡筍,沒有螺絲。

就開始用保特瓶的自製翹片開始挖,挖開兩邊的卡筍之後,發現還是很緊,拔不開來,懷疑有螺絲固定。

先把止滑墊拔開一些,果然找到後面有兩顆,前面外側各有一顆。把這4顆卸下之後,幾乎可以分開了,但還是拔不開。


果然在標籤貼紙下有一顆,反正已經破保,就直接把貼紙戳破吧,下次要拆時,才不要再猜一次那裡有螺絲。

卸下標籤下的螺絲後,還是拆不開,只好再拔止滑墊,看那裡還有螺絲,在靠手這邊又找到兩顆。所以總共有7顆螺絲。


拆下背板後,鍵盤和面板仍然不太好分離,耐心找了好久,稍用力把它扳開,發現它是用卡扣卡住。扳開時,把其中一個卡扣給弄壞一些,應該不致於影響日後使用。

拆開後

螺絲位置標示

音量控制旋扭

鍵盤矩陣圖

拆鍵盤是為了要加裝 Thinkpad 的 Trackpoint (小紅點指標控制器) ,難免會破壞到電路,因此要儘可能的把電路做個整理,以便復原。下面是此鍵盤的按鍵矩陣圖。LED 的矩陣圖就沒有整理了,不亮也不影響功能,就省一些事吧。

7x15的矩陣,可以組合控制 105 鍵。

2020年1月17日 星期五

排氣管防燙布


目前的排氣管前段,看起來有點出來,加個防燙裝置會比較安心些。若有適合的防蓋是最好的,但好像不容易找到。只好用防燙布,雖然防燙布會影響散熱。

看到那個突出的排氣管前段,不曉得為何總有衝動想摸摸它。

在路邊看到的野狼,照個相參考一下,估算要多長的防燙布。

至少要20圈,前段周長約 13公分多,那就要 3公尺左右了。

在露天拍賣找到的拍賣,一次買5公尺,算4公尺的價格,再送2條束帶和橡膠手套。規格是 25mm 寬,顏色鈦合金。鈦金色,材質為鈦合金,隔熱溫度較高,可達900~1200度。收到的東西如下面的照片。


原以為5公尺會蠻大包的,沒想到只有小小的一包。用名片來當個比例,5公尺的防燙布就這麼一小卷。橡膠手套則是薄薄的一次性手套,要小心使用。束帶也是一次性的,用了就無法拆下,必須想辦法把它剪斷。

1月中就買了,但是天寒地凍,手不小心碰一下就痛得不得了。又常下雨,就等好天氣吧。另外,那個束帶只能裝上,很難拆下,就很猶豫要不要另外買用螺絲鎖的束帶。

最後,還是去買了兩個螺絲鎖的束帶。在實際纏繞時,發現可以拆裝的束帶還是比較方便。

一直等到 5月,疫情過得差不多,終於等到大好的天氣,可以動手纏了。拆排氣管,對非專業人士來講,是個大工程,就直接纏吧。住台北的公寓,只能找個空地來工作。先把機車停在路邊的人行道,有個高低差,不用蹲得辛苦。蹲累了,用安全帽當板凳。

防燙帶有玻璃纖維材料,要帶手套施工,不然細細的玻璃纖維刺入皮膚,會癢得不得了,嚴重還會紅腫,也會拖很久才好。按賣場說明,在纏繞之前,先把防燙布泡水,比較好施工。

由於它的編織方式,不注意就會一直脫落

把它打個結,避免一直脫落。脫線散開的部分,用工作剪剪掉。可能含有金屬成分和玻璃纖維,還蠻難剪的。

有自己纏過羽球拍的握把布,防燙布的纏法大概差不多吧。

注意施力方向,先把防燙帶鬆鬆的繞在排氣管上。然後從頭開始繞,纏一小段後,就可以把開始的部分鎖上束帶。5米的防燙帶,不曉得能纏多長的排氣管。我的想法主要是纏前面比較容易碰到那一段,所以就讓一圈與另一圈之間,重疊多一點。纏到一半,想休息一下,就把另一個束環鎖上,伸伸懶腰,再繼續工作。

完成了,只纏到煞車踏板前面。和我的原先的構想一致。

纏好後,出去試騎,布中的雜質在高溫下燃燒,真的是青煙裊裊,冒著陣陣的濃濃的白煙。

水分蒸乾後,恢復本色。

2019年11月22日 星期五

CentOS 8 安裝及使用 MegaCLI

以下參考Google 到的資訊,不過因為用到 libncurses.so.5,好像只能在 CentOS 7 上使用。

Step 1: Verify Your Hardware RAID Controller

執行下列指令,可得到 RAID controller 的資訊。
# lspci | grep -i raid
1a:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS-3 3108 [Invader] (rev 02)

Step 2: Download MegaCLI 

下載網址
Support Documents and Downloads

[Expand All],找到並下載最後版本的 MegaCLI
unzip 後,到 Linux 的目錄下,執行安裝。並且建立 alias 方便使用
# yum localinstall MegaCli-8.07.14-1.noarch.rpm
# alias megacli='/opt/MegaRAID/MegaCli/MegaCli64'
# ln -sf /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli
# megacli

/opt/MegaRAID/MegaCli/MegaCli64: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

]# ls /usr/lib64/libncur*
/usr/lib64/libncurses.so.6    /usr/lib64/libncursesw.so.6
/usr/lib64/libncurses.so.6.1  /usr/lib64/libncursesw.so.6.1

經網友指正,執行下列指令,安裝 ncurses-compat-libs,即可解決上述問題
# dnf install ncurses-compat-libs

透過 docker 來執行

那就裝 docker 吧
參考網址  How to install Docker CE on RHEL 8 / CentOS 8


由於 containerd.io 的版本問題,只能裝較舊的版本
$ sudo dnf install docker-ce-3:18.09.1-3.el7
不過在 update 時,必須排除 docker-ce 相關的 package,另外 podman* 會造成衝突也要排除
$ sudo yum update exclude=docker* exclude=podman*

然後裝 docker-compose
$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
把它加上執行權限,然後移到 /usr/local/bin 的目錄下

然後就可以用 megacli 了
$ docker run --rm -ti --privileged kamermans/docker-megacli
      MegaCLI SAS RAID Management Tool  Ver 8.07.14 Dec 16, 2013
      Storage Command Line Tool  Ver 1.03.11 Jan 30, 2013
[root@6873acd250e5 megacli]# megacli -PDList -aALL -Nolog|grep '^Firm'
Firmware state: JBOD
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
[root@6873acd250e5 megacli]#
就這樣子了

進一步的使用說明可參考 LSI MegaRAID SAS。








2019年11月12日 星期二

Docker 無法啟動

有好一陣子沒用自己電腦的 docker 了,今天想改個系統,道然無法啟動 docker 了。
只用 systemctl status docker.service
實在看不出問題出在那裡。

找到下面的網頁,照著下面的指令可以查詳細的 log 資訊。
https://forum.manjaro.org/t/docker-service-cant-start-solved/93410/3

sudo journalctl --no-hostname --no-pager -b -u docker.service

非常多的訊息,慢慢追,直到下面這段訊息,就跳出來了
11月 13 15:24:36 dockerd[21959]: Error starting daemon: Devices cgroup isn't mounted

用上面的訊息再 Google,找到這個網頁,似乎和 systemd 有關。
https://github.com/docker/cli/issues/2104

Found the "bug"...
I forgot to mention in my previous comment that I use(d) systemd version 243.
With systemd 242 works everything flawlessly... :)
From the systemd changelog:
        * systemd now defaults to the "unified" cgroup hierarchy setup during
          build-time, i.e. -Ddefault-hierarchy=unified is now the build-time
          default. Previously, -Ddefault-hierarchy=hybrid was the default. This
          change reflects the fact that cgroupsv2 support has matured
          substantially in both systemd and in the kernel, and is clearly the
          way forward. Downstream production distributions might want to
          continue to use -Ddefault-hierarchy=hybrid (or even =legacy) for
          their builds as unfortunately the popular container managers have not
          caught up with the kernel API changes.
Sooo... Houston, we have a problem:
  1. systemd will (or already did) jump on the cgroupsv2 bandwagon...
  2. cgroupfs-mount tools does not work with newer systemd setups.
"Same" issue in kubernetes

再查 Gentoo 的 docker wiki,發現關於 systemd 的說明,要加上 USE flag: cgroup-hybrid。加上後重新 emerge,再重開就 OK 了。

https://wiki.gentoo.org/wiki/Docker#systemd

Docker service fails because cgroup device not mounted (systemd)

By default systemd uses hybrid cgroup hierarchy combining cgroup and cgroup2 devices. Docker still needs cgroup(v1) devices. Activate USE flag cgroup-hybrid for systemd.
Activate USE flag for systemd
FILE /etc/portage/package.use/systemd
sys-apps/systemd cgroup-hybrid
Install systemd with the new USE flags
root #emerge --ask --oneshot sys-apps/systemd



2019年11月7日 星期四

PostgreSQL 維護


SELECT pg_size_pretty( pg_database_size('dspace_getcdb_tst') );
pg_size_pretty: "2112 MB"


SELECT pg_size_pretty( pg_total_relation_size('bitstream') );
pg_size_pretty: "57 MB"



vacuum verbose analyze metadatavalue


Vacuum 前
metadatavalue
Table Size 320 MB
Toast Table Size 9480 kB
Indexes Size 376 MB

執行 Vacuum 指令
vacuum full verbose metadatavalue
INFO:  vacuuming "public.metadatavalue"
INFO:  "metadatavalue": found 1256 removable, 11800 nonremovable row versions in 40949 pages
DETAIL:  0 dead row versions cannot be removed yet.
CPU 0.35s/0.15u sec elapsed 0.50 sec.
Query returned successfully with no result in 693 ms.

Vacuum 後
metadatavalue
Table Size 2768 kB
Toast Table Size 7840 kB
Indexes Size 1120 kB


網誌存檔