linux 基金會已經發起了一個全新的 lfcs(linux 基金會認證系統管理者linux foundation certified sysadmin)認證,旨在讓來自世界各地的人有機會參加到 lfcs 測試,獲得關于有能力在 linux 系統中執行中級系統管理任務的認證。該認證包括:維護正在運作的系統和服務的能力、全面監控和分析的能力以及何時向上遊團隊請求支援的決策能力。

lfcs 系列第六講
以下視訊介紹了 linux 基金會認證程式。
<video></video>
本講是系列教程中的第六講,在這一講裡,我們将會解釋如何将分區組裝為 raid 裝置——建立和管理系統備份。這些都是 lfcs 認證中的必備知識。
<a></a>
這種被稱為獨立磁盤備援陣列(redundant array of independent disks)(raid)的技術是将多個硬碟組合成一個單獨邏輯單元的存儲解決方案,它提供了資料備援功能并且改善硬碟的讀寫操作性能。
然而,實際的容錯和磁盤 i/o 性能硬碟取決于如何将多個硬碟組裝成磁盤陣列。根據可用的裝置和容錯/性能的需求,raid 被分為不同的級别,你可以參考 raid 系列文章以獲得每個 raid 級别更詳細的解釋。
<a href="https://linux.cn/article-6085-1.html">在 linux 下使用 raid(一):介紹 raid 的級别和概念</a>
我們選擇用于建立、組裝、管理、監視軟體 raid 的工具,叫做 mdadm (multiple disk admin 的簡寫)。
<code>---------------- debian 及衍生版 ----------------</code>
<code># aptitude update && aptitude install mdadm</code>
<code>---------------- red hat 和基于 centos 的系統 ----------------</code>
<code># yum update && yum install mdadm</code>
<code>---------------- opensuse 上 ----------------</code>
<code># zypper refresh && zypper install mdadm #</code>
組裝已有分區作為 raid 裝置的過程由以下步驟組成。
1. 使用 mdadm 建立陣列
如果先前其中一個分區已經格式化,或者作為了另一個 raid 陣列的一部分,你會被提示以确認建立一個新的陣列。假設你已經采取了必要的預防措施以避免丢失重要資料,那麼可以安全地輸入 y 并且按下回車。
<code># mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1</code>
建立 raid 陣列
2. 檢查陣列的建立狀态
在建立了 raid 陣列之後,你可以檢查使用以下指令檢查陣列的狀态。
<code># cat /proc/mdstat</code>
<code>or</code>
<code># mdadm --detail /dev/md0 [more detailed summary]</code>
檢查 raid 陣列的狀态
3. 格式化 raid 裝置
4. 監控 raid 陣列服務
讓監控服務時刻監視你的 raid 陣列。把<code># mdadm --detail --scan</code>指令輸出結果添加到<code>/etc/mdadm/mdadm.conf</code>(debian及其衍生版)或者<code>/etc/mdadm.conf</code>(cent0s/opensuse),如下。
<code># mdadm --detail --scan</code>
監控 raid 陣列
<code># mdadm --assemble --scan [assemble the array]</code>
為了確定服務能夠開機啟動,需要以 root 權限運作以下指令。
debian 及其衍生版
debian 及其衍生版能夠通過下面步驟使服務預設開機啟動:
<code># update-rc.d mdadm defaults</code>
在 <code>/etc/default/mdadm</code> 檔案中添加下面這一行
<code>autostart=true</code>
centos 和 opensuse(systemd-based)
<code># systemctl start mdmonitor</code>
<code># systemctl enable mdmonitor</code>
centos 和 opensuse(sysvinit-based)
<code># service mdmonitor start</code>
<code># chkconfig mdmonitor on</code>
5. 檢查raid磁盤故障
在支援備援的的 raid 級别中,在需要時會替換故障的驅動器。當磁盤陣列中的裝置出現故障時,僅當存在我們第一次建立陣列時預留的備用裝置時,磁盤陣列會将自動啟動重建。
檢查 raid 故障磁盤
否則,我們需要手動将一個額外的實體驅動器插入到我們的系統,并且運作。
<code># mdadm /dev/md0 --add /dev/sdx1</code>
/dev/md0 是出現了問題的陣列,而 /dev/sdx1 是新添加的裝置。
6. 拆解一個工作陣列
如果你需要使用工作陣列的裝置建立一個新的陣列,你可能不得不去拆解已有工作陣列——(可選步驟)
<code># mdadm --stop /dev/md0 # stop the array</code>
<code># mdadm --remove /dev/md0 # remove the raid device</code>
<code># mdadm --zero-superblock /dev/sdx1 # overwrite the existing md superblock with zeroes</code>
7. 設定郵件通知
你可以配置一個用于發送通知的有效郵件位址或者系統賬号(確定在 mdadm.conf 檔案中有下面這一行)。——(可選步驟)
<code>mailaddr root</code>
在這種情況下,來自 raid 背景監控程式所有的通知将會發送到你的本地 root 賬号的郵件箱中。其中一個類似的通知如下。
說明:此次通知事件和第5步中的例子相關。此處一個裝置被标志為錯誤,并且一個空閑的裝置自動地被 mdadm 加入到陣列。我們用完了所有“健康的”空閑裝置,是以我們得到了通知。
raid 監控通知
raid 0
陣列總大小是最小分區大小的 n 倍,n 是陣列中獨立磁盤的個數(你至少需要兩個驅動器/磁盤)。運作下面指令,使用 /dev/sdb1 和 /dev/sdc1 分區組裝一個 raid 0 陣列。
常見用途:用于支援性能比容錯更重要的實時應用程式的設定
raid 1 (又名鏡像)
陣列總大小等于最小分區大小(你至少需要兩個驅動器/磁盤)。運作下面指令,使用 /dev/sdb1 和 /dev/sdc1 分區組裝一個 raid 1 陣列。
<code># mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1</code>
常見用途:作業系統的安裝或者重要的子檔案夾,例如 /home
raid 5 (又名奇偶校驗碼盤)
陣列總大小将是最小分區大小的 (n-1) 倍。所減少的大小用于奇偶校驗(備援)計算(你至少需要3個驅動器/磁盤)。
說明:你可以指定一個空閑裝置 (/dev/sde1) 替換問題出現時的故障部分(分區)。運作下面指令,使用 /dev/sdb1, /dev/sdc1, /dev/sdd1,/dev/sde1 組裝一個 raid 5 陣列,其中 /dev/sde1 作為空閑分區。
<code># mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1</code>
常見用途:web 和檔案服務
raid 6 (又名雙重奇偶校驗碼盤)
陣列總大小為(ns)-2s,其中n為陣列中獨立磁盤的個數,s為最小磁盤大小。
說明:你可以指定一個空閑分區(在這個例子為 /dev/sdf1)替換問題出現時的故障部分(分區)。
運作下面指令,使用 /dev/sdb1, /dev/sdc1, /dev/sdd1, /dev/sde1 和 /dev/sdf1 組裝 raid 6 陣列,其中 /dev/sdf1 作為空閑分區。
<code># mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde --spare-devices=1 /dev/sdf1</code>
常見用途:大容量、高可用性要求的檔案伺服器和備份伺服器。
raid 1+0 (又名鏡像條帶)
因為 raid 1+0 是 raid 0 和 raid 1 的組合,是以陣列總大小是基于兩者的公式計算的。首先,計算每一個鏡像的大小,然後再計算條帶的大小。
<code># mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]1 --spare-devices=1 /dev/sdf1</code>
常見用途:需要快速 io 操作的資料庫和應用伺服器
記住, raid 其所有的價值不是在于備份的替換者!在黑闆上寫上1000次,如果你需要的話,但無論何時一定要記住它。在我們開始前,我們必須注意的是,沒有一個放之四海皆準的針對所有系統備份的解決方案,但這裡有一些東西,是你在規劃一個備份政策時需要考慮的。
你的系統将用于什麼?(桌面或者伺服器?如果系統是應用于後者,那麼最重要的服務是什麼?哪個配置是痛點?)
你每隔多久備份你的系統?
你需要備份的資料是什麼(比如檔案/檔案夾/資料庫轉儲)?你還可以考慮是否需要備份大型檔案(比如音頻和視訊檔案)。
這些備份将會存儲在哪裡(實體位置和媒體)?
備份你的資料
方法1:使用 dd 指令備份整個磁盤。你可以在任意時間點通過建立一個準确的鏡像來備份一整個硬碟或者是分區。注意當裝置是離線時,這種方法效果最好,也就是說它沒有被挂載并且沒有任何程序的 i/o 操作通路它。
這種備份方法的缺點是鏡像将具有和磁盤或分區一樣的大小,即使實際資料占用的是一個很小的比例。比如,如果你想要為隻使用了10%的20gb的分區建立鏡像,那麼鏡像檔案将仍舊是20gb。換句話來講,它不僅包含了備份的實際資料,而且也包含了整個分區。如果你想完整備份你的裝置,那麼你可以考慮使用這個方法。
從現有的裝置建立一個鏡像檔案
<code># dd if=/dev/sda of=/system_images/sda.img</code>
<code>或者</code>
<code>--------------------- 可選地,你可以壓縮鏡像檔案 -------------------</code>
<code># dd if=/dev/sda | gzip -c > /system_images/sda.img.gz</code>
從鏡像檔案恢複備份
<code># dd if=/system_images/sda.img of=/dev/sda</code>
<code>--------------------- 根據你建立鏡像檔案時的選擇(譯者注:比如壓縮) ----------------</code>
<code># gzip -dc /system_images/sda.img.gz | dd of=/dev/sda</code>
方法3:使用 rsync 指令同步檔案。rsync 是一種多功能遠端(和本地)檔案複制工具。如果你想要從網絡裝置備份或同步檔案,rsync 是一種選擇。
無論是你是正在同步兩個本地檔案夾還是本地 < — > 挂載在本地檔案系統的遠端檔案夾,其基本文法是一樣的。
<code># rsync -av source_directory destination_directory</code>
在這裡,-a 遞歸周遊子目錄(如果它們存在的話),維持符号連結、時間戳、權限以及原本的屬主/屬組,-v 顯示詳細過程。
rsync 同步檔案
除此之外,如果你想增加在網絡上傳輸資料的安全性,你可以通過 ssh 協定使用 rsync。
通過 ssh 同步本地到遠端檔案夾
<code># rsync -avzhe ssh backups root@remote_host:/remote_directory/</code>
這個示例,本地主機上的 backups 檔案夾将與遠端主機上的 /root/remote_directory 的内容同步。
在這裡,-h 選項以易讀的格式顯示檔案的大小,-e 标志用于表示一個 ssh 連接配接。
rsync 同步遠端檔案
通過ssh同步遠端到本地檔案夾
在這種情況下,交換前面示例中的 source 和 destination 檔案夾。
<code># rsync -avzhe ssh root@remote_host:/remote_directory/ backups</code>
請注意這些隻是 rsync 用法的三個示例而已(你可能遇到的最常見的情形)。對于更多有關 rsync 指令的示例和用法 ,你可以檢視下面的文章。
<a href="http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/">在 linux 下同步檔案的10個 rsync指令</a>
作為一個系統管理者,你需要確定你的系統表現得盡可能好。如果你做好了充分準備,并且如果你的資料完整性能被諸如 raid 和系統日常備份的存儲技術支援,那你将是安全的。
如果你有有關完善這篇文章的問題、評論或者進一步的想法,可以在下面暢所欲言。除此之外,請考慮通過你的社交網絡簡介分享這系列文章。
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.