Linux File system

50 %
50 %
Information about Linux File system
Education

Published on March 15, 2014

Author: kennychennetman

Source: slideshare.net

Description

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

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 系統上的 檔案系統。主要以 FAT (File Allocation Table) 來管理檔案 ■ minix. 古老且精簡的檔案系統。目前比較常見在 RAM disk 或 Floppy 媒體中使用

日誌式檔案系統 每一筆檔案變更都會被記錄在日誌中, 然後才會進行真正的修改, 修改後再更新記錄。

■ ext3 為 ext2 檔安系統的延伸,主要增加了日誌功能 ■ ReiserFS 原本由 Hans Reiser 開發,採用資料庫方式來管理檔案, 以 Balanced Binary Tree 結構提供更高效能的資料存取。 ■ XFS 原本為 SGI 系統使用的高效能日誌式檔案系統。具備快速復 原能力、高彈性、大容量等優點 ■ NTFS 是微軟公司為 Windows NT 系統設計的檔案系統,及後也 應用在更新的 Windows 系統當中 日誌式檔案系統

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 –Inode Table –Data Block

•在建立 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 Map

■ Data Block 檔案系統的主要資源,用來存放檔案資料 (data) 內容。在比例上所佔的數量最多。 Q: 怎麼知道一份檔案的資料放哪呢? Data Block ...

■ Inode Table 存放每一份檔案的 inode 資訊。這也是檔 案系統中另一主要資源,若所有 inode 都 分配出去就不能建立新檔案了。 Inode 會告 訴檔安的 data block 位置。 Q: 怎麼知道哪些 inode 跟 block 用掉了? Inode Table

■ 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 數量 –檔案系統的使用記錄,如掛載、寫入時間等等 –其他更多關於整個檔案系統的資訊 ... –其中有個 valid bit 記錄系統掛載狀態( 0 是 已掛載、1是已卸載) Super 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 除了從 Directory 把檔案名稱移除之外,同時 把 inode & block Bit Map 中的記錄標 識為 0 (free) Q: 敏感檔案如何才能真正刪除?

Ext2 檔案系統的限制 •每一檔案名稱不得超過 255 個字母 •單一路徑 ( 含 /) 不得超過 4096 個字母 •在 1K block size 的情況下,單一檔案 最大 16G 、整個檔案系統最大 2T •在 4K block size 的情況下,單一檔案 最大 2T 、整個檔案系統最大 16T

Ext2 檔案系統的弱點 •空間浪費嚴重(小檔案&零碎尾巴) •Inode 數量固定不能修改 – 過多會壓縮 Data Block 的空間 – 過少容易到達極限,就算有閒置的 Data Block 也不能建立新檔案 •檔案數量過多時會導致效能下降

reiserfs 檔案系統 •使用 tailing block 減少空間浪費 •Inode 數量按需而建 •使用 Balanced Binary Tree 提高效能

檔案修改的行為 •每一次檔案修改會產生兩筆 transaction –資料 (Data) 修改 –資訊 (Inode) 修改 •若只完成其中一筆 transaction 則為檔 案損毀 (curruption) 情形 ... ...

系統在重開機過程 •會檢查 Super Block 的 Valid Bit 以及 掛載次數 / 天數來確認檔案損毀情形并加 以修復 •傳統非日誌式檔案系統會針對每一份檔案 作檢查,若檔案數量龐大的話這將耗費相 當多的時間! •這在企業經營中常因斷電或其他意外造成 過大的 Down Time 成本

日誌式檔案系統 •每一次檔案修改之前,會先在日誌中進行記錄, 待 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 Partition –只能在 Extended Partition 之內建立 –必需連號(從 5 開始) –但可以不按順序

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 -j mkfs.ext2 -j

•常見 mkfs 選項: -b <size> •Block Size -c •檢查 bad block -i <ratio> •Inode 對 byte 的比例 -N <number> •Inode 總量(大約值) -j •啟用 journal -L <label> •設定標簽 *更多參考 man mke2fs

檔案系統掛載 •Linux 檔案系統跟 Windows 不同,并 不使用磁碟代號 •所有儲存設備必需掛載 (mount) 到一個 目錄才能存取 •掛載目錄最好是空的 (empty) ,也稱為 掛載點 (Mount Point) •設備不使用時可以執行卸載 (umount)

檔案系統掛載 mount

mount 命令 •命令語法: mount -t <fs_type> -o <m_opts> <device> <mount_point> •Example: mount -t iso9660 -o ro,nosuid /dev/sr0 /media/cdrom

常見掛載選項: rw/ro •可否寫人 sync/async •是否同步 dev/nodev •是否可以存取設備 exec/noexec •可否執行 suid/nosuid •可否使用 suid 轉換執行身份

掛載設定檔 fstab •路徑: /etc/fstab •欄位: <device> •設備路徑或識別標記 <m_point> •掛載點路徑 <fs_type> •檔案系統類別 <m_options> •掛載選項 <dump> •是否在 dump 時備份(1或0) <fsck> •是否在 fsck -a 時檢查(0或1或2)

● 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 為某一時間點作備份, 極致化壓縮 backup window 的大小

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{a,b}1 •運行 lvcreate : lvcreate -L 500M -n mylv myvg •新建的 lv 路徑在 /dev/<vg>/<lv> ,如: /dev/myvg/mylv •再執行 mkfs, mkdir, mount 等操作

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 確認容量大小

LVM 其他操作 •關於 PV 的查詢: pvscan pvdisplay •關於 vg 的查詢: vgscan vgdisplay •關於 lv 的查詢: lvscan lvdisplay •停用或啟用 VG vgchange -a <n|y> <vg_name>

•結論: 能夠用 LVM 的話, 從現在開始就用 LVM 吧! p.s. 我相信您日後會感謝我這個建議的 ...

巴特 ...

•LVM 也不是完美的: LVM 本身不具備容錯能力。 換句話來說,如果某一個 PV 壞掉的話, 可能整個 VG 的資料都會損毀! ... 那怎麼辦呢?

Part 6 Software RAID

RAID 是蝦米碗糕? •簡單來說, RAID 就是用多個儲存設備組成的陣列。

RAID 的種類 •Hardware RAID –有獨立處理的硬體處理單元 –所有 RAID 的運算由硬體完成 –對系統來說,只視為單一的儲存設備,如 sda, sdb, … –效能高、功能強,但成本也高 •Software RAID –在組成 RAID 之前,系統只看到獨立的儲存設備 –組成 RAID 之後,系統以 md0, md1, … 等名稱來識別 –所有的 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.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/

  Thank you!Thank you!

Please emember: Everything is file,Everything is file, && file is everything!file is everything!

Add a comment

Related presentations

Related pages

Comparison of file systems - Wikipedia, the free encyclopedia

Comparison of file systems The following tables compare general ... Linux: Non-Volatile File System: Palm, Inc. 2004: Palm OS Garnet: Minix V3 FS: Andrew S ...
Read more

Liste von Dateisystemen – Wikipedia

LUFS (Linux Userland File System): obsoleter Vorläufer von FUSE; OverlayFS: Meta-Dateisystem, das mehrere Dateisysteme übereinanderlegt;
Read more

Dateisystem – Wikipedia

Das Dateisystem (englisch file system oder filesystem) ... Unter Linux gibt es einige solcher Pseudo-Dateisysteme. Dazu zählen sysfs, usbfs oder devpts; ...
Read more

General overview of the Linux file system

A simple description of the UNIX system, also applicable to Linux, is this: "On a UNIX system, everything is a file; if something is not a file ...
Read more

File systems - ArchWiki - Arch Linux

In computing, a file system (or filesystem) is used to control how data is stored and retrieved. Without a file system, information placed in a ...
Read more

KNOPPIX - Live Linux Filesystem On CD

KNOPPIX kann als produktives Linux-System für den Desktop, ... Rescue-System oder als Plattform für kommerzielle Software-Produktdemos angepasst und ...
Read more

KNOPPIX Linux Live CD

KNOPPIX kann als produktives Linux-System für den Desktop, ... Rescue-System oder als Plattform für kommerzielle Software-Produktdemos angepasst und ...
Read more

File system - Wikipedia, the free encyclopedia

File systems allocate space in a granular manner, usually multiple physical units on the device. The file system is responsible for organizing files and ...
Read more

Linux Befehlsuebersicht - tnt-computer.de

Hier findest du eine Uebersicht ueber wichtige Linux ... Eine vollstaendige Referenz sollte auf jedem Linux-System in Form von ... (File Transfer Protocol ...
Read more

LinuxFilesystemsExplained - Community Help Wiki

File System: Max File Size: Max Partition Size: Journaling: Notes: Fat16 : 2 GiB : 2 GiB : No : Legacy : Fat32: 4 GiB: 8 TiB: No: Legacy : NTFS ...
Read more