昨天,我說明了有關WINDOWS的檔案權限,今天就針對LINUX來稍做介紹吧!
其實我一開始就有說過,WINDOWS與LINUX的檔案權限原本就有點類似,除了在安全性(預設值)的差別之外,不過...因為WINDOWS對於圖形介面還是比文字介面人性化一點(就像玩LINUX的人用它的圖形化設定,有時也會霧煞煞一樣)。
所以在LINUX上的檔案權限設定,筆者就會以文字模式來做介紹,如有遺漏之處,還請大家留言或指正(最近一直被網友們抓到發現自己的疏忽...ORZ),不過這一篇文章會比較類似我去上LPI課時的筆記,所以會比較「生硬」一些!
檔案權限的觀念:
1.不是繼承的模式(跟WINDOWS系統的預設值不同)。
2.每個權限都是獨立的(可寫入不代表可讀取)。
3.管理員(SUPER USER = root)有絕對的權限。
LINUX的檔案格式:共有十個欄位(特殊權限外,其餘為三個一組)
3
↓
例:-rw-r--r--(為了標示方便,故以全型表示)
↑ ↑ ↑
1 2 4
欄位說明:
1.檔案類型:用來標示該檔案或資料夾種類。
(-:一般檔案、d:資料夾、l:連結資料)
2.擁有者的權限:用來設定此檔案或資料夾擁有者的權限。
3.擁有群組的權限:用來設定此檔案或資料夾擁有群組的權限。
4.其它人的權限:用來設定此檔案或資料夾給其它人的權限。
其中,對於檔案權限的設定方式以二進位(1、2、4)或文字(r、w、x)代表
說明:
1.二進位:1=執行、2=寫入、4=讀取
2.文字法:x=執行、w=寫入、r=讀取
rwx = 4+2+1=7
rw- = 4+2+0=6
r-x = 4+0+1=5
r-- = 4+0+0=4
-wx = 0+2+1=3
-w- = 0+2+0=2
--r = 0+0+1=1
--- = 0+0+0=0
5
↓
實例: -rwxr-x--x
↑ ↑ ↑
二進位:0 7 1
說明: 特殊權:無
使用者:有讀取、寫入和執行的權限
使用群組:有讀取和執行的權限
其它人:有執行的權限
對於檔案、資料夾都具備權限的觀念,可是意義上卻有很大的不同之處:
檔案(FILE) 資料夾(DIR.)
-------------------------
r │ 可讀取 │ 只能讀檔名 │
----│---------│---------│
w │ 可寫入 │ 能搬移目錄 │
----│---------│---------│
x │ 可執行 │ 能進入目錄 │
----│---------│---------│
變更權限的指令:chmod
用法:chmod 777 test(改變test檔案成全部人都能讀取、寫入和執行)
chmod g+w test(針對test檔案的群組,加入寫入的權限)
chmod ugo+w test(test檔案的擁有者、群組和其它人都加入寫入權限)
變更擁有者/群組的指令:chown/chgrp
用法:chown test file(改變file的擁有者為test)
chgrp test file(改變file的群組為test)
chown test.test file(改變file的擁有者和群組皆為test)
說明:在LINUX中檔案預設有擁有者、群組兩種特性,兩者間可用「.」區隔。
特殊權限說明:實例可參考(#ls -al /usr/bin/passwd)
setgid
↓
例:-rwsr-xr-x 1 root root ... /usr/bin/passwd
↑ ↑
setuid sticky
特殊權限:(加在原有權限上)
111 111 111 111
特殊權限 擁有者 群組 其它人
u g o
小寫 s s t(原有x權限)
大寫 S S T(原無x權限)
例:chmod 4766 file(file的u、g和o權限中都加上特殊權限)
=chmod u+s file(原有x權限)
chmod g+S file(原無x權限)
chmod o+T file(原無x權限)
特殊權限說明:
檔案(FILE) 資料夾(DIR.)
------------------------------------
setuid │暫時切換該執行檔擁有者│ 系統會忽略 │
-------│-----------│----------------│
setgid │暫時切換該執行檔的群組│建立檔案的擁有群組會與該目錄相同│
-------│-----------│----------------│
sticky │與上述相同(系統忽略)│其它人不能夠刪除不屬於自己的檔案│
-------│-----------│----------------│
遮罩說明:系統內建的umask=022(例:test建立一個檔案與資料夾)
系統中預設權限:檔案=666、資料夾=777
加上系統的遮罩:umask=022
預設建立值:檔案=644、資料夾=755(不是666-022=644或777-022=755!)
其實加上遮罩的方式,是運算後的結果:
defalut│ 0 │ 0 │ 1 │ 1 │
--------│---│---│---│---│
umask │ 0 │ 1 │ 0 │ 1 │
--------│---│---│---│---│
end │ 0 │ 0 │ 1 │ 0 │
例:檔案=666、umask=022
default 110(6) 110(6) 110(6)
umask 000(0) 010(2) 010(2)
-----------------------------
End 110 100 100
數值 4+2=6 4+0=4 4+0=4
不知道經過筆者冗長的解說之後,對於LINUX的檔案權限有沒有更瞭解一點(老實說!除非真的有需要的人才會來看吧!?),我知道對一般人來說這些真的太過生澀,但是...這就是LINUX的檔案權限
我在內文中,也有一些外部的連結,是原文的相關說明,有興趣的人也可參照一番!說不定我又有那兒寫錯了!還請大家不吝指教(最近寫啥都有點怕怕的...),謝謝!
2007年9月11日 星期二
2007年8月29日 星期三
LPI心得筆記簿 ─ 使用者管理(Manage Users)(2)
筆者先前寫了有關於使用者管理(1)的心得筆記,現在來把一些比較特殊的用法也補上,雖然說這些用法不一定都用得著,可是多瞭解一點也沒有壞處,不是嗎?
更何況,有時候特別的用法在管理時,還是可以發揮出一定的功效...
雖然不太好上手,用久了還是可以讓這些成為技能中的一部份
其實,我在這裡也不是要介紹所有跟他們有關的參數,如果真的想要知道它相關的參數,可能利用man或help文件來查閱,可能會比筆者寫的詳細
useradd的其它參數:useradd [參數] username
常用的參數說明如下:
-g:設定gid(主要群組ID)
-G:增補群組ID(同時成為其它群組中的一員)
-s:設定shell(如bash...等)
-u:設定uid(使用者ID)
-d:設定使用者家目錄
-c:說明(跟/etc/passwd中的第五個欄位相同)
-e:帳戶到期日
-f:帳戶失效日
特殊用法:-D(改變預設值)
說明:可以改變預設值的設定(之後新增的使用者皆套用此設定)
設定檔:/etc/default/useradd
useradd -D:查看現在的預設值(內容與/etc/default/useradd相同)
/etc/default/useradd 的內容如下
---------
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
---------
常用的參數說明:用法useradd -D [參數] username
-b:定義家目錄的前一個目錄
-s:往後加入的使用者使用的shell名稱(bash、nologin...)
這部份的附加設定是新增帳號時不增加對應的mailbox,就在此檔案中加入一條規則:CREATE_MAIL_SPOOL=no(預設的mailbox在/var/spool/mail)
gpasswd的用法(主要是用來設定群組密碼時使用)
用法:gpasswd [參數] (username) group
常用的參數說明如下:
-a:新增群組成員(例:gpasswd -a abc test --> 將abc加入test的群組中)
-d:移除群組成員(例:gpasswd -d 123 test --> 將123移出test的群組中)
-r:取消群組的密碼(一般在預設值中,不會特別加上密碼)
-R:禁止任何非群組成員利用newgroup做群組更換
(例:gpasswd -R test ; 123$ newgroup test-->無法切換至test群組)
除了上述的常用參數與指令之外,其實也可以利用usermod來修改相關內容(用法:usermod [參數] username),其中的參數用法與useradd相同
例:usermod -s /sbin/nologin test(設定test的shell為/sbin/nologin)
然而,還有一些比較少用,或是特殊狀況下才應用得到的指令,例:pwconv、pwunconv、grpconv、grpunconv等(使用時機視狀況而定)
指令的意義如下:
pwconv/pwunconv:做passwd/shadow中的密碼欄互換
grpconv/grpunconv:做gpasswd/gshadow中的密碼欄互換
最後,筆者要提醒一下管理者/使用者在設定密碼時需注意的事項
1.密碼不該是身邊任何可見的字:很好猜...。
2.長度須足夠:Fedora有強制的長度限制為6個字元(root不在此限)。
3.組合不同類型的字元:英數+特殊符號(例:23^#xd@)。
4.不要用完整的英文字:可用字典檔破解法。
5.不要所有系統都用相同密碼:一破全開(這一點很難...唉)。
6.定期變更密碼:設定使用者密碼的到期日。
7.設定一個記得住的密碼:其實這一點會跟第5點矛盾。
其它的部份,還請各位Linux的愛好者補上吧!畢竟筆者一人能做的部份有限,如果有誤的部份,還請各位指正說明,謝謝!
更何況,有時候特別的用法在管理時,還是可以發揮出一定的功效...
雖然不太好上手,用久了還是可以讓這些成為技能中的一部份
其實,我在這裡也不是要介紹所有跟他們有關的參數,如果真的想要知道它相關的參數,可能利用man或help文件來查閱,可能會比筆者寫的詳細
useradd的其它參數:useradd [參數] username
常用的參數說明如下:
-g:設定gid(主要群組ID)
-G:增補群組ID(同時成為其它群組中的一員)
-s:設定shell(如bash...等)
-u:設定uid(使用者ID)
-d:設定使用者家目錄
-c:說明(跟/etc/passwd中的第五個欄位相同)
-e:帳戶到期日
-f:帳戶失效日
特殊用法:-D(改變預設值)
說明:可以改變預設值的設定(之後新增的使用者皆套用此設定)
設定檔:/etc/default/useradd
useradd -D:查看現在的預設值(內容與/etc/default/useradd相同)
/etc/default/useradd 的內容如下
---------
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
---------
常用的參數說明:用法useradd -D [參數] username
-b:定義家目錄的前一個目錄
-s:往後加入的使用者使用的shell名稱(bash、nologin...)
這部份的附加設定是新增帳號時不增加對應的mailbox,就在此檔案中加入一條規則:CREATE_MAIL_SPOOL=no(預設的mailbox在/var/spool/mail)
gpasswd的用法(主要是用來設定群組密碼時使用)
用法:gpasswd [參數] (username) group
常用的參數說明如下:
-a:新增群組成員(例:gpasswd -a abc test --> 將abc加入test的群組中)
-d:移除群組成員(例:gpasswd -d 123 test --> 將123移出test的群組中)
-r:取消群組的密碼(一般在預設值中,不會特別加上密碼)
-R:禁止任何非群組成員利用newgroup做群組更換
(例:gpasswd -R test ; 123$ newgroup test-->無法切換至test群組)
除了上述的常用參數與指令之外,其實也可以利用usermod來修改相關內容(用法:usermod [參數] username),其中的參數用法與useradd相同
例:usermod -s /sbin/nologin test(設定test的shell為/sbin/nologin)
然而,還有一些比較少用,或是特殊狀況下才應用得到的指令,例:pwconv、pwunconv、grpconv、grpunconv等(使用時機視狀況而定)
指令的意義如下:
pwconv/pwunconv:做passwd/shadow中的密碼欄互換
grpconv/grpunconv:做gpasswd/gshadow中的密碼欄互換
最後,筆者要提醒一下管理者/使用者在設定密碼時需注意的事項
1.密碼不該是身邊任何可見的字:很好猜...。
2.長度須足夠:Fedora有強制的長度限制為6個字元(root不在此限)。
3.組合不同類型的字元:英數+特殊符號(例:23^#xd@)。
4.不要用完整的英文字:可用字典檔破解法。
5.不要所有系統都用相同密碼:一破全開(這一點很難...唉)。
6.定期變更密碼:設定使用者密碼的到期日。
7.設定一個記得住的密碼:其實這一點會跟第5點矛盾。
其它的部份,還請各位Linux的愛好者補上吧!畢竟筆者一人能做的部份有限,如果有誤的部份,還請各位指正說明,謝謝!
2007年8月24日 星期五
LPI心得筆記簿 ─ 使用者管理(Manage Users)(1)
我們都知道Linux是屬於可以單機多人多工的系統,也因為這點,經常被拿來做為Server使用,因為多人使用的關係,對於使用者管理就要更小心一些
而且,現在大多數的人都還是使用M$的系統,對於使用者的觀念有相當的差異,所以筆者才會在這篇說明(其實是之前上課的筆記心得,在此獻醜!),如有誤,還請指正
事先聲明:筆者使用的作業環境為Fedora6
首先,我們要先知道使用者/群組會存取的設定檔與資料庫
使用者資料庫:
/etc/passwd(內容如下,僅列兩組說明)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/etc/passwd格式說明:(以「:」做為分隔,共七項欄位)
root:x:0:0:root:/root:/bin/bash
1 2 3 4 5 6 7
1.使用者名稱:(不可重覆)
2.密碼欄位:(加密於/etc/shadow),預設為x(空白:不用密碼;*:不可登入)
3.UserID(可重覆):從0開始,一般使用者從500開始,0~499留給系統使用
4.GroupID:位於群組資料庫的/etc/group中的GID
5.備註(Finger):也就是這個使用者的相關資料
6.使用者的家目錄:一般使用者預設在/home/"用戶名",root位於/root中
7.login shell:用戶登入時所使用的shell(可用chsh變更shell)
(只讓使用者收發mail或不允許登入,將7欄位設 /bin/false或/sbin/nologin )
/etc/shadow(內容如下,僅列兩組說明)
root:$1$EIqku5bV$vYC9VA.NmFF47XXX2s.f448:13672:0:99999:7:::
bin:*:13672:0:99999:7:::
/etc/shadow格式說明:(以「:」做為分隔,共九項欄位)
root:$1$EIqku5bV$vYC9VA.NmFF47XXX2s.f448:13672:0:99999:7:::
1 2 3 4 5 6 789
1.使用者名稱
2.密碼
3.密碼最後修改日(自1970/1/1至今的天數)
4.密碼最短可變更天數(預設為0)
5.密碼必須變更的天數(預設為99999-->不需變更)
6.密碼到期前幾天要通知(預設為7)
7.密碼失效期限(到期後,最多可用幾天)
8.帳戶失效日(自1970/1/1至今的天數)
9.空白(未來新增預留)
群組資料庫:
/etc/group(內容如下,僅列兩組說明)
root:::root
bin:::root,bin,daemon
/etc/group格式說明:(以「:」做為分隔,共四項欄位)
bin:::root,bin,daemon
1 23 4
1.群組名稱
2.群組密碼(/etc/gshadow):預設為x(空白:不用密碼;*:不可登入)
3.GroupID:又稱GID
4.屬於該群組的其它人:(預設是只有建立群組的人,可在此欄位加入其它人)
/etc/gshadow(內容如下,僅列兩組說明)
root:::root
bin:::root,bin,daemon
/etc/gshadow格式說明:(以「:」做為分隔,共四項欄位)
bin:::root,bin,daemon
1 2 3 4
1.群組名稱
2.群組密碼:預設為x(空白:不用密碼;!:不可登入)
3.群組管理者帳戶
4.屬於該群組的其它人:(預設是只有建立群組的人,可在此欄位加入其它人)
使用者的新增、刪除、修改分別用useradd、userdel和usermod,甚至透過vi(vim)修改設定檔都能達成;群組部份也雷同,只是把上述指令中的user改為group即可
除了這些基本的設定值外,還有很多相關設定與應用,筆者下次一併補上
最後,我還要說明一個重點,那就是useradd及userdel分別會完成那些事,瞭解整個流程後,對於新增和刪除使用者資料時,能夠具有更大的活用空間
useradd後,系統會做的事:
1.建立家目錄(/home),且權限為該使用者
2.將預設路徑(/etc/skel)下的檔案複製到使用者的家目錄資料夾內
3.將該使用者的資訊寫入/etc/passwd和/etc/shadow
4.建立與使用者名稱相同的群組,並寫入/etc/group和/etc/gshadow
userdel後,系統會做的事:
刪除使用者資料,但家目錄不會刪除,需刪除家目錄用 userdel -r username 即可
而且,現在大多數的人都還是使用M$的系統,對於使用者的觀念有相當的差異,所以筆者才會在這篇說明(其實是之前上課的筆記心得,在此獻醜!),如有誤,還請指正
事先聲明:筆者使用的作業環境為Fedora6
首先,我們要先知道使用者/群組會存取的設定檔與資料庫
使用者資料庫:
/etc/passwd(內容如下,僅列兩組說明)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/etc/passwd格式說明:(以「:」做為分隔,共七項欄位)
root:x:0:0:root:/root:/bin/bash
1 2 3 4 5 6 7
1.使用者名稱:(不可重覆)
2.密碼欄位:(加密於/etc/shadow),預設為x(空白:不用密碼;*:不可登入)
3.UserID(可重覆):從0開始,一般使用者從500開始,0~499留給系統使用
4.GroupID:位於群組資料庫的/etc/group中的GID
5.備註(Finger):也就是這個使用者的相關資料
6.使用者的家目錄:一般使用者預設在/home/"用戶名",root位於/root中
7.login shell:用戶登入時所使用的shell(可用chsh變更shell)
(只讓使用者收發mail或不允許登入,將7欄位設 /bin/false或/sbin/nologin )
/etc/shadow(內容如下,僅列兩組說明)
root:$1$EIqku5bV$vYC9VA.NmFF47XXX2s.f448:13672:0:99999:7:::
bin:*:13672:0:99999:7:::
/etc/shadow格式說明:(以「:」做為分隔,共九項欄位)
root:$1$EIqku5bV$vYC9VA.NmFF47XXX2s.f448:13672:0:99999:7:::
1 2 3 4 5 6 789
1.使用者名稱
2.密碼
3.密碼最後修改日(自1970/1/1至今的天數)
4.密碼最短可變更天數(預設為0)
5.密碼必須變更的天數(預設為99999-->不需變更)
6.密碼到期前幾天要通知(預設為7)
7.密碼失效期限(到期後,最多可用幾天)
8.帳戶失效日(自1970/1/1至今的天數)
9.空白(未來新增預留)
群組資料庫:
/etc/group(內容如下,僅列兩組說明)
root:::root
bin:::root,bin,daemon
/etc/group格式說明:(以「:」做為分隔,共四項欄位)
bin:::root,bin,daemon
1 23 4
1.群組名稱
2.群組密碼(/etc/gshadow):預設為x(空白:不用密碼;*:不可登入)
3.GroupID:又稱GID
4.屬於該群組的其它人:(預設是只有建立群組的人,可在此欄位加入其它人)
/etc/gshadow(內容如下,僅列兩組說明)
root:::root
bin:::root,bin,daemon
/etc/gshadow格式說明:(以「:」做為分隔,共四項欄位)
bin:::root,bin,daemon
1 2 3 4
1.群組名稱
2.群組密碼:預設為x(空白:不用密碼;!:不可登入)
3.群組管理者帳戶
4.屬於該群組的其它人:(預設是只有建立群組的人,可在此欄位加入其它人)
使用者的新增、刪除、修改分別用useradd、userdel和usermod,甚至透過vi(vim)修改設定檔都能達成;群組部份也雷同,只是把上述指令中的user改為group即可
除了這些基本的設定值外,還有很多相關設定與應用,筆者下次一併補上
最後,我還要說明一個重點,那就是useradd及userdel分別會完成那些事,瞭解整個流程後,對於新增和刪除使用者資料時,能夠具有更大的活用空間
useradd後,系統會做的事:
1.建立家目錄(/home),且權限為該使用者
2.將預設路徑(/etc/skel)下的檔案複製到使用者的家目錄資料夾內
3.將該使用者的資訊寫入/etc/passwd和/etc/shadow
4.建立與使用者名稱相同的群組,並寫入/etc/group和/etc/gshadow
userdel後,系統會做的事:
刪除使用者資料,但家目錄不會刪除,需刪除家目錄用 userdel -r username 即可
2007年7月17日 星期二
LPI心得筆記簿 ─ 工作排程(Cron)
對於利用電腦處理一些例行性工作的人,這個功能一定要會使用,在Windows XP 當中可以利用控制台 --> 排定的工作,接著就只要跟著說明的引導來設計例行性工作的排程即可,如此一來就可以設定啟動時間、下次執行時間、執行結果...等說明
在Linux中當然也有類似的功能,那就是cron這支程式(服務)來控管,不過在Linux中要利用cron來編寫工作排程,最好是搭配Shell Script來使用,否則可能會有某些排程的指令會寫的很長一段,如果要偵錯的話,也比較不方便!
當然,在Windows中也是可以利用dos的語法來編寫一個可執行檔(*.exe、*.bat...等),再把這隻程式放入排程當中,一樣能夠達到預期的效果,只是對於使用上的嚴謹程度來說,Linux比Windows還多了許多的限制,當然也有他的強處
在進入cron之前,要先介紹兩個機制,其實他就類似最簡單的權限管制,代表誰能夠使用cron、或是誰不能使用cron這隻程式
除此之外,在Linux中相當重要的一點就是,所有規則描述都是由上往下,如果在上層已經通過該規則後,就不會再對下一層做判斷的動作,為什麼要特別聲明這一點呢?
因為除了cron本身之外,還有cron.allow(/etc/cron.allow)和cron.deny(/etc/cron.deny)這兩個設定檔來判斷誰能使用cron這隻程式,而判斷的順序如下:
假設,在cron.allow和cron.deny中都有使用者test的id,因為那是沒有意義的,在經過cron.allow之後,test就會被允許使用,而不會因為cron.deny也有test而無法使用,這是在Linux中常見的規則錯誤
接著,我們來看看如何使用cron這程式:
cron的設定檔:/etc/crontab(會多一個使用者欄位)
cron的暫存檔:/var/spool/cron
cron的使用指令:
(1)編輯:crontab -e (crontab -u "username" -e:user的crontab)
(2)列出:crontab -l
(3)刪除:crontab -r(清空該使用者的所有cron排程)
cron的設定規則:
(1)欄位說明:
分 時 日 月 星期 command
* * * * *(1~7) 語法編寫(*每單位時間都會執行)
(2)實例說明:
1. 每一分鐘做echo的指令(echo a的結果導向至家目錄的testcron檔)
* * * * * echo a >> ~/testcron
2. 每天的00:00做tmp的備份(利用tar打包/tmp資料夾)
0 0 * * * tar czrf etc.tgz /tmp
3. 其它標示法:
20 8,17 * * * command(每8、17:20分執行command)
*/10 * * * * command(每10分執行command)
以上就是cron的使用方式,至於要如何活用,取決於自己怎麼安排工作的排程,通常都會把時間點設定在較少人執行程式的時間(深夜時段)
筆者在Linux的異地備份(1)中使用crontab的時間點就是在深夜的00:00,而且筆者是把命令語法改為Shell Script的方式,未來要更改排程內容時就只需要更動該Script即可
筆者在此寫個小小的範例:(需注意sh的可執行權限)
backup.sh的內容:
#!/bin/bash
rsync -av /tmp root@192.168.1.99:/home/tmp/
rsync -av /home/test test@192.168.1.99:/home/test/
crontab -e的內容:
0 0 * * * /0000/backup.sh
在Linux中當然也有類似的功能,那就是cron這支程式(服務)來控管,不過在Linux中要利用cron來編寫工作排程,最好是搭配Shell Script來使用,否則可能會有某些排程的指令會寫的很長一段,如果要偵錯的話,也比較不方便!
當然,在Windows中也是可以利用dos的語法來編寫一個可執行檔(*.exe、*.bat...等),再把這隻程式放入排程當中,一樣能夠達到預期的效果,只是對於使用上的嚴謹程度來說,Linux比Windows還多了許多的限制,當然也有他的強處
在進入cron之前,要先介紹兩個機制,其實他就類似最簡單的權限管制,代表誰能夠使用cron、或是誰不能使用cron這隻程式
除此之外,在Linux中相當重要的一點就是,所有規則描述都是由上往下,如果在上層已經通過該規則後,就不會再對下一層做判斷的動作,為什麼要特別聲明這一點呢?
因為除了cron本身之外,還有cron.allow(/etc/cron.allow)和cron.deny(/etc/cron.deny)這兩個設定檔來判斷誰能使用cron這隻程式,而判斷的順序如下:
假設,在cron.allow和cron.deny中都有使用者test的id,因為那是沒有意義的,在經過cron.allow之後,test就會被允許使用,而不會因為cron.deny也有test而無法使用,這是在Linux中常見的規則錯誤
接著,我們來看看如何使用cron這程式:
cron的設定檔:/etc/crontab(會多一個使用者欄位)
cron的暫存檔:/var/spool/cron
cron的使用指令:
(1)編輯:crontab -e (crontab -u "username" -e:user的crontab)
(2)列出:crontab -l
(3)刪除:crontab -r(清空該使用者的所有cron排程)
cron的設定規則:
(1)欄位說明:
分 時 日 月 星期 command
* * * * *(1~7) 語法編寫(*每單位時間都會執行)
(2)實例說明:
1. 每一分鐘做echo的指令(echo a的結果導向至家目錄的testcron檔)
* * * * * echo a >> ~/testcron
2. 每天的00:00做tmp的備份(利用tar打包/tmp資料夾)
0 0 * * * tar czrf etc.tgz /tmp
3. 其它標示法:
20 8,17 * * * command(每8、17:20分執行command)
*/10 * * * * command(每10分執行command)
以上就是cron的使用方式,至於要如何活用,取決於自己怎麼安排工作的排程,通常都會把時間點設定在較少人執行程式的時間(深夜時段)
筆者在Linux的異地備份(1)中使用crontab的時間點就是在深夜的00:00,而且筆者是把命令語法改為Shell Script的方式,未來要更改排程內容時就只需要更動該Script即可
筆者在此寫個小小的範例:(需注意sh的可執行權限)
backup.sh的內容:
#!/bin/bash
rsync -av /tmp root@192.168.1.99:/home/tmp/
rsync -av /home/test test@192.168.1.99:/home/test/
crontab -e的內容:
0 0 * * * /0000/backup.sh
2007年5月15日 星期二
LPI心得筆記簿 ─ 磁碟配額限制(QUOTA)
什麼叫磁碟配額限制,在硬碟現在愈做愈大的時代(從GB級逼進到TB級),應該極少數人會開啟這功能,不過您如果是要拿來做FILE SERVER的話,如果不做限制的話,不是系統死給你看,就是跟你說磁碟不足,甚至有可能會造成資料上的毀損
磁碟配額其實M$或LINUX上都有,在XP-PRO上只要在磁碟區(C:、D:...)按個右鍵就有一個配額的選項可以設定,應該很少數人有設定,在LINUX上主要是有一個QUOTA的DAEMON在控制
在LINUX上的什麼部份最需要用到QUOTA的設定呢?其實就是/home和/var/spool/mail(不過真的要實行QUOTA時,硬碟規劃時將/home和/var/spool/mail切割成獨立的磁碟區),因為QUOTA只針對磁碟區,而不能針對單一目錄
磁碟配額限制的注意事項:
1.指定分割區掛載
2.初始化QUOTA的資料庫
3.編輯QUOTA設定
4.啟動QUOTA
1.在/etc/fstab中加入兩個quota
/dev/hda1 / ext3 defaults,usrquota,grpquota 1 1
/dev/hda2 /home ext3 defaults,usrquota,grpquota 1 2
2.重新掛載
#mount -a
#mount(確認是否正常掛載)
/dev/hda1 on / type ext3 (rw,usrquota,grpquota)
/dev/hda2 on / type ext3 (rw,usrquota,grpquota)
3.利用edquota編輯設定(/hda1有45GB、/hda2有95GB)
#edquota [-u|-g] (-使用者|-群組)載掛目錄
#edquota -g mis(mis群組的配額)
Disk quotas for group mis (gid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hda1 0 20000000 25000000 0 0 0
/dev/hda2 0 40000000 45000000 0 0 0
#edquota -g users(users群組的配額)
Disk quotas for group users (gid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hda1 0 10000000 15000000 0 0 0
/dev/hda2 0 40000000 45000000 0 0 0
4.啟動quota
#quotaon /(啟動/的磁碟配額限制)
#quotaon /home(啟動/home的磁碟配額限制)
這樣就可以針對這兩個載掛的磁碟區做磁碟配額限制,就不會爆滿了!
其它使用參數:
#edquota -t (設定default的彈性時間)
#edquota -T username(設定特定人的彈性時間)
磁碟配額其實M$或LINUX上都有,在XP-PRO上只要在磁碟區(C:、D:...)按個右鍵就有一個配額的選項可以設定,應該很少數人有設定,在LINUX上主要是有一個QUOTA的DAEMON在控制
在LINUX上的什麼部份最需要用到QUOTA的設定呢?其實就是/home和/var/spool/mail(不過真的要實行QUOTA時,硬碟規劃時將/home和/var/spool/mail切割成獨立的磁碟區),因為QUOTA只針對磁碟區,而不能針對單一目錄
磁碟配額限制的注意事項:
1.指定分割區掛載
2.初始化QUOTA的資料庫
3.編輯QUOTA設定
4.啟動QUOTA
1.在/etc/fstab中加入兩個quota
/dev/hda1 / ext3 defaults,usrquota,grpquota 1 1
/dev/hda2 /home ext3 defaults,usrquota,grpquota 1 2
2.重新掛載
#mount -a
#mount(確認是否正常掛載)
/dev/hda1 on / type ext3 (rw,usrquota,grpquota)
/dev/hda2 on / type ext3 (rw,usrquota,grpquota)
3.利用edquota編輯設定(/hda1有45GB、/hda2有95GB)
#edquota [-u|-g] (-使用者|-群組)載掛目錄
#edquota -g mis(mis群組的配額)
Disk quotas for group mis (gid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hda1 0 20000000 25000000 0 0 0
/dev/hda2 0 40000000 45000000 0 0 0
#edquota -g users(users群組的配額)
Disk quotas for group users (gid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hda1 0 10000000 15000000 0 0 0
/dev/hda2 0 40000000 45000000 0 0 0
4.啟動quota
#quotaon /(啟動/的磁碟配額限制)
#quotaon /home(啟動/home的磁碟配額限制)
這樣就可以針對這兩個載掛的磁碟區做磁碟配額限制,就不會爆滿了!
其它使用參數:
#edquota -t (設定default的彈性時間)
#edquota -T username(設定特定人的彈性時間)
2007年5月9日 星期三
LPI心得筆記簿 ─ 硬碟規劃(LVM)
介紹完RAID之後,現在來說說預設會使用的硬碟規畫模式(LVM)
什麼是LVM呢?
LVM(Logical Volume Manager):
原先運用於IBM AIX Unix系統,是一種分配硬碟空間到邏輯磁區的方法,這種方式比傳統Partition分配容易做容量調整,可動態放大檔案系統的機制,在說明之前要先解釋一些名詞
名詞解釋:
1. PV(Physical Vloume)實體磁區
Linux 中,可想成原先的一個partition就是一個PV
2. VG(Logical Volume Group)邏輯磁區群組
Linux中的視為一顆硬碟,但是實際上是由一個或多個Partition組成,也就是所VG是一個以上的PV所組成的群組
3. LV(Logical Volume)邏輯磁區
就是指在VG中每一個區塊的大小,就類似原先我們會把/HOME掛載在/HDAx,而利用LVM後,就是掛載在某個LV的區域
注意事項:
1. 無論那一個區域,都可做為PV
2. 指定好數個Partition為PV,再把數個PV架為一個VG,啟動成可用的空間,並分割所要的LV,但是大小不能超過VG的大小(就類似兒子的年紀比父親大= =+)
3.只有Boot Partition不設置為LVM
使用套件:
利用rpm來做檢查
#rpm -qa | grep lvm
如果有出現lvm2-x.xx.xx-x.x.x就代表已安裝(預設會有)
如果沒有再利用yum自行安裝
#yum -y install lvm
開始建立:
1. 已有三顆大小不同的實體硬碟的Partition(hda、hdb、hdc)
2. 指定分割區為PV
#pvcreate /dev/hda
#pvcreate /dev/hdb
#pvcreate /dev/hdc
#pvdisplay (可列出目前所指定的分割區)
3. 指定數個PV成為VG
#vgcreate vg0 /dev/hd[a-c](將hda、hdb、hdc的PV建為一個名為VG0的VG)
#vgdisplay (檢視目前VG的設定)
4. 啟動VG
#vgchange -a y vg0(啟動vg0為可用磁區,-a為active之意)
5. 建立LV的大小(以-L來指定大小,例1.5GB 為-L 1500)
#lvcreate -L 100000 vg0(建立VG0中的LV大小為100GB)
(+100為加大100MB、-100為縮小100MB、100為指定大小)
6. 會自動建立一個/dev/vg0的目錄,且目錄下會建立一個LogVo01的連結(LV),所要指定LV,使用-n即可
#lvcreate -L 1000 vg0 -n testlg1(指定vg0 中的中的testlg1的LV大小為1GB)
#lvdisplay vg0(檢視目前設定)
--Logical volume--
LV name /dev/vg0/LogVo01
....(略)
--Logical volume--
LV name /dev/vg0/testlg1
7.格式化及掛載
#mkfs -j /dev/vg0/testlg1
(以ext3格式化/dev/vg0/testlg1,原本mkfs是以ext2,加上-j為ext3)
#mkdir /mnt/test(在/mnt下建立test資料夾)
#mount /dev/vg0/testlg1 /mnt/test(掛載/dev/vg0/testlg1在/mnt/test下)
經過了以上的步驟,基本上就可使用了,但是如果不敷使用時,可以加入新的硬碟,也就是LVM最大的特性,可「動態」變動磁碟大小,建立方式如下:
加入一個實體的硬碟Partition(/dev/hdd)
1. 加入PV
#pvcreate /dev/hdd
2. 擴充VG
#vgextend vg0 /dev/hdd
3. 將原先掛載的vg0卸載
#umount /dev/vg0/testlg1
4. 擴充LV的大小(從原先的1GB擴充為2GB)
#lvextend -L 2000 /dev/vg0/testlg1
5. 磁碟檢查
#fsck -f /dev/vg0/testlg1(若為ext2則改用e2fsck)
6. 重新格式化
#resize2fs /dev/vg0/testlg1(因新增之磁碟區尚未格式化)
7. 重新掛載後即可使用(重開機)
ps:其實Linux中有個指令不需重開機,即可讓硬碟分割區及格式化直接生效(可以減少許多等待的時間),就是#partprobe
(筆者:雖然網路上有更多詳盡的文章,這是我的心得筆記,所以還是上來獻個醜,雖然已經有謎之聲說不需要寫這個了啦!= =+)
什麼是LVM呢?
LVM(Logical Volume Manager):
原先運用於IBM AIX Unix系統,是一種分配硬碟空間到邏輯磁區的方法,這種方式比傳統Partition分配容易做容量調整,可動態放大檔案系統的機制,在說明之前要先解釋一些名詞
名詞解釋:
1. PV(Physical Vloume)實體磁區
Linux 中,可想成原先的一個partition就是一個PV
2. VG(Logical Volume Group)邏輯磁區群組
Linux中的視為一顆硬碟,但是實際上是由一個或多個Partition組成,也就是所VG是一個以上的PV所組成的群組
3. LV(Logical Volume)邏輯磁區
就是指在VG中每一個區塊的大小,就類似原先我們會把/HOME掛載在/HDAx,而利用LVM後,就是掛載在某個LV的區域
注意事項:
1. 無論那一個區域,都可做為PV
2. 指定好數個Partition為PV,再把數個PV架為一個VG,啟動成可用的空間,並分割所要的LV,但是大小不能超過VG的大小(就類似兒子的年紀比父親大= =+)
3.只有Boot Partition不設置為LVM
使用套件:
利用rpm來做檢查
#rpm -qa | grep lvm
如果有出現lvm2-x.xx.xx-x.x.x就代表已安裝(預設會有)
如果沒有再利用yum自行安裝
#yum -y install lvm
開始建立:
1. 已有三顆大小不同的實體硬碟的Partition(hda、hdb、hdc)
2. 指定分割區為PV
#pvcreate /dev/hda
#pvcreate /dev/hdb
#pvcreate /dev/hdc
#pvdisplay (可列出目前所指定的分割區)
3. 指定數個PV成為VG
#vgcreate vg0 /dev/hd[a-c](將hda、hdb、hdc的PV建為一個名為VG0的VG)
#vgdisplay (檢視目前VG的設定)
4. 啟動VG
#vgchange -a y vg0(啟動vg0為可用磁區,-a為active之意)
5. 建立LV的大小(以-L來指定大小,例1.5GB 為-L 1500)
#lvcreate -L 100000 vg0(建立VG0中的LV大小為100GB)
(+100為加大100MB、-100為縮小100MB、100為指定大小)
6. 會自動建立一個/dev/vg0的目錄,且目錄下會建立一個LogVo01的連結(LV),所要指定LV,使用-n即可
#lvcreate -L 1000 vg0 -n testlg1(指定vg0 中的中的testlg1的LV大小為1GB)
#lvdisplay vg0(檢視目前設定)
--Logical volume--
LV name /dev/vg0/LogVo01
....(略)
--Logical volume--
LV name /dev/vg0/testlg1
7.格式化及掛載
#mkfs -j /dev/vg0/testlg1
(以ext3格式化/dev/vg0/testlg1,原本mkfs是以ext2,加上-j為ext3)
#mkdir /mnt/test(在/mnt下建立test資料夾)
#mount /dev/vg0/testlg1 /mnt/test(掛載/dev/vg0/testlg1在/mnt/test下)
經過了以上的步驟,基本上就可使用了,但是如果不敷使用時,可以加入新的硬碟,也就是LVM最大的特性,可「動態」變動磁碟大小,建立方式如下:
加入一個實體的硬碟Partition(/dev/hdd)
1. 加入PV
#pvcreate /dev/hdd
2. 擴充VG
#vgextend vg0 /dev/hdd
3. 將原先掛載的vg0卸載
#umount /dev/vg0/testlg1
4. 擴充LV的大小(從原先的1GB擴充為2GB)
#lvextend -L 2000 /dev/vg0/testlg1
5. 磁碟檢查
#fsck -f /dev/vg0/testlg1(若為ext2則改用e2fsck)
6. 重新格式化
#resize2fs /dev/vg0/testlg1(因新增之磁碟區尚未格式化)
7. 重新掛載後即可使用(重開機)
ps:其實Linux中有個指令不需重開機,即可讓硬碟分割區及格式化直接生效(可以減少許多等待的時間),就是#partprobe
(筆者:雖然網路上有更多詳盡的文章,這是我的心得筆記,所以還是上來獻個醜,雖然已經有謎之聲說不需要寫這個了啦!= =+)
2007年5月7日 星期一
LPI心得筆記簿 ─ 硬碟規劃(RAID)
今年一月,跑去上了某電腦補習班有關於LPI的認證課程,花了不少的銀子,所以只好乖乖的去上課(全勤,唸書有這麼乖就好),之後一直忙於轉換工作的事情,總是覺得沒時間複習,所以就上來跟大家一起分享上課的心得,同時也在這地方與大家做個交流吧!如果有所遺漏之處還請各位不吝指教
前言:
1. 其實在上LPI之前,有先安排關於網路概論的課程,這裡不加說明(跳線就是當時老師說不用教的地方= =+),不過這跟大學課程中機算機概論的部份有許多雷同之處(除了ROUTE TABLE之外),需要的人還是回去翻翻家中已蓋滿灰塵的機概吧!
2.說明一下上課時所用的系統,使用FEDORA6(那時剛出約一個多月吧!),雖然說只是LINUX的一個分支,不過因為使用者較多,且社群的資料較多,硬體部份就略過了(補習班的硬體能夠多好呢?唉...),現在還有一股熱潮的UBUNTU當然也不可小看(因為有金主支持總是比較有利),不過因為使用模組不同(不知這說法有無不當UBUNTU為Debian、FEDORA為 Redhat),真的有需要的也可以去參考一下
安裝:
在安裝之前要先介紹一下硬體的規畫,在剛開始上手時,可以用防呆的安裝法,全部下一步(同時關閉防火牆及SELINUX),如果是要在實務上應用的主機,就要動點頭腦規畫
硬碟規畫:首先要先有RAID或是LVM的規畫概念,這裡先介紹RAID
RAID(Redundant Array of Independent Disks,俗稱為磁碟陣列),level有分為RAID0~6七種類型,不過一般常見的應用仍只有RAID 0、1和5三種
舉例來說:如果我們要存一份資料,其中包括了A、B、C、D四個資料的組合
RAID 0:需二個硬碟
分別把A、B和C、D分別存在不同的PARTITION中,特性是速度快,但無安全性,因為資料是分存在兩個不同的磁碟中(如果兩個PARTITION是在同個硬體磁碟區中則無意義),所以可以增進存取速度,但是其中一個硬碟如果毀損就會造成該資料無法存取
RAID 1:最少需二個硬碟
分別把A、B、C、D存在兩個不同的PARTITION中,特性是安全性高,但速度慢,因為是將資料同步存在兩個不同硬碟當中,故所需時間較久,所以也不能夠把兩份資料存在同一個硬體磁碟中,不然硬體壞了,資料受損機率也極高
RAID 5:最少需三個硬碟
意思類似將A、B、C和B、C、D及A、C、D分別存在三個不同硬體磁碟區中,特性是速度比RAID 1快、安全性較RAID 0好,因為只要三個其中一個硬碟毀損,我們還是可以利用剩下兩個讀取到完整的資料,但是建構成本較高(硬碟多一個)
PS:當RAID1和5的其中一個硬碟毀損時,需要一個新的硬碟來做為備援(Hot Spare),這個備援的硬碟也可以在一開始時就加入mdadm在建立raid的架構中,所以在本文後段的範例中,筆者已經直接把備援的硬碟,在建立raid時就直接加入(即時性的考量)
在linux中的製作模組為mdadm,當準備好四個相同大小的硬碟後,以
# rpm -qa | grep mdadm(以rpm方式查詢是否具有此套件)
無:mdadm
# yum -y install mdadm (利用線上更新yum來安裝此套件)
有:mdadm
# uname -r(確認kernel 2.4以上版本才支援RAID)
建立RAID的使用指令
建立RAID 0:
# mdadm -Cv -l 0 /dev/md0 -n 2 /dev/hdc {8,9}
-C是指建立
-v是指察看過程
-l是指建立的屬於level 0、1或5
/dec/md0是指在linux中建立的裝置名稱為RAID 0
-n 2是指幾個RAID裝置屬於建立好的RAID 0
/dev/hdc {8,9}是指建立在/dev/hdc8和/dev/hdc9兩個partition上
可利用--detail參數來觀看建立好的RAID 0(1、5)的資訊
# mdadm --detail /dev/md0(md1、5)
其中有chunk-size是指寫進一個partition的大小 ,例如RAID 0中把一個file同時寫進兩個或以上partition時,會把file分成多大寫進其中一個partition(系統記錄在/proc/mdstat)
格式化:
# mke2fs -v -b 4096 -R stride=16 /dev/md0(md後為數字0)
(-R stride=n來增加效能,因為chunk-size=block*stride,因此對於RAID 0來說可以增加效能,對於其它RAID不一定能增加效能,例:RAID 1)
掛載並使用
# mkdir /mnt/md0(建立/mnt/md0資料夾)
# mount /dev/md0 /mnt/md0(掛載/dev/md0至/mnt/md0)
解除RAID裝置
# umount /dev/md0(卸載/dev/md0)
# mdadm -S /dev/md0(參數-S會直接解除 /dev/md0上的RAID 0)
寫入/etc/fstab(開機時會載入的硬體設定檔)
# vi /etc/fstab(以vi編輯/etc/fstab設定檔)
最後一行加入
/dev/md0 /mnt/md0 ext2 default 1 2
(fstab欄位說明)
第一欄 實際的 device 名稱。
第二欄 對應到的目錄結構(mount point)。
第三欄 該分割區的檔案系統ext、ext2、msdos、iso9660、nfs、swap。
第四欄 在 mount 時的參數。
第五欄 在使用 dump 時是否記錄,不需要則輸入0。
第六欄 決定在開機時執行 fsck 的先後順序。
建立RAID 1(建立流程,並參考RAID 0之說明)
#mdadm -Cv --level=1 /dev/md0 -n 2 /dev/hdc8 /dev/hdc9 -x1 /dev/hdc10
(-x:指定備用的硬碟,當其中一個毀損時會自動備援)
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt/md0
# cp -a /bin /mnt/md0(copy /bin中的資料做測試)
# mdadm /dev/md0 -f /dev/hdc9 (測試/dev/hdc9壞掉時)
# mdadm -D /dev/md0
恢復/dev/hdc9
# mdadm /dev/md0 --remove /dev/hdc9
# mdadm /dev/md0 --add /dev/hdc9
建立RAID 5(建立流程,並參考RAID 0之說明)
# mdadm -C -l 5 /dev/md0 -n 3 /dev/hdc{8,9,10} -x 1 /dev/hdc11
(可加入-c128的參數,代表chunk-size為128)
這些就大略是RAID在Linux(Fedora)中的實作,如有興趣也可以自己實作一下,當然不用真的準備這麼多實體硬碟,可以在同個硬碟中割出4個相同大小的PARTITION來測試,等真的有這麼多實體硬碟時才能派上用場
不過這種軟體的RAID,效能上一定比不上動輒數萬元的硬體RAID備援來得高,但是對於小市民來說,也無非是種資料備援的手段之一(也要看是那種重要資料啦!)
PS:發現隨便整理一小點筆記就可以寫出來一堆,真害怕後面的路...
前言:
1. 其實在上LPI之前,有先安排關於網路概論的課程,這裡不加說明(跳線就是當時老師說不用教的地方= =+),不過這跟大學課程中機算機概論的部份有許多雷同之處(除了ROUTE TABLE之外),需要的人還是回去翻翻家中已蓋滿灰塵的機概吧!
2.說明一下上課時所用的系統,使用FEDORA6(那時剛出約一個多月吧!),雖然說只是LINUX的一個分支,不過因為使用者較多,且社群的資料較多,硬體部份就略過了(補習班的硬體能夠多好呢?唉...),現在還有一股熱潮的UBUNTU當然也不可小看(因為有金主支持總是比較有利),不過因為使用模組不同(不知這說法有無不當UBUNTU為Debian、FEDORA為 Redhat),真的有需要的也可以去參考一下
安裝:
在安裝之前要先介紹一下硬體的規畫,在剛開始上手時,可以用防呆的安裝法,全部下一步(同時關閉防火牆及SELINUX),如果是要在實務上應用的主機,就要動點頭腦規畫
硬碟規畫:首先要先有RAID或是LVM的規畫概念,這裡先介紹RAID
RAID(Redundant Array of Independent Disks,俗稱為磁碟陣列),level有分為RAID0~6七種類型,不過一般常見的應用仍只有RAID 0、1和5三種
舉例來說:如果我們要存一份資料,其中包括了A、B、C、D四個資料的組合
RAID 0:需二個硬碟
分別把A、B和C、D分別存在不同的PARTITION中,特性是速度快,但無安全性,因為資料是分存在兩個不同的磁碟中(如果兩個PARTITION是在同個硬體磁碟區中則無意義),所以可以增進存取速度,但是其中一個硬碟如果毀損就會造成該資料無法存取
RAID 1:最少需二個硬碟
分別把A、B、C、D存在兩個不同的PARTITION中,特性是安全性高,但速度慢,因為是將資料同步存在兩個不同硬碟當中,故所需時間較久,所以也不能夠把兩份資料存在同一個硬體磁碟中,不然硬體壞了,資料受損機率也極高
RAID 5:最少需三個硬碟
意思類似將A、B、C和B、C、D及A、C、D分別存在三個不同硬體磁碟區中,特性是速度比RAID 1快、安全性較RAID 0好,因為只要三個其中一個硬碟毀損,我們還是可以利用剩下兩個讀取到完整的資料,但是建構成本較高(硬碟多一個)
PS:當RAID1和5的其中一個硬碟毀損時,需要一個新的硬碟來做為備援(Hot Spare),這個備援的硬碟也可以在一開始時就加入mdadm在建立raid的架構中,所以在本文後段的範例中,筆者已經直接把備援的硬碟,在建立raid時就直接加入(即時性的考量)
在linux中的製作模組為mdadm,當準備好四個相同大小的硬碟後,以
# rpm -qa | grep mdadm(以rpm方式查詢是否具有此套件)
無:mdadm
# yum -y install mdadm (利用線上更新yum來安裝此套件)
有:mdadm
# uname -r(確認kernel 2.4以上版本才支援RAID)
建立RAID的使用指令
建立RAID 0:
# mdadm -Cv -l 0 /dev/md0 -n 2 /dev/hdc {8,9}
-C是指建立
-v是指察看過程
-l是指建立的屬於level 0、1或5
/dec/md0是指在linux中建立的裝置名稱為RAID 0
-n 2是指幾個RAID裝置屬於建立好的RAID 0
/dev/hdc {8,9}是指建立在/dev/hdc8和/dev/hdc9兩個partition上
可利用--detail參數來觀看建立好的RAID 0(1、5)的資訊
# mdadm --detail /dev/md0(md1、5)
其中有chunk-size是指寫進一個partition的大小 ,例如RAID 0中把一個file同時寫進兩個或以上partition時,會把file分成多大寫進其中一個partition(系統記錄在/proc/mdstat)
格式化:
# mke2fs -v -b 4096 -R stride=16 /dev/md0(md後為數字0)
(-R stride=n來增加效能,因為chunk-size=block*stride,因此對於RAID 0來說可以增加效能,對於其它RAID不一定能增加效能,例:RAID 1)
掛載並使用
# mkdir /mnt/md0(建立/mnt/md0資料夾)
# mount /dev/md0 /mnt/md0(掛載/dev/md0至/mnt/md0)
解除RAID裝置
# umount /dev/md0(卸載/dev/md0)
# mdadm -S /dev/md0(參數-S會直接解除 /dev/md0上的RAID 0)
寫入/etc/fstab(開機時會載入的硬體設定檔)
# vi /etc/fstab(以vi編輯/etc/fstab設定檔)
最後一行加入
/dev/md0 /mnt/md0 ext2 default 1 2
(fstab欄位說明)
第一欄 實際的 device 名稱。
第二欄 對應到的目錄結構(mount point)。
第三欄 該分割區的檔案系統ext、ext2、msdos、iso9660、nfs、swap。
第四欄 在 mount 時的參數。
第五欄 在使用 dump 時是否記錄,不需要則輸入0。
第六欄 決定在開機時執行 fsck 的先後順序。
建立RAID 1(建立流程,並參考RAID 0之說明)
#mdadm -Cv --level=1 /dev/md0 -n 2 /dev/hdc8 /dev/hdc9 -x1 /dev/hdc10
(-x:指定備用的硬碟,當其中一個毀損時會自動備援)
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt/md0
# cp -a /bin /mnt/md0(copy /bin中的資料做測試)
# mdadm /dev/md0 -f /dev/hdc9 (測試/dev/hdc9壞掉時)
# mdadm -D /dev/md0
恢復/dev/hdc9
# mdadm /dev/md0 --remove /dev/hdc9
# mdadm /dev/md0 --add /dev/hdc9
建立RAID 5(建立流程,並參考RAID 0之說明)
# mdadm -C -l 5 /dev/md0 -n 3 /dev/hdc{8,9,10} -x 1 /dev/hdc11
(可加入-c128的參數,代表chunk-size為128)
這些就大略是RAID在Linux(Fedora)中的實作,如有興趣也可以自己實作一下,當然不用真的準備這麼多實體硬碟,可以在同個硬碟中割出4個相同大小的PARTITION來測試,等真的有這麼多實體硬碟時才能派上用場
不過這種軟體的RAID,效能上一定比不上動輒數萬元的硬體RAID備援來得高,但是對於小市民來說,也無非是種資料備援的手段之一(也要看是那種重要資料啦!)
PS:發現隨便整理一小點筆記就可以寫出來一堆,真害怕後面的路...
訂閱:
文章 (Atom)