㈠ linux远古漏洞“Dirty COW”有什么影响
漏洞描述
㈡ linux盘启动时候出现这个提示 can not mount /dev/loop1 on /cow
很显然/cow是你自己添加的一个文件系统。
/dev/loop1从何而来,你有没有用命令losetup来添加过设备/dev/loop1。
㈢ Linux中如何通过设备号找到设备
一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。
查看主设备号:
# cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
116 alsa
128 ptm
136 pts
162 raw
180 usb
189 usb_device
202 cpu/msr
203 cpu/cpuid
216 rfcomm
249 blkwatch_272
250 hidraw
251 usbmon
252 bsg
253 pcmcia
254 rtc
Block devices:
1 ramdisk
2 fd
259 blkext
7 loop
8 sd
9 md
11 sr
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
253 device-mapper
254 mdp
如上所示,该命令会显示字符设备和块设备的主设备号。如果你想查看某个主设备号,那么可以
[root@mylnx01 ~]# cat /proc/devices | grep 253
253 pcmcia
253 device-mapper
其中Device Mapper,Device Mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等都是基于该机制实现的。
次设备号查看
[root@mylnx01 ~]# ls -l /dev 或 ll /dev[root@mylnx01 ~]# ll /dev | grep 253 | grep -v grep
brw-rw---- 1 root root 253, 0 Jul 17 23:08 dm-0
brw-rw---- 1 root root 253, 1 Jul 17 23:08 dm-1
brw-rw---- 1 root root 253, 2 Jul 17 23:08 dm-2
brw-rw---- 1 root root 253, 3 Jul 17 23:08 dm-3
brw-rw---- 1 root root 253, 4 Jul 17 23:09 dm-4
brw------- 1 root root 253, 1 Jul 17 23:09 root
但是在一台服务器的日志信息遇到下面错误信息,通过/dev 没有找到次设备号为253:14的块设备。 如下所示
Jul 19 05:02:01 mylnx01 kernel: BLKWATCH ERR: Attempt to get a sector index out of the bitmap bounds.
Jul 19 05:02:01 mylnx01 kernel: BLKWATCH ERR: Critical error 1 happened for device 253:14. Additional info: Failed to mark block as dirty.
[root@getlnx01 ~]# ll /dev | grep 253 | grep -v grep
关于次设备号的主要用途,这篇博客主设备号和次设备号介绍了部分内容。
1、区分设备驱动程序控制的实际设备;
2、区分不同用途的设备 (misc 系列设备)
3、区分块设备的分区 (partition)
通常,为了使应用程序区分所控制设备的类型,内核使用主设备号。而存在多台同类设备时,为了选择其中的一种,设备驱动程序就使用次设备号。
# ll /dev/ | grep sd #或者命令 ll /dev/ | grep disk
brw-r----- 1 root disk 8, 0 Jul 17 23:08 sda
brw-r----- 1 root disk 8, 1 Jul 17 23:10 sda1
brw-r----- 1 root disk 8, 2 Jul 17 23:08 sda2
brw-r----- 1 root disk 8, 3 Jul 17 23:08 sda3
brw-r----- 1 root disk 8, 16 Jul 17 23:08 sdb
brw-r----- 1 root disk 8, 17 Jul 17 23:08 sdb1
brw-r----- 1 root disk 8, 18 Jul 17 23:08 sdb2
brw-r----- 1 root disk 8, 21 Jul 17 23:08 sdb5
brw-r----- 1 root disk 8, 32 Jul 17 23:08 sdc
brw-r----- 1 root disk 8, 33 Jul 17 23:08 sdc1
brw-r----- 1 root disk 8, 34 Jul 17 23:08 sdc2
brw-r----- 1 root disk 8, 37 Jul 17 23:08 sdc5
brw-r----- 1 root disk 8, 48 Jul 17 23:08 sdd
brw-r----- 1 root disk 8, 49 Jul 17 23:08 sdd1
brw-r----- 1 root disk 8, 50 Jul 17 23:08 sdd2
brw-r----- 1 root disk 8, 51 Jul 17 23:08 sdd3
brw-r----- 1 root disk 8, 53 Jul 17 23:08 sdd5
brw-r----- 1 root disk 8, 64 Jul 17 23:08 sde
brw-r----- 1 root disk 8, 65 Jul 17 23:08 sde1
brw-r----- 1 root disk 8, 66 Jul 17 23:08 sde2
brw-r----- 1 root disk 8, 67 Jul 17 23:08 sde3
brw-r----- 1 root disk 8, 69 Jul 17 23:08 sde5
brw-r----- 1 root disk 8, 80 Jul 17 23:08 sdf
brw-r----- 1 root disk 8, 81 Jul 17 23:08 sdf1
brw-r----- 1 root disk 8, 85 Jul 17 23:08 sdf5
brw-r----- 1 root disk 8, 96 Jul 17 23:08 sdg
brw-r----- 1 root disk 8, 97 Jul 17 23:08 sdg1
brw-r----- 1 root disk 8, 98 Jul 17 23:08 sdg2
brw-r----- 1 root disk 8, 101 Jul 17 23:08 sdg5
brw-r----- 1 root disk 8, 112 Jul 17 23:08 sdh
brw-r----- 1 root disk 8, 113 Jul 17 23:08 sdh1
brw-r----- 1 root disk 8, 117 Jul 17 23:08 sdh5
㈣ linux酷炫的命令怎么安装
桌面环境是充满魅力,吸引眼球的。不仅增强了视觉体验,而且在某些情况下能增强软件的功能,增添趣味。其实在命令行下工作也并不总是那么单调乏味。如果你想在命令行下获取几分乐趣的话,自然也是有很多命令可以令你泛起微笑。
Linux是一个充满乐趣的操作系统。 功能各异,显而易见到奇秒神奇的巨大开源小工具集被Linux所提供。正是由于这些高质量可选择工具令Linux脱颖而出。来看看下面这7个小工具。
Lolcat
Lolcat是一个能连接文件或者标准输入,并将其内容输出到标准输出的程序(像是一般的cat),但是它能给文字赋予美丽的彩虹。Lolcat常常与诸如toilet和figlet的之类的其他工具组合起来生成文字。
开发者:Lolcat由Moe开发。
站点:github.com。
Cowsay
Cowsay是一个可配置的开源程序,它能够产生一幅由ASCII字符组成的一头奶牛和一个会话气泡图像。由Perl语言编写的cowsay不仅仅局限于产生奶牛的图像,它也能产生预先生成的其他动物图像,如鸭子,大象,考拉,驼鹿,小马,绵羊,剑龙和火鸡等。还有非动物的棋子,雪人和一个骨架。
有一个和这个相关的程序叫做cowthink,它生成的是一头奶牛和它思考的气泡,而不是像cowsay生成的是会话气泡。
特点:
令脚本程序更加有趣。
博格模式。
可改变奶牛的面貌,比如让它看起来贪婪,偏执,冷酷,疲惫,年轻等等。
站点:nog.net。
Doge
Doge是一个基于略显愚蠢实则非常有趣的柴犬图的简单motd脚本。它随机的打印一些语法不正确的语句,有时这些相关语句来源于你的计算机。
Doge是一个在2013年流行起来的网络模因。该模因通常由柴犬的图片配上ComicSans字体的五彩文字。这些文字是一种内心的独白,并且还故意使用蹩脚英语。
特点:
文字出现的位置与颜色随机,故意使用了蹩脚英语。
能抓取系统数据,如主机名,运行中的进程,最近的用户和编辑器等。
如果你有lolcat,你可以试试这样:whiletrue;dodoge|lolcat-a-d100-s100-p1;done
支持标准输入:ls/usr/bin|doge将会以doge样式打印出在/usr/bin目录下找到的一些可执行程序。哇哦!这还能用来统计你频繁使用哪些命令。
站点:github.com/thiderman/doge。
ASCIIQuarium
ASCIIQuarium是一个用ASCII字符艺术表达的水族馆或大海的动漫。尽情的欣赏你计算机中那些在水中游动的美丽生物吧!
你需要安装Perl的curses包和Term::Animation模块来支持ASCIIQuarium的运行。终端执行:sudoapt-getinstalllibcurses-perl和sudocpanTerm::Animation即可安装上述两个依赖。
特点:
色彩斑斓的鱼。
有趣的动漫,还有一个鱼钩。
有天鹅,鸭子,海豚和船。
站点:www.robobunny.com。
Sl–StremLocomotive
Sl是一个有趣的命令行工具,他通过一个火车开过的动画来纠正用户偶然把ls输错成sl。
我相当疏忽命令输入的过程的正确性,我更愿意追求速度。但这可能会造成危险。因此sl可以很好的在我发生这些错误时提醒我。
特点:
-F开关,控制火车文件。
-l开关,显示一个小火车。
-a开关,似乎会发生一场事故。
站点:github.com/mtoyoda/sl。
Aafire
Aafire在终端展现的是一个燃烧中的ASCII字符构成的火焰。它展现的是一个ascii显示库aalib的功能。
站点:aa-project.sourceforge.net/aalib。
CMatrix
CMatrix是一个ncurses库程序,模拟“黑客帝国”中的一个画面。如果你看过“黑客帝国”这部电影,那么你就会知道。
它工作在132×300大小的终端中,可以进行同步或异步速率的翻滚,还可用户自定义速率。
特点:
改变文本的颜色。
使用粗体字符。
异步翻滚。
老式风格翻滚。
“屏幕保护”模式。
站点:www.asty.org/cmatrix。
这里有几个你可以先看下,你也要学习些基本的命令网页链接。
㈤ linux盘启动时候出现这个提示 can not mount /dev/loop1 on /cow
1/dev/loop1应该是一个虚拟设备.
所以个人认为你的grub.conf里的参数应该是配置错误的.
2只要把U盘挂在别的正常系统上之后,然把软件对应的所有文件保持目的结构,
以及配置文件COPY出来.并做相应的修改即可.
不过,个人觉得,这是一个大工程.无实际操作的意义.
㈥ Linux中的零拷贝技术
参考文章: 浅析Linux中的零拷贝技术
内核和用户空间,共享内存。数据到内核区后,只需要把地址共享给应用程序即可,无需再一次数据到用户空间。
优点:
缺点:
应用:
kafka生产者发送消息到broker的时候,broker的网络接收到数据后,到broker的内核空间。然后通过mmap技术,broker会修改消息头,添加一些元数据。所以,写入数据很快。当然顺序IO也是关键技术
内核直接发送数据到socket,无需用户空间参与。
优点:
缺点:
为了节省内核里面的一次,我们可以使用优化过的sendfile。该系统方法需要由特定的硬件来支持,并不是所有系统都支持。如下:
sendfile的时候,直接把内核空间的地址传递给socket缓存,DMA直接从指定地址读取数据到流里面。
sendfile只适用于将数据从文件拷贝到套接字上,限定了它的使用范围。Linux在2.6.17版本引入splice系统调用,用于在两个文件描述符中移动数据。
splice调用在两个文件描述符之间移动数据,而不需要数据在内核空间和用户空间来回拷贝。他从fd_in拷贝len长度的数据到fd_out,但是有一方必须是管道设备,这也是目前splice的一些局限性。flags参数有以下几种取值:
splice调用利用了Linux提出的管道缓冲区机制, 所以至少一个描述符要为管道。
以上几种零拷贝技术都是减少数据在用户空间和内核空间拷贝技术实现的,但是有些时候,数据必须在用户空间和内核空间之间拷贝。这时候,我们只能针对数据在用户空间和内核空间拷贝的时机上下功夫了。Linux通常利用写时复制( on write)来减少系统开销,这个技术又时常称作COW。
摘录网上:
传统的fork()系统调用直接把所有的资源复制给新创建的进程。这种实现过于简单并且效率低下,因为它拷贝的数据也许并不共享,更糟的情况是,如果新进程打算立即执行一个新的映像,那么所有的拷贝都将前功尽弃。Linux的fork()使用写时拷贝(-on-write)页实现。写时拷贝是一种可以推迟甚至免除拷贝数据的技术。内核此时并不复制整个进程地址空间,而是让父进程和子进程共享同一个拷贝。只有在需要写入的时候,数据才会被复制,从而使各个进程拥有各自的拷贝。也就是说,资源的复制只有在需要写入的时候才进行,在此之前,只是以只读方式共享。这种技术使地址空间上的页的拷贝被推迟到实际发生写入的时候。在页根本不会被写入的情况下—举例来说,fork()后立即调用exec()—它们就无需复制了。fork()的实际开销就是复制父进程的页表以及给子进程创建惟一的进程描述符。在一般情况下,进程创建后都会马上运行一个可执行的文件,这种优化可以避免拷贝大量根本就不会被使用的数据(地址空间里常常包含数十兆的数据)。由于Unix强调进程快速执行的能力,所以这个优化是很重要的。这里补充一点:Linux COW与exec没有必然联系。
我总结下: -on-write技术其实是一种延迟复制的技术,只有需要用(写)的时候,才去复制数据。
㈦ 常见的文件系统有哪些
常见的文件系统有FAT、NTFS、ExtFAT、ext2、ext3、reiserFS、VFAT、APFS。
1、FAT文件系统。
FAT文件系统诞生于1977年,它最初是为软盘设计的文件系统,但是后来随着微软推出dos和win 9x系统,FAT文件系统经过适配被逐渐用到了硬盘上,并且在那时的20年中,一直是主流的文件系统。
2、NTFS文件系统。
它是一种比FAT32功能更加强大的文件系统,从windows 2000之后的windows系统的默认文件系统都是NTFS,而且这些windows系统只能够安装在NTFS格式的磁盘上。NTFS系统是一个日志性的文件系统,系统中对文件的操作都可以被记录下来,当系统崩溃之后,利用日志功能可以修复数据。
3、ExtFAT文件系统。
ExFAT也是微软开发的文件系统,它是专门为闪存盘设计的文件系统,单个文件突破了4G的限制,而且分区的最大容量可达64ZB,建议512TB。 ExFAT在windows,Linux以及Mac系统上,都可以读写,作为U盘或者是移动硬盘的格式还是比较合适的。
4、ext2文件系统。
ext2是为解决ext文件系统的缺陷而设计的可扩展的、高性能的文件系统,又被称为二级扩展文件系统。它是Linux文件系统中使用最多的类型,并且在速度和CPU利用率上较为突出。ext2存取文件的性能极好,并可以支持256字节的长文件名,是GNU/Linux系统中标准的文件系统。
5、ext3文件系统。
ext3是ext2文件系统的日志版本,它在ext2文件系统中增加了日志的功能。ext3提供了3种日志模式:日志(journal)、顺序(ordered)和回写(writeback)。与ext2相比,ext3提供了更好的安全性以及向上向下的兼容性能。
6、reiserFS文件系统。
reiserFS是Linux环境下最稳定的日志文件系统之一,使用快速的平衡二叉树(binary tree)算法来查找磁盘上的自由空间和已有的文件,其搜索速度高于ext2,reiserFS能够像其他大多数文件系统一样,可动态的分配索引节,而无须在文件系统中创建固定的索引节。
7、VFAT文件系统。
VFAT主要用于处理长文件的一种文件名系统,它运行在保护模式下并使用VCACHE进行缓存,并具有和Windows系列文件系统和Linux文件系统兼容的特性。因此VFAT可以作为Windows和Linux交换文件的分区。
8、APFS文件系统。
APFS是苹果公司发布的新的文件格式,替代目前所使用的HFS+格式。这一全新文件系统专门针对闪存/SSD进行优化,提供了更强大的加密、写入时复制元数据、空间分享、文件和目录克隆、快照、目录大小快速调整、原子级安全存储基元,以及改进的文件系统底层技术。
㈧ 云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略
【点击右上角加'关注',全国产经信息不错过】
写时复制是一种共享和复制文件的策略,可最大程度地提高效率。如果文件或目录位于映像的较低层中,而另一层(包括可写层)需要对其进行读取访问,则它仅使用现有文件。另一层第一次需要修改文件时(在构建映像或运行容器时),将文件复制到该层并进行修改。这样可以将I / O和每个后续层的大小最小化。这些优点将在下面更深入地说明。
共享可以提升较小的图像
当您用于docker pull从存储库中下拉映像时,或者当您从本地尚不存在的映像中创建容器时,每个层都会被分别下拉,并存储在Docker的本地存储区域中,该区域通常/var/lib/docker/在Linux主机上。在此示例中,您可以看到这些层被拉出:
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
f476d66f5408: Pull complete
8882c27f669e: Pull complete
d9af21273955: Pull complete
f5029279ec12: Pull complete
Digest: sha256:
Status: Downloaded newer image for ubuntu:18.04
这些层中的每一层都存储在Docker主机的本地存储区域内的自己的目录中。要检查文件系统上的各层,请列出的内容/var/lib/docker/。本示例使用overlay2 存储驱动程序:
$ ls /var/lib/docker/overlay2
l
目录名称与层ID不对应(自Docker 1.10开始就是如此)。
现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:1.0。
# syntax=docker/dockerfile:1
FROM ubuntu:18.04
COPY . /app
第二acme/my-base-image:1.0层基于,但具有一些附加层:
# syntax=docker/dockerfile:1
FROM acme/my-base-image:1.0
CMD /app/hello.sh
第二个图像包含第一个图像的所有层,再加上带有CMD指令的新层,以及一个可读写容器层。Docker已经具有第一个映像中的所有层,因此不需要再次将其拉出。这两个图像共享它们共有的任何图层。
如果从两个Dockerfile构建映像,则可以使用docker image ls和 docker history命令来验证共享层的密码ID是否相同。
1.创建一个新目录cow-test/并更改到该目录中。
2.在中cow-test/,创建一个hello.sh具有以下内容的新文件:
#!/bin/sh
echo "Hello world"
保存文件,并使其可执行:
chmod +x hello.sh
3.将上面第一个Dockerfile的内容复制到一个名为的新文件中 Dockerfile.base。
4.将上面第二个Dockerfile的内容复制到一个名为的新文件中 Dockerfile。
5.在cow-test/目录中,构建第一个映像。不要忘记.在命令中包含final 。设置了PATH,它告诉Docker在哪里寻找需要添加到映像中的任何文件。
$docker build -t acme/my-base-image:1.0 -f Dockerfile.base .
6.建立第二张镜像。
$docker build -t acme/my-final-image:1.0 -f Dockerfile .
7.检查镜像的大小:
$docker image ls
8.检出构成每个镜像的图层:
$docker history bd09118bcef6
请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存储一次/var/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。
全国产经平台联系电话:010-65367702,邮箱:[email protected],地址:北京市朝阳区金台西路2号人民日报社
㈨ 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