Skip to content

Zeroplex 生活隨筆

軟體開發和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Linux

在 Linux 上用 mdadm 建立磁碟陣列 (RAID)

Posted on 2022 年 1 月 11 日2022 年 9 月 19 日 By 日落 在〈在 Linux 上用 mdadm 建立磁碟陣列 (RAID)〉中有 1 則留言

手上已有一台現成的 NAS,不過自己從頭跑一次才會知道細節。

格式化磁碟

其實使用 mdadm 建立磁碟陣列之前,並不一定需要先建立磁碟分割區,也可以直接使用整顆硬碟直接做。二種作法僅有些微差異,詳細內容可以參考 kernal.org 的討論。

假設除了基本硬碟 sda 以外,其他還有 sdb1、sdc1、sdd1、sde1、sdf1、sdg1 共 6 個分割區要格式化為 ext4,一個方法是 mkfs.ext4 一個一個硬碟慢慢來,另一個是寫 script 自動處理。以下範例是除了 sda 以外的所有分割區都格式化為 ext4:

# 沒看懂前不要複製貼上,很危險
for DEV in $(ls sd*1 | grep -v sda); do
    yes y | sudo mkfs.ext4  $DEV
done

建立 RAID

東西準備好以後,就可以換 mdadm 上場了。

建立新的 RAID 用的是參數 --create,指令大致如下:

mdadm --create /dev/md/md0 \
      --level=6 \
      --raid-devices=6 \
      /dev/sd[bcdefg]1
  • /dev/md/md0:磁碟陣列建立以後欲使用的 device name。除了 md0 以外,也可以用 md_home 等較為易懂的方式命名。
  • --level:要使用什麼類型的磁碟陣列。RAID 1 (mirror) 就給 --level=1;RAID 6 就給 --level=6
  • --raid-devices:這個磁碟陣列總用要用幾個 device 來建立。由於建立 RAID 時,不一定一次就要給足硬碟,所以這個參數要給正確。
  • /dev/sdX:要用來建立 RAID 的硬碟、或磁碟分割。把 device ID 當作參數一個一個補齊 (範例是偷懶的寫法)

如果一切正常,就不會顯示錯誤訊息,且可以透過 /proc/mdstat 來檢視 RAID 建立的進度:

....
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md-main started.

$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md127 : active raid6 sdg1[5] sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0]
      121024512 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [=>...................]  resync =  5.2% (1573464/30256128) finish=88.5min speed=5397K/sec
      
unused devices: <none>

RAID 建立完成後,會在 /dev 變成一個 device,把 RAID 的資訊寫入 mdadm.conf 設定檔中:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

在 mount 之前,記得先用 mkfs 格式化。

一切都順利的話,可以在 /dev/disk/by-uuid 看到新的 UUID,接著就可以使用一般的方式去 fstab 設定自動掛載的資料了。

參考資料:A guide to mdadm – Linux Raid Wiki

刪除 RAID

步驟為:停止 RAID => 刪除 RAID。

使用 --stop 來停止、umount RAID md0:

mdadm --stop /dev/md/md0

mdadm 會在硬碟中寫入 metadata 來識別資訊,可以使用 lsblk 看出來:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME          SIZE FSTYPE            TYPE MOUNTPOINT
loop0        60.7M squashfs          loop /snap/lxd/21843
....
sda         238.5G                   disk
├─sda1         60G btrfs             part /var/lib
└─sda2      178.5G btrfs             part
sdb          28.9G linux_raid_member disk
sdc          28.9G linux_raid_member disk
sdd          28.9G linux_raid_member disk
sde          28.9G linux_raid_member disk
sdf          28.9G linux_raid_member disk
sdg          28.9G linux_raid_member disk

接下來使用 --zero-superblock 來把 metadata 清乾淨:

mdadm --zero-superblock /dev/sd[bcdefg]1

最後再用 lsblk 確定一次,只要沒有出現 linux_raid_member 就可以放心將硬體資源挪作他用了。

參考資料:How to Remove mdadm RAID Devices – redhatlinux.guru

Tags:Linux

Linux 中用來接 UPS 的工具

Posted on 2022 年 1 月 11 日2022 年 1 月 11 日 By 日落 在〈Linux 中用來接 UPS 的工具〉中尚無留言

用來和 APC UPS 溝通的工具是 apcupsd。另外一個工具是 upsmon (在 nut-client package 中)。

在 Ubuntu 下安裝:

sudo apt install apcupsd nut-client
Tags:Linux, UPS

交大的 Kali Linux mirror

Posted on 2021 年 12 月 24 日2021 年 12 月 24 日 By 日落 在〈交大的 Kali Linux mirror〉中尚無留言

交大計中有 Kali Linux 的 mirror site,這應該是台灣國內速度最快的 mirror:

deb https://kali.cs.nctu.edu.tw/kali
Tags:Linux

Linux Console 中 cd 的指令並非 GNU 工具

Posted on 2021 年 12 月 1 日2021 年 12 月 1 日 By 日落 在〈Linux Console 中 cd 的指令並非 GNU 工具〉中尚無留言

有使用 Linux 作為伺服器的人應該都算熟悉終端機操作界面。

常用的檔案操作工具有 ls、cat、mv、cp 等等,這些都是 GNU project 提供的開源工具,可以自行下載原始碼並自行編譯、部屬在需要用到的平台上使用。但 cd 這個切換目錄的指令呢?

用 which、whereis 都查不到 cd 這個檔案到底儲存在哪個目錄下,因為真的沒這檔案。

cd 並不在 /bin 或 /usr/local/bin 目錄下,其實是 shell (sh, tcsh, bash 等) 內建的指令。所以即使在不同的系統上,只要有正確安裝 shell,就有 cd 這個指令來切換 working directory。

備註:怎麼發現的?就不小心 sudo rm -fr / 而已 … _Drz

Tags:Bash, Linux

駭客軍團之 shebang

Posted on 2021 年 9 月 27 日2021 年 9 月 27 日 By 日落 在〈駭客軍團之 shebang〉中尚無留言

在駭客軍團的第 5 集約 39 分附近,因為失去「黑暗軍團」的幫忙,駭客想要馬上執行惡意程式來破壞「鋼山」公司的主機,如果有注意到的話,終端機的指令大致如下:

$ cd /opt/2/task/22/fdinfo/fsociety/hscripts
$ ./fuxsocy

影片中直接使用 ./ 來執行特定指令或 script,但並沒有特別指定要用 shell 或是要用 python?那這樣的話,電腦怎麼知道是執行檔可以直接載入記憶體中執行?或是否需要其他直譯器來執行?

Linux 和 Unix 在設計時有想到這個問題,目前大多數的解決方法,就是在檔案的第一行最前面加上 #! 符號作為標示,在標示後面跟著直譯器的絕對路徑,這樣就可以知道開發者需要使用哪個直譯器來跑這個 script。這個作法後來被稱為「shebang」。

More “駭客軍團之 shebang” »

Tags:Bash, Linux

文章分頁

上一頁 1 ... 12 13 14 ... 33 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Raspberry Pi Ubuntu Unix Vim Web Windows XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.