centos8平台使用xfs文件系統


一,xfs文件系統的特點

XFS是一種高性能的日志文件系統,

它是由SGI公司設計的,被稱為業界最先進的、最具可升級性的文件系統技術。

最初是從unix(irix)移植到linux系統上的。

從centos7開始,xfs成為了默認的文件系統

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

 

說明:格式化文件系統前需要創建分區,請參考這一篇

https://www.cnblogs.com/architectforest/p/12642634.html

 

二,centos8中的xfs

1,最大單文件大小:500TB

最大分區大小: 1024TB

2,相比較之下,centos6 的ext4:

最大單文件大小:16TB

最大分區大小: 16TB

 

可見對於大型文件系統的支持,xfs比ext4要好得多

 

三,xfs相關的工具程序屬於哪個包及安裝

1,查看所屬的包

[root@blog ~]# whereis mkfs.xfs
mkfs: /usr/sbin/mkfs /usr/sbin/mkfs.cramfs /usr/sbin/mkfs.minix /usr/sbin/mkfs.xfs
/usr/sbin/mkfs.ext2 /usr/sbin/mkfs.ext3 /usr/sbin/mkfs.ext4
/usr/sbin/mkfs.fat /usr/sbin/mkfs.msdos /usr/sbin/mkfs.vfat /usr/share/man/man8/mkfs.8.gz [root@blog ~]# rpm -qf /usr/sbin/mkfs.xfs xfsprogs-4.19.0-2.el8.x86_64

 

2,找不到mkfs.xfs命令時,可以用yum安裝

[root@blog ~]# yum install xfsprogs

 

四,查看xfs相關工具的版本

1,查看mkfs.xfs的版本

[root@blog ~]# mkfs.xfs -V
mkfs.xfs version 5.0.0

 

2,查看幫助:不指定參數時,會打印幫助信息

[root@blog ~]# mkfs.xfs 

 

五,例子:格式化一個分區為xfs文件系統並掛載

1,查看分區的文件系統:

[root@blog ~]# parted --list
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  537GB  537GB               primary

可以看到文件系統字段下面為空,表示還沒有格式化

 

2,xfs格式化

#使用 mkfs.xfs 加分區

[root@blog ~]# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=32767872 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=131071488, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=63999, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0 

說明:如果當前分區已經有文件系統存在,則需要加-f參數

/* force overwrite */   [-f]

 

3,再次查看分區:

[root@blog ~]# parted --list
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      1049kB  537GB  537GB  xfs          primary

可以看到分區的文件系統已格式化為xfs

 

4,把格式化好后的分區掛載到/databak這個目錄

查看分區的掛載情況

[root@blog ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.5G     0  7.5G   0% /dev
tmpfs           7.5G     0  7.5G   0% /dev/shm
tmpfs           7.5G  480K  7.5G   1% /run
tmpfs           7.5G     0  7.5G   0% /sys/fs/cgroup
/dev/vda1       100G   14G   87G  14% /
tmpfs           1.5G     0  1.5G   0% /run/user/1000 

創建目錄並掛載

[root@blog ~]# mkdir /databak
#掛載時用mount命令 [root@blog
~]# mount /dev/vdb1 /databak

再次查看掛載情況

[root@blog ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.5G     0  7.5G   0% /dev
tmpfs           7.5G     0  7.5G   0% /dev/shm
tmpfs           7.5G  480K  7.5G   1% /run
tmpfs           7.5G     0  7.5G   0% /sys/fs/cgroup
/dev/vda1       100G   14G   87G  14% /
tmpfs           1.5G     0  1.5G   0% /run/user/1000
/dev/vdb1       500G  3.6G  497G   1% /databak

可以看到/dev/vdb1掛載到了/databak目錄下,說明掛載已成功

 

5,編輯 /etc/fstab,使機器啟動時此文件系統能自動掛載

  用blkid得到分區的uuid

[root@blog ~]# blkid
/dev/vda1: UUID="e32cfa7a-df48-4031-8fdf-5eec92ee3039" TYPE="xfs" PARTUUID="1863aa79-01"
/dev/vdb1: UUID="7b7af437-97ef-4f76-8ea1-bb6498ae0f44" TYPE="xfs" PARTLABEL="primary" PARTUUID="c124c0e4-3626-4abf-a3e5-503c52e31417" 

編輯 /etc/fstab

[root@blog ~]# vi /etc/fstab

增加一行,保存后退出:

UUID=7b7af437-97ef-4f76-8ea1-bb6498ae0f44 /databak                xfs     defaults        0 2 

 

五,對/etc/fstab文件格式的說明:

第一列:設備id,centos默認用uuid指定設備,我們也建議采用這種格式

第二列: 掛載點,它需要是一個存在的目錄,如果是swap分區時可以直接寫swap

第三列: 文件系統類型,需要與格式化時的文件系統類型相同

第四列: 掛載參數:

  • auto: 系統自動掛載,fstab默認就是這個選項

  • defaults: 最常見參數,可以滿足需要大多數文件系統使用

  • noauto 開機不自動掛載

  • nouser 只有超級用戶可以掛載

  • ro 按只讀權限掛載

  • rw 按可讀可寫權限掛載

  • user 任何用戶都可以掛載

  • 請注意光驅和軟驅只有在裝有介質時才可以進行掛載,因此它是noauto

第五列:是否允許備份操作

當其值設置為1時,將允許dump備份程序備份;設置為0時,忽略備份操作;

第六列:開機時磁盤的檢查順序

數字越小越優先檢查,如果兩個分區的數字相同,則同時檢查。

當其值為0時,永遠不檢查。

根”/”分區永遠都為1。其它分區從2開始

 

六,例子:xfs文件系統修復

1,如果發生文件系統報錯,需要進行修復

注意修復前要做umount

# xfs_repair 加分區名,是對此分區做xfs文件系統修復

[root@blog ~]# umount /databak 
[root@blog ~]# xfs_repair /dev/vdb1
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done

 

2,注意:生產環境中應該系統盤和數據盤分開,則系統盤可以直接重做系統

 

3,常用的幾個參數

# -L是修復xfs文件系統的最后手段,慎重選擇,它會清空日志,會丟失用戶數據和文件

[root@blog ~]# xfs_repair -L /dev/vdb1 

# -n,檢查文件系統是否損壞,如果損壞會列出將要執行的操作

           即只檢查不處理

[root@blog ~]# xfs_repair -n /dev/vdb1

 

七,例子:xfs文件系統備份和恢復

1,備份:

創建一個文件,用來測試備份和恢復是否成功

[root@blog databak]# vi a.txt

內容:abcdefg

 

# -f 指定備份文件的路徑

[root@blog ~]# xfsdump -f /root/databak.xfsdump /databak
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 -> databak backup
session label entered: "databak backup"

 --------------------------------- end dialog ---------------------------------

xfsdump: level 0 dump of blog:/databak
xfsdump: dump date: Mon Apr  6 15:53:46 2020
xfsdump: session id: 08fdf1fd-2056-4010-bb8e-43fbbc053b9f
xfsdump: session label: "databak backup"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25216 bytes

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 -> vdb1
media label entered: "vdb1 "

 --------------------------------- end dialog ---------------------------------

xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 21872 bytes
xfsdump: dump size (non-dir files) : 544 bytes
xfsdump: dump complete: 26 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /root/databak.xfsdump OK (success)
xfsdump: Dump Status: SUCCESS

 

兩個label分別是:this dump session 和 media

我們輸入了:   databak backup  和 vdb1

 

2,查看備份文件的情況

#-I : 大寫的i,用來顯示備份的信息

[root@blog ~]# xfsdump -I
file system 0:
        fs id:          7b7af437-97ef-4f76-8ea1-bb6498ae0f44
        session 0:
                mount point:    blog:/databak
                device:         blog:/dev/vdb1
                time:           Mon Apr  6 15:53:46 2020
                session label:  "databak backup"
                session id:     08fdf1fd-2056-4010-bb8e-43fbbc053b9f
                level:          0
                resumed:        NO
                subtree:        NO
                streams:        1
                stream 0:
                        pathname:       /root/databak.xfsdump
                        start:          ino 132 offset 0
                        end:            ino 133 offset 0
                        interrupted:    NO
                        media files:    1
                        media file 0:
                                mfile index:    0
                                mfile type:     data
                                mfile size:     21872
                                mfile start:    ino 132 offset 0
                                mfile end:      ino 133 offset 0
                                media label:    "vdb1 "
                                media id:       0ff37aa0-a15e-43ed-a0b0-2b432570545f
xfsdump: Dump Status: SUCCESS

 

3,刪除文件后再恢復備份:

[root@blog ~]# cd /databak
[root@blog databak]# ls
a.txt
[root@blog databak]# rm a.txt
rm: remove regular file 'a.txt'? y
[root@blog databak]# ls
[root@blog databak]#

 

# -f 指定備份文件的路徑

[root@blog databak]# xfsrestore -f /root/databak.xfsdump /databak
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.8 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: blog
xfsrestore: mount point: /databak
xfsrestore: volume: /dev/vdb1
xfsrestore: session time: Mon Apr  6 15:53:46 2020
xfsrestore: level: 0
xfsrestore: session label: "databak backup"
xfsrestore: media label: "databak "
xfsrestore: file system id: 7b7af437-97ef-4f76-8ea1-bb6498ae0f44
xfsrestore: session id: 08fdf1fd-2056-4010-bb8e-43fbbc053b9f
xfsrestore: media id: 0ff37aa0-a15e-43ed-a0b0-2b432570545f
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /root/databak.xfsdump OK (success)
xfsrestore: Restore Status: SUCCESS

 

查看被刪除的文件是否已恢復

[root@blog databak]# ls
a.txt
[root@blog databak]# more a.txt
abcdefg

 

八,查看centos版本

[root@blog databak]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM