九.xfs文件系统

XFS文件系统的配置

基本上XFS就是一个日志式文件系统,之所以现在把它当预设的文件系统 是因为它原本就是被开发用于高容量磁盘以及高性能文件系统之用的,相当适合于现在的环境。此外,几乎所有EXT4文件系统具有的功能,xfs都具备。

xfs文件系统在资料的分布上,主要规划为三个部分:资料区(data section),文件系统活动登录区(log section),实时运作(realtime section)。具体如下:

1资料区(data section)

这个区域基本上与之前说的EXT家族一样,包括inode、block、superblock等数据都放在这个区块。这个数据区与ext家族的block group类似,分多个储存区群组(allocation groups)。每个储存区群组中都包含了整个文件系统的superblock,剩余空间的管理机制,inode的分配与追踪。此外,inode,block都是系统需要用到时才会动态配置产生,所以格式化动作较EXT家族快了很多。

其实,只需要把这个数据区的储存区群组当成ext的block群组就可以了,只是inode与block是动态产生的,并非一开始于格式化就完成配置的。

2文件系统活动日志区(log section)

日志和数据分离

这个区域主要被用来记录文件系统的变化,具体原理和之前说的相同。

因为系统所有的动作都会在这个区域做个记录所以这个区域的磁盘活动是相当频繁的,xfs的设计在这里有一个巧妙之处,你可以指定外部的磁盘来作为xfs文件系统的日志管理区块。例如,你可以将SSD磁盘作为xfs的文件系统活动日志区,这样,当系统需要进行任何活动时,就可以更迅速的工作。

3实时运作区(realtime section)

当有文件要被建立时,xfs会在这个区段里找一个到数个extent区块,将文件放置在这个区块中,等到分配完毕后,再写入到data section的inode和block中。这个extent区块的大小得要在格式化的时候就先指定,最小值为4K最大可到1G。一般非磁盘阵列的磁盘默认为64K容量,而具有类似磁盘阵列的stripe情况下,则建议extent设定为与stripe一样大较佳。这个extent最好不要乱动,因为可能会影响到实体磁盘的效能。

下面解释一下以上输出的信息:

isize : inode的容量,这里为256bytes。

agcount:储存区群组的个数,这里有4个。

agsize : 每个储存区群组里的block个数,这里为32000个。

sectsz:逻辑扇区(sector)的容量,这里为512bytes。

bsize:每个block的容量为4 k。

blocks:共有128000个block在这个文件系统内。

sunit,swidth:与磁盘阵列的stripe相关性较高,这里暂时不说明。

internal,指这个登录区的位置在文件系统内,而不是外部系统的意思,占用了4K * 853空间。

第9行:realtime区域,extent容量为4k,none=>不过目前没有使用。

xfs有个写入屏障,在有缓存的情况下开启barrier功能,保证数据安全,如果没有缓存可以关闭这个参数

mount -o nobarrier /dev/device /mount/point

barrier

该功能背后的思路很简单:在写入新的 数据块到磁盘之前,会先将元数据写入日志。预先将元数据写入日志可以保证在写入真实数据前后一旦发生错误,日志功能能很容易地回滚到更改之前的状态。这个 方法确保了不会发生文件系统崩溃的情况。

如果设备映射器作为存储层的优先级使用,因为设备映 射器不支持barrier,逻辑卷、软RAID或者多路径磁盘

xfs_quota

usrquota

groupquota

project

[root@localhost ~]# mount -o usrquota,grpquota /dev/sda3 /mnt/[root@localhost ~]# xfs_quota -x -c 'report' /mnt/User quota on /mnt (/dev/sda3)BlocksUser ID Used Soft Hard Warn/Grace---------- --------------------------------------------------root 4 0 0 00 [--------]Group quota on /mnt (/dev/sda3)BlocksGroup ID Used Soft Hard Warn/Grace---------- --------------------------------------------------root 4 0 0 00 [--------][root@localhost ~]# xfs_quota -x -c 'limit bsoft=50K bhard=100K robin' /mnt[root@localhost ~]# xfs_quota -x -c 'report' /mnt/User quota on /mnt (/dev/sda3)BlocksUser ID Used Soft Hard Warn/Grace---------- --------------------------------------------------root 4 0 0 00 [--------]robin 0 52 100 00 [--------]Group quota on /mnt (/dev/sda3)BlocksGroup ID Used Soft Hard Warn/Grace---------- --------------------------------------------------root 4 0 0 00 [--------]xfs_quota -x -c 'limit -g bsoft=1000m bhard=1200m accounting' /target/path

prject配额(对目录配额)

mkdir /quota #创建配额目录mount -o prjquota /dev/sda8 /quota #挂载设备并开启支持目录配额的选项 prjquota和usrquota,grpquota冲突mkdir /quota/test #创建测试目录mount/dev/sda8 on /quota type xfs (rw,relatime,attr2,inode64,prjquota) #保证参数开启[root@localhost ~]# echo 50:/quota/test >> /etc/projects #[配置project 的id 和 对应的目录[root@localhost ~]# echo test:50 >> /etc/projid #项目名称和对应的id[root@localhost ~]# cat /etc/projects50:/quota/test[root@localhost ~]# cat /etc/projidtest:50xfs_quota -x -c 'project -s -p /quota/test 50' #项目名称xfs_quota -x -c 'limit -p bhard=100M 50' /quota #限制目录大小查询xfs_quota -x -c 'report' /quota #查询

xfs局限性

1.XFS是一个单节点文件系统,如果需要多节点同时访问需要考虑使用GFS2文件系统

2.XFS支持16EB文件系统,而redhat仅支持100TB文件系统

3.XFS较少的适用在单线程元数据密集的工作负荷,在单线程创建删除巨大数量的小文件的工作负荷下,其他文件系统(ext4)表现的会更好一些

4.xfs文件在操作元数据时可能会使用2倍的CPU资源,在CPU资源有限制的情况下可以研究使用不同文件系统

5.xfs更多适用的特大文件的系统快速存储,ext4在小文件的系统或系统存储带宽有限的情况下表现的更好

[root@node6 ~]# yum install xfsprogs -y

[root@node6 ~]# mkfs.xfs /dev/vdb1

meta-data=/dev/vdb1 isize=256 agcount=4, agsize=6016 blks

= sectsz=512 attr=2, projid32bit=0

data = bsize=4096 blocks=24064, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0

log =internal log bsize=4096 blocks=1200, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

日志分离(把数据和日志分别不同的磁盘)

[root@node6 ~]# mkfs.xfs -f -l logdev=/dev/sdc1 /dev/sdb1meta-data=/dev/vdb1 isize=256 agcount=4, agsize=6016 blks= sectsz=512 attr=2, projid32bit=0data = bsize=4096 blocks=24064, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0log =/dev/vdb2 bsize=4096 blocks=24576, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0挂载:[root@node6 ~]# mount -o logdev=/dev/sdc1 /dev/sdb1 /mnt/

修复文件系统

[root@node6 ~]# umount /xfs[root@node6 ~]# xfs_repair /dev/vgxfs/lvxfs #fsck e2fsck

磁盘碎片整理

[root@node6 ~]# mkfs.xfs -l logdev=/dev/vdb2 /dev/vdb1[root@node6 ~]# mount -o logdev=/dev/vdb2 /dev/vdb1 /xfs[root@node6 ~]# for FILE in file{0..3} ; do dd if=/dev/zero of=/xfs/${FILE} bs=4M count=100 & done[root@node6 ~]# filefrag /xfs/file*xfs_db -c frag -r /dev/vdb1 磁盘碎片当前状态[root@node6 ~]# xfs_fsr -v[root@node6 ~]# umount /xfs[root@node6 ~]# xfs_repair -n -l /dev/vdb2 /dev/vdb1Phase 1 - find and verify superblock...Phase 2 - using external log on /dev/vdb2- scan filesystem freespace and inode maps...- found root inode chunkPhase 3 - for each AG...- scan (but don't 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 = 3No modify flag set, skipping phase 5Phase 6 - check inode connectivity...- traversing filesystem ...- traversal finished ...- moving disconnected inodes to lost+found ...Phase 7 - verify link counts...No modify flag set, skipping filesystem flush and exiting.[root@node6 ~]#[root@node6 ~]# xfs_repair -l /dev/vdb2 /dev/vdb1Phase 1 - find and verify superblock...Phase 2 - using external log on /dev/vdb2- zero log...- scan filesystem freespace and inode maps...- found root inode chunkPhase 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 = 3Phase 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

差异备份只以完全备份为基础备份变更数据;增量备份以上一次增量备份为基础备份变更数据。

备份

[root@node6 ~]# mount -o logdev=/dev/vdb2 /dev/vdb1 /xfs[root@node6 ~]# yum install xfsdump[root@node6 ~]# xfsdump -L full -M dumpfile -l 0 - /xfs | xz > /tmp/xfs.$(date +%Y%m%d).0.xz#完全备份 -L label -M 备份 -l 级别(level)xfsdump: using file dump (drive_simple) strategyxfsdump: version 3.0.4 (dump format 3.0) - Running single-threadedxfsdump: level 0 dump of node6.uplooking.com:/xfsxfsdump: dump date: Sat Sep 14 17:39:47 2013xfsdump: session id: 75f91e6b-c0bc-4ad1-978b-e2ee5deb01d4xfsdump: session label: "full"xfsdump: ino map phase 1: constructing initial dump listxfsdump: ino map phase 2: skipping (no pruning necessary)xfsdump: ino map phase 3: skipping (only one dump stream)xfsdump: ino map construction completexfsdump: estimated dump size: 1677743680 bytesxfsdump: /var/lib/xfsdump/inventory createdxfsdump: creating dump session media file 0 (media 0, file 0)xfsdump: dumping ino mapxfsdump: dumping directoriesxfsdump: dumping non-directory filesxfsdump: ending media filexfsdump: media file size 1678152296 bytesxfsdump: dump size (non-dir files) : 1678101072 bytesxfsdump: dump complete: 152 seconds elapsedxfsdump: Dump Status: SUCCESS[root@node6 ~]#[root@node6 ~]# xfsdump -Ifile system 0:fs id: 467c218c-22b5-45bc-9b0e-cd5782be6e2esession 0:mount point: node6.uplooking.com:/xfsdevice: node6.uplooking.com:/dev/vdb1time: Sat Sep 14 17:39:47 2013session label: "full"session id: 75f91e6b-c0bc-4ad1-978b-e2ee5deb01d4level: 0resumed: NOsubtree: NOstreams: 1stream 0:pathname: stdiostart: ino 131 offset 0end: ino 135 offset 0interrupted: NOmedia files: 1media file 0:mfile index: 0mfile type: datamfile size: 1678152296mfile start: ino 131 offset 0mfile end: ino 135 offset 0media label: "dumpfile"media id: de67b2b5-db72-4555-9804-a050829b2179xfsdump: Dump Status: SUCCESS[root@node6 ~]# rm -rf /xfs/*[root@node6 ~]# xzcat /tmp/xfs.20130914.0.xz | xfsrestore - /xfs #完全恢复xfsrestore: using file dump (drive_simple) strategyxfsrestore: version 3.0.4 (dump format 3.0) - Running single-threadedxfsrestore: searching media for dumpxfsrestore: examining media file 0xfsrestore: dump description:xfsrestore: hostname: node6.uplooking.comxfsrestore: mount point: /xfsxfsrestore: volume: /dev/vdb1xfsrestore: session time: Sat Sep 14 17:39:47 2013xfsrestore: level: 0xfsrestore: session label: "full"xfsrestore: media label: "dumpfile"xfsrestore: file system id: 467c218c-22b5-45bc-9b0e-cd5782be6e2exfsrestore: session id: 75f91e6b-c0bc-4ad1-978b-e2ee5deb01d4xfsrestore: media id: de67b2b5-db72-4555-9804-a050829b2179xfsrestore: searching media for directory dumpxfsrestore: reading directoriesxfsrestore: 1 directories and 4 entries processedxfsrestore: directory post-processingxfsrestore: restoring non-directory filesxfsrestore: restore complete: 33 seconds elapsedxfsrestore: Restore Status: SUCCESS[root@node6 ~]# ls /xfsfile0 file1 file2 file3

全备份

echo aaaaa >> a.txtxfsdump -L all -M dumpfile -l 0 - /mnt | xz > /home/xfs.$(date +%Y%m%d).all0.xzxzcat /home/xfs.20170609.all0.xz

增量

echo bbbbbbb > b.txtxfsdump -L add -M dumpfile -l 1 - /mnt | xz > /home/xfs.$(date +%Y%m%d).add1.xzxzcat /home/xfs.20170609.add0.xzxzcat /home/xfs.20170609.add1.xzecho ccccc > c.txtxfsdump -L add -M dumpfile -l 2 - /mnt | xz > /home/xfs.$(date +%Y%m%d).add2.xzxzcat /home/xfs.20170609.add2.xzecho dddddd > d.txtxfsdump -L add -M dumpfile -l 3 - /mnt | xz > /home/xfs.$(date +%Y%m%d).add3.xzxzcat /home/xfs.20170609.add3.xz

差异

xfsdump -L cha -M dumpfile -l 1 - /mnt | xz > /home/xfs.$(date +%Y%m%d).cha1.xzxzcat /home/xfs.20170609.cha1.xz

完全恢复+增量恢复

xzcat /home/xfs.20170609.all0.xz | xfsrestore - /mnt/lsxzcat /home/xfs.20170609.add1.xz | xfsrestore - /mnt/lsxzcat /home/xfs.20170609.add2.xz | xfsrestore - /mnt/lsxzcat /home/xfs.20170609.add3.xz | xfsrestore - /mnt/ls

完全恢复+差异恢复

xzcat /home/xfs.20170609.all0.xz | xfsrestore - /mnt/lsxzcat /home/xfs.20170609.cha1.xz | xfsrestore - /mnt/ls

清除备份记录

rm -rf /var/lib/xfsdump/inventory/*

十.符号链接与硬连接

符号链接(软连接)

[root@localhost ~]# ln -s /root/aa.txt /tmp/aa_soft.txt[root@localhost ~]# ll /tmp/aa_soft.txtlrwxrwxrwx 1 root root 12 8月 9 13:41 /tmp/aa_soft.txt -> /root/aa.txt

硬连接

[root@localhost ~]# ln /root/aa.txt /tmp/aa_hard.txt[root@localhost ~]# ll /tmp/aa_hard.txt-rw-r--r-- 2 root root 4 8月 9 13:40 /tmp/aa_hard.txt

符号连接和硬连接的区别

1.创建时参数不同

ln -s /root/aa.txt /tmp/aa_soft.txt ln /root/aa.txt /tmp/aa_hard.txt

2.符号连接源文件不能重命名或者删除,硬连接可以

3.符号链接文件权限永远是777,硬连接权限和源文件权限一致

[root@localhost ~]# ll /root/aa.txt -rw-r--r-- 2 root root 4 8月 9 13:40 /root/aa.txt [root@localhost ~]# ll /tmp/aa_soft.txt lrwxrwxrwx 1 root root 12 8月 9 13:41 /tmp/aa_soft.txt -> /root/aa.txt [root@localhost ~]# ll /tmp/aa_hard.txt -rw-r--r-- 2 root root 4 8月 9 13:40 /tmp/aa_hard.txt

4.符号连接和源文件的inode号不同,硬连接相同

[root@localhost ~]# ls -i /root/aa.txt 35261258 /root/aa.txt [root@localhost ~]# ls -i /tmp/aa_soft.txt 17462480 /tmp/aa_soft.txt [root@localhost ~]# ls -i /tmp/aa_hard.txt 35261258 /tmp/aa_hard.txt

5.符号连接可以对目录操作,硬连接不可以

[root@localhost ~]# ln -s /root/ /tmp/new_root [root@localhost ~]# ln /root/ /tmp/new_root ln: "/root/": 不允许将硬链接指向目录

6.软连接可以跨文件系统,硬连接不可以跨文件系统

[root@localhost ~]# ln -s /root/aa.txt /boot/ [root@localhost ~]# ll /boot/aa.txt lrwxrwxrwx 1 root root 12 8月 9 13:51 /boot/aa.txt -> /root/aa.txt [root@localhost ~]# ln /root/aa.txt /boot/aa_hard.txt ln: 无法创建硬链接"/boot/aa_hard.txt" => "/root/aa.txt": 无效的跨设备连接

7.符号连接创建时必须是绝对路径(除非源文件和目标在同一个目录下),硬连接相对路径或绝对路径都可以

释放连接

[root@localhost ~]# unlink /tmp/aa_soft.txt

[root@localhost ~]# unlink /tmp/aa_hard.txt

Linux磁盘管理——XFS文件系统符号链接硬链接相关推荐

  1. Linux磁盘管理与文件系统

    Linux磁盘管理与文件系统 磁盘结构 ■硬盘的物理结构 ■硬盘的数据结构 ■硬盘存储容量公式 MBR与磁盘分区表示 ■主引导记录(MBR: Master Boot Record) 磁盘分区结构 文件 ...

  2. 【AWSL】之Linux磁盘管理与文件系统(fdisk、df、mount、umount、lsblk)

    序言 这里我主要介绍以下Linux的磁盘管理与文件系统的一些操作与概述 磁盘和文件 序言 一.磁盘分区结构 二.文件系统类型 三. 检测并确认新硬盘 1.fdisk命令 2.fdisk -l 3.规划 ...

  3. Linux磁盘管理与文件系统(实验详解,一看就懂)

    磁盘管理与文件系统 一.磁盘管理 1.1 磁盘结构 1.2 MBR与磁盘分区表示 1.2.1 MBR 1.2.2 磁盘分区表示 二.文件系统 2.1 文件系统类型 2.2 检测并确认新硬盘 2.3 管 ...

  4. 简介Linux磁盘管理与文件系统

    磁盘管理与文件系统 一.磁盘基础 1.磁盘结构 1.1.硬盘的物理结构 1.2.硬盘的数据结构 1.3.硬盘的存储容量 1.4.可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域 1.5.磁盘接口类型 ...

  5. Linux怎么把硬盘ex2改为ex4,linux磁盘管理和文件系统创建

    1磁盘管理 1.1硬盘的构造原理 硬盘分类: 机械式硬盘,固态硬盘 硬盘出厂会进行低级格式化,分磁盘,再分扇区,硬盘的第一个磁道的一个扇区就是MBR 512Bytes Master boot reco ...

  6. Linux磁盘管理和文件系统

    文章目录 1.前言 2.磁盘结构 2.1设备文件 2.2设备的命名规则 (1)物理设备 (2)虚拟磁盘设备 (3)创建设备文件 2.3硬盘类型 (1)硬盘接口类型 (2)服务器硬盘大小 (3)机械硬盘 ...

  7. Linux磁盘管理和文件系统(相思相见知何日?此时此夜难为情)

    目录 一.磁盘基础 1.磁盘结构 2.MBR与磁盘分区表示 3.磁盘分区结构 4.文件系统 (1)XFS文件系统 (2)swap交换文件系统 (3)Linux支持的其他文件系统类型 二.检测并确认新硬 ...

  8. Linux———磁盘管理与文件系统!!!

    前言 磁盘基础 1.硬盘的结构 2.磁盘分区表示 3.磁盘分区的结构 文件系统类型 检测并确认新硬盘 1.规划硬盘中的分区 2.检测并确认新硬盘 3.规划硬盘中的分区 管理文件系统 1.创建文件系统 ...

  9. 分析Linux磁盘管理与文件系统专题三

    1.前言 紧接着我的上一篇博客进行磁盘管理操作: http://zhangfengzhe.blog.51cto.com/8855103/1430531 我们已经对磁盘进行了分区,信息如下: [root ...

最新文章

  1. CentOS 8 安装图解
  2. C# socket 解析http 协议
  3. 我又来定计划了~2015-8至年底
  4. Spring-Security-入门(一):登录与退出
  5. ZeroClipboard 和JqueryUI_dialog 完美组合!
  6. 洛谷P1908求逆序对【树状数组】
  7. JVM-白话聊一聊JVM类加载和双亲委派机制源码解析
  8. 跨链Cosmos(6)ABCI 原理
  9. 项目常用第三方库 Swift版
  10. Oracle数据库分页的三种方法
  11. java tempfile read_Java 文件操作
  12. element-ui 解决 table 里包含表单验证的问题!
  13. Go操作MySql Memache Mongodb
  14. Dev-C++的下载和安装
  15. 程序设计导引及在线实践之大整数除法
  16. 新手入门Java疯狂讲义遇到的100个问题
  17. 《第一行代码Android(第3版)》— Android 书籍
  18. 计算机桌面是快捷方式,我的电脑桌面上的图标都变成快捷方式了怎么处理?
  19. thinkpad计算机快捷键,Thinkpad笔记本键盘F1-F12功能键详细介绍
  20. python爬取CSDN论坛

热门文章

  1. 语义分割rle编码与mask的转换
  2. android调用微信程序,Android如何测试微信小游戏小程序?
  3. 艾瑞网·中国新经济门户 - http://www.iresearch.cn
  4. 怎么查看linux的日志syslog,Windows日志的记录
  5. Uncaught SyntaxError: Unexpected token {
  6. 怎么扩大图片大小?如何调整图片大小不变形?
  7. 【转】加权最小二乘法
  8. php 浏览器 兼容,关于对浏览器兼容性的一点点理解
  9. 百度在线人脸识别API简单实现
  10. 【iOS-Cocos2d游戏开发之四】独自收集Cocos2d提供的字体!共57种(有对照的字体图)