現在要加裝一顆硬碟做 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)#!/bin/bashsh /root/transfer/mysql_backup.sh
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
在過渡機 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 0Raid Level : raid1Array Size : 927881216 (884.90 GiB 950.15 GB)Used Dev Size : 927881348 (884.90 GiB 950.15 GB)Raid Devices : 2Total Devices : 1State : clean, degradedActive Devices : 1Working Devices : 1Failed Devices : 0Spare Devices : 0UUID : 2530f642:378ddc33:4d224eae:09392b5fNumber Major Minor RaidDevice State0 8 0 0 active sync /dev/sda2 0 0 2 removed
把舊硬碟拿去裝在 Windows 上,刪除全部分割區,再將整顆硬碟格式化。
然後再裝回 CentOS 7,開機。
mdadm --detail /dev/md126mdadm --detail /dev/md126/dev/md126:Container : /dev/md/imsm0, member 0Raid Level : raid1Array Size : 927881216 (884.90 GiB 950.15 GB)Used Dev Size : 927881348 (884.90 GiB 950.15 GB)Raid Devices : 2Total Devices : 2State : clean, degraded, recoveringActive Devices : 1Working Devices : 2Failed Devices : 0Spare Devices : 1Rebuild Status : 1% completeUUID : 2530f642:378ddc33:4d224eae:09392b5fNumber Major Minor RaidDevice State1 8 0 0 active sync /dev/sda0 8 16 1 spare rebuilding /dev/sdb
/dev/md126:Container : /dev/md/imsm0, member 0Raid Level : raid1Array Size : 927881216 (884.90 GiB 950.15 GB)Used Dev Size : 927881348 (884.90 GiB 950.15 GB)Raid Devices : 2Total Devices : 2State : cleanActive Devices : 2Working Devices : 2Failed Devices : 0Spare Devices : 0UUID : 2530f642:378ddc33:4d224eae:09392b5fNumber Major Minor RaidDevice State1 8 0 0 active sync /dev/sda0 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
沒有留言:
張貼留言