如何在Linux上构建和安装btrfs-tools的最新版本
时间:2020-01-09 10:38:56 来源:igfitidea点击:
从Linux内核2.6.29-rc1版本开始,Btrfs已包含在主线内核中。
如何在Linux上下载和构建/编译最新版本的Btrfs? Btrfs包含两个部分,如下所示:
- btrfs.ko Linux的内核模块(驱动程序)。通常位于/lib/modules/4.2.0/kernel/fs/btrfs/btrfs.ko,并且必须受Linux内核支持。
- brtfs-tools用户空间实用程序的来源。
Btrfs的主要功能
Btrfs(更好的FS)是一个新文件系统,具有类似于Sun/Oracles出色的ZFS的强大功能。
其中包括快照,多磁盘条带化和镜像(软件RAID),校验和,增量备份以及动态压缩,这些压缩可以显着提高性能并节省空间。
Btrfs似乎是Linux文件系统的未来。
有关更多信息,请参见此处的官方页面。
在本教程中,您将学习如何在基于Debian或Ubuntu Linux的服务器上构建和安装最新版本的用户空间实用程序(brtfs-tools)。
将最新的内核与btrfs一起使用
从Linux内核v2.6.29-rc1开始,Btrfs已包含在主线内核中。
我建议您使用最新的Linux内核版本来充分利用Btrfs。
有关更多信息,请参见如何在Linux操作系统上编译最新版本的Linux内核。
安装所需的软件
执行以下apt-get命令以安装构建工具:
$ sudo apt-get install git install asciidoc xmlto --no-install-recommends $ sudo apt-get install uuid-dev libattr1-dev zlib1g-dev libacl1-dev e2fslibs-dev libblkid-dev liblzo2-dev
下载brtfs-tools的最新稳定版本
执行以下git命令(在编译并构建brtfs-tools之前无需root):
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
构建brtfs-tools
执行以下命令,以准备用于编译和验证功能的构建:
$ cd btrfs-progs $ ./autogen.sh
接下来输入。 /configure
和make
进行编译。
$ ./configure && make
输出示例:
checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o .... .. .... config.status: creating Documentation/Makefile config.status: creating version.h config.status: creating config.h btrfs-progs v4.2 prefix: /usr exec prefix: ${prefix} bindir: ${exec_prefix}/bin libdir: ${exec_prefix}/lib includedir: ${prefix}/include compiler: gcc cflags: -g -O1 -Wall -D_FORTIFY_SOURCE=2 ldflags: documentation: yes backtrace support: yes btrfs-convert: yes Type 'make' to compile. [CC] ctree.o [CC] disk-io.o [CC] radix-tree.o .... ... [ASCII] btrfs-property.xml [XMLTO] btrfs-property.8 [GZ] btrfs-property.8.gz rm btrfs-quota.8 btrfs-balance.xml btrfs-restore.xml btrfs-scrub.8 mkfs.btrfs.8 btrfs-check.8 btrfs-map-logical.8 btrfs-select-super.xml btrfs-scrub.xml mkfs.btrfs.xml btrfs-map-logical.xml btrfs-inspect-device.8 btrfs-image.8 btrfs-convert.8 btrfs-device.xml btrfs-image.xml btrfs-mount.5 btrfs-select-super.8 btrfs-rescue.8 btrfs-check.xml btrfs.8 btrfs-qgroup.8 btrfs-rescue.xml btrfs-mount.xml btrfs-qgroup.xml btrfs-property.8 btrfs-subvolume.8 btrfs-property.xml btrfs-restore.8 btrfstune.8 btrfs-receive.8 btrfs-subvolume.xml btrfs-receive.xml btrfs-find-root.8 btrfs-send.8 btrfs-find-root.xml btrfs-balance.8
安装
首先,确保从系统中删除了较旧的版本:
$ sudo apt-get --purge remove btrfs-tools
输出示例:
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-compiler-gcc-4.8-x86 linux-headers-3.16.0-4-amd64 linux-headers-3.16.0-4-common linux-kbuild-3.16 Use 'apt-get autoremove' to remove them. The following packages will be REMOVED: btrfs-tools* 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 3,099 kB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 154332 files and directories currently installed.) Removing btrfs-tools (3.17-1.1) ... update-initramfs: deferring update (trigger activated) Purging configuration files for btrfs-tools (3.17-1.1) ... Processing triggers for man-db (2.7.0.2-5) ... Processing triggers for initramfs-tools (0.120) ... update-initramfs: Generating /boot/initrd.img-4.2.0 Processing triggers for libc-bin (2.19-18+deb8u1) ...
最后,安装最新版本,执行:
$ sudo make install
输出示例:
[LN] libbtrfs.so.0 [LN] libbtrfs.so [LD] libbtrfs.so.0.1 Making install in Documentation /usr/bin/install -c -d -m 755 /usr/share/man/man5 /usr/bin/install -c -d -m 755 /usr/share/man/man8 /usr/bin/install -c -m 644 btrfs-mount.5.gz /usr/share/man/man5 # the source file name of btrfs.5 clashes with section 8 page, but we # want to keep the code generic /bin/mv /usr/share/man/man5/btrfs-mount.5.gz /usr/share/man/man5/btrfs.5.gz ln -s -f btrfs-check.8.gz /usr/share/man/man8/btrfsck.8.gz ln -s -f btrfs-rescue.8.gz /usr/share/man/man8/btrfs-zero-log.8.gz /usr/bin/install -c -m755 -d /usr/bin /usr/bin/install -c btrfs mkfs.btrfs btrfs-debug-tree btrfs-map-logical btrfs-image btrfs-zero-log btrfs-find-root btrfstune btrfs-show-super btrfs-select-super btrfs-convert /usr/bin /usr/bin/install -c fsck.btrfs /usr/bin # btrfsck is a link to btrfs in the src tree, make it so for installed file as well ln -s -f btrfs /usr/bin/btrfsck /usr/bin/install -c -m755 -d /usr/lib /usr/bin/install -c libbtrfs.so.0.1 libbtrfs.a /usr/lib cp -a libbtrfs.so.0 libbtrfs.so /usr/lib /usr/bin/install -c -m755 -d /usr/include/btrfs /usr/bin/install -c -m644 send-stream.h send-utils.h send.h rbtree.h btrfs-list.h crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h extent_io.h ioctl.h ctree.h btrfsck.h version.h /usr/include/btrfs
验证
要查看版本信息,请执行:
$ btrfs version
输出示例:
btrfs-progs v4.2
这是我的Linux内核版本:
$ uname -mrs
输出示例:
Linux 4.2.0 x86_64