2019年10月27日 星期日

filesystem

檔案系統是檔案和目錄放在儲存裝置的格式,儲存裝置可以是硬碟的一個分割、Flash 晶片、RAM 等。Linux 系統會有個根目錄 (roofs),本身會有個檔案系統,其下目錄可掛載其它檔案系統。

 註:roofs 是 root file system 的縮寫,直接翻譯是「根檔案系統」,是指整個檔案目錄階層架構的頂端,而不是指特定檔案系統,翻成「根目錄」較不會混淆。

看目前支援的檔案系統
cat /proc/filesystems

選擇適合的檔案系統:唯讀或可寫、wear-leveling、空間大小、唯讀的在開機時需要額外建立可寫分割、基於 RAM 的減少 kernel 或應用可用的記憶體。隨時可能斷電、省空間、延長壽命、效能
  • ext4 適合硬碟 (ext2/3/4)
  • f2fs (flash file system) 適合快閃碟 (SSD、USB 隨身碟)
  • FAT32 適合跨平台使用,無法存大於 3.9 GiB 的檔案,寫入時 disconnect 易於損壞,沒檢查再寫入會導致資料遺失。
  • JFFS2 是可寫壓縮的檔案系統,使用 LZMA 壓縮,支援日誌和 wear leveling。
  • SquashFS 是唯讀壓縮的檔案系統,當有 gzip 時使用 LZMA 壓縮,可比 JFFS2 省 20-30% 空間。沒有 bad block management 不適合 NAND。
  • UBIFS 適合 NAND
  • NTFS 用在 Windows 電腦,在 Linux 效能不好。
  • exFAT 用在大於 32 GiB 的 SD 記憶卡,不然還是使用 FAT32,在 Linux 效能和穩定度比 NTFS 好。
  • HFS, HFS+ 用在 Apple 設備,但在 Linux 效能不好,且功能有限。
  • APFS 也用在 Apple 設定,但太新而 Linux 沒支援。
  • xfs and btrfs
  • nilfs2
  • FUSE (User space filesystems):在 user space 執行
  • cramfs:
    • Compressed ROM Filesystem. zlib 壓縮的唯讀當按系統,沒有完整的 Metadata。
    • 限制:256 MB、216files
    • 所有檔案 root 擁有,不存所有 permissions,不存 timestamps。inode overhead 只有 12 bytes
    • mkcramfs -m dev.cramfs.txt rootfs.cramfs
    • http://sourceforge.net/projects/cramfs
tmpfs
OverlayFS:用來 merge 一個唯讀檔案系統和一個可寫檔案系統。
mini_fo:由 OverlayFS 取代。

JFFS2 raw flash 可寫

分割工具
fdisk 用在 MBR 碟。
gdisk 用在 GPT 碟。

OpenWrt

ext4
opkg install e2fsprogs #工具程式
opkg install kmod-fs-ext4 #檔案系統不支援時安裝驅動程式

f2fs
opkg install f2fs-tools #工具程式
opkg install kmod-fs-f2fs #檔案系統不支援時安裝驅動程式


NTFS
opkg install ntfsprogs_ntfs-3g #工具程式
opkg install ntfs-3g #檔案系統不支援時安裝驅動程式

HFS 和 HFS+
opkg install hfsfsck #工具程式
opkg install kmod-fs-hfs kmod-fs-hfsplus #檔案系統不支援時安裝驅動程式

其它檔案系統
opkg update && opkg list | grep kmod-fs #列出 OpenWrt 支援的當按系統
opkg list | grep FILESYSTEM_NAME #找檔案系統的工具程式

參考

  • https://openwrt.org/docs/guide-user/storage/filesystems-and-partitions
  • https://openwrt.org/docs/techref/filesystems
  • Linux 需要在 / 掛載 RFS (root filesystem) 執行一些程式才能成功啟動。 RFS 可以在記憶體、或透過網路連結,可以跟 kernel image “attached” 在一起載入到記憶體。
  • Linux 天生檔案導向,透過 VFS (Virtual FileSystem) 提供統一的檔案系統界面,共用函數如 caching 等,未必需要實體儲存裝置。

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...