Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Linux File System
© Netman <netman@study-area.org>
First thing you'll remember today:
Everything is file,Everything is file,
&&
file is everything!file is everything!
今天您還要記住另一件事:
當所學的技術不能轉換成金錢當所學的技術不能轉換成金錢
的時候,那是白學了。的時候,那是白學了。
因此,個人使用與企業應用的因此,個人使用與企業應用的
差異是非常懸殊的!差異是非常懸殊的!
•Objectives
1. Linux 檔案系統種類
2. Linux 檔案系統運作原理
3. 硬碟與分割區
4. Linux 檔案系統建置
5. Logical Volume Manager (LVM)
6. Software RAID
7...
Q uestion:
甚麼是檔案系統?
● 簡單來說,能夠存放檔案且更重要的是
能從裡面找回檔案的系統。
● 檔案系統選擇考量要素:
– 效能
– 容量
– 安全性
– 擴充性
– 通用性
Part 1
Linux 檔案系統種類
傳统(非日誌式)檔案系統
■ ext2
已在 Linux 系統上運行非常長久一段時間,基於 inode 基礎
管理檔案。可輕鬆升級為 ext3
■ MS-DOS/VFAT.
由 Microsoft 設計專門運行在 Windows 及 DOS 系...
日誌式檔案系統
每一筆檔案變更都會被記錄在日誌中,
然後才會進行真正的修改,
修改後再更新記錄。
■ ext3
為 ext2 檔安系統的延伸,主要增加了日誌功能
■ ReiserFS
原本由 Hans Reiser 開發,採用資料庫方式來管理檔案,
以 Balanced Binary Tree 結構提供更高效能的資料存取。
■ XFS
原本...
Virtual Filesystem Switch
•VFS 把不同的檔案系統對上層程式隱藏
起來,以提供統一的檔案資料存取模式
•具體的檔案存取行為則交由系統核心程式
負責
•可以為不具備 Unix 屬性的檔案系統解決
類 Unix 系統的操...
Virtual Filesystem Switch
App1 App3App2
VFS
VFATReiserfsEXT3EXT2
Part 2
Linux 檔案系統運作原理
•Linux 檔案系統中,檔案的資料 (data)
與資訊 (information) 是分開存放的
•每份檔案的資訊會被記錄在 inode
(index node) 中
... ...
Inode block data block
• 每份 inode 大小為 128 byte ,內容:
– 檔案類別
– 檔案權限
– 連結數目
– 擁有者資訊 (user & group)
– 檔案大小
– 時間戳印 (atime, mtime, ctime)
– Data Block ...
•檔案系統在建立時(格式化),會劃分出
基本的使用區塊空間 (block) ,然後再分
配為不同的使用類型:
–Super Block
–Block Group Descriptor
–Block Bit Map
–Inode Bit Map
...
•在建立 block 的時候,一般可以指定不
同的大小:
–數量的不同
–浪費程度的不同(參考下頁)
–效能的不同
•因為 data block 的使用基本是獨佔式的
( 以一個 5K 大小的檔案為例 ) :
–4K 大小的 block 會浪費 3K
–2K 大小的 block 會浪費 1K
–1K 大小的 block 會浪費 0K
•由於現在的檔案系統體積非常龐大,為改
善索引效率,設計上會把 block 劃分為
block group :
group0 group1 Group2...
•每個 group 的功能都是相同的
group0 group1 Group2...
Super
Block
Group
Descriptor Data Block ...Block
Bit Map
Inode
Table
Inode
Bit ...
■ Data Block
檔案系統的主要資源,用來存放檔案資料
(data) 內容。在比例上所佔的數量最多。
Q: 怎麼知道一份檔案的資料放哪呢?
Data Block ...
■ Inode Table
存放每一份檔案的 inode 資訊。這也是檔
案系統中另一主要資源,若所有 inode 都
分配出去就不能建立新檔案了。 Inode 會告
訴檔安的 data block 位置。
Q: 怎麼知道哪些 inode 跟 ...
■ Inode Bit Map
以 0 或 1 的狀態對照 inode table 的分
配情況。
Q: 怎麼知道 Inode Bit Map 有多大呢?
Inode
Bit Map
■ Block Bit Map
以 0 或 1 的狀態對照 data block 的分配
情況。
Q: 怎麼知道 Block Bit Map 有多大呢?
Block
Bit Map
■ Group Descriptor
記錄及標識 Bit Maps, Inode Table, Data Block
等區塊範圍及尋址指針。
Q: 怎麼知道整個檔案系統的分配及使用情形呢?
Group
Descriptor
■ Super Block
記錄整個檔案系統分配與使用狀態:
–已被使用及可用的 inode 與 block 數量
–Block Group 數量及每個群組的 inode 與
block 數量
–檔案系統的使用記錄,如掛載、寫入時間等等
–其他...
•Question :
如何從一個檔案系統中找到一份檔案呢?
目錄的功能
•目錄本身也是一份檔案
•內容記錄其下所索引的每一份檔案名稱及
其 inode 號碼
. : 1234
.. : 4321
File1 : 1122
File2 : 2233
File3 : 3344
File4 : 5566
.....
•所有的檔案(含目錄本身)都是在目錄之
下索引的,如此就構成了所謂的路徑:
–絕對路徑:從根目錄開始索引
–相對路徑:從當前目錄開始索引
。。。
。。。
。。。
Directory
File Name
Directory
Inode
Data
Block
關於 link
•Hard Link : ln file hard.link
–使用相同的 inode 索引,與原檔案地位同等
•Symbolic Link : ln -s file soft.link
–使用不同的 inode ,但資料內容是...
File Name
Directory
Inode
Data
Symbolic LinkHard Link
InodeInode
Path
關於 Link Counter
•在 Hard Link 建立時增加 1
•在檔案刪除時減少 1
–若 Link Counter 大於 0 則單純在
Directory 中把檔案名稱移除
–若 Link Counter 等於 0 除了從
Dir...
Ext2 檔案系統的限制
•每一檔案名稱不得超過 255 個字母
•單一路徑 ( 含 /) 不得超過 4096 個字母
•在 1K block size 的情況下,單一檔案
最大 16G 、整個檔案系統最大 2T
•在 4K block siz...
Ext2 檔案系統的弱點
•空間浪費嚴重(小檔案&零碎尾巴)
•Inode 數量固定不能修改
– 過多會壓縮 Data Block 的空間
– 過少容易到達極限,就算有閒置的
Data Block 也不能建立新檔案
•檔案數量過多時會導致效能下降
reiserfs 檔案系統
•使用 tailing block 減少空間浪費
•Inode 數量按需而建
•使用 Balanced Binary Tree 提高效能
檔案修改的行為
•每一次檔案修改會產生兩筆 transaction
–資料 (Data) 修改
–資訊 (Inode) 修改
•若只完成其中一筆 transaction 則為檔
案損毀 (curruption) 情形
... ...
系統在重開機過程
•會檢查 Super Block 的 Valid Bit 以及
掛載次數 / 天數來確認檔案損毀情形并加
以修復
•傳統非日誌式檔案系統會針對每一份檔案
作檢查,若檔案數量龐大的話這將耗費相
當多的時間!
•這在企業經營中常因...
日誌式檔案系統
•每一次檔案修改之前,會先在日誌中進行記錄,
待 transaction 完成之後再更新記錄
•如此在下次開機的時候,只需檢查日誌中有登記
的檔案即可。這大幅縮減了檔案系統的檢查時間
,為企業降低 Down Time 成本。
•...
Part 3
硬碟與分割區
Linux 系統的硬碟名稱
•IDE HDD/ATAPI CDROM
–1st IDE: hda, hdb
–2nd IDE: hdc, hdd
•SCSI HDD/SATA HDD/USB Disk
–sda
–sdb
–sdc
–...
Linux 系統的分割區名稱
•IDE HDD/ATAPI CDROM
–hda1
–hda2
–hdc5
–...
•SCSI HDD/SATA HDD/USB Disk
–sda1
–sdb2
–sdc5
–...
分割區類別
•Primary Partition
–最多 4 個
–號碼從 1 到 4 ,不需連號不需按順序
•Extended Partition
–從 Primary 轉換過來
–最多只能 1 個也可以不設
•Logical Partiti...
4
Linux 系統的分割範例
•以 5 個分割區為例:
1 25 6 7 8
1
16 7 8
31
95
Primary
25 6
Extended Logical
分割區考量因素
•內容分類
–系統檔案
–程式/原始碼
–資料文件
•檔案性質差異
–size
–存取行為
•安全性
–掛載選項
•效能
•擴充性
最基本分割區
•/ (root)
•swap
常見獨立割區
•/boot
•/home
•/opt
•/tmp
•/srv
•/usr
•/var
Part 4
Linux 檔案系統建置
檔案系統建置大致流程
1. fdisk
2. partprobe
3. mkfs
4. mkdir
5. /etc/fstab
6. mount
fdisk 命令
•修改/建立 partition 的工具
•常見參數:
-l : 列出分割區資訊
•基本語法
fdisk /dev/<disk>
常見 fdisk 內部命令
m
列出命令說明簡要
p
列出分割區資訊
n
建立分割區
d
刪除分割區
l
列出檔案系統識別碼
t
修改檔案系統識別碼
q
不作任何變更離開
w
儲存變更并離開
•請習慣 fdisk 命令的 Q & A 操作模式
•例:
partprobe 命令
•當 fdisk 命令完成分割區修改之後,系
統核心仍然使用舊有資訊
•要系統使用修改之後的新資訊,有兩個方
法:
–reboot
–Partprobe
•檢查 /proc/partitions 可獲知當前系統
的分割...
檔案系統格式化
•在儲存設備上建立檔案系統
•在 linux 上使用 mkfs 命令 :
mkfs -t <type> [options] <device>
•以 ext3 為例:
mkfs.ext3
mkfs -t ext3
mke2fs -...
•常見 mkfs 選項:
-b <size>
•Block Size
-c
•檢查 bad block
-i <ratio>
•Inode 對 byte 的比例
-N <number>
•Inode 總量(大約值)
-j
•啟用 journal...
檔案系統掛載
•Linux 檔案系統跟 Windows 不同,并
不使用磁碟代號
•所有儲存設備必需掛載 (mount) 到一個
目錄才能存取
•掛載目錄最好是空的 (empty) ,也稱為
掛載點 (Mount Point)
•設備不使用時可...
檔案系統掛載
mount
mount 命令
•命令語法:
mount -t <fs_type> -o <m_opts>
<device> <mount_point>
•Example:
mount -t iso9660 -o ro,nosuid
/dev/sr0 /me...
常見掛載選項:
rw/ro
•可否寫人
sync/async
•是否同步
dev/nodev
•是否可以存取設備
exec/noexec
•可否執行
suid/nosuid
•可否使用 suid 轉換執行身份
掛載設定檔 fstab
•路徑:
/etc/fstab
•欄位:
<device>
•設備路徑或識別標記
<m_point>
•掛載點路徑
<fs_type>
•檔案系統類別
<m_options>
•掛載選項
<dump>
•是否在 dump...
● fstab 專屬選項
auto/noauto
•是否在執行 mount -a 進行掛載
user/nouser
•是否允許非管理員掛載
defaults
•rw,sync,dev,exec,suid,auto,nouser
•檔設備設定存在於 fstab 之後,可以簡
化掛載命令:
mount <dev>
mount <m_point>
mount -a
umount 命令
•命令語法:
umount <device>
umount <mount_point>
•條件
該設備目前不能被使用中
Part 5
Logical Volume Manager
(LVM)
問大家幾個問題:
•當硬碟爆了怎辦?
•分割硬碟時,有些分割區太大有些又太小怎調整?
•硬碟槽插滿了,怎麼用更大的硬碟來替換?
•公司生意太好了,沒幾年就要升級硬碟怎麼辦?
•那些隨時在變更的資料都怎麼備份的?
•...?
• 這些都不是重點 ...
我只問一個問題就夠了:
您打算要公司花多少
Down Time
成本在上面?!
LVM 的好處
•突破過往傳統 partition 的限制,輕易組
建及擴充龐大的檔案系統空間
•輕鬆調整容量大小
•在支援熱插拔的設備上,不需要停止服務
就能替換硬碟
•可利用 striping 提高更好的存取效能
•可利用 shapshot...
LVM 基本元件
– Physical Volume
>ID 為 x8e 的 partition 或整顆設備
PV PVPVPV
– Volume Group
>把一個或多個 PV 組成共同的群組
PV PVPVPV
VG
– Physical Extent
>對 VG 重新劃分的空間單位(預設是 4M )
PV PVPVPV
PE
– Logical Volume
>重新分配 PE 所組成的空間
PV PVPVPV
VG
LV
LV
LV
– lvreduce 可以釋放 LV 中閒置未用的 PE
PV PVPVPV
VG
LV
LVLV
LVM 之彈性
PV PVPVPV
VG
LV
LVLV
– lvextend 可以把 VG 中游離可用的 PE 納
入 LV 以擴充容量
PV
– vgextend 可為 VG 在 PE 不足的時候加入 PV 進來
以擴充整個 VG 的容量
PV PVPVPV
VG
LV
LVLV
PV
– pvmove 可以把 PV 中已使用的 PE 搬移到別的 PV
中
PV PVPVPV
VG
LV LV
LV
PV
– vgreduce 可以把閒置的 PV 從 VG 中開除
PV PVPVPV
VG
LV LV
LV
LVM 基本建置操作
•先執行 fdisk ( 設 ID 為 x8e) 及 partprobe
•運行 pvcreate :
pvcreate /dev/sd{a,b}1
•運行 vgcreate :
vgcreate myvg /dev/sd...
LVM 擴充操作
•先執行 fdisk (設ID為 x8e)及 partprobe
•運行 pvcreate 處理新分割區或新硬碟:
pvcreate /dev/sdc1
•運行 vgextend 把新 PV 納入 VG:
vgextend m...
LVM 其他操作
•關於 PV 的查詢:
pvscan
pvdisplay
•關於 vg 的查詢:
vgscan
vgdisplay
•關於 lv 的查詢:
lvscan
lvdisplay
•停用或啟用 VG
vgchange -a <n|y...
•結論:
能夠用 LVM 的話,
從現在開始就用 LVM 吧!
p.s. 我相信您日後會感謝我這個建議的 ...
巴特 ...
•LVM 也不是完美的:
LVM 本身不具備容錯能力。
換句話來說,如果某一個 PV 壞掉的話,
可能整個 VG 的資料都會損毀!
... 那怎麼辦呢?
Part 6
Software RAID
RAID 是蝦米碗糕?
•簡單來說,
RAID 就是用多個儲存設備組成的陣列。
RAID 的種類
•Hardware RAID
–有獨立處理的硬體處理單元
–所有 RAID 的運算由硬體完成
–對系統來說,只視為單一的儲存設備,如 sda, sdb, …
–效能高、功能強,但成本也高
•Software RAID
–在組成...
RAID 的等級
•RAID0
–也叫 striping
–至少需要兩顆硬碟
–可提升存取效能
–沒有容錯能力
5
3
1
6
4
2
•RAID1
–也叫 mirroring
–至少需要兩顆硬碟
–具容錯能力
–但不能提升效能
3
2
1
3
2
1
•RAID5
–至少需要三顆硬碟
–利用 parity 來提供容錯能力 ( 只容許一顆硬
碟故障 )
–同時也能提升效能
–與 RAID2,3,4 差在運算單位之外,也避免了
parity disk 的瓶頸
p
3
1
5
p
2
6
4
p
•Parity 的原理:
stripA: 11001010
stripB: 11100011
Parity: 11010110
•Question :
如果 RAID5 同時有兩顆硬碟故障呢?
•RAID6 或更高等級
•Spare Disk
–需要至少一顆閒置硬碟
–爭取最快的復原時間
p
3
1
5
p
2
6
4
p
5
p
2
RAID + LVM
•我們可以用 RAID 的容錯能力來解決
LVM 不能容錯的問題
–能用 Hardware RAID 是最好的
–也可以用 Software RAID1
3
2
1
3
2
1
PV
3
2
1
3
2
1
PV
VG
Part 7
Network File System
再問大家一個問題:
•作為一個 MIS 資訊人員,
當 End User 回報系統故障的時候,
您首先想到的是甚麼?
菜鳥版 :
雪特!!
千萬別在這個時候給我出槌啊 ~~~
(皮皮挫 ing ,抖。。。)
OK ,我相信這不會是你啦 ...
資深版 :
按~~~!!
林貝早就說過了啦!
誰叫你又手賤了是不是啊?!
!@$%#^%**)_@$$#@^&^*
Well, 我相信這絕對不是你的答案 ...
進階版 :
免驚啦~~
有我在,馬上幫你修好!
Good, 我開始欣賞你了!
神級版 :
恩~~
我得確保您的工作不會被中斷!
YES!! That is what I want to hear!
那接下來 ...
How to do?
Solution:
換系統而不是修系統!
網路檔案系統
•由 server 端輸出 (export) 目錄
•然後 client 端透過網路掛載 (mount)
Export
Mount
網路檔案系統方案
•NFS
•SAMBA
•Koda
•iSCSI
•NAS
•SANS
•etc...
集中式管理
Many more...
– Quota
– Backup/Rsync
– Content Filtering
– Regular Expression
– ISO/RamDisk/VM Image
– ...
額外參考資訊
– IBM developerWorks:
>http://www-106.ibm.com/developerworks/library/l-fs.html
– Novell web site:
>http://www.novel...
 
Thank you!Thank you!
Please emember:
Everything is file,Everything is file,
&&
file is everything!file is everything!
Upcoming SlideShare
Loading in …5
×

Linux File system

1,575 views

Published on

Linux 檔案系統基本運作原理,LVM,Soft RAID,以及檔案系統應用。

Published in: Internet
  • Be the first to comment

Linux File system

  1. 1. Linux File System © Netman <netman@study-area.org>
  2. 2. First thing you'll remember today: Everything is file,Everything is file, && file is everything!file is everything!
  3. 3. 今天您還要記住另一件事: 當所學的技術不能轉換成金錢當所學的技術不能轉換成金錢 的時候,那是白學了。的時候,那是白學了。 因此,個人使用與企業應用的因此,個人使用與企業應用的 差異是非常懸殊的!差異是非常懸殊的!
  4. 4. •Objectives 1. Linux 檔案系統種類 2. Linux 檔案系統運作原理 3. 硬碟與分割區 4. Linux 檔案系統建置 5. Logical Volume Manager (LVM) 6. Software RAID 7. 網路檔案系統
  5. 5. Q uestion: 甚麼是檔案系統?
  6. 6. ● 簡單來說,能夠存放檔案且更重要的是 能從裡面找回檔案的系統。 ● 檔案系統選擇考量要素: – 效能 – 容量 – 安全性 – 擴充性 – 通用性
  7. 7. Part 1 Linux 檔案系統種類
  8. 8. 傳统(非日誌式)檔案系統 ■ ext2 已在 Linux 系統上運行非常長久一段時間,基於 inode 基礎 管理檔案。可輕鬆升級為 ext3 ■ MS-DOS/VFAT. 由 Microsoft 設計專門運行在 Windows 及 DOS 系統上的 檔案系統。主要以 FAT (File Allocation Table) 來管理檔案 ■ minix. 古老且精簡的檔案系統。目前比較常見在 RAM disk 或 Floppy 媒體中使用
  9. 9. 日誌式檔案系統 每一筆檔案變更都會被記錄在日誌中, 然後才會進行真正的修改, 修改後再更新記錄。
  10. 10. ■ ext3 為 ext2 檔安系統的延伸,主要增加了日誌功能 ■ ReiserFS 原本由 Hans Reiser 開發,採用資料庫方式來管理檔案, 以 Balanced Binary Tree 結構提供更高效能的資料存取。 ■ XFS 原本為 SGI 系統使用的高效能日誌式檔案系統。具備快速復 原能力、高彈性、大容量等優點 ■ NTFS 是微軟公司為 Windows NT 系統設計的檔案系統,及後也 應用在更新的 Windows 系統當中 日誌式檔案系統
  11. 11. Virtual Filesystem Switch •VFS 把不同的檔案系統對上層程式隱藏 起來,以提供統一的檔案資料存取模式 •具體的檔案存取行為則交由系統核心程式 負責 •可以為不具備 Unix 屬性的檔案系統解決 類 Unix 系統的操作行為
  12. 12. Virtual Filesystem Switch App1 App3App2 VFS VFATReiserfsEXT3EXT2
  13. 13. Part 2 Linux 檔案系統運作原理
  14. 14. •Linux 檔案系統中,檔案的資料 (data) 與資訊 (information) 是分開存放的 •每份檔案的資訊會被記錄在 inode (index node) 中 ... ... Inode block data block
  15. 15. • 每份 inode 大小為 128 byte ,內容: – 檔案類別 – 檔案權限 – 連結數目 – 擁有者資訊 (user & group) – 檔案大小 – 時間戳印 (atime, mtime, ctime) – Data Block 位置指針 – 其他屬性 ...
  16. 16. •檔案系統在建立時(格式化),會劃分出 基本的使用區塊空間 (block) ,然後再分 配為不同的使用類型: –Super Block –Block Group Descriptor –Block Bit Map –Inode Bit Map –Inode Table –Data Block
  17. 17. •在建立 block 的時候,一般可以指定不 同的大小: –數量的不同 –浪費程度的不同(參考下頁) –效能的不同
  18. 18. •因為 data block 的使用基本是獨佔式的 ( 以一個 5K 大小的檔案為例 ) : –4K 大小的 block 會浪費 3K –2K 大小的 block 會浪費 1K –1K 大小的 block 會浪費 0K
  19. 19. •由於現在的檔案系統體積非常龐大,為改 善索引效率,設計上會把 block 劃分為 block group : group0 group1 Group2...
  20. 20. •每個 group 的功能都是相同的 group0 group1 Group2... Super Block Group Descriptor Data Block ...Block Bit Map Inode Table Inode Bit Map
  21. 21. ■ Data Block 檔案系統的主要資源,用來存放檔案資料 (data) 內容。在比例上所佔的數量最多。 Q: 怎麼知道一份檔案的資料放哪呢? Data Block ...
  22. 22. ■ Inode Table 存放每一份檔案的 inode 資訊。這也是檔 案系統中另一主要資源,若所有 inode 都 分配出去就不能建立新檔案了。 Inode 會告 訴檔安的 data block 位置。 Q: 怎麼知道哪些 inode 跟 block 用掉了? Inode Table
  23. 23. ■ Inode Bit Map 以 0 或 1 的狀態對照 inode table 的分 配情況。 Q: 怎麼知道 Inode Bit Map 有多大呢? Inode Bit Map
  24. 24. ■ Block Bit Map 以 0 或 1 的狀態對照 data block 的分配 情況。 Q: 怎麼知道 Block Bit Map 有多大呢? Block Bit Map
  25. 25. ■ Group Descriptor 記錄及標識 Bit Maps, Inode Table, Data Block 等區塊範圍及尋址指針。 Q: 怎麼知道整個檔案系統的分配及使用情形呢? Group Descriptor
  26. 26. ■ Super Block 記錄整個檔案系統分配與使用狀態: –已被使用及可用的 inode 與 block 數量 –Block Group 數量及每個群組的 inode 與 block 數量 –檔案系統的使用記錄,如掛載、寫入時間等等 –其他更多關於整個檔案系統的資訊 ... –其中有個 valid bit 記錄系統掛載狀態( 0 是 已掛載、1是已卸載) Super Block
  27. 27. •Question : 如何從一個檔案系統中找到一份檔案呢?
  28. 28. 目錄的功能 •目錄本身也是一份檔案 •內容記錄其下所索引的每一份檔案名稱及 其 inode 號碼 . : 1234 .. : 4321 File1 : 1122 File2 : 2233 File3 : 3344 File4 : 5566 ... : ...
  29. 29. •所有的檔案(含目錄本身)都是在目錄之 下索引的,如此就構成了所謂的路徑: –絕對路徑:從根目錄開始索引 –相對路徑:從當前目錄開始索引
  30. 30. 。。。 。。。 。。。 Directory File Name Directory Inode Data Block
  31. 31. 關於 link •Hard Link : ln file hard.link –使用相同的 inode 索引,與原檔案地位同等 •Symbolic Link : ln -s file soft.link –使用不同的 inode ,但資料內容是路徑
  32. 32. File Name Directory Inode Data Symbolic LinkHard Link InodeInode Path
  33. 33. 關於 Link Counter •在 Hard Link 建立時增加 1 •在檔案刪除時減少 1 –若 Link Counter 大於 0 則單純在 Directory 中把檔案名稱移除 –若 Link Counter 等於 0 除了從 Directory 把檔案名稱移除之外,同時 把 inode & block Bit Map 中的記錄標 識為 0 (free) Q: 敏感檔案如何才能真正刪除?
  34. 34. Ext2 檔案系統的限制 •每一檔案名稱不得超過 255 個字母 •單一路徑 ( 含 /) 不得超過 4096 個字母 •在 1K block size 的情況下,單一檔案 最大 16G 、整個檔案系統最大 2T •在 4K block size 的情況下,單一檔案 最大 2T 、整個檔案系統最大 16T
  35. 35. Ext2 檔案系統的弱點 •空間浪費嚴重(小檔案&零碎尾巴) •Inode 數量固定不能修改 – 過多會壓縮 Data Block 的空間 – 過少容易到達極限,就算有閒置的 Data Block 也不能建立新檔案 •檔案數量過多時會導致效能下降
  36. 36. reiserfs 檔案系統 •使用 tailing block 減少空間浪費 •Inode 數量按需而建 •使用 Balanced Binary Tree 提高效能
  37. 37. 檔案修改的行為 •每一次檔案修改會產生兩筆 transaction –資料 (Data) 修改 –資訊 (Inode) 修改 •若只完成其中一筆 transaction 則為檔 案損毀 (curruption) 情形 ... ...
  38. 38. 系統在重開機過程 •會檢查 Super Block 的 Valid Bit 以及 掛載次數 / 天數來確認檔案損毀情形并加 以修復 •傳統非日誌式檔案系統會針對每一份檔案 作檢查,若檔案數量龐大的話這將耗費相 當多的時間! •這在企業經營中常因斷電或其他意外造成 過大的 Down Time 成本
  39. 39. 日誌式檔案系統 •每一次檔案修改之前,會先在日誌中進行記錄, 待 transaction 完成之後再更新記錄 •如此在下次開機的時候,只需檢查日誌中有登記 的檔案即可。這大幅縮減了檔案系統的檢查時間 ,為企業降低 Down Time 成本。 •雖然日誌的記錄與更新會造成輕微的額外操作, 但隨著硬體效能以及檔案系統的改良,對於檔案 數量龐大的系統來說,還是值得的。
  40. 40. Part 3 硬碟與分割區
  41. 41. Linux 系統的硬碟名稱 •IDE HDD/ATAPI CDROM –1st IDE: hda, hdb –2nd IDE: hdc, hdd •SCSI HDD/SATA HDD/USB Disk –sda –sdb –sdc –...
  42. 42. Linux 系統的分割區名稱 •IDE HDD/ATAPI CDROM –hda1 –hda2 –hdc5 –... •SCSI HDD/SATA HDD/USB Disk –sda1 –sdb2 –sdc5 –...
  43. 43. 分割區類別 •Primary Partition –最多 4 個 –號碼從 1 到 4 ,不需連號不需按順序 •Extended Partition –從 Primary 轉換過來 –最多只能 1 個也可以不設 •Logical Partition –只能在 Extended Partition 之內建立 –必需連號(從 5 開始) –但可以不按順序
  44. 44. 4 Linux 系統的分割範例 •以 5 個分割區為例: 1 25 6 7 8 1 16 7 8 31 95 Primary 25 6 Extended Logical
  45. 45. 分割區考量因素 •內容分類 –系統檔案 –程式/原始碼 –資料文件 •檔案性質差異 –size –存取行為 •安全性 –掛載選項 •效能 •擴充性
  46. 46. 最基本分割區 •/ (root) •swap
  47. 47. 常見獨立割區 •/boot •/home •/opt •/tmp •/srv •/usr •/var
  48. 48. Part 4 Linux 檔案系統建置
  49. 49. 檔案系統建置大致流程 1. fdisk 2. partprobe 3. mkfs 4. mkdir 5. /etc/fstab 6. mount
  50. 50. fdisk 命令 •修改/建立 partition 的工具 •常見參數: -l : 列出分割區資訊 •基本語法 fdisk /dev/<disk>
  51. 51. 常見 fdisk 內部命令 m 列出命令說明簡要 p 列出分割區資訊 n 建立分割區 d 刪除分割區 l 列出檔案系統識別碼 t 修改檔案系統識別碼 q 不作任何變更離開 w 儲存變更并離開
  52. 52. •請習慣 fdisk 命令的 Q & A 操作模式 •例:
  53. 53. partprobe 命令 •當 fdisk 命令完成分割區修改之後,系 統核心仍然使用舊有資訊 •要系統使用修改之後的新資訊,有兩個方 法: –reboot –Partprobe •檢查 /proc/partitions 可獲知當前系統 的分割區資訊
  54. 54. 檔案系統格式化 •在儲存設備上建立檔案系統 •在 linux 上使用 mkfs 命令 : mkfs -t <type> [options] <device> •以 ext3 為例: mkfs.ext3 mkfs -t ext3 mke2fs -j mkfs.ext2 -j
  55. 55. •常見 mkfs 選項: -b <size> •Block Size -c •檢查 bad block -i <ratio> •Inode 對 byte 的比例 -N <number> •Inode 總量(大約值) -j •啟用 journal -L <label> •設定標簽 *更多參考 man mke2fs
  56. 56. 檔案系統掛載 •Linux 檔案系統跟 Windows 不同,并 不使用磁碟代號 •所有儲存設備必需掛載 (mount) 到一個 目錄才能存取 •掛載目錄最好是空的 (empty) ,也稱為 掛載點 (Mount Point) •設備不使用時可以執行卸載 (umount)
  57. 57. 檔案系統掛載 mount
  58. 58. mount 命令 •命令語法: mount -t <fs_type> -o <m_opts> <device> <mount_point> •Example: mount -t iso9660 -o ro,nosuid /dev/sr0 /media/cdrom
  59. 59. 常見掛載選項: rw/ro •可否寫人 sync/async •是否同步 dev/nodev •是否可以存取設備 exec/noexec •可否執行 suid/nosuid •可否使用 suid 轉換執行身份
  60. 60. 掛載設定檔 fstab •路徑: /etc/fstab •欄位: <device> •設備路徑或識別標記 <m_point> •掛載點路徑 <fs_type> •檔案系統類別 <m_options> •掛載選項 <dump> •是否在 dump 時備份(1或0) <fsck> •是否在 fsck -a 時檢查(0或1或2)
  61. 61. ● fstab 專屬選項 auto/noauto •是否在執行 mount -a 進行掛載 user/nouser •是否允許非管理員掛載 defaults •rw,sync,dev,exec,suid,auto,nouser
  62. 62. •檔設備設定存在於 fstab 之後,可以簡 化掛載命令: mount <dev> mount <m_point> mount -a
  63. 63. umount 命令 •命令語法: umount <device> umount <mount_point> •條件 該設備目前不能被使用中
  64. 64. Part 5 Logical Volume Manager (LVM)
  65. 65. 問大家幾個問題: •當硬碟爆了怎辦? •分割硬碟時,有些分割區太大有些又太小怎調整? •硬碟槽插滿了,怎麼用更大的硬碟來替換? •公司生意太好了,沒幾年就要升級硬碟怎麼辦? •那些隨時在變更的資料都怎麼備份的? •...? • 這些都不是重點 ...
  66. 66. 我只問一個問題就夠了: 您打算要公司花多少 Down Time 成本在上面?!
  67. 67. LVM 的好處 •突破過往傳統 partition 的限制,輕易組 建及擴充龐大的檔案系統空間 •輕鬆調整容量大小 •在支援熱插拔的設備上,不需要停止服務 就能替換硬碟 •可利用 striping 提高更好的存取效能 •可利用 shapshot 為某一時間點作備份, 極致化壓縮 backup window 的大小
  68. 68. LVM 基本元件 – Physical Volume >ID 為 x8e 的 partition 或整顆設備 PV PVPVPV
  69. 69. – Volume Group >把一個或多個 PV 組成共同的群組 PV PVPVPV VG
  70. 70. – Physical Extent >對 VG 重新劃分的空間單位(預設是 4M ) PV PVPVPV PE
  71. 71. – Logical Volume >重新分配 PE 所組成的空間 PV PVPVPV VG LV LV LV
  72. 72. – lvreduce 可以釋放 LV 中閒置未用的 PE PV PVPVPV VG LV LVLV LVM 之彈性
  73. 73. PV PVPVPV VG LV LVLV – lvextend 可以把 VG 中游離可用的 PE 納 入 LV 以擴充容量
  74. 74. PV – vgextend 可為 VG 在 PE 不足的時候加入 PV 進來 以擴充整個 VG 的容量 PV PVPVPV VG LV LVLV
  75. 75. PV – pvmove 可以把 PV 中已使用的 PE 搬移到別的 PV 中 PV PVPVPV VG LV LV LV
  76. 76. PV – vgreduce 可以把閒置的 PV 從 VG 中開除 PV PVPVPV VG LV LV LV
  77. 77. LVM 基本建置操作 •先執行 fdisk ( 設 ID 為 x8e) 及 partprobe •運行 pvcreate : pvcreate /dev/sd{a,b}1 •運行 vgcreate : vgcreate myvg /dev/sd{a,b}1 •運行 lvcreate : lvcreate -L 500M -n mylv myvg •新建的 lv 路徑在 /dev/<vg>/<lv> ,如: /dev/myvg/mylv •再執行 mkfs, mkdir, mount 等操作
  78. 78. LVM 擴充操作 •先執行 fdisk (設ID為 x8e)及 partprobe •運行 pvcreate 處理新分割區或新硬碟: pvcreate /dev/sdc1 •運行 vgextend 把新 PV 納入 VG: vgextend myvg /dev/sdc1 •運行 pvmove 把舊硬碟的 PE 搬移至新硬碟: pvmove /dev/sda1 /dev/sdc1 •運行 vgreduce 卸下舊硬碟: vgreduce myvg /dev/sda1 •運行 lvextend 擴充 LV: lvexted -l +100% /dev/myvg/mylv •運行 resize2fs 擴充檔案系統: resize2fs /dev/myvg/mylv •再執行 df 確認容量大小
  79. 79. LVM 其他操作 •關於 PV 的查詢: pvscan pvdisplay •關於 vg 的查詢: vgscan vgdisplay •關於 lv 的查詢: lvscan lvdisplay •停用或啟用 VG vgchange -a <n|y> <vg_name>
  80. 80. •結論: 能夠用 LVM 的話, 從現在開始就用 LVM 吧! p.s. 我相信您日後會感謝我這個建議的 ...
  81. 81. 巴特 ...
  82. 82. •LVM 也不是完美的: LVM 本身不具備容錯能力。 換句話來說,如果某一個 PV 壞掉的話, 可能整個 VG 的資料都會損毀! ... 那怎麼辦呢?
  83. 83. Part 6 Software RAID
  84. 84. RAID 是蝦米碗糕? •簡單來說, RAID 就是用多個儲存設備組成的陣列。
  85. 85. RAID 的種類 •Hardware RAID –有獨立處理的硬體處理單元 –所有 RAID 的運算由硬體完成 –對系統來說,只視為單一的儲存設備,如 sda, sdb, … –效能高、功能強,但成本也高 •Software RAID –在組成 RAID 之前,系統只看到獨立的儲存設備 –組成 RAID 之後,系統以 md0, md1, … 等名稱來識別 –所有的 RAID 運算由系統完成 –效能與功能稍遜,但勝在便宜
  86. 86. RAID 的等級 •RAID0 –也叫 striping –至少需要兩顆硬碟 –可提升存取效能 –沒有容錯能力 5 3 1 6 4 2
  87. 87. •RAID1 –也叫 mirroring –至少需要兩顆硬碟 –具容錯能力 –但不能提升效能 3 2 1 3 2 1
  88. 88. •RAID5 –至少需要三顆硬碟 –利用 parity 來提供容錯能力 ( 只容許一顆硬 碟故障 ) –同時也能提升效能 –與 RAID2,3,4 差在運算單位之外,也避免了 parity disk 的瓶頸 p 3 1 5 p 2 6 4 p
  89. 89. •Parity 的原理: stripA: 11001010 stripB: 11100011 Parity: 11010110
  90. 90. •Question : 如果 RAID5 同時有兩顆硬碟故障呢?
  91. 91. •RAID6 或更高等級 •Spare Disk –需要至少一顆閒置硬碟 –爭取最快的復原時間 p 3 1 5 p 2 6 4 p 5 p 2
  92. 92. RAID + LVM •我們可以用 RAID 的容錯能力來解決 LVM 不能容錯的問題 –能用 Hardware RAID 是最好的 –也可以用 Software RAID1 3 2 1 3 2 1 PV 3 2 1 3 2 1 PV VG
  93. 93. Part 7 Network File System
  94. 94. 再問大家一個問題: •作為一個 MIS 資訊人員, 當 End User 回報系統故障的時候, 您首先想到的是甚麼?
  95. 95. 菜鳥版 : 雪特!! 千萬別在這個時候給我出槌啊 ~~~ (皮皮挫 ing ,抖。。。) OK ,我相信這不會是你啦 ...
  96. 96. 資深版 : 按~~~!! 林貝早就說過了啦! 誰叫你又手賤了是不是啊?! !@$%#^%**)_@$$#@^&^* Well, 我相信這絕對不是你的答案 ...
  97. 97. 進階版 : 免驚啦~~ 有我在,馬上幫你修好! Good, 我開始欣賞你了!
  98. 98. 神級版 : 恩~~ 我得確保您的工作不會被中斷! YES!! That is what I want to hear!
  99. 99. 那接下來 ... How to do?
  100. 100. Solution: 換系統而不是修系統!
  101. 101. 網路檔案系統 •由 server 端輸出 (export) 目錄 •然後 client 端透過網路掛載 (mount) Export Mount
  102. 102. 網路檔案系統方案 •NFS •SAMBA •Koda •iSCSI •NAS •SANS •etc...
  103. 103. 集中式管理
  104. 104. Many more... – Quota – Backup/Rsync – Content Filtering – Regular Expression – ISO/RamDisk/VM Image – ...
  105. 105. 額外參考資訊 – IBM developerWorks: >http://www-106.ibm.com/developerworks/library/l-fs.html – Novell web site: >http://www.novell.com/products/linuxenterpriseserver/kernel_li mits.html – FHS: >http://www.pathname.com/fhs/ – ext2: >http://e2fsprogs.sureceforge.net/ – Reiserfs: >http://www.namesys.com – XFS: >http://oss.sgi.com/projects/xfs/
  106. 106.   Thank you!Thank you!
  107. 107. Please emember: Everything is file,Everything is file, && file is everything!file is everything!

×