使用外部日誌 (external journal)

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

標準文章
作者: Roy Chan,Jadedragon
協力:
校對:
級別: 初階
分享本文:

日誌式檔案系統 (journaling filesystem) 在處理日常磁碟讀寫時,經常要同時讀寫日誌 (journaling)。如果日誌和檔案系統在同一顆硬碟中,讀寫頭就需要經常在檔案系統和日誌兩個區域遊走,減低檔案系統的效率。大部份日誌式檔案系統都容許把檔案系統和日誌在不同的儲存裝置以提升效能,亦是所謂外部日誌 (external journal)。[1]

規劃外部日誌時要留意以下幾點:

  • 檔案系統和日誌一定要不同的實體儲存裝置
  • 日誌適合放在較快的儲存裝置,大小不用太大

目录

Ext3/Ext4

建立日誌裝置 (journal device)

先在規劃作日誌的儲存裝置分配一個分割區 (partition) 作日誌裝置 (journal device)。日誌裝置的大小可以參考 mke2fs 決定內部日誌大小的方案 - 如果檔案系統的區塊 (block) 數目[2]

  • 小於 32,768 個區塊則劃分 1024 個區塊作日誌
  • 小於 262,144 個區塊但大於或等於 32,768 個區塊則劃分 4096 個區塊作日誌
  • 大於或等於 262,144 個區塊則劃分 8192 個區塊作日誌

日誌過小會令其容易被寫滿,有機會減低檔案系統效率。較大的日誌對啟用 journaling 模式可能有幫助。但如果日誌大於電腦實體記憶體大小,開機修復檔案系統時有機會不夠記憶體載入整個日誌紀錄,不能自動修復。

此外,日誌裝置和檔案系統的區塊大小 (block size) 一定要相同,所以最好時先使用 mke2fs 的 -b 選項指定區塊大小。除檔案系統預計有大量小於 4 KiB 的檔案外,一般會使用 4 KiB 區塊。

搞定後,使用命令「mke2fs -b 區塊大小 -O journal_dev 日誌裝置」建立日誌裝置:

mke2fs -b 4096 -O journal_dev /dev/sdb1

指定檔案系統使用的日誌裝置

在新檔案系統

如果檔案系統未格式化,可以使用命令「mke2fs -b 區塊大小 -J device=日誌裝置 儲存裝置」格式化儲存裝置成 Ext3 並指定日誌裝置 (記謹日誌裝置和檔案系統的區塊大小一定要相同):

mke2fs -b 4096 -J device=/dev/sdb1 /dev/sda6

在現存的檔案系統

如果檔案系統一早已格式化並有檔案,可以使用命令「tune2fs -O ^has_journal 儲存裝置」停用檔案系統原由的內部日誌:

tune2fs -O ^has_journal /dev/sda6

可以使用命令「tune2fs -J device=日誌裝置 儲存裝置」指定日誌裝置:

tune2fs -J device=/dev/sdb1 /dev/sda6

SGI XFS

先在規劃作日誌的儲存裝置分配一個分割區 (partition) 作日誌裝置 (journal device)。SGI XFS 日誌的上限為 65,536 區塊 (block) 和 128 MiB 的最小值,下限為 512 區塊。[3]

搞定後,使用命令「mkfs.xfs -l logdev=日誌裝置 儲存裝置」同時建日誌裝置和檔案系統:

mkfs.xfs -l logdev=/dev/sdb1 /dev/sda6

mkfs.xfs 預設會用滿日誌裝置的空間作為日誌,但您亦可以選項 -l 加上 size=大小 來指定日誌大小,例如:

mkfs.xfs -l logdev=/dev/sdb1,size=32m /dev/sda6

然而,這樣做會浪費大於指定大小的空間。

ReiserFS

可以使用命令「mkreiserfs -j 日誌裝置 儲存裝置」同時建日誌裝置和檔案系統:

mkreiserfs -j /dev/sdb1 /dev/sda6

ReiserFS 的日誌大小不可以小於 513 個區塊 (block)。

IBM JFS

IBM JFS 的日誌大小上限是 128 MiB,大於 128 MiB 的空間只會被忽略而浪費。先在規劃作日誌的儲存裝置分配一個分割區 (partition) 作外部日誌。

搞定後,使用命令「mkfs.jfs -J journal_dev 日誌裝置」建立外部日誌:

mkfs.jfs -J journal_dev /dev/sdb1

接著使用命令「mkfs.jfs -J device=日誌裝置 儲存裝置」格式化儲存裝置成 JFS 並指定日誌裝置:

mkfs.jfs -J device=/dev/sdb1 /dev/sda6

您亦可以使用命令「mkfs.jfs -j 日誌裝置 儲存裝置」取代以上兩個命令同時建日誌裝置和檔案系統:

mkfs.jfs -j /dev/sdb1 /dev/sda6

參考資料

  1. ArchWiki. “External Journal”. JFS Filesystem.
  2. Hagen, William von (2001). “Linux Filesystems”. Sams Publishing. ISBN 06-723-2272-2
  3. SGI (Feb 20, 2004). “Chapter 2. Planning an XFS Filesystem”. XFS for Linux Administration. SGI.

相關頁面

相關連結

Personal tools