导航:首页 > 编程系统 > linuxbtrfs

linuxbtrfs

发布时间:2023-03-23 05:49:08

A. linux btrfs文件系统及管理

Linux btrfs文件系统及管理

linux文件系统,具有写时复制COW(-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理,下面一起来看看什么是linux btrfs文件系统及管理关系吧!

什么是btrfs?

Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(-on-write),改善ext3文件系统单文件大小限制,握孝塌并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理。单段圆文件可达16EB,最大文件数量2^64,最大卷容量16EB,等。

btrfs功能特性

1,COW:写时复制,每次写入数据时,先将数据写入到新的block,写入成功后,更改旧数据块指针到新数据块,而非更改本身。

2,多物理卷支持,btrfs内建raid,可在线增删磁盘设备,可在线扩展和缩减磁盘空间。

3,数据和元数据校验码,checksum

4,子卷,可单独挂载子卷

5,可写慎租快照,快照的快照,单个文件快照。

6,透明压缩

7,ext3/4和btrfs无痛互转

btrfs 基本用法:

bash/shell Code复制内容到剪贴板

[root@localhost ~]# btrfs --help #查看帮助可以看到btrfs 有很多子命令,用法也很多,这里只举例常用选项。

usage: btrfs [--help] [--version] [...] []

btrfs subvolume create [-i ] [/] #创建子卷

Create a subvolume

btrfs subvolume delete [options] [...] #删除子卷

Delete subvolume(s)

btrfs subvolume list [options] [-G [+|-]value] [-C [+|-]value] [--sort=gen,ogen,rootid,path] #显示子卷列表

List subvolumes (and snapshots)

btrfs subvolume snapshot [-r] [-i ] |[/] #创建子卷快照

Create a snapshot of the subvolume

btrfs subvolume get-default #获取子卷默认的文件系统

Get the default subvolume of a filesystem

btrfs subvolume set-default #设置默认系统给子卷

Set the default subvolume of a filesystem

btrfs subvolume find-new #列出btrfs文件系统中最近修改的文件,结合find命令

List the recently modified files in a filesystem

btrfs subvolume show #显示更多的子卷信息

Show more information of the subvolume

btrfs subvolume sync [...] #子卷同步,类似mount同步模式,内存数据同步到磁盘,有待查证。

Wait until given subvolume(s) are completely removed from the filesystem.

btrfs filesystem df [options] #显示挂载的文件系统详细信息。

Show space usage information for a mount point

btrfs filesystem show [options] [|||label] #显示创建文件系统的磁盘信息。

Show the structure of a filesystem

btrfs filesystem sync #强制文件系统同步,

Force a sync on a filesystem

btrfs filesystem defragment [options] |

[|...] #碎片整理

Defragment a file or a directory

btrfs filesystem resize [devid:][+/-][kKmMgGtTpPeE]|[devid:]max #btrfs文件系统在线扩展和缩减空间

Resize a filesystem

btrfs filesystem label [|] [] #改变btrfs文件系统卷标

Get or change the label of a filesystem

btrfs filesystem usage [options] [..] #显示文件系统当前的使用信息。

Show detailed information about internal filesystem usage .

btrfs balance start [options] #改变磁盘chunk,在线改 数据和元数据 存储方式,单盘改raid,前提满足raid要求。

Balance chunks across the devices

btrfs balance pause #暂停chunk更改,数据量较大,转换时间较长时,先暂停。

Pause running balance

btrfs balance cancel #取消chunk更改,如上

Cancel running or paused balance

btrfs balance resume #中断balance的操作,如上

Resume interrupted balance

btrfs balance status [-v] #显示balance操作状态 如上

Show status of running or paused balance

btrfs device add [options] [...] #文件系统增加磁盘

Add a device to a filesystem

btrfs device delete [...] #文件系统删除磁盘

Remove a device from a filesystem

btrfs device scan [(-d|--all-devices)| [...]] #文件系统磁盘扫描

Scan devices for a btrfs filesystem

btrfs device ready #猜测是检测加入的设备有没有被挂载

Check device to see if it has all of its devices in cache for mounting

btrfs device stats [-z] | #显示文件系统的设备状态

Show current device IO stats. -z to reset stats afterwards.

btrfs device usage [options] [..] #显示文件系统内部设备详细使用信息

Show detailed information about internal allocations in devices.

btrfs文件系统管理

为分区创建btrfs文件系统

bash/shell Code复制内容到剪贴板

[root@localhost ~]# fdisk -l | grep "^Disk /dev/sd[a-z]" #准备sd{b,c,d,e}4块20G磁盘,未做任何分区。

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors

Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors

创建单分区btrfs并查看

bash/shell Code复制内容到剪贴板

[root@localhost ~]# mkfs.btrfs -L 'btrfs' /dev/sdb

btrfs-progs v3.19.1

See http://btrfs.wiki.kernel.org for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536

Turning ON incompat feature 'skinny-metadata': reced-size metadata extent refs

fs created label btrfs on /dev/sdb

nodesize 16384 leafsize 16384 sectorsize 4096 size 20.00GiB

[root@localhost ~]# btrfs filesystem show

Label: 'btrfs' uuid: 2a9f0d3d-f8a0-4757-9f4e-d1efa04a683a

Total devices 1 FS bytes used 112.00KiB

devid 1 size 20.00GiB used 2.04GiB path /dev/sdb

btrfs-progs v3.19.1

[root@localhost ~]# mount -o compress=lzo -L btrfs /btrfs/ 挂载时可以设定透明压缩机制。

[root@localhost ~]# btrfs filesystem df /btrfs

Data, single: total=8.00MiB, used=256.00KiB

System, DUP: total=8.00MiB, used=16.00KiB

System, single: total=4.00MiB, used=0.00B

Metadata, DUP: total=1.00GiB, used=112.00KiB

Metadata, single: total=8.00MiB, used=0.00B

GlobalReserve, single: total=16.00MiB, used=0.00B

再添加一块磁盘

bash/shell Code复制内容到剪贴板

[root@localhost ~]# btrfs device add /dev/sdc /btrfs #添加磁盘,删除用btrfs device delete /dev/sdc /btrfs

[root@localhost ~]# btrfs fi sh

Label: 'btrfs' uuid: 2a9f0d3d-f8a0-4757-9f4e-d1efa04a683a

Total devices 2 FS bytes used 384.00KiB

devid 1 size 20.00GiB used 2.04GiB path /dev/sdb

devid 2 size 20.00GiB used 0.00B path /dev/sdc

btrfs-progs v3.19.1

[root@localhost ~]#

在线增加或缩减空间,在线改变空间,可以让lvm坐冷板凳了。

bash/shell Code复制内容到剪贴板

[root@localhost ~]# btrfs fi resize -10G /btrfs/ #在线缩减空间

Resize '/btrfs/' of '-10G'

[root@localhost ~]# btrfs fi sh

Label: 'btrfs' uuid: 2a9f0d3d-f8a0-4757-9f4e-d1efa04a683a

Total devices 2 FS bytes used 384.00KiB

devid 1 size 10.00GiB used 2.04GiB path /dev/sdb

devid 2 size 20.00GiB used 0.00B path /dev/sdc

btrfs-progs v3.19.1

[root@localhost ~]# btrfs fi resize +7G /btrfs/ #在线增加空间

Resize '/btrfs/' of '+7G'

[root@localhost ~]# btrfs fi sh

Label: 'btrfs' uuid: 2a9f0d3d-f8a0-4757-9f4e-d1efa04a683a

Total devices 2 FS bytes used 384.00KiB

devid 1 size 17.00GiB used 2.04GiB path /dev/sdb

devid 2 size 20.00GiB used 0.00B path /dev/sdc

btrfs-progs v3.19.1

[root@localhost ~]#

在线更改数据和元数据的结构

bash/shell Code复制内容到剪贴板

[root@localhost ~]# btrfs fi df /btrfs/

Data, single: total=8.00MiB, used=256.00KiB

System, DUP: total=8.00MiB, used=16.00KiB

System, single: total=4.00MiB, used=0.00B

Metadata, DUP: total=1.00GiB, used=112.00KiB

Metadata, single: total=8.00MiB, used=0.00B

GlobalReserve, single: total=16.00MiB, used=0.00B

[root@localhost ~]# btrfs balance start -mconvert=raid1 /btrfs/ #-mconvert 为改变metadata元数据区的存储结构

Done, had to relocate 4 out of 5 chunks

[root@localhost ~]# btrfs fi sh

Label: 'btrfs' uuid: 2a9f0d3d-f8a0-4757-9f4e-d1efa04a683a

Total devices 2 FS bytes used 192.00KiB

devid 1 size 17.00GiB used 296.00MiB path /dev/sdb

devid 2 size 20.00GiB used 288.00MiB path /dev/sdc

btrfs-progs v3.19.1

[root@localhost ~]# btrfs fi df /btrfs/

Data, single: total=8.00MiB, used=64.00KiB

System, RAID1: total=32.00MiB, used=16.00KiB

Metadata, RAID1: total=256.00MiB, used=112.00KiB #对比上改为了raid1

GlobalReserve, single: total=16.00MiB, used=0.00B

[root@localhost ~]# btrfs balance start -dconvert=raid1 /btrfs/ #-dconvert 为改变data数据区的存储结构

Done, had to relocate 1 out of 3 chunks

B. linux支持的文件系统有哪些

比如Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。

Linux操作系统使用虚拟文件系统(VFS)向上和用户进程文件访问系统调用接口,向下和具体不同文件系统的实现接口。VFS屏蔽了具体文件的实现细节,向上提供统一的操作接口。通过VFS可以实现任意的文件系统,这些文件系统通过文件访问系统调用都可以访问。所以Linux系统核心可以支持十多种文件系统类型。

(2)linuxbtrfs扩展阅读:

EXT是延伸文件系统(英语:Extended file system,缩写为 ext或 ext1),也译为扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在linux上,第一个利用虚拟文件系统实现出的文件系统,在linux核心0.96c版中首次加入支持,最大可支持2GB的文件系统

EXT3是第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。Stephen Tweedie在1999年2月的内核邮件列表中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中。

C. SSD 装 Linux 选 Ext4 还是 Btrfs 好

Linux kernel 自 2.6.28
开 始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对
Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

1. 与 Ext3 兼容。执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。
2. 更大的文件系统和更大的文件。较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。
3. 无限数量的子目录。Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。
4. Extents。Ext3 采
用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小
为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent
为一组连续的数据块,上述文件则表示为“ 该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。
5. 多块分配。当
写 入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600
次数据 块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
6. 延迟分配。Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。
7. 快速 fsck。以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
8. 日志校验。日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。
9. “无日志”(No Journaling)模式。日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
10. 在线碎片整理。尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。
11. inode 相关特性。Ext4 支
持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳
或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended
attributes) 和 inode 保留(inodes reservation)。
12. 持久预分配(Persistent preallocation)。P2P 软
件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失 败。
Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有
效率。
13. 默认启用 barrier。磁
盘 上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录, 若
commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据
全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

D. linux系统硬盘,没有挂载,拔掉一块会怎么样

linux系统硬盘,没有挂载,拔掉一块会怎么样
linux操作系统是一个文件系统。磁盘分区后,同样需要挂载才能正常使用,并且需要将硬盘文件路径或者设备的uuid写入配置文件/etc/fstab才能永久生效。

本文将带来linux下的磁盘管理中的硬盘挂载,Linux操作系统挂载硬盘需要了解的一些知识。这可能是迄今为止介绍的最最最实用的linux硬盘挂载的文章了,比较详细。由于工作原因,平时使用的比较多。主要目的,只是想让更多人的了解到linux下挂载磁盘也不是那么困难。

有几种常见的文件系统,以前的老牌文件系统ext文件系统(ext2、ext3、ext4)。

在Redhat7系列还是推荐一款优秀的xfs文件系统,早锋辩在性能上已经超越了ext文件系统。XFS文件系统是硅谷图形公司(Silicon Graphic Inc,简称SGI)开发的用于IRIX(一个Unix操作系统)的文件系统,后来将其移植到Linux操作系统上。XFS是一个高级日志文件系统,其优势是极具伸缩性,同样也极具健壮性。

还有一款btrfs(B-tree文件系统通常读作Buffer FS、Better FS、B-tree FS)文件系统同样很优秀,Redhat7安装就自带。 btrfs具有很多特性。例如:写快照、快照的快照、内建RAID(通常称为磁盘阵列)、子卷(subvolume),其最核心的理念是设计 容错、修复以及易于管理。btrfs最大容量卷为16EB,单个最大文件为16EB。

须知:本文全程使用的是安装选择语言是简体中文版的,所以看到的汉字显示,请不要惊讶。

正文

开局一张图,文章全靠编。开个玩笑,纯属逗大家乐基皮一乐。下面的图片,已经点明了本文的核心内容。

建议:进行测试,可以使用虚拟机配合linux(Redhat系列或者Ubuntu搭建环境)测试。

一、查看系统分区情况

fdisk参数说明 删除存在的陆缺硬盘分区,此时会提示需要删除的序列号是哪一个。

删除分区:d
新增分区:n
查看分区信息:p
保存分区变更信息:w
不保存并退出:q
获取帮助信息:m
1、列出分区表

列出分区表,从下面的列出的选项可以看出,原始的磁盘磁盘 /dev/sda:21.5 GB是初始安装linux操作系统就分配的。另外一块磁盘,是我新增的磁盘sdb用于测试演示。

fidsk -l
[root@cnwangk /]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0001805e

设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4507647 2048000 83 Linux
/dev/sda3 4507648 8603647 2048000 82 Linux swap / Solaris
/dev/sda4 8603648 41943039 16669696 5 Extended
/dev/sda5 8605696 41943039 16668672 83 Linux

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x95df3b22

设备 Boot Start End Blocks Id System
/dev/sdb2 10485760 20971519 5242880 83 Linux
直接输入fdisk命令,中文版会提示帮助信息以及使用方法

fdisk [选项] <磁盘> 更改分区表
#例如新增的磁盘sdb
fdisk /dev/sdb
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
二、建立linux文件系统

1、xfs文件系统

如下所示,我将新建xfs文件系统,指向的是新增的一块磁盘文件路径/dev/sdb。同样也是Redhat7系列默认推荐的使用格式。

mkfs.xfs /dev/sdb
做一个简单说明:xfs文件系统提供了备份分区工具xfsmp以供用户使用。优势在于用户不用借助第三方软件就可以实现对xfs文件系统上的数据实施备份。备份过程如下所示:

xfsmp /backup/mp_sdc1 /sdc1
2、btrfs文件系统

如下所示,我将新建btrfs文件系统,指向的是新增的一块磁盘文件路径/dev/sdb,下面最终演示的也是btrfs文件系统的配置。

mkfs.btrfs /dev/sdb
3、ext文件系统

在Redhat6以及之前,用的还是ext文件系统。后来到7系列推荐使用xfs文件系。

mkfs.ext4 /dev/sdb
三、创建要挂载的路径

1、创建挂载的文件data

使用mkdir命令创建data目录,用于后续挂载新增的磁盘。

mkdir /data
查看创建好的挂载路径data,初始是空的

E. 在 Linux 上给用户赋予指定目录的读写权限

在 Linux 上指定目录的读写权限赋予用户,有两种方法可以实现这个目标:第一种是使用 ACL (访问控制列表),第二种是创建用户组来管理文件权限,下面会一一介绍。为了完成这个教程,我们将使用以下设置:

请确认所有的命令都是使用 root 用户执行的,或者使用 sudo 命令来享受与之同样的权限。让我们开始吧!下面,先使用 mkdir 命令来创建一个名为 share 的目录。

1. 使用 ACL 来为用户赋予目录的读写权限

重要提示: 打算使用此方法的话,您需要确认您的 Linux 文件系统类型(如 ext3 和 ext4, NTFS, BTRFS)支持 ACL。

1.1. 首先, 依照以下命令在您的系统中检查当前文件系统类型,并且查看内核是否支持 ACL:

从下方的截屏可以看到,文件系统类型是 ext4,并且从 CONFIG_EXT4_FS_POSIX_ACL=y 选项可以发现内核是支持 POSIX ACL 的。

[图片上传失败...(image-c85622-1574572716190)]

1.2. 查看文件系统(分区)挂载时是否使用了 ACL 选项。

[图片上传失败...(image-bdb4d9-1574572716190)]

通过上边的输出可以发现,默认的挂载项目中已经对 ACL 进行了支持。如果发现结果不如所愿,你可以通过以下命令对指定分区(此例中使用 /dev/sda3)开启 ACL 的支持)。

1.3. 指定目录 share 的读写权限分配给名为 shenweiyan 的用户了,依照以下命令执行即可。

[图片上传失败...(image-dfb909-1574572716190)]

在上方的截屏中,通过输出结果的第二行 getfacl 命令可以发现,用户 shenweiyan 已经成功的被赋予了 /data/share 目录的读写权限。

如果想要获取 ACL 列表的更多信息。请参考:

2. 使用用户组来为用户赋予指定目录的读写权限

2.1. 如果用户已经拥有了默认的用户组(通常组名与用户名相同),就可以简单的通过变更文件夹的所属用户组来完成。

另外,我们也可以通过以下方法为多个用户(需要赋予指定目录读写权限的)新建一个用户组。如此一来,也就创建了一个共享目录。

2.2. 接下来将用户 shenweiyan 添加到 dbshare 组中:

2.3. 将目录的所属用户组变更为 dbshare:

2.4. 现在,给组成员设置读写权限。

ok,在 Linux 上给用户赋予指定目录的读写权限就介绍到这里 !

参考资料:

阅读全文

与linuxbtrfs相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接