linux文件系統簡析

什麼是文件系統?
    文件系統是基於操作系統的。用來管理和組織保存在磁盤驅動器上的數據的系統軟件。通過對數據存儲佈局,文件命名,安全控制等方面的管理。解決了如何在設備上有效的存儲數據。
    元數據(metadata)存儲文件的重要信息(文件的權限,大小,修改時間,屬主,存儲位置等)
    文件系統是操作系統和硬盤之間 一個橋樑,對磁盤的寫操作,都要經過文件系統,然後纔到磁盤。
    常見的文件系統:
        DOS系統的msdoc    
        windows 下的FAT系統(fat16(最大支持2G)和fat32(最大支持4G))和NTFS文件系統
        光盤文件系統 ISO-9660
        linux 下 單一文件系統 ext2  和日誌文件系統 ext3/ext4/xfs
        集羣文件系統 gfs (Red Hat Global File System)
        虛擬文件系統 (/proc)  
        加密文件系統 (CFS)
        網絡文件系統(NFS)
 linux標準文件系統是從VFS開始的,然後是ext2。ext3,ext4
    ext系列的對比:
        ext3是在ext2的基礎上增加了日誌形式(便於數據恢復)這一思想來源於:超級塊和inode設計理念。
        ext3是一種日誌式的文件系統,在ext2的基礎上加入特殊的inode(日誌文件)。日誌記錄功能,用於記錄文件系統的元數據或各種寫操作的變化。ext3數據的寫入順序;先通過日誌文件的記錄功能,然後在將數據寫入磁盤的最終位置。
        ext4 是linux第四代日誌文件系統。是ext3文件系統的後續版本。比較ext3的改進:(centos6下的默認文件系統)
         1.支持更多的子目錄數量(ext3支持32000個子目錄)ext4,理論上支持無限數量子目錄
         2.支持更大的文件系統和更大的文件(ext3 持續賀詞32TB的文件系統和2TB的文件,而ext4 容量可達1EB,文件容量增至16TB)
    XFS文件系統:
        XFS文件系統是SGI(美國硅圖公司)開發的一個高級日誌文件系統。centos7下作爲默認文件系統(centos7 下構架全部是64位了)
        文件系統格式化命令mkfs.xfs
        # mkfs.xfs -f /dev/sda2    (由於sda2已經完成格式化了。需要-f  強制重新格式化)
            meta-data=/dev/sda2              isize=512    agcount=4, agsize=1525824 blks
                     =                       sectsz=512   attr=2, projid32bit=1
                     =                       crc=1        finobt=0, sparse=0
            data     =                       bsize=4096   blocks=6103296, imaxpct=25
                     =                       sunit=0      swidth=0 blks
            naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
            log      =internal log           bsize=4096   blocks=2980, version=2
                     =                       sectsz=512   sunit=0 blks, lazy-count=1
            realtime =none                   extsz=4096   blocks=0, rtextents=0
        文件系統一致性檢測命令:
            xfs_repair -n /dev/sda2 (-n 只是測試不是修復)
        修復和監測要把分區卸載了。
        這裏出現啓動問題:
        A start job is running for dev-disk-by\x2duuid-.....device(1min \1min 30)
        然後是時間超時
        然後出現提示: [DEPEND] DEpendency failed for /data
        不過 centos7下。的init系統還是比較好的。沒有直接拒絕登錄系統而是給了修復信息。
        Give root passwd for maintenance (輸入root密碼進入修復)
        (or type Control-D to continue):(這種一般是文件系統啓動的錯誤。系統嘗試自動修復文件系統)
        前面 由於出現提示是/data掛載不了。還是先進入系統看下/etc/fstab
        先查看 分區的UUID; # blkid
        然後查看 /ect/fstab
        對比發現: /data的UUID 有問題。
        修改 /data 的UUID
        重啓,正常。
    文件系統使用的差異
        1.讀操作頻繁,小文件非常多(web應用,郵件應用) ext 4 文件系統比較好。ext4支持更多目錄和文件
        2.寫操作頻繁。(需求日誌功能)xfs 文件系統較好。(在高併發下:xfs比ext4 省CPU資源)
        3.對性能和安全都要求不高。可以用ext2 。(沒有日誌記錄功能,可以省去設備開銷)
    NFS 網絡文件系統的
        功能:
            讓網絡上的不同操作系統之間共享數據。NFS首先在遠程服務端(共享數據的操作系統)共享出文件或者目錄,然後遠程
        共享出來的文件或者目錄,可以通過掛載的方式接到本地的不同系統上。
        實現原理:NFS server啓動後,開啓一個端口爲客戶端連接。由於這個端口每次都不一樣,NFS文件系統通過rpc(remote procedure call)
        遠程過程調用,監聽NFS守護進程的端口號,通知給客戶端。
        nfs需要2個系統服務。
        portmap;RPC的portmap 管理器,管理RPC服務的連接
        nfs-utils: 提供 rpc.nfsd 及prc.mountd 這2個 nfs (daemons)的系統服務。
            其中:rpc.nfsd 是管理客戶端是否有權限登錄服務器。rpc.mountd 是管理認證後的客戶端是否對文件有使用權。
                簡單點就是: rpc.nfsd 處理連接請求  rpc.mountd 監督是否有權限操作目錄。
        nfs是 c/s架構。
        NFS 服務器端 安裝 需要 rpcbind 和 nfs 包
            centos7下一般默認安裝了。現在檢查下:
            # rpm -qa | grep rpcbind
            rpcbind-0.2.0-38.el7.x86_64
            # rpm -qa | grep nfs
            nfs-utils-1.3.0-0.33.el7.x86_64
            libnfsidmap-0.25-15.el7.x86_64
        主配置文件: /etc/exports
        添加一條語句:/app 192.168.1.140(rw,sync,no_root_squash)
        在添加的時候vim 不允許保存。顯示 read_only file system
        解決方法:mount -o remount,rw /(重新掛載/分區爲可讀寫)
        格式:共享資源路徑 [主機地址][選項]
        格式解析:
      共享資源路徑:就是要共享出來的目錄或者磁盤分區。這些目錄存在於NFS Server端,以供NFS Client掛載使用。
        主機地址:設定允許使用NFS Server共享資源的客戶端主機地址,主機地址可以是主機名、域名、IP地址等,支持匹配。
        選項:下面是可用的各個選項含義:
        ro: 即爲:read only,也就是客戶端主機對共享資源僅僅有讀權限。
        rw: 即爲:read write,也就是客戶端主機對共享資源有讀、寫權限。
        no_root_squash: 信任客戶端,根據用戶UID進行判斷,如果登入到NFS主機的用戶是ROOT,那麼此用戶就擁有對共享資源的最高權限。此參數很不安全,建議不要使用。
         root_squash:系統預設值,當登入NFS主機的用戶root時,那麼這個使用者的權限將被縮成爲匿名使用者,也就是它的UID與GID都會變成nfsnobody身份;只有可讀權限,例如客戶端使用者以UID,GID)=(0,0)的身份使用共享目錄時,其身份就被轉換爲(UID,GID)=(65534,65534) 也就nfsnobody這個用戶身份。系統以此爲預設值,顯然是爲了安全考慮。
        all_squash:不管登陸NFS主機的是什麼用戶,都會將共享文件的UID和GID映射爲匿名用戶nfsnobody。
        no_all_squash:系統預設值,保留共享文件的UID和GID默認權限。也就是客戶端用戶的UID以及GID和服務端共享文件UID和GID相同時,纔有對共享文件的讀寫權限。這種選項保證了共享文件的用戶和組權限不會改變。
        anonuid:將登入NFS主機的用戶都設定成指定的UID,此UID必須存在於NFS Server端/etc/passwd中。
        anongid:與“anonuid”含義類似,但是變成 GID了,即用戶組ID!
        sync:資料同步寫入磁盤中。默認選擇。
        async:資料會先暫時存放在內存中,不會直接寫入硬盤。
 開啓NFS服務
        # systemctl start nfs
        # systemctl start rpcbind
        exportfs 命令可以臨時生效一條策略。系統不重啓,就不會生效。
 客戶端:
            安裝 rpcbind 和 nfs-utils
            啓動服務: service  rpcbind start
        查看nfs服務器提供了哪些服務:
            showmount -a ip
            查看nfs主機信息
            showmount -e ip
            查看nfs主機和目錄信息
    如何使用NFS: 在客戶端掛載nfs服務器共享的目錄
    # mkdir /app
          # mount -t nfs 192.168.1.152:/app /app
          (需要關閉服務器端口的防火牆 systemctl stop firewalld.service )
    NFS應用便捷場景:文件備份。
    需要備份的文件爲客戶端。粗放備份文件的客戶端爲nfs服務器。
    直接在掛載目錄下。tar 需要複製的文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章