- 複製檔案到其他系統
# scp /path/to/local/file username@hostname:/path/to/remote/file - 複製其他系統檔案到另一個其他系統
# scp username@hostname1:/path/to/remote1/file username@hostname2:/path/to/remote2/file - 複製其他系統檔案到本機
# scp username@hostname:/path/to/remote/file /path/to/local/file - 會詢問是否要儲存 SSH 金鑰和 SSH 密碼
2013年12月25日
使用 SSH 複製檔案
如何設定伴隨介面啟動的 routing table
首先先確定要加 routing table 的介面,以下以 eth0 為例:
- 新建檔案在 /etc/sysconfig/network-scripts/route-eth0
- 編輯檔案內容,格式如下:
ADDRESS0=172.21.8.0
NETMASK0=255.255.255.0
GATEWAY0=10.10.10.1
ADDRESS1=192.168.1.0
NETMASK1=255.255.255.0
GATEWAY1=10.10.10.5
....... - 確認是否成功:
# ifdown eth0 && ifup eth0
# route - 開機也會自動加入
2013年11月13日
設定 VirtualBox 伴隨開機自動執行
Virtual 4.2.0 版本後適用,測試環境是 CentOS 6.4:
- Edit virtualbox config
# vi /etc/default/virtualbox
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
- Edit auto start config
# vi /etc/vbox/autostart.cfg
default_policy = allow
- Set auto start DB path
# VBoxManage setproperty autostartdbpath /etc/vbox - Create a userid.start file in /etc/vbox directory
# VBoxManage modifyvm--autostart-enabled on - Restart the vboxautostart-service
# /etc/init.d/vboxautostart-service stop
# /etc/init.d/vboxautostart-service start - Reboot PC for test
2013年7月10日
Compile subversion 1.8.0
- Download source code and un-compress
- wget http://ftp.mirror.tw/pub/apache/subversion/subversion-1.8.0.tar.gz
- tar zxvf subversion-1.8.0.tar.gz
- Execute "get-deps.sh" to get deps
- cd subversion-1.8.0
- get-deps.sh
- Compile apr
- cd apr
- ./configure
- make
- cd..
- Compile apr-util
- cd apr-util
- ./configure --with-apr=../apr
- make
- cd..
- Compile and install serf
- cd serf
- ./configure --with-apr=../apr --with-apr-util=../apr-util
- make
- make install
- cd..
- Export PKG_CONFIG_PATH
- export PKG_CONFIG_PATH=/usr/local/serf/lib/pkgconfig
- Compile subversion
- ./configure --with-apr=apr --with-apr-util=apr-util --with-serf=serf
- make
- Check version and module
- ./subversion/svn/svn --version
- Install
- make install
- If server, restart svnserve
- killall svnserve
- svnserve -d
2012年2月23日
如何在VMWare 和 VirtualBox 之間轉換虛擬機器
- VMWare 轉移到 VirtualBox:
- 使用以下 Virtual Box 本身提供的工具轉換硬碟檔,指令如下:
BoxManageexe clonehdxxxx.vmdk xxxx .vdi --format VDI - 在 VirtualBox 建立新的虛擬主機,當建立硬碟時,選擇已經存在的檔案,然後直接掛載 vdi 檔
- 啟動虛擬機器,有可能會有 GUI(X11) 無法啟動的問題,依照指示輸入密碼重新建立 xorg.conf
- 進入系統後,解安裝 VMTool(如果有安裝的話)
- TGZ 安裝
# vmware-uninstall-tools.pl
- RPM 安裝
# rpm -e VMwareTools
- TGZ 安裝
- 安裝 VirtualBox Guest Additions,之後再重新開機 X11 就一切正常了
# sh media/VBoxLinuxAdditions-x86.run
- VirtualBox 轉移到 VMWare:
- 使用以下 Virtual Box 本身提供的工具轉換硬碟檔,指令如下:
BoxManageexe clonehdxxxx.vdi xxxx.vdmk --format VDMK
- 在 VMWare 建立新的虛擬主機,建立完後,將原本硬碟刪掉,然後加入一個新的硬碟,選擇已經存在的檔案,然後直接掛載 vdmk 檔
- 啟動虛擬機器,有可能會有 GUI(X11) 無法啟動的問題,依照指示輸入密碼重新建立 xorg.conf
- 進入系統後,解安裝 VirtualBox Guest Additions(如果有安裝的話)
# /opt/[VBoxAddonsFolder]/uninstall.sh - 安裝 VMTool,之後再重新開機 X11 就一切正常了
# tar zxvf vmware.xxx.tar.gz
# ./vmware-install.pl
2011年12月13日
如何修改GRUB2的預設開機
Fedora 的開機管理軟體已經從 grub 升級到 grub2 了,假設我們安裝的是多重系統,要如何更改預設的開機?
因為更改預設開機的選項已經不存在安裝步驟裡了,我們只能在安裝完成後再更改,以更改到 Windows 系統為例:
首先找到 Windows 的安裝
# cat /boot/grub2/grub.cfg | grep Window
menuentry "Windows XP (loader) (on /dev/sda1)" --class windows ...
....
將結果的字串紅色部分記錄下來,然後執行下述命令:
# grub2-set-default "Windows XP (loader) (on /dev/sda1)"
接著重新產生設定檔即可
# grub2-mkconfig -o /boot/grub2/grub.cfg
# cat /boot/grub2/grub.cfg | grep Window
menuentry "Windows XP (loader) (on /dev/sda1)" --class windows ...
....
將結果的字串紅色部分記錄下來,然後執行下述命令:
# grub2-set-default "Windows XP (loader) (on /dev/sda1)"
接著重新產生設定檔即可
# grub2-mkconfig -o /boot/grub2/grub.cfg
2011年10月30日
如何更改預設的 home 格式
Linux 預設的 home 格式是由以下這個 folder 複製而來的:
# /etc/skel
所以只要在底下增加目錄或檔案就可以在 useradd 時順便建立這些檔案。
PS.不同的 distribution 可能有不一樣,可以先檢視 /etc/default/useradd 來確認,Fedora 和 CentOS 是可以適用的。
# /etc/skel
所以只要在底下增加目錄或檔案就可以在 useradd 時順便建立這些檔案。
PS.不同的 distribution 可能有不一樣,可以先檢視 /etc/default/useradd 來確認,Fedora 和 CentOS 是可以適用的。
2011年6月23日
如何搬移subversion repository 到其他主機
首先先將原本的repositiry dump 下來
# svnadmin dump /svn/repository_name > repository_name.dump
接著到新的主機建立一個新的repository
# svnadmin create /svn/repository_name
然後把檔案還原回去
# svnadmin load /svn/repository_name < repository_name.dump
由於上述動作只完成資料庫的部分,所以最後再把conf資料夾裡的設定套用到新的repositiry裡,通常直接複製覆蓋即可。
PS.如果無法編輯 log 檔,請執行下述指令:
# cp hooks/pre-revprop-change.tmpl hooks/pre-revprop-change
# svnadmin dump /svn/repository_name > repository_name.dump
接著到新的主機建立一個新的repository
# svnadmin create /svn/repository_name
然後把檔案還原回去
# svnadmin load /svn/repository_name < repository_name.dump
由於上述動作只完成資料庫的部分,所以最後再把conf資料夾裡的設定套用到新的repositiry裡,通常直接複製覆蓋即可。
PS.如果無法編輯 log 檔,請執行下述指令:
# cp hooks/pre-revprop-change.tmpl hooks/pre-revprop-change
2010年7月27日
如何設定NFS使用固定port以利防火牆設定
當 LINUX 啟動 NFS Server 時,其相關的service 會連帶使用幾個 ports:
固定
NFS deamon: 2049
NFS portmap:111
隨機
rquotad
lockd
mountd
statd
statd outgoing
隨機的這幾個 ports 就會造成設定防火牆的困擾,所以須透過設定檔將其值固定,編輯下列檔案:
# vi /etc/sysconfig/nfs
增加下列幾行設定:
RQUOTAD_PORT=4000
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002
STATD_PORT=4003
STATD_OUTGOING_PORT=4004
存檔後重新啟動 NFS
# service nfs restart
接著只要把防火牆的 tcp port 111, 2049, 4000-4004 和 udp port 4001 打開就可以了
固定
NFS deamon: 2049
NFS portmap:111
隨機
rquotad
lockd
mountd
statd
statd outgoing
隨機的這幾個 ports 就會造成設定防火牆的困擾,所以須透過設定檔將其值固定,編輯下列檔案:
# vi /etc/sysconfig/nfs
增加下列幾行設定:
RQUOTAD_PORT=4000
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002
STATD_PORT=4003
STATD_OUTGOING_PORT=4004
存檔後重新啟動 NFS
# service nfs restart
接著只要把防火牆的 tcp port 111, 2049, 4000-4004 和 udp port 4001 打開就可以了
2010年7月26日
設定開啟 iptabeles 防火牆的特定 port
1.編輯下列設定檔:
# vi /etc/sysconfig/iptables
2.將下列敘述加入設定檔中
-A RH-Firewall-1-INPUT -m state --state NEW -m [tcp/udp] -p [tcp/udp] --dport [port_number] -j ACCEPT
例如要開啟 tcp port 4000:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000 -j ACCEPT
3.將 iptables 重新啟動即可
# /etc/init.d/iptables restart
4.下述命令可以檢查設定是否正確:
netstat -tulpn | less
iptables -L -n
# vi /etc/sysconfig/iptables
2.將下列敘述加入設定檔中
-A RH-Firewall-1-INPUT -m state --state NEW -m [tcp/udp] -p [tcp/udp] --dport [port_number] -j ACCEPT
例如要開啟 tcp port 4000:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000 -j ACCEPT
3.將 iptables 重新啟動即可
# /etc/init.d/iptables restart
4.下述命令可以檢查設定是否正確:
netstat -tulpn | less
iptables -L -n
2010年6月4日
使用 Linux Command 格式化硬碟
磁碟分割的指令:
# fdisk [device]
格式化指令:
# mkfs [device]
# mkfs.ext2 / mkfs.ext3 / mkfs.ext4 [device]
# mkswap [device]
# fdisk [device]
格式化指令:
# mkfs [device]
# mkfs.ext2 / mkfs.ext3 / mkfs.ext4 [device]
# mkswap [device]
coLinux 硬碟擴充
coLinux 下載的 image 檔大小通常只有4G,對於使用上通常是不夠的,有三種解決方法:
1. 點選 "find file"
2. 選擇要更改的 image 檔
3. 移動底下的方塊調整大小
4.點選 Resize file 執行
1.使用另外的 Linux 系統建立新的 image 檔
# dd if=/dev/zero of=20G.img bs=1G count=20
2.將新的 image 檔啟動時掛載
cobd2="C:/Program Files/coLinux/20G.img"
3.使用 dd 複製硬碟
# dd if=/dev/cobd0 of=/dev/cobd2
4.關閉 coLinux,將原先的設定檔的 image 替換掉,cobd2 的部份刪掉
cobd0="C:/Program Files/coLinux/20G.img"
------------------------------------------------------
無論使用 A 或 B 方法,重新啟動後需運行下列的指令:
1.執行 resise2fs 調整大小
# resise2fs /dev/cobd0
2.執行 e2fsck 掃描硬碟
# e2fsck -f /dev/cobd0
C.另外建立一個 image,並且 mount 在使用者家目錄
1.使用上述 B 方法的步驟 1 ~ 2 建立新 image,啟動後編輯下列檔案
# vi /etc/fstab
2.添加下列敘述將新 image 開機時 mount 在 /home 底下
/dev/cobd2 /home ext3 defaults 1 2
3.重新開機
A.用 toporesize 直接更改 image 檔,不過僅適用於 ext2 / ext3 檔案系統
1. 點選 "find file"
2. 選擇要更改的 image 檔
3. 移動底下的方塊調整大小
4.點選 Resize file 執行
B.使用 dd
1.使用另外的 Linux 系統建立新的 image 檔
# dd if=/dev/zero of=20G.img bs=1G count=20
2.將新的 image 檔啟動時掛載
cobd2="C:/Program Files/coLinux/20G.img"
3.使用 dd 複製硬碟
# dd if=/dev/cobd0 of=/dev/cobd2
4.關閉 coLinux,將原先的設定檔的 image 替換掉,cobd2 的部份刪掉
cobd0="C:/Program Files/coLinux/20G.img"
------------------------------------------------------
無論使用 A 或 B 方法,重新啟動後需運行下列的指令:
1.執行 resise2fs 調整大小
# resise2fs /dev/cobd0
2.執行 e2fsck 掃描硬碟
# e2fsck -f /dev/cobd0
C.另外建立一個 image,並且 mount 在使用者家目錄
1.使用上述 B 方法的步驟 1 ~ 2 建立新 image,啟動後編輯下列檔案
# vi /etc/fstab
2.添加下列敘述將新 image 開機時 mount 在 /home 底下
/dev/cobd2 /home ext3 defaults 1 2
3.重新開機
2010年6月2日
如何關閉 SELinux
SELinux 在 Fedora 安裝完成後,預設是開啟的,可以透過下列幾種方式來控制它:
1. 在命令列裡直接執行下列指令暫時關閉
# setenforce 0
2. 在命令列裡直接執行下列指令重新開啟
# setenforce 1
3. 修改 /etc/selinux/config 檔案完全關閉,將下列設定值改為 disable
SELINUX=disabled
然後重新啟動即可
1. 在命令列裡直接執行下列指令暫時關閉
# setenforce 0
2. 在命令列裡直接執行下列指令重新開啟
# setenforce 1
3. 修改 /etc/selinux/config 檔案完全關閉,將下列設定值改為 disable
SELINUX=disabled
然後重新啟動即可
2010年5月27日
設定 Fedora 以文字介面開機
Fedora 開機時的預設是 GONME 圖形介面的登入畫面,編輯以下檔案即可將預設改為文字介面:
# vi /etc/inittab
在註解中可以找到以下的敘述:
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
所以只要將下列敘述由 5 (X11) 改為 3 (Full multiuser mode) 即可
id:3:initdefault:
重開機後確認設定是否成功,如果要啟動圖形介面,只要輸入下列指令即可:
# startx
# vi /etc/inittab
在註解中可以找到以下的敘述:
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
所以只要將下列敘述由 5 (X11) 改為 3 (Full multiuser mode) 即可
id:3:initdefault:
重開機後確認設定是否成功,如果要啟動圖形介面,只要輸入下列指令即可:
# startx
2010年5月17日
Fedora 9 ~ 12 開機自動登入GNOME桌面環境
將 Fedora 當做 Server 使用時,GNOME 的 Remote Control 必須在使用者登入後才有作用,所以將系統設為自動登入將會方便許多,使用 root 的身分編輯 /etc/gdm/customer.conf ,將下列幾行加入:
[daemon]
TimedLoginEnable=true
AutomaticLoginEnable=true
AutomaticLogin=username
TimedLogin=username
TimedLoginDelay=0
只要將 username部分替換成要登入的使用者名稱即可
[daemon]
TimedLoginEnable=true
AutomaticLoginEnable=true
AutomaticLogin=username
TimedLogin=username
TimedLoginDelay=0
只要將 username部分替換成要登入的使用者名稱即可
2010年2月21日
Trash can at command line
Linux Gnome 或 KDE 都有資源回收筒的設計,不過當我們在 command line 當中刪除檔案時,是不會送到回收筒的,造成刪除的檔案無法回復。下述的套件是一個可以在 command line 當中建立回收筒的機制,給自己再壹次的機會:
libtrash
下載完後,編譯安裝,將下列兩行設定加到家目錄底下的 .bash_profile 後就可以用了:
export LD_PRELOAD=/usr/local/lib/libtrash.so
alias su="su -l"
之後刪除的檔案會被放到家目錄的 Trash/ 目錄底下,如果不小心誤刪了,就到這裡面找找吧!
刪除的檔案如果不是家目錄底下的,則會被放到 Trash/SYSTEM_ROOT/ 裡。
套件的設定檔安裝於 /etc/libtrash.conf ,個人的設定檔則在 ~/.libtrash
libtrash
下載完後,編譯安裝,將下列兩行設定加到家目錄底下的 .bash_profile 後就可以用了:
export LD_PRELOAD=/usr/local/lib/libtrash.so
alias su="su -l"
之後刪除的檔案會被放到家目錄的 Trash/ 目錄底下,如果不小心誤刪了,就到這裡面找找吧!
刪除的檔案如果不是家目錄底下的,則會被放到 Trash/SYSTEM_ROOT/ 裡。
套件的設定檔安裝於 /etc/libtrash.conf ,個人的設定檔則在 ~/.libtrash
2010年2月9日
Linux Command 彙總
1.設定程式 priority
nice -[nice_number] process/application
[nice_number] : -20~19,數字越大,priority越低
Example:
# nice -5 baobab &
2.調整執行中程式的 priority
renice [nice_number] [-p PID] [-g group_name] [-u username]
Example:
# renice -20 -p 17756
# renice 7 -u calvin
3.增加使用者和設定密碼
useradd [-u uid] [-g group_name]
passwd
Example:
# useradd chiling
# useradd -u 501 -g users selina
# passwd chiling
4.增加 samba 使用者兼設定密碼
sambapasswd -a
Example:
# sambapasswd -a chiling
使用者帳號必須存在 LINUX 使用者當中
5.顯示檔案內容於stdout
strings
Example:
# strings env.cfg
一般遇到要輸出檔案內容,最常用的命令就是 cat 了,不過 strings 有一個比 cat 好用的地方就是,它可以將 binary 的檔案輸出成字串的格式以方便閱讀。
6.查看 DMI table 資訊,就是硬體相關的參數。包含 BIOS 版本、主機板資訊、CPU......等
dmidecode
7.強制連線登出
skill -KILL -u
Example:
# skill -KILL -u chiling
8.查看目錄使用者
lsof | grep
Example:
# lsof | grep /home/chiling
nice -[nice_number] process/application
[nice_number] : -20~19,數字越大,priority越低
Example:
# nice -5 baobab &
2.調整執行中程式的 priority
renice [nice_number] [-p PID] [-g group_name] [-u username]
Example:
# renice -20 -p 17756
# renice 7 -u calvin
3.增加使用者和設定密碼
useradd [-u uid] [-g group_name]
passwd
Example:
# useradd chiling
# useradd -u 501 -g users selina
# passwd chiling
4.增加 samba 使用者兼設定密碼
sambapasswd -a
Example:
# sambapasswd -a chiling
使用者帳號必須存在 LINUX 使用者當中
5.顯示檔案內容於stdout
strings
Example:
# strings env.cfg
一般遇到要輸出檔案內容,最常用的命令就是 cat 了,不過 strings 有一個比 cat 好用的地方就是,它可以將 binary 的檔案輸出成字串的格式以方便閱讀。
6.查看 DMI table 資訊,就是硬體相關的參數。包含 BIOS 版本、主機板資訊、CPU......等
dmidecode
7.強制連線登出
skill -KILL -u
Example:
# skill -KILL -u chiling
8.查看目錄使用者
lsof | grep
Example:
# lsof | grep /home/chiling
2010年2月2日
使用 mdadm 建立 Software RAID 1 於Linux 初始安裝
準備兩顆容量一樣的硬碟來建構 RAID 1 環境,以避免硬碟損壞造成的資料遺失。使用 VirtualBox 虛擬軟體來嘗試,搭配的 distribution 是 Fedara 12。
首先在 VirtualBox 建立 Fedora 的虛擬主機,並且掛載兩顆虛擬硬碟。
1.初始安裝硬碟切割
請選擇 "Review and modify partitioning layout" 進入自訂模式
將預設的切割全部清除,讓硬碟的 partition table清空
按下 "RAID" 鈕,選擇 "Create a software RAID partition"
建立 software RAID 磁區於第一顆硬碟 (/dev/sda),首先建立要供掛載 /boot 用的磁區,請記得勾選 "Force to be a primary partition" 選項。
重複上一個動作於第二顆硬碟(dev/sdb)建立同樣大小的 software RAID 磁區,接下來請再按一次 "RAID" 鈕,這次請選擇 "Create a RAID device(default=/dev/md0)"
選擇 /boot 為掛載點,檔案系統為 ext4 ,RAID 的等級是 RAID1,將剛剛建立的 software RAID 磁區 sda1 和 sdb1 都勾選以用來組成 md0 的 RAID 裝置。
接下來要建立的是 swap 的磁區,swap 不需要也不建議使用 RAID partition,以避免讀寫的問題。請直接按 "New" 鈕在兩顆硬碟上各建立 swap 的分割磁區,swap 的大小至少要等於記憶體的大小,建議值是兩倍記憶體的大小。所以在兩顆硬碟上各建立一個等同於記憶體大小的 swap 磁區,加起來剛好是2倍記憶體大小。
最後剩下的空間規劃為掛載 / 的磁區,重複上述建立 /boot 磁區的步驟操作
硬碟的分割到此就完成了:
繼續安裝的步驟完成安裝並重新啟動。
2.查看 RAID 運作狀況
Fedora 的 software RAID 是 mdadm 這個套件,進入系統後,可以用下列命令查看 RAID array 運作的狀況:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0] sdb3[1]
7132416 blocks [2/1] [UU]
md0 : active raid1 sda1[0] sdb1[1]
204736 blocks [2/1] [UU]
unused devices :
其中 [UU] 表示兩個 software RAID 磁區皆運作正常,如果只有一個,就會顯示 [U_] 或 [_U]。
2.安裝 GRUB 於兩顆硬碟
系統安裝時預設把 GRUB 安裝到第一顆硬碟(/dev/sda)的 MBR ,如果遇到了此硬碟毀損的狀況,系統將無法正常開機,必須以光碟開機進入 rescure mode 操作。為了避免此一情形,所以事先將 GRUB 也安裝到第二顆硬碟中:
# grub
grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
3.測試單一硬碟開機
接著測試是否兩顆硬碟都可以單獨存在並開機,將機器關機,卸載第一顆硬碟,再將機器啟動,查看 RAID 的狀況,可以發現第一顆硬碟被從 RAID array 裡移除了。
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[1]
7132416 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
204736 blocks [2/1] [_U]
unused devices :
將機器關機,重新掛載第一顆硬碟,然後卸載第二顆硬碟再將機器啟動,確認是否也可以正常啟動。
結束測試後, 再把系統回復原來的設置。將兩顆硬碟都掛載開機,開機後會發現 RAID 的狀況如下:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
7132416 blocks [2/1] [U_]
md0 : active raid1 sda1[0]
204736 blocks [2/1] [U_]
unused devices :
這是因為剛剛測試時,第二顆硬碟是被取下的,所以被從 RAID array 中移除了。只要運行下列的指令將它再次加入即可:
# mdadm /dev/md1 --add /dev/sdb3
# mdadm /dev/md0 --add /dev/sdb1
即時查看 RAID 的狀況,可以發現正在進行 recovery 的動作,完成後即可正常運作了
# watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda[0] sdb[1]
7132416 blocks [2/1] [U_]
[>.......................................] recovery = 3.1% (228288/7132416) finish=7.0min speed=16306K/sec
md0 : active raid1 sda1[0] sdb1[1]
204736 blocks [2/1] [U_]
resync=DELAYED
unused devices :
4.置換硬碟
假設第一顆硬碟毀損了 (下列 command 皆假設是第一顆毀損) ,在 VirtualBox 中建立一顆大小相同的空白硬碟,將第一顆硬碟替換掉,這時會使用第二顆硬碟來開機,進入系統後,先查看硬碟的掛載情形
# fdisk -l
空白的硬碟應是位於 /dev/sda,正常硬碟為 /dev/sdb,首先將第二顆硬碟的分割表複製到空白的第一顆,使用 --force 參數忽略警告訊息:
# sfdisk -l /dev/sdb | /dev/sda --force
完成後以 fdisk -l 指令確認複製成功,接著安裝 GRUB 於新硬碟 :
# grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
最後只需要把新硬碟的 software RAID 磁區重新加入 RAID array 即可:
# mdadm /dev/md1 --add /dev/sdb3
# mdadm /dev/md0 --add /dev/sdb1
# watch cat /proc/mdstat
recovery 完成後就可以正常使用了。
首先在 VirtualBox 建立 Fedora 的虛擬主機,並且掛載兩顆虛擬硬碟。
1.初始安裝硬碟切割
請選擇 "Review and modify partitioning layout" 進入自訂模式
將預設的切割全部清除,讓硬碟的 partition table清空
按下 "RAID" 鈕,選擇 "Create a software RAID partition"
建立 software RAID 磁區於第一顆硬碟 (/dev/sda),首先建立要供掛載 /boot 用的磁區,請記得勾選 "Force to be a primary partition" 選項。
重複上一個動作於第二顆硬碟(dev/sdb)建立同樣大小的 software RAID 磁區,接下來請再按一次 "RAID" 鈕,這次請選擇 "Create a RAID device(default=/dev/md0)"
選擇 /boot 為掛載點,檔案系統為 ext4 ,RAID 的等級是 RAID1,將剛剛建立的 software RAID 磁區 sda1 和 sdb1 都勾選以用來組成 md0 的 RAID 裝置。
接下來要建立的是 swap 的磁區,swap 不需要也不建議使用 RAID partition,以避免讀寫的問題。請直接按 "New" 鈕在兩顆硬碟上各建立 swap 的分割磁區,swap 的大小至少要等於記憶體的大小,建議值是兩倍記憶體的大小。所以在兩顆硬碟上各建立一個等同於記憶體大小的 swap 磁區,加起來剛好是2倍記憶體大小。
最後剩下的空間規劃為掛載 / 的磁區,重複上述建立 /boot 磁區的步驟操作
硬碟的分割到此就完成了:
繼續安裝的步驟完成安裝並重新啟動。
2.查看 RAID 運作狀況
Fedora 的 software RAID 是 mdadm 這個套件,進入系統後,可以用下列命令查看 RAID array 運作的狀況:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0] sdb3[1]
7132416 blocks [2/1] [UU]
md0 : active raid1 sda1[0] sdb1[1]
204736 blocks [2/1] [UU]
unused devices :
其中 [UU] 表示兩個 software RAID 磁區皆運作正常,如果只有一個,就會顯示 [U_] 或 [_U]。
2.安裝 GRUB 於兩顆硬碟
系統安裝時預設把 GRUB 安裝到第一顆硬碟(/dev/sda)的 MBR ,如果遇到了此硬碟毀損的狀況,系統將無法正常開機,必須以光碟開機進入 rescure mode 操作。為了避免此一情形,所以事先將 GRUB 也安裝到第二顆硬碟中:
# grub
grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
3.測試單一硬碟開機
接著測試是否兩顆硬碟都可以單獨存在並開機,將機器關機,卸載第一顆硬碟,再將機器啟動,查看 RAID 的狀況,可以發現第一顆硬碟被從 RAID array 裡移除了。
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[1]
7132416 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
204736 blocks [2/1] [_U]
unused devices :
將機器關機,重新掛載第一顆硬碟,然後卸載第二顆硬碟再將機器啟動,確認是否也可以正常啟動。
結束測試後, 再把系統回復原來的設置。將兩顆硬碟都掛載開機,開機後會發現 RAID 的狀況如下:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
7132416 blocks [2/1] [U_]
md0 : active raid1 sda1[0]
204736 blocks [2/1] [U_]
unused devices :
這是因為剛剛測試時,第二顆硬碟是被取下的,所以被從 RAID array 中移除了。只要運行下列的指令將它再次加入即可:
# mdadm /dev/md1 --add /dev/sdb3
# mdadm /dev/md0 --add /dev/sdb1
即時查看 RAID 的狀況,可以發現正在進行 recovery 的動作,完成後即可正常運作了
# watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda[0] sdb[1]
7132416 blocks [2/1] [U_]
[>.......................................] recovery = 3.1% (228288/7132416) finish=7.0min speed=16306K/sec
md0 : active raid1 sda1[0] sdb1[1]
204736 blocks [2/1] [U_]
resync=DELAYED
unused devices :
4.置換硬碟
假設第一顆硬碟毀損了 (下列 command 皆假設是第一顆毀損) ,在 VirtualBox 中建立一顆大小相同的空白硬碟,將第一顆硬碟替換掉,這時會使用第二顆硬碟來開機,進入系統後,先查看硬碟的掛載情形
# fdisk -l
空白的硬碟應是位於 /dev/sda,正常硬碟為 /dev/sdb,首先將第二顆硬碟的分割表複製到空白的第一顆,使用 --force 參數忽略警告訊息:
# sfdisk -l /dev/sdb | /dev/sda --force
完成後以 fdisk -l 指令確認複製成功,接著安裝 GRUB 於新硬碟 :
# grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
最後只需要把新硬碟的 software RAID 磁區重新加入 RAID array 即可:
# mdadm /dev/md1 --add /dev/sdb3
# mdadm /dev/md0 --add /dev/sdb1
# watch cat /proc/mdstat
recovery 完成後就可以正常使用了。
2010年1月28日
執行 e2fsck 檢查 LVM 磁碟
當要使用 e2fsck 指令檢查當前系統時,第一個遇到的問題就是目前磁區是被 mount 的,所以會有警告的訊息,警告執行檢查的話有可能造成磁區的毀損,不過此一指令仍然可以執行,但風險太大,除非有備份。替代的方法有二:
1.rescure mode
使用安裝光碟從光碟開機,選擇進入 rescure mode ,遵從畫面指示選擇硬體配置,但請記得在提示要將現存磁區 mount 時,請選擇 skip,而不是 continue。
2.LIVE CD
開機完成後,同時按住 Ctrl + Alt + F1 進入文字模式,以 root 身分登入;或者登入圖形介面,開啟 Terminal。
無論使用上面何種模式,接下來請輸入下列指令:
# lvm vgscan /*自動尋找存在於硬碟上的 LVM 分區*/
# lvm vgchange -ay /*將找到的所有 LVM 分區設定為 active*/
# lvm lvs /*列出分區路徑*/
現在我們可以對 LVM 的分區下 e2fsck 的指令了,例如:
# e2fsck -f -y /dev/mapper/VolGroup00-LogVol00
要記得加 -f 的參數來強制執行,不然是不會有動作的,因為 e2fsck 預設只會對有被記錄問題的磁區進行掃描,但我們所使用的方式是看不到紀錄的,因此要用強制的方式來執行。
1.rescure mode
使用安裝光碟從光碟開機,選擇進入 rescure mode ,遵從畫面指示選擇硬體配置,但請記得在提示要將現存磁區 mount 時,請選擇 skip,而不是 continue。
2.LIVE CD
開機完成後,同時按住 Ctrl + Alt + F1 進入文字模式,以 root 身分登入;或者登入圖形介面,開啟 Terminal。
無論使用上面何種模式,接下來請輸入下列指令:
# lvm vgscan /*自動尋找存在於硬碟上的 LVM 分區*/
# lvm vgchange -ay /*將找到的所有 LVM 分區設定為 active*/
# lvm lvs /*列出分區路徑*/
現在我們可以對 LVM 的分區下 e2fsck 的指令了,例如:
# e2fsck -f -y /dev/mapper/VolGroup00-LogVol00
要記得加 -f 的參數來強制執行,不然是不會有動作的,因為 e2fsck 預設只會對有被記錄問題的磁區進行掃描,但我們所使用的方式是看不到紀錄的,因此要用強制的方式來執行。
訂閱:
文章 (Atom)












