2016年10月28日 星期五

伺服器加裝硬碟做Raid1

原本實體伺服器上安裝 CentOS 6.5 ,單一硬碟,沒有陣列。
現在要加裝一顆硬碟做 raid 1。新系統預計使用 CentOS 7.2

步驟摘要:
先準備一台過渡機,安裝好 CentOS 7.2。(使用 Windows + VirtualBox)
將資料從實體伺服器移轉到過渡機。(系統帳號群組、資料庫、網頁檔)
將新硬碟加裝到實體伺服器上,做成 raid 1
在實體伺服器安裝 CentOS 7.2。
拔掉一顆硬碟,拿到別台PC做格式化。觀察陣列狀態。
將硬碟裝回實體伺服器,觀察陣列狀態。
將資料由過渡機移轉回去實體伺服器。

帳號與群組

在實體伺服器 CentOS6.5 (IP: 192.168.1.1)
mkdir /root/transfer
設定使用者id最小號碼
export UGIDLIMIT=500
複製使用者帳號
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/transfer/account/passwd.mig
複製群組帳號
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/transfer/account/group.mig
複製/etc/shadow
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/transfer/account/shadow.mig
複製/etc/gshadow
cp /etc/gshadow /root/transfer/account/gshadow.mig

在過渡機 CentOS 7.2 (IP: 192.168.1.2)
備份預設的帳號資料
cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root
將 CentOS 6.5 的帳號檔複製過來
mkdir -p /root/transfer/account/old
rsync -avHP --delete --rsh='ssh -p 22' root@192.168.1.1:"/root/transfer/account/" "/root/transfer/account/old/"
重新整理使用者代號、群組代號

在 CentOS 7.2 ,新增的使用者代號是從 1000 開始,而且有些預設的帳號 ID 大於 500 。例如 setroubleshoot 是 990,sssd 是 989。因此我手動將原本的使用者帳號 id 與群組 id 調成 1501 開始。

網頁資料

在實體伺服器 CentOS6.5 (IP: 192.168.1.1)  
service httpd stop

在過渡機 CentOS 7.2 (IP: 192.168.1.2)
mkdir -p /root/transfer/etc/httpd
rsync -avHP --delete --rsh='ssh -p 22' root@192.168.1.1:"/etc/httpd/" "/root/transfer/etc/httpd/"
mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.original.conf
cp /root/transfer/etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf
cp /root/transfer/etc/httpd/conf.d/vhosts.conf /etc/httpd/conf.d/vhosts.conf
mkdir -p /var/www/websites
rsync -avHP --delete --rsh='ssh -p 22' root@192.168.1.1:"/var/www/websites/" "/var/www/websites/"
chmod 2775  -R /var/www/websites/*
chmod 555 /var/www/websites/*

資料庫

在實體伺服器 CentOS6.5 (IP: 192.168.1.1) 
vim /root/transfer/mysql_backup.sh
#!/bin/bash

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
MKDIR="$(which mkdir)"
RM="$(which rm)"
MV="$(which mv)"
ZIP="$(which zip)"

# database connection
db_user="root"
db_passwd="mypassword"
db_host="localhost"

#backup directory
backup_dir="/root/transfer/database"
cd $backup_dir

# get all databases
all_dbs="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"
ymd=$(date "+%Y%m%d")
for db in $all_dbs
do
        # skip database
        if [ "$db" == "information_schema" ] || [ "$db" == "mysql" ] || [ "$db" == "performance_schema" ]; then
                continue
        fi

        # backup database
        sqlfile="$db"_$ymd.sql
        $MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db --databases > $sqlfile
done
sh /root/transfer/mysql_backup.sh

在過渡機 CentOS 7.2 (IP: 192.168.1.2)
rsync -avHP --delete --rsh='ssh -p 22' root@192.168.1.1:"/root/transfer/database/" "/root/transfer/database/"
mysql --user=root -p'mypassword' < database1.sql
mysql --user=root -p'mypassword' < database2.sql
......

mysql --user=root -p'mypassword'
GRANT ALL PRIVILEGES ON dbname1.* TO 'username1'@'localhost' identified BY 'mypassword1';
GRANT ALL PRIVILEGES ON dbname2.* TO 'username2'@'localhost' identified BY 'mypassword2';
......

陣列

伺服器是使用主機板內建 intel 晶片
Intel ®  C222 chipset with RSTe RAID support, SATA RAID 0, 1, 5, 10
應該算是低階伺服器吧。

按照英文說明手冊進 bios 調一調

按 F2 進 Bios

@Set Intel Onboard SATA RAID in EFI Mode or Legacy Mode
Advanced > PCI Configuration > Lunch Storage OpROM policy
選擇 Legacy

Boot Options > Boot Mode
選擇 Legacy

(原本想使用 UEFI ,但是晶片好像不支援陣列。開機階段過了POST之後無法按 Ctrl + i 進入陣列設定,試了一陣子之後放棄,改用 Legacy)

@Enabling Intel Onboard SATA RAID
Advanced > SATA Configuration > SATA Mode
將 AHCI 改成 RAID

然後重開機,按 Ctrl + i ,進入 raid 設定介面,將這兩顆硬碟設成 raid1。
再重開機,開始安裝 CentOS 7.2

安裝完之後發現,發現這該死的伺服器沒有為 CentOS 提供陣列管理工具。只有那個主機板簡單的設定介面。只能建立陣列、刪除陣列、取消陣列,沒有重建的功能。後來發現 linux 上有 mdadm 這東西。網路上提到 mdadm 大部份都在講建立 soft raid。原本以為內建晶片這種不算吧,後來才知道這種也算是 software raid 。而且 mdadm 真的可以偵測那個陣列,而且 CentOS 會自己自動進行陣列重建。

硬碟重建測試

新舊兩顆硬碟在安裝的時候,使新硬碟成為 sda ,舊硬碟成為 sdb
安裝好 CentOS7.2 之後,關機,把舊硬碟拔掉,開機。
mdadm --detail /dev/md126
/dev/md126:
      Container : /dev/md/imsm0, member 0
     Raid Level : raid1
     Array Size : 927881216 (884.90 GiB 950.15 GB)
  Used Dev Size : 927881348 (884.90 GiB 950.15 GB)
   Raid Devices : 2
  Total Devices : 1

          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0


           UUID : 2530f642:378ddc33:4d224eae:09392b5f
    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       2       0        0        2      removed

把舊硬碟拿去裝在 Windows 上,刪除全部分割區,再將整顆硬碟格式化。
然後再裝回 CentOS 7,開機。
mdadm --detail /dev/md126
/dev/md126:
      Container : /dev/md/imsm0, member 0
     Raid Level : raid1
     Array Size : 927881216 (884.90 GiB 950.15 GB)
  Used Dev Size : 927881348 (884.90 GiB 950.15 GB)
   Raid Devices : 2
  Total Devices : 2

          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 1% complete


           UUID : 2530f642:378ddc33:4d224eae:09392b5f
    Number   Major   Minor   RaidDevice State
       1       8        0        0      active sync   /dev/sda
       0       8       16        1      spare rebuilding   /dev/sdb
mdadm --detail /dev/md126
/dev/md126:
      Container : /dev/md/imsm0, member 0
     Raid Level : raid1
     Array Size : 927881216 (884.90 GiB 950.15 GB)
  Used Dev Size : 927881348 (884.90 GiB 950.15 GB)
   Raid Devices : 2
  Total Devices : 2

          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0


           UUID : 2530f642:378ddc33:4d224eae:09392b5f
    Number   Major   Minor   RaidDevice State
       1       8        0        0      active sync   /dev/sda
       0       8       16        1      active sync   /dev/sdb



ll /dev/md*
mdadm --detail /dev/md126
/dev/md126:
      Container : /dev/md/imsm0, member 0
     Raid Level : raid1
     Array Size : 927881216 (884.90 GiB 950.15 GB)
  Used Dev Size : 927881348 (884.90 GiB 950.15 GB)
   Raid Devices : 2
  Total Devices : 2

          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0


           UUID : 2530f642:378ddc33:4d224eae:09392b5f
    Number   Major   Minor   RaidDevice State
       1       8        0        0      active sync   /dev/sda
       0       8       16        1      active sync   /dev/sdb
參考:
不景氣下的省錢妙招 在linux上玩 Soft RAID
鳥哥 14.2 軟體磁碟陣列 (Software RAID)
Detecting, querying and testing
How to check mdadm raids while running?
Intel® RAID Controller Hubs—Linux* Support


沒有留言:

張貼留言