顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

星期三, 5月 22, 2013

Linux server backup SOP (using mdadm)


Linux server backup SOP (using mdadm)

2013/2/8 更新 by Henry 

1. 關機 
shutdown

2. 拔出HDD0. 
unplug HDD0.

3. 用HDD1單獨開機,確認無誤。
power on by HDD1, confirm OS was booted up.

4. 關機,拔出HDD1,插入HDD0,確保HDD0開機無誤。
power off, unplug HDD1, insert HDD0 and confirm HDD0 can boot up into OS.

5. HDD0開機後,接著進行對HDD2的mirror. (HDD2 先不要放進去)
After HDD0 was booted up, we can continue to mirror HDD0 to HDD2 (HDD2 will be insert into server at step 7.

6. s001a:~ # mdadm --detail /dev/md0

....
....
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0        1      removed

7. tail -f /var/log/messages  裡面會show出新偵測到的硬碟資訊,比如說是sdX。
或著是用fdisk -l來看。

接著插入HDD2 

PS. 一般而言,原本的HDD會被系統認做/dev/sda ,Online插入的新硬碟,會被認作/dev/sdb , 可是,若這台Server有串接Storage,在用單一顆硬碟開機後,狀況會是/dev/sda 是HDD0, 接接著這些 /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde.....都是Storage劃分給Server的硬碟,因此插入新硬碟後,新硬碟的編號會是在Storage之後,比如是/dev/sdf。

接著可直接跳到STEP 10.

8.[WARNING]若是原本就是這台主機的備份硬碟,Step8~9 以前已經做過了,不需要再做,要非常小心sda/sdb的順序,以及對應到哪顆實體硬碟,否則會導致資料全部損毀。
copy old hdd partition (sda) to new hdd (sdb) by 

sfdisk -d /dev/sda | sfdisk /dev/sdb

9. [WARNING] compare partition table is the same with /dev/sda

fdisk -l /dev/sda 
fdisk -l /dev/sdb

10. Add mirror HDD to RAID. 
注意:mdX所對應的sdbX一定要先用mdadm --detail /dev/md0來確認,千萬不要矇著眼做,如果mirror錯partition, 系統是不會有問題,但是一定無法rebuild成功。

mdadm /dev/md0 --add /dev/sdb1
mdadm /dev/md1 --add /dev/sdb2
mdadm /dev/md2 --add /dev/sdb3
mdadm /dev/md3 --add /dev/sdb5

11. Checking rebuilding progress
mdadm --detail /dev/md0
mdadm --detail /dev/md1
mdadm --detail /dev/md2
mdadm --detail /dev/md3

12. After rebuilding successful, setup Grub Boot Loader to let each HD can boot by itself.
先確認哪一個md mount 給 / , 這邊範例是/dev/md0 mount 給 / .
12.1. s001a:~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               26G   12G   14G  47% /
udev                  7.9G  204K  7.9G   1% /dev
/dev/md2               11G   46M   10G   1% /home
/dev/md3               13G   97M   12G   1% /CDRagent

12.2 接著確認md0 是用/dev/sdb1

#mdadm --detail /dev/md0
...
...
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

12.3 接著確認/dev/sdb1已經有設上Boot Flag.

s001a:~ # fdisk -l /dev/sdb

Disk /dev/sdb: 146.8 GB, 146815737856 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        3264    26218048+  fd  Linux raid autodetect
/dev/sdb2            3265        3526     2104515   fd  Linux raid autodetect
/dev/sdb3            3527        4832    10490445   fd  Linux raid autodetect
/dev/sdb4            4833       17848   104551020    f  W95 Ext'd (LBA)
/dev/sdb5            4833        6399    12586896   fd  Linux raid autodetect
12.4 接著進Grub設定/dev/sda 與dev/sdb的MBR都能夠正確找到開機磁區與Kernel位置。

grub
device (hd0) /dev/sda  ##定義在Grub中hd0代表/dev/sda
root (hd0,0)   ##hd0,0 代表/dev/sda1, hd0,1 代表/dev/sda2 ,以此類推
setup (hd0)
device (hd1) /dev/sdb  ##定義在Grub中hd1代表/dev/sdb
root (hd1,0)   ##hd0,0 代表/dev/sdb1, hd0,1 代表/dev/sdb2 ,以此類推
setup (hd1)
quit
13. 大功告成。

星期六, 3月 23, 2013

[LINUX] No login prompt on console after boot

After upgrading from SuSE 10 SP3 to SuSE 11 SP1, there were no login prompt on console after boot, but network / service / application were all right, I can still ssh to this server, this may resulting by some init daemon is running FG, but I still not found which script is going FG....

Refer to Lost console login prompt--neither GUI or command line prompts display
and No login prompt on console after boot



星期一, 5月 02, 2011

變數-筆記


1.變數內容的刪除
# (從變數的前端開始將符合的字串刪除(刪除最短的)
## (從變數的前端開始將符合的字串刪除(刪除最長的)
%(從變數的後端開始將符合的字串刪除(刪除最短的)
%%(從變數的後端開始將符合的字串刪除(刪除最長的)

ex.
MAIL=/var/spool/mail/sixchen
去掉檔名,保留目錄名稱
echo ${MAIL%/*}
/var/spool/mail

去掉目錄,只留檔名
echo ${MAIL##/*/}
sixchen

2.變數內容的取代
/a/b  #a替換成b(只取代符合的第一個字串)
//a/b #a替換成b(取代所有符合字串)

ex.
path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

將sbin替換成SBIN(只取代找到的第一個)
echo ${path/sbin/SBIN}
path=/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

將sbin替換成SBIN(取代找到的每一個)
path=/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games

3.測試變數是否存在,若不存在則替換成所要的變數
ex.
unset username
username=${username-1234567}
echo $username
1234567

若此變數存在(含空字元),則不替換
username=${username-123}
echo $username
1234567

若使變數不存在或是存在但為空字元,都可替換
username=""
username=${username-root}
echo $username
          #還是空字元 

username=${username:-root}
echo $username
root   #替換了空字元

username=$username:-123}
echo $username
root  #非空字元無法替換

星期五, 4月 29, 2011

RHCE6筆記1

RHCE6 原廠課程很強調"查文件"的能力,主要是從本機的yelp 還有 man & pinfo來查詢,工作以來碰過各式不同的UNIX-Like的系統,從Redhat, SUSE, Ubuntu,到IBM AIX, HP UX唯一每一台上面都有的就是man, 所以男人真的很好用XD。在yelp裡面的search欄位也可以藉由輸入man:cp 來查詢man page的內容,只是改用視窗介面觀看。目前只有info & pinfo是我不太會用的。