首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux 磁盘管理命令:使用xfs 管理命令

Linux 磁盘管理命令:使用xfs 管理命令

原创
作者头像
度假的小鱼
发布于 2025-01-11 16:05:17
发布于 2025-01-11 16:05:17
6540
举报

Linux 磁盘管理命令:使用xfs 管理命令

Linux磁盘管理命令

使用xfs 管理命令

在 GNU/Linux 中,管理 XFS 的工作主要使用 xfsprogs 中的一系列工具。

1.命令说明

  • mkfs.xfs:创建 XFS 文件系统
  • xfs\_admin:调整 XFS 文件系统的各项参数。
  • xfs\_copy:复制 XFS 文件系统的内容到一个或多个目标系统(并行方式)。
  • xfs\_db:调试或检测 XFS 文件系统(查看文件系统碎片等)。
  • xfs\_check:检测 XFS 文件系统的完整性。
  • xfs\_bmap:查看一个文件的块映射。
  • xfs\_repair:尝试修复受损的 XFS 文件系统。
  • xfs\_fsr:碎片整理。
  • xfs\_quota:管理 XFS 文件系统的磁盘配额。
  • xfs\_metadump:将 XFS 文件系统的元数据(Metadata)复制到一个文件中。
  • xfs\_mdrestore:从一个文件中将元数据(Metadata)恢复到 XFS 文件系统。
  • xfs\_growfs:调整 XFS 文件系统的大小(只能扩展)。
  • xfs\_freeze:暂停(-f)和恢复(-u)XFS 文件系统。

2.建立 XFS 文件系统

1)格式化

要格式化存储设备为 XFS 格式,可以用 root 身份执行如下命令:

代码语言:bash
AI代码解释
复制
#mkfs -t xfs /dev/sdb5 

如果 mkfs.xfs 发现存储设备仍有之前存放的文件资料,则会拒绝进行格式化。

代码语言:bash
AI代码解释
复制
# mkfs.xfs /dev/sdb5 

mkfs.xfs: /dev/sdb5 appears to contain an existing filesystem (xfs). 

mkfs.xfs: Use the -f option to force overwrite.

如果确定那些资料已没有用处,需要为 mkfs.xfs 加上选项 -f 强迫它进行格式化。

代码语言:bash
AI代码解释
复制
# mkfs.xfs -f /dev/sdb5 

meta-data =/dev/sdb5 isize=256 agcount=4,agsize=524119 blks 

= sectsz=512 attr=2 

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

 = sunit=0s width=0 blks 

naming =version 2 bsize=4096 

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

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

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

2)区块大小(Block size)

区块(Block)是文件系统存储盘中内容最小的单位,其大小对文件系统的空间运用和效 用有很大的影响。较大的区块可以令文件系统大小上限和文件大小上限增加,也可以加快大文 件的读/写,但会浪费较多的空间,对平均文件大小较小的文件系统比较不利。区块大小只可以 在格式化文件系统时设定,以后除重新格式化外不能改变。XFS 文件系统的区块大小最少可以 为 512 字节,最大不可超过 64KB,默认为 4KB。然而区块大小又受到作业系统内核的 page 大 小限制。在 X86 计算机中,区块最大不可超过 4KB。其他平台如 IA64 可以使用较大区块, 不过过大区块会浪费空间,所以不建议使用大于 4KB 的区块。在选择区块大小时要注意以下 几点:

  • 如果文件系统小于 100MB 或有大量小型文件,建议使用 512 字节区块,其余情况建议 使用 4KB 区块。
  • 如果用作新闻组服务器(News Server)或有大量小型文件,可以使用 512 字节文件系统 区块和 4KB 目录区块(使用-nsize=大小选项)。

简单而言,XFS 文件系统在 X86 平台上可以使用 512B、1KB、2KB 和 4KB 区块。格式化 显要指定区块大小需要使用选项“-b size=区块大小”:

代码语言:bash
AI代码解释
复制
#mkfs.xfs –b size=512 /dev/sdb6

3)目录区块大小(Directory Block Size)

XFS 容许目录使用比文件系统区块大小更小的区块,方法是使用选项“-n size=区块大小”, 例如:

代码语言:bash
AI代码解释
复制
#mkfs.xfs –b size=512 –n size=4k /dev/sdb6 

区块大小后加上“k”表示单位为 KB(1024 字节),加上“s”表示单位为磁区(sector, 默认为 512 字节,可能会因-s 选项而改变),加上“b”表示单位为文件系统区块(默认为 4KB, 可能会因-b 选项而改变)。

4)日志大小

格式化 XFS 时,mkfs.xfs 会自动根据文件系统的大小划分日志(Journal)的大小。若文件 系统等于或超过 1TB,则划分日志只会为最大值 128MB。最小不会小于 512 文件系统区块。 可以使用选项“-l size=日志大小”指定日志的大小,例如:

代码语言:bash
AI代码解释
复制
#mkfs.xfs –l size=1024b /dev/sdb6 

日志大小可以加以下单位。

s:磁区(sector)大小(默认为 512 字节,可能会因-s 选项而改变)。

b:文件系统区块大小(默认为 4KB,可能会因-b 选项而改变)

k:KB(1 024 字节)。

m:MB(1 048 576 字节)。

g:GB(1 073 741 824 字节)。

t:TB(1 099 511 627 776 字节)。

p:PB(1024TB)。

e:EB(1 048 576TB)。

如果有多于一个硬盘,可以考虑使用外部日志(External Journal)把文件系统和日志存储 在不同的硬盘,可以增加效能。

5)文件系统标签(Filesystem Label)

文件系统标签(Filesystem Label)又叫作 Volume Name,是文件系统中一个小栏目,用作 简述该文件系统的用途或其存储数据。可以使用选项“-L 标签”在格式化时设定文件系统标签。

代码语言:bash
AI代码解释
复制
#mkfs.xfs -L Videos /dev/sdc1

XFS 的文件系统标签不能超过 12 个字符。以后可以使用命令 xfs_admin -L 改变。

6)一个例子 示例代码如下:

代码语言:bash
AI代码解释
复制
#mkfs.xfs –d agcount=4 –l size=32m /dev/sdb5

第一个选项是-l size=32m,它告诉 mkfs.xfs 配置用户的文件系统使之拥有一个高达 32MB 的元数据日志。这通过降低在文件系统处于繁忙使用期间元数据日志将“填满”的可能性而改 善了性能。第二个选项通过告诉 mkfs.xfs 将创建的分配组的数目最小化,让用户增强新文件系 统的性能。通常,mkfs.xfs 自动选择分配组的数目,但是,根据笔者的经验,它通常会选择一 个比大多数用于一般用途的 Linux 工作站和服务器过高一点的数目。分配组让 XFS 并行执行多 个元数据操作,这为高端服务器带来了便利,但是太多的分配组确实会增加一些开销。因此, 不要让 mkfs.xfs 为用户的文件系统选择分配组的数目,而是通过使用-d agcount=x 选项指定一 个数目。将 x 设置成一个小数目,如 4、6 或 8。需要使得目标块设备中每 4GB 容量至少有一 个分配组。同时进行这两项调整,使用下面的命令创建“优化的”XFS 文件系统:

代码语言:bash
AI代码解释
复制
# mount -t /dev/sda6 /mnt -o noatime,nodiratime,osyncisdsync

前面的两个选项(noatime,nodiratime)关闭 atime 更新。osyncisdsync 选项调整 XFS 的同 步/异步行为,以便它同 Ext3 更一致。

3.挂载 XFS 文件系统

代码语言:bash
AI代码解释
复制
#mount –t xfs/dev/sdb5/xfs 

其中,/xfs 是主分区/下的一个目录。

为了让系统启动后就自动加载,应该更改/etc/fstab,这样系统启动后就会自动加载 xfs 分 区而不必每次都手工加载。添加如下一行:

代码语言:bash
AI代码解释
复制
/dev/hdb5 /xfs defaults 1 1 

挂装时,将使用一些性能增强 mount 选项来最大限度地发掘出(或发挥出)新文件系统的 性能。

代码语言:bash
AI代码解释
复制
#mount –t /dev/sdb5 /xfs –o noatime,nodiratime,osyncisdsync

前面的两个 mount 选项关闭 atime 更新,几乎不需要 atime 更新,并且它除了降低文件系 统性能之外几乎不起任何作用。osyncisdsync 选项调整 XFS 的同步/异步行为,以便它同 Ext3 更一致。多亏了 mkfs.xfs 和 mount 调整,新的 XFS 文件系统比没有调整时的性能要好得多。

其他 mount -o 选项如下。

allocsize=:延时分配时,预分配 buffered 大小。

sunit=/swidth=:使用指定的条带单元与宽度(单位为 512Byte)。

swalloc:根据条带宽度的边界调整数据分配。

discard:块设备自动回收空间。

dmapi:使能 Data Management API 事件。

inode64:创建 inode 节点位置不受限制。

inode32:inode 节点号不超过 32 位(为了兼容)。

largeio:大块分配。

nolargeio:尽量小块分配。

noalign:数据分配时不用条带大小对齐。

noatime:读取文件时不更新访问时间。

norecovery:挂载时不运行日志恢复(只读挂载)。

logbufs=:内存中的日志缓存区数量。

logbsize=:内存中每个日志缓存区的大小。

logdev=/rtdev=:指定日志设备或实时设备。XFS 文件系统可以分为 3 部分:数据、日志、实时(可选)。

4.调整 XFS 文件系统各项参数

1)XFS 卷标管理

(1)查看当前的卷标。

代码语言:bash
AI代码解释
复制
#xfs\_admin -l /dev/sdb 

label=""

(2)设置新的卷标。

代码语言:bash
AI代码解释
复制
#xfs\_admin -L "VideoRecords" /dev/sdb 

writing all SBs 

new label="VideoRecords" 

2)UIID 管理

通用唯一标识符(UUID)是 128 比特的数字,用来唯一地标识因特网上的某些对象或者 实体。传统上,GNU/Linux 在/etc/fstab 上直接使用设备名称(/dev/hda1 或/dev/sda5 等)指定要 挂载的存储设备。然而设备名称有时会因为 BIOS 的设定而改变,引起混乱。所以现在部分Linux distribution 已改用 UUID(Universal Unique Identifier)来指定要挂载的存储设备。

(1)查看当前所有存储设备的 UUID 名称。

代码语言:bash
AI代码解释
复制
#blkid –s UUID 

/dev/sda1:UUID="34dd521d-fb74-41cf-afc6-e786344ecd7a" 

/dev/sda2:UUID="UskH3q-GHDB-ZLoo-kPRb-O1sq-wKSU-CwH0Lt" 

/dev/mapper/rhel-root:UUID="e7e811fd-3c45-4bcd-84cb-92c4aafccf16" 

/dev/sdb:UUID="36cf1092-65e2-4acd-85fc-284b1e7b1f33" 

/dev/mapper/rhel-swap:UUID="800748d6-f4ae-4bc7-90d9-e69478fd4af3" 

(2)查看指定存储设备的 UUID。

代码语言:bash
AI代码解释
复制
#xfs\_admin –u /dev/sdb 

UUID=cd4f1cc4-15d8-45f7-afa4-2ae87d1db2ed

(3)生成一个新的 UUID。

代码语言:bash
AI代码解释
复制
#xfs\_admin –U generate /dev/sdb 

writing all SBs 

new UUID=c1b9d5a2-f162-11cf-9ece-0020afc76f16 

-U 的参数如果为 generate,则表示直接产生一个新的 UUID;如果为 nil,则表示清除文件 系统的 UUID。

代码语言:bash
AI代码解释
复制
#xfs\_admin –U nil /dev/sda1 

3)在 mount 命令中使用 UUID 挂载文件系统

使用 mount 命令挂载文件系统,可以使用选项“-U uuid”取代设备文件指定要挂载的设备。

代码语言:bash
AI代码解释
复制
mount –U 51f7e9a4-5154-4e29-a7a6-208417290b85 /mnt

也可以使用 UUID=uuid 取代-U 选项。

代码语言:bash
AI代码解释
复制
mount UUID="51f7e9a4-5154-4e29-a7a6-208417290b85" /mnt 

在文件/etc/fstab 中可以使用 UUID=uuid 取代设备文件指定要挂载的设备。

代码语言:bash
AI代码解释
复制
UUID="e61f4197-5f00-4f4f-917c-290922a85339" /xfs defaults 0 1 

UUID="51f7e9a4-5154-4e29-a7a6-208417290b85" /boot xfs defaults 0 2

5.在线调整 XFS 文件系统的大小

XFS 提供了 xfs_growfs 工具,可以在线调整 XFS 文件系统的大小。XFS 文件系统可以向 保存当前文件系统的设备上的未分配空间延伸。这个特性常与卷管理功能结合使用,因为后者 可以把多个设备合并进一个逻辑卷组,而使用硬盘分区保存 XFS 文件系统时,每个分区需要 分别扩容。

代码语言:BASH
AI代码解释
复制
# xfs\_growfs –D 1073741824 /myxfs1 

# xfs\_growfs –d /myxfs1

6.暂停和恢复 XFS 文件系统

(1)暂停 XFS 文件系统。

代码语言:bash
AI代码解释
复制
#xfs\_freeze –f /myxfs

(2)恢复 XFS 文件系统。

代码语言:bash
AI代码解释
复制
#xfs\_freeze –u /myxfs

7.尝试修复受损的 XFS 文件系统

XFS 与 Ext3 相比的特点是并行 I/O,如果一个文件系统使用的硬盘比较多,而且总线允许 并行的话,XFS 有明显的性能优势。而在台式计算机上,这个区别很不明显。

另外,Ext3 删除文件的速度比 XFS 要快;由于大量采用 Cache,XFS 不用 fsck,但必须保 证电源供应,突然断电时 XFS 的损失比 Ext3 要严重。

代码语言:bash
AI代码解释
复制
# # xfs\_repair –L /dev/hda13

8.备份和恢复

(1)备份文件系统。

代码语言:bash
AI代码解释
复制
#xfsdump-F –f /root/dump.xfs /mnt

(2)恢复文件系统。

代码语言:bash
AI代码解释
复制
#xfsrestore –f /root/dump.xfs /mnt

9.碎片管理

可以使用 xfs_db 命令调试或检测 XFS 文件系统(查看文件系统碎片等)。

(1)查看碎片情况。

代码语言:bash
AI代码解释
复制
#xfs\_db –c frag –r /dev/sda1 

actual 378,idea l373,fragmentation factor 1.32% 

(2)整理碎片。

代码语言:bash
AI代码解释
复制
#xfs\_fsr /dev/sda1

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
可以问下带声音的推送如何实现么
可以问下带声音的推送如何实现么
回复回复点赞举报
推荐阅读
C语言中大小写字母转换详解
首先,让我们了解一下为什么需要在编程中进行大小写字母的转换。在很多情况下,我们需要比较字符串或进行其他操作时,字母的大小写可能会导致不匹配的问题。为了解决这个问题,C语言提供了一些函数来帮助我们进行大小写转换。
繁依Fanyi
2024/02/06
7820
[781]python去除字符串中开头|结尾|所有字母、数字
参考:https://blog.csdn.net/qq_25792799/article/details/80322889 https://blog.csdn.net/qq_40771567/article/details/86561158 https://www.cnblogs.com/pyse/p/9847812.html http://dy.163.com/v2/article/detail/DMA5CHFN0511RVML.html
周小董
2020/04/08
3.2K0
BUUCTF-crypto题
打开文件获得md5加密内容,直接到在线网站https://cmd5.com/ 解密得到flag
R0A1NG
2022/02/19
2.3K0
BUUCTF-crypto题
C++系列-第1章顺序结构-9-字符类型char
在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/
IT从业者张某某
2024/01/20
3470
C++系列-第1章顺序结构-9-字符类型char
一个简单的加密算法
凯撒加密是一种简单的加密技术。据记载,这是凯撒大帝曾经用来对军事信息进行加密的方法。
老肥码码码
2020/01/17
1.4K0
一个简单的加密算法
BUU-Crypto-第二章
好耶,排名涨到12000+了,就做了十道题就涨了近4000名,瞬间信心就上来了,同时也说明一个问题,绝大多数萌新就在一开始就放弃了,但是如果能静下心来,慢慢钻研,就能有所突破。
Baige
2022/03/22
6640
BUU-Crypto-第二章
Python3 生成一个随机验证码
定义一个范围只有1,2,3的随机数,如果这个随机数是1,则八位验证码的当前位置用大写字母;
py3study
2020/01/03
7450
Python编程 基础练习(二)
文章目录 1. 随机生成由2个大写字母(前2位)+2个小写字母(第3、4位)+4个数字(第5-8位)组成的密码(字符串) import random # 大写字母的ASCII码范围 a = [chr(i) for i in range(65, 91)] # 小写字母的ASCII码范围 b = [chr(j) for j in range(97, 123)] # 数字 c = [k for k in range(0, 10)] s = "" for x in range(1, 9): # 前两位 大
叶庭云
2020/09/17
7900
关于自己创建一个函数实现大小写字母之间的转换。
在C语言中,我们常用ASCII码来表示字母或其他字符,AASCII码是一种用于文本通信的字符编码标准,其中包含了128个字符,包括大小写字母,数字和一些字符,
用户11036582
2024/03/21
2850
c++ | lwketh | day02
#include <vector> #include <iostream> using namespace std; template<class T> void _print(T arg) { cout << arg << " "; } template<class... Args> void log(Args... args) { int arr[] = { (_print(args), 0)... }; cout << endl; } // 作业正式开始 // /
李朝
2021/07/28
2740
c++ | lwketh | day02
Python字符串(str)功能详细分析
#注意:在Python中,使用+。只能是字符串和字符串之间,和其他数据类型使用的话不支持,其他类型运算要求也是一样,都要求是相同的数据类型
用户7886150
2021/01/11
6700
字符函数和字符串函数
C语言有一些列函数用于对不同的字符进行分类,一个字符属于何种类型。以下函数都需要包含头文件 ctype.h。
技匠晓晨
2024/11/26
1830
字符函数和字符串函数
【C语言 字符函数和字符串函数】—— 文本数据的奇幻加工坊,代码世界的魔法编织者
在学习字符和字符串函数之前,我们先认识一下ASCLL码,ASCII 编码是字符处理的基础,了解其规则对编程非常重要!
换一颗红豆
2024/12/23
3920
【C语言 字符函数和字符串函数】—— 文本数据的奇幻加工坊,代码世界的魔法编织者
密码学实验报告
怎么说呢,我的同学们都在用C,就我在拿python写这东西,这一部分我以前用python完成过,2-1是经典单表替代密码,2-2是经典的凯撒密码,这都是很经典的密码术,前人的智慧,在这次写脚本解决的时候,都可以用暴力解决。
十二惊惶
2024/02/28
2080
【C语言】五种方法实现C语言中大小写字母的转化
返回值: 返回转换后的小写字符。如果c不是一个字母,则返回原值c。 返回值类型为int,这是为了能够返回任何可能的字符值。
学习起来吧
2024/03/16
2.8K0
【C语言】五种方法实现C语言中大小写字母的转化
C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现
字符函数是用来处理单个字符的函数,比如查找、替换、转换大小写、比较等操作。常用的字符函数包括:
鲜于言悠
2024/03/20
2780
C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现
凯撒密码加解密及破解实现原理
概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法。 密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫“移位密码”,只不过移动的为数不一定是3位而已。 密码术可以大致别分为两种,即易
Angel_Kitty
2018/04/08
2.6K0
凯撒密码加解密及破解实现原理
经典 | Python实例小挑战—Part five
本系列推文,我们每期将对五个Python实例小项目进行介绍,每天三分钟,由浅入深,由易到难,让各位读者渐渐爱上这门神奇的编程语言,掌握它并且能够在生活中使用它。
潘永斌
2020/06/16
5010
c语言每日一练(6)
A、 测字符数组ch的长度 B、 将数字字符串ch转换成十进制数 C、 将字符数组ch中的小写字母转换成大写 D、 将字符数组ch中的大写字母转换成小写
大海里的番茄
2024/01/19
1520
c语言每日一练(6)
凯撒加密算法(最简单的对称加密)
凯撒算法 概述 凯撒密码是罗马扩张时期朱利斯• 凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 2 位,则 字母
java404
2018/05/18
7.8K0
推荐阅读
相关推荐
C语言中大小写字母转换详解
更多 >
目录
  • Linux磁盘管理命令
    • 使用xfs 管理命令
      • 1.命令说明
      • 2.建立 XFS 文件系统
      • 4.调整 XFS 文件系统各项参数
      • 5.在线调整 XFS 文件系统的大小
      • 6.暂停和恢复 XFS 文件系统
      • 7.尝试修复受损的 XFS 文件系统
      • 8.备份和恢复
      • 9.碎片管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档