linux 文件系統管理三部曲之二:創建文件系統

来源:https://www.cnblogs.com/xiaoshiwang/archive/2020/01/02/12132389.html
-Advertisement-
Play Games

創建文件系統的含義:就是格式化一個硬碟分區,不同的格式化方式,就是創建了不同的文件系統。 格式化: 低級格式化:劃分分區前執行,主要是劃分硬碟的磁軌等。 高級格式化:劃分分區後執行,創建文件系統 創建文件系統時做的目的:當我們在硬碟上創建文件後,以後可以用文件的名字還能找到這個文件。 文件包含2部分 ...


創建文件系統的含義:就是格式化一個硬碟分區,不同的格式化方式,就是創建了不同的文件系統。

格式化:

  • 低級格式化:劃分分區前執行,主要是劃分硬碟的磁軌等。

  • 高級格式化:劃分分區後執行,創建文件系統

    • 創建文件系統時做的目的:當我們在硬碟上創建文件後,以後可以用文件的名字還能找到這個文件。

      文件包含2部分:

      • 元數據(包括:許可權,屬主/組,時間戳,大小,數據塊指針等)

        數據塊指針:指向文件內容在數據區的位置(根據文件內容的大小,位置會有多個)

      • 數據本身的內容。

      創建文件系統時,把整個分區劃分成2個區域,一大一小。

      • 小的區域放每個文件的元數據,叫元數據區(也叫:Inode table)

        每個文件的元數據,叫 inode(index node)

      • 大的區域放文件本身的內容,叫數據區

        數據區需要再次劃分成一堆block,block的大小一般是扇區的倍數。一個扇區是512bytes。

      • 元數據區和數據區圖例:

      • 元數據區和數據區的大小比例怎麼決定呢?

        如果文件的size小,而且文件數量多,則會發生元數據區已經滿了,但是數據區還有很多空餘。

        如果文件的size大,而且文件數量少,則會發生數據區已經滿了,但是元數據區還有很多空餘。

  • 一般文件:它的元數據里的數據塊指針區域,存放的是數據區的地址。占用分區的數據區域的存儲空間。

  • 符號鏈接文件:它的元數據里的數據塊指針區域,存放不是是數據區的地址,而是實際文件的路徑。所以它不占用分區的數據區域的存儲空間。它只占用元數據區域的存儲空間。

  • 設備文件:它的元數據里的數據塊指針區域,存放不是是數據區的地址,而是主設備號和次設備號。所以它不占用分區的數據區域的存儲空間。它只占用元數據區域的存儲空間。

查看文件的inode編號。

  • 使用ls -i files,或者stat files

操作系統,如何知道哪些inode別使用了,哪些block被使用了?

搜索整個數據區域,肯定能知道block的使用情況,

搜索整個元數據區域,肯定能知道inode的使用情況,可是性能太低下了。

所以,在元數據區域找塊空間,存放2個東西,叫點陣圖索引(bitmap)。

一個是inode的點陣圖索引(Inode bitmap)。

一個是block的點陣圖索引(Block bitmap)。

點陣圖索引的每個bit位對應一個inode/block,0代表此inode/block未被使用,1代表此inode/block已被使用。

搜索點陣圖索引,速度就快多了。

super block

若一個分區里只有一個元數據區,一個數據區的話,即便有點陣圖索引,索引也是太多了,遍歷一遍也很費時間,所以實際的文件系統,都是有多個元數據區和數據區,如下圖,每個元數據區和數據區組成一個獨立的邏輯分區,獨立自治,每個邏輯分區里,再建立點陣圖索引。有了邏輯分區的話,還需要一個中央政府,去管理這些邏輯分區,這個中央政府叫【super block】。

super block:記錄著邏輯分區的信息。

如果super block損壞了的話,那整個分區就廢了,所以super block就必須做冗餘處理,所以把super block放到了多個邏輯分區的數據區里。如下圖:

inode里沒有存放文件的名字,名字放哪裡了呢?放目錄里了。目錄也是文件,可不是windows里的文件夾。

目錄的block里放的是:目錄里的文件和文件所對應的inode編號。

下圖表示了:元數據區,和數據區,和如何找到文件/var/log/messages的

找到硬碟上的文件後,就放到記憶體的【buff/cache】中,下次用戶再訪問此文件就能快速的從記憶體中讀取到。

用free命令查看記憶體情況:

# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        336M        3.0G         13M        429M        3.1G
Swap:          3.9G          0B        3.9G

硬鏈接和符號鏈接的區別

操作系統能根據文件路勁,找到它對應的inode編號。

  • 硬鏈接:

    • 創建硬鏈接命令:ln src link_file
    • 多個硬鏈接文件,所對應的inode編號相同
    • 硬鏈接不能跨文件系統,因為每個文件系統的inode計數方式不同。
    • 創建硬鏈接會增加inode的引用計數,同樣刪除硬鏈接會減少inode的引用技術,當inode的引用計數變成零時,是否數據區對應的空間。
    • 目錄不支持硬鏈接,防止迴圈引用。
  • 符號鏈接:

    • 創建符號鏈接命令:ln -s src link_file
    • 符號鏈接文件,有自己獨立的inode。
    • 可以跨文件系統
    • 創建或刪除符號鏈接,不影響inode的引用計數
    • 符號鏈接可以指向目錄
    • 符號鏈接的mode是777,但實際的mode還是要取決於它指向的文件的mode
    • 符號鏈接的size是其指定的文件的路徑字元串的位元組數

      $ ls -l
      lrwxrwxrwx. 1 ys   ys   14 Dec 27 13:25 sl1 -> 符號鏈接11
      -rw-rw-r--. 1 ys   ys    0 Dec 27 13:24 符號鏈接11

Linux支持大部分的文件系統,哪個文件系統最好呢?沒有最好只有更好。

不同的文件系統,適應不同的使用場景。

不同的文件系統,對分區的劃分方法都不一樣。對應讀寫文件的程式來說,就太難了,不可能針對每種文件系統,寫不同的代碼。那麼,linux是如何解決這個問題的呢?使用VFS。

VFS:virtual FIle System虛擬文件系統。

文件讀寫程式,只跟VFS打交道,然後VFS和各個文件系統打交道。

VFS給程式員統一的,簡潔的API介面。

Linux支持哪些文件系統:

  • ext2,ext3,ext4:基本被淘汰了。單個文件的大小有限制
  • xfs:紅帽7開始好像使用xfs了。centos7好像使用此文件系統。特點:單個文件的大小沒有限制
  • relserfs:能相對容易找回誤刪除的文件,但是作者入獄了,所以不是主流了。
  • btrfs:特點:單個文件的大小沒有限制。性能好,但還是處於測試階段。
  • iso9660:光碟(包括dvd和vcd)的文件系統
  • nfs,cifs:網路文件系統
  • gfs2,ocfs2:集群文件系統
  • ceph:內核級分散式文件系統
  • vfat(fat32),ntfs:windows的文件系統
  • proc, sysfs, tmpfs, hugepagefs:偽文件系統
  • UFS(unix文件系統),FFS(fast文件系統),JFS(日誌文件系統):Unix下的文件系統。
  • swap:交換文件系統
  • mogilefs,moosefs,glusterfs:用戶空間的分散式文件系統。

文件系統里的日誌功能

由一個問題引出了文件系統里的日誌功能。

當往硬碟里寫入的時候,先去找一個空閑的inode,寫入元數據信息,但是size在數據全部寫入完前,是不知道的,在寫入數據區的途中,突然斷電了,數據寫了一部分;再次開機的時候,操作系統為了檢查出壞數據,

就要掃描硬碟的inode區和數據區,找出壞的block,這樣一來開機的就太慢了。如何解決呢?日誌功能(journal)登場了!

日誌功能:

  • 在硬碟找一塊區域當日誌區域。
  • 當要創建文件的時候,先不往元數據區,寫入元數據信息,而是往日誌區域,寫入元數據信息,
  • 然後寫入數據到數據區,當數據全部寫入到數據區後,把日誌區的元數據,剪切到元數據區域。
  • 系統啟動時,只要看硬碟的日誌區域,如果日誌區域里有數據,就說明這是壞數據。加速了系統的系統速度。

日誌功能的缺點:

  • 由於要從把日誌區域的數據,剪切到元數據區域,增加了一次IO。

Linux里常用的文件系統:ext2,ext3,ext4, xfs, relserfs, btrfs

只有ext2是無日誌功能的。

文件系統組成部分

  • 文件系統驅動程式:由內核空間提供。

    文件系統的驅動程式,可以選擇直接編譯到內核空間;也可以選擇作為一個module,安裝到內核空間。

    使用lsmod命令可以看到,內核安裝了哪些文件系統的驅動程式module。

    # lsmod
    Module                  Size  Used by
    fuse                   91880  3
    xt_CHECKSUM            12549  1
    iptable_mangle         12695  1
    xfs                   997127  3

    如果發現想要的文件系統的驅動程式module沒有在裡面,也有可能是直接編譯到內核空間了。

    直接編譯到內核空間的文件系統的驅動程式,不在lsmod結果里。

  • 文件系統管理工具:由用戶空間的應用程式提供

文件系統工具

1, 創建文件系統的工具

  • mkfs:mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat等

    可以用選項:-t指定安裝說明文件系統。例:mkfs -t ext4= mkfs.ext4

    ext4相容ext3,ext3相容ext2.

    下麵是創建ext2文件系統:

    # fdisk -l /dev/sdb
    Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x2594e4e1
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048      411647      204800   83  Linux
    /dev/sdb2          411648      616447      102400    5  Extended
    /dev/sdb5          413696      516095       51200   83  Linux
    
    # mkfs.ext2 /dev/sdb1 #在/dev/sdb1里,安裝文件系統ext2
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=識別設備的捲標
    OS type: Linux
    Block size=1024 (log=0)塊的大小,沒有指定大小,預設是1K
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    51200 inodes(創建了51200個inode), 204800 blocks(創建了204800個blocks)
    10240 blocks (5.00%) reserved for the super user(給管理員預留了5%的空間)
    First data block=1(第一個數據在編號為1的block)
    Maximum filesystem blocks=67371008
    25 block groups(把block分成了25個組)
    8192 blocks per group(每個組有8192個block), 8192 fragments per group
    2048 inodes per group(每個組有2048個block)
    Superblock backups stored on blocks:(super block存放在塊編號為下麵的塊)
            8193, 24577, 40961, 57345, 73729
    
    Allocating group tables: done
    Writing inode tables: done
    Writing superblocks and filesystem accounting information: done
    # blkid /dev/sdb1 查看/dev/sdb1的文件系統和UUID
    /dev/sdb1: UUID="4752177b-e026-483d-b166-19229b64e4c3" TYPE="ext2"

    下麵是創建ext3文件系統:和ext2相比,多了下麵的存放日誌的空間。

    Creating journal (4096 blocks): done

    # mkfs.ext3 /dev/sdb5
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    12824 inodes, 51200 blocks
    2560 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=52428800
    7 block groups
    8192 blocks per group, 8192 fragments per group
    1832 inodes per group
    Superblock backups stored on blocks:
            8193, 24577, 40961
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    # blkid /dev/sdb5
    /dev/sdb5: UUID="8f066109-6fcf-4c40-812a-66909b54469e" SEC_TYPE="ext2" TYPE="ext3"

    創建xfs文件系統:

    centos5和6里沒有xfs,需要安裝。安裝命令:yum install xfsprogs

    # mkfs.xfs -f /dev/sdb5
    meta-data=/dev/sdb5              isize=512    agcount=2, agsize=6400 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=12800, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=855, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@localhost ~]# blkid /dev/sdb5
    /dev/sdb5: UUID="d73b8a2c-147d-4322-80a4-812553696c26" TYPE="xfs"

    yum小知識:查看用yum安裝的包里都包含哪些東西:

    # rpm -ql xfsprogs
    /usr/lib64/libhandle.so.1
    /usr/lib64/libhandle.so.1.0.3
    /usr/sbin/fsck.xfs
    /usr/sbin/mkfs.xfs
    /usr/sbin/xfs_admin
    /usr/sbin/xfs_bmap
    /usr/sbin/xfs_copy
    /usr/sbin/xfs_db
    /usr/sbin/xfs_estimate
    /usr/sbin/xfs_freeze
    /usr/sbin/xfs_fsr
    /usr/sbin/xfs_growfs
    /usr/sbin/xfs_info
    /usr/sbin/xfs_io
    /usr/sbin/xfs_logprint
    /usr/sbin/xfs_mdrestore
    /usr/sbin/xfs_metadump
    /usr/sbin/xfs_mkfile
    /usr/sbin/xfs_ncheck
    /usr/sbin/xfs_quota
    /usr/sbin/xfs_repair
    /usr/sbin/xfs_rtcp
    ...後面省略

    ext文件系統專用管理程式:mke2fs

    • 語法:mke2fs [options] device

    • 指定文件系統:-t

      mke2fs -t {ext2|ext3|ext4}

    • 指定blocksize:-b {1024|2048|4096}

      # mke2fs -t ext4 -b 2048 /dev/sdb5
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=
      OS type: Linux
      Block size=2048 (log=1)
      Fragment size=2048 (log=1)
    • 指定捲標(filesystem label):-L

      一般不指定捲標,因為容易重覆。

      指定捲標後,用blkid命令就能看到捲標了。

      # mke2fs -t ext4 -L myLabel1 /dev/sdb5
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=myLabel1
      # blkid /dev/sdb5
      /dev/sdb5: LABEL="myLabel1" UUID="3bd32005-bea7-42bb-969e-3b37de466f3e" TYPE="ext4"

      捲標雖然重覆了,但是UUID是不一樣的。

      # mke2fs -t ext4 -L myLabel1 /dev/sdb6
      mke2fs 1.42.9 (28-Dec-2013)
      Filesystem label=myLabel1
      # blkid /dev/sdb5
      /dev/sdb5: LABEL="myLabel1" UUID="3bd32005-bea7-42bb-969e-3b37de466f3e" TYPE="ext4"
      [root@localhost ~]# blkid /dev/sdb6
      /dev/sdb6: LABEL="myLabel1" UUID="7e71e3a9-5075-4b07-97fc-af7eefae27fc" TYPE="ext4"

      更改ext2,ext3,ext4的捲標:e2label

      • 查看分區的捲標:e2label device
      • 修改分區的捲標:e2label device LABEL
    • 創建有日誌功能的文件系統:-j

      mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3

    • 每多少個位元組創建一個inode:-i

      指明inode與位元組的比率。

    • 指定inode的數量:-N 數字

      和用-i指定比率相比,直接指定inode的數量可能更好。

    • 指定inode的size:-I(大i)

      The inode-size value must be a power of 2 larger or equal to 128.

    • enable文件系統某個特性:-O feature

      或者disable文件系統某個特性:-O -feature後者-O ^feature

      feature一覽:用man 5 ext4查看

      mke2fs -O has_journal device:啟動日誌功能

    • 指定預留空間(super block)的大小的百分比:-m 數字(不需要加%,2就是2%)

      預設是預留5%,但是如果是100G的分區,5G就太大了。

2,檢測及修複文件系統的工具

因進程意外終止或系統崩潰(斷電)的原因,導致系統非正常終止時,可能會造成文件損壞;此時,應該檢查並修複文件系統。建議:離線進行

  • ext文件系統系列:e2fsck

    • -y:對所有問題自動回答yes
    • -f:即使文件系統處於clean狀態,也要強制進程檢查。
    # e2fsck -f /dev/sdb6
    e2fsck 1.42.9 (28-Dec-2013)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    L1: 11/6400 files (0.0% non-contiguous), 2155/25600 blocks
  • 所有文件系統:fsck

    # fsck.
    fsck.btrfs   fsck.ext2    fsck.ext4    fsck.minix   fsck.vfat
    fsck.cramfs  fsck.ext3    fsck.fat     fsck.msdos   fsck.xfs
    • -t:指明文件系統類型

    • -a:無須交互自動修複所有錯誤(不建議使用)

      若有個2G的文件,寫入了1.9G後,系統斷電。如果不修複還能保持1.9G,如果用-a修複,則把這1.9G也刪除了。

    • -r:互動式修複

3,查看ext系列文件系統的屬性和組的詳細信息的工具:​dumpe2fs

  • 只查看屬性:-h

    # dumpe2fs -h /dev/sdb6
    dumpe2fs 1.42.9 (28-Dec-2013)
    Filesystem volume name:   L1
    Last mounted on:          <not available>
    Filesystem UUID:          c48a5e5a-2ebf-42e6-a191-87496b19e281
    Filesystem magic number:  0xEF53
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super
    Filesystem flags:         signed_directory_hash
    Default mount options:    user_xattr acl
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              6400
    Block count:              25600
    Reserved block count:     1536
    Free blocks:              23445
    Free inodes:              6389
    First block:              1
    Block size:               1024
    Fragment size:            1024
    Reserved GDT blocks:      99
    Blocks per group:         8192
    Fragments per group:      8192
    Inodes per group:         1600
    Inode blocks per group:   200
    Filesystem created:       Fri Dec 27 21:24:40 2019
    Last mount time:          n/a
    Last write time:          Fri Dec 27 22:19:54 2019
    Mount count:              0
    Maximum mount count:      -1
    Last checked:             Fri Dec 27 21:24:40 2019
    Check interval:           0 (<none>)
    Reserved blocks uid:      0 (user root)
    Reserved blocks gid:      0 (group root)
    First inode:              11
    Inode size:               128
    Journal inode:            8
    Default directory hash:   half_md4
    Directory Hash Seed:      ea467d23-e9b0-43ca-b762-f6b70ea21180
    Journal backup:           inode blocks
    Journal features:         (none)
    Journal size:             1029k
    Journal length:           1024
    Journal sequence:         0x00000001
    Journal start:            0
  • 組的詳細信息:不加選項

    組的詳細信息包括:

    • super block存儲在哪個塊
    • Reserved GDT blocks存儲在哪些塊
    • inode的點陣圖索引(Inode bitmap)存儲在哪些塊
    • block的點陣圖索引(Block bitmap)存儲在哪些塊
    • 組裡的哪些塊是存儲元數據(Inode table)的
    • 多少個block是可以使用的;多少個inode是可以使用的;組裡有幾個目錄。
    • 可以使用的block的編號是多少;可以使用的inode的編號是多少。
    # dumpe2fs /dev/sdb6
    此處省略了head的信息。
    Group 0: (Blocks 1-8192)
      Primary superblock at 1, Group descriptors at 2-2
      Reserved GDT blocks at 3-101
      Block bitmap at 102 (+101), Inode bitmap at 103 (+102)
      Inode table at 104-303 (+103)
      7875 free blocks, 1589 free inodes, 2 directories
      Free blocks: 318-8192
      Free inodes: 12-1600
    Group 1: (Blocks 8193-16384)
      Backup superblock at 8193, Group descriptors at 8194-8194
      Reserved GDT blocks at 8195-8293
      Block bitmap at 8294 (+101), Inode bitmap at 8295 (+102)
      Inode table at 8296-8495 (+103)
      7889 free blocks, 1600 free inodes, 0 directories
      Free blocks: 8496-16384
      Free inodes: 1601-3200
    Group 2: (Blocks 16385-24576)
      Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1)
      Inode table at 16387-16586 (+2)
      6961 free blocks, 1600 free inodes, 0 directories
      Free blocks: 17616-24576
      Free inodes: 3201-4800
    Group 3: (Blocks 24577-25599)
      Backup superblock at 24577, Group descriptors at 24578-24578
      Reserved GDT blocks at 24579-24677
      Block bitmap at 24678 (+101), Inode bitmap at 24679 (+102)
      Inode table at 24680-24879 (+103)
      720 free blocks, 1600 free inodes, 0 directories
      Free blocks: 24880-25599
      Free inodes: 4801-6400

4,調整ext系列文件系統的特性:tune2fs

查看/調整ext2/ext3/ext4文件系統的可調整屬性,不是所有屬性,比如block的大小就不能調整。

  • 查看super block里的信息/查看文件系統的layout信息:-l

    # tune2fs -l /dev/sdb5
    tune2fs 1.42.9 (28-Dec-2013)
    Filesystem volume name:   myLabel1(捲標)
    Last mounted on:          <not available>(上次掛載,目前還沒有掛載過)
    Filesystem UUID:          3bd32005-bea7-42bb-969e-3b37de466f3e(UUID)
    Filesystem magic number:  0xEF53(魔數,標識文件系統的)
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize(文件系統啟用了哪些feature)
    Filesystem flags:         signed_directory_hash
    Default mount options:    user_xattr acl(文件系統的掛載選項)
    Filesystem state:         clean(文件系統狀態。clean:文件系統一致,沒有損壞的文件。如果有損壞的文件就是dirty狀態。)
    Errors behavior:          Continue(錯誤時的處理,continue就是不管錯誤,繼續處理)
    Filesystem OS type:       Linux
    Inode count:              12824(inode的數量)
    Block count:              51200(block的數量)
    Reserved block count:     2560(預留給super block的數量)
    Free blocks:              44440(空閑的block數量)
    Free inodes:              12813(空閑的inode數量)
    First block:              1(第一個塊的編號)
    Block size:               1024(塊的大小,單位是byte)
    Fragment size:            1024
    Group descriptor size:    64
    Reserved GDT blocks:      256(預留給GDT的block數量)
    Blocks per group:         8192(每組裡block的數量)
    Fragments per group:      8192
    Inodes per group:         1832(每組裡inode的數量)
    Inode blocks per group:   229(每組有多少個塊,存放inode)
    Flex block group size:    16
    Filesystem created:       Fri Dec 27 16:48:53 2019
    Last mount time:          n/a
    Last write time:          Fri Dec 27 16:48:53 2019
    Mount count:              0
    Maximum mount count:      -1
    Last checked:             Fri Dec 27 16:48:53 2019
    Check interval:           0 (<none>)
    Lifetime writes:          4445 kB
    Reserved blocks uid:      0 (user root)
    Reserved blocks gid:      0 (group root)
    First inode:              11
    Inode size:               128(inode的大小)
    Journal inode:            8
    Default directory hash:   half_md4
    Directory Hash Seed:      05ca7d6b-d6b6-4e15-854f-e9d49f0f3f61
    Journal backup:           inode blocks
  • 把ext2升級到ext3:-j

    無損升級,不會損壞文件系統里的文件

    # blkid /dev/sdb6
    /dev/sdb6: UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" TYPE="ext2"
    # tune2fs -j /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Creating journal inode: done
    # blkid /dev/sdb6
    /dev/sdb6: UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
    
  • 無損修改捲標:-L LABEL

    # tune2fs -L L1 /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    [root@localhost ~]# blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
  • 無損修改給super block預留的空間的百分比:-m 數字

    # tune2fs -m 6 /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Setting reserved blocks percentage to 6% (1536 blocks)
  • enable文件系統某個特性:-O feature

    或者disable文件系統某個特性:-O -feature後者-O ^feature

    disable日誌功能後,文件系統類型從原來的ext3變成了ext2;enable後又從ext2變成了ext3

    feature一覽:用man 5 ext4查看

    # tune2fs -O ^has_journal /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    # blkid /dev/sdb6
    disable日誌功能後,文件系統類型從ext3變成了ext2
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" TYPE="ext2"
    # tune2fs -l /dev/sdb6
    feature里沒有了has_journal
    Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super
    # tune2fs -O has_journal /dev/sdb6
    tune2fs 1.42.9 (28-Dec-2013)
    Creating journal inode: done
    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
    # tune2fs -l /dev/sdb6
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super
  • enable文件系統的掛載選項:-o mount_options

    或者disable文件系統的掛載選項:-o -mount_options後者-o ^mount_options

    具體的mount options可以在man tune2fs的-o選項出查看到。

    例如,disable acl(access control list,文件的特殊許可權控制功能)。

    在centos7創建文件系統時,acl是預設啟動的。

    只有在文件系統這裡,啟用了acl功能,getfacl,setfacl命令才有作用。

5,根據捲標(LABEL),UUID來定位設備:blkid

  • 查看設備的捲標和UUID

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
  • 根據捲標定位設備:-L

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2" TYPE="ext3"
    # blkid -L L1
    /dev/sdb6
  • 根據UUID定位設備:-U

    # blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="c48a5e5a-2ebf-42e6-a191-87496b19e281" SEC_TYPE="ext2"
    # blkid -U c48a5e5a-2ebf-42e6-a191-87496b19e281
    /dev/sdb6
    

swap文件系統

linux上的swap文件系統必須在獨立的分區,且system id必須是82

window上的swap文件系統,可以和操作系統在一個分區,比如都在c盤。

1,創建swap文件系統:mkswap

  • 不指定捲標和UUID。若原來的/dev/sdb6上有捲標和UUID,執行mkswap /dev/sdb6後,/dev/sdb6的捲標和UUID都被刪除,且生成一個新的UUID。

    # mkswap /dev/sdb6
    mkswap: /dev/sdb6: warning: wiping old ext3 signature.
    Setting up swapspace version 1, size = 25596 KiB
    no label, UUID=c9f3ecb5-d82e-461a-9701-23a364792800

    註意:若/dev/sdb6原來的system id不是82,則執行mkswap /dev/sdb6後,system id是不會自動變成82的,還需要手動用fdisk-t選項,修改system id。

  • 指定捲標:-L LABEL

    # blkid -L L1
    [root@localhost ~]# mkswap -L L1 /dev/sdb6
    mkswap: /dev/sdb6: warning: wiping old swap signature.
    Setting up swapspace version 1, size = 25596 KiB
    LABEL=L1, UUID=3e848623-b82a-4a4f-9c58-53b868260208
    [root@localhost ~]# blkid -L L1
    /dev/sdb6
    [root@localhost ~]# blkid /dev/sdb6
    /dev/sdb6: LABEL="L1" UUID="3e848623-b82a-4a4f-9c58-53b868260208" TYPE="swap"
  • 指定UUID:-U UUID

vfat文件系統

windows無法識別Linux的文件系統,因此,存儲設備需要兩種系統之間交叉使用時,應該使用windows和linux都支持的文件系統:fat32(vfat)。

創建vfat文件系統:mkfs.vfat device

# mkfs.vfat /dev/sdb5
mkfs.fat 3.0.20 (12 Jun 2013)

c/c++ 學習互助QQ群:877684253

本人微信:xiaoshitou5854


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Linux入門(一) 1.1 Linux與Windows的區別 Linux是一款操作系統。(正規的Java的開發是在Linux操作系統下進行的) 伺服器項目部署都是放在Linux操作系統上面。 Windows是微軟開發的操作系統,民用操作系統,可用於娛樂、影音、上網。具有強大的日誌記錄系統和強 ...
  • archlinux安裝 最近迷上了arch跟i3,於是把自己電腦重新安裝了arch,下麵是安裝arch的步驟,i3桌面還在美化中,等美化完成第一時間分享. 安裝使用的鏡像文件版本:5.3.13 電腦為台式主機 如有需要改進的地方請留言評論 安裝前準備 製作啟動u盤 推薦使用 "深度啟動盤製作工具" ...
  • "linux 文件系統管理三部曲之一:磁碟分區" "linux 文件系統管理三部曲之二:創建文件系統" 上面說明瞭,硬碟的劃分和格式化,那麼怎麼使用,還沒說,這裡說一下,怎麼使用創建好的文件系統。 使用文件系統 只要把文件系統“掛載”到某個目錄上,就可以通過這個目錄訪問文件系統了。 這個目錄就叫做: ...
  • 本篇文章介紹的內容是關於在Linux機器上創建,列出和刪除docker容器,下麵我們來看具體的內容。 1、啟動Docker容器 使用下麵的命令啟動新的Docker容器。這將啟動一個新的容器,併為你提供使用/bin/bash shell訪問該容器的許可權。 # docker run [OPTIONS] ...
  • 虛擬機centos 找不到IP地址 下圖解決後有ip地址 1. 查看網路IP和網關 >>1. 查看虛擬網路編輯器 >>2. 修改ip地址 >>3. 查看網關 ,記住 2. 配置網路ip地址 >> 1. 查看當前ip基本語法: [root@hadoop102 /]# ifconfig 在終端命令視窗中 ...
  • 原文地址:http://www.i5i6.net/post/118.html 1、 下載對應raid卡驅動 for redhat6.5 x64(如本次x3250 m5 c100陣列卡驅動 lsi_dd_megasr_16.02.2014.0811_rhel6_32-64); 2、 找到驅動包內對應的 ...
  • 方法/步驟 1、首先,我們先查看一下Win10正式專業版系統的激活狀態: 點擊桌面左下角的“Windows”按鈕,從打開的擴展面板中依次點擊“設置”-“更新和安全”,並切換到“激活”選項卡,在此就可以查看到當前系統的激活狀態。如圖,Win10正式專業版當前未激活。 2、接下來在桌面左下角的“cort ...
  • 本篇文章主要記錄微服務架構是開發過程中的主要命令,著實不多,方便下次使用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...