Linux入门攻坚——8、磁盘管理——btrfs文件系统及压缩解压缩和归档
Btrfs(B-tree),支持CoW,写时复制;
核心特性:
? ? 多物理卷支持:btrfs可由多个底层物理卷组成:支持RAID,以联机添加、移除,修改
? ? 写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新;
? ? 数据及元数据校验码:checksum
? ? 子卷:sub_volume
? ? 快照:支持快照的快照;
? ? 透明压缩:
Centos6上默认没有安装。
centos7上:
使用btrfs --help可以查看帮助。
文件系统创建:
? ? mkfs.btrfs
? ? ? ? -L 'LABEL' :
? ? ? ? -d <type> :raid0,raid1raid5,raid6,raid10,single
? ? ? ? -m <profile>:raid0,raid1,raid5,raid6,raid10,single,dup
? ? ? ? -O <feature>
? ? ? ? ? ? -O list-all:列出支持的所有feature;
systemctl set-default multi-user.target? ? 设置默认字符界面启动
不需要分区,直接将磁盘做成btrfs系统? ?,添加三块磁盘:
直接格式化btrfs:
属性查看:
? ? ? ? btrfs filesystem show
使用blkid查看:
UUID相同,说明都是同一个btree卷,但是子卷是不同的。所以btrfs支持多物理卷。
查看卷标:
挂载文件系统:
? ? ? ? mount -t btrfs /dev/sdb MOUNT_POINT
? ? ? ? 挂载的设备可以是btr卷中的任意一个物理卷名,如这里的/dev/dec,也可以使用/dev/sdd,结果一样,mount显示的挂载设备是序列号最小的物理卷。
使用/dev/sdd挂载,结果一样:
透明压缩机制:
? ? ? ? mount -o compress={lzo | zlib} DEVICE MOUNT_POINT
特性中多了compress=lzo。压缩解压缩是自动且对用户是透明的。
btrfs系统原生支持RAID。
直接联机修改大小:
btrfs filesystem resize [-|+]size MOUNT_POINT
使用max,直接调整到最大物理卷容量。
添加新的物理设备:
btrfs device add DEVICE MOUNT_POINT
自动扩展了。
使文件均衡保存,即均衡操作:
btrfs balance status /mybtr? :显示均衡状态
btrfs balance start? /mybtr :启动均衡操作
移除物理设备:
btrfs device delete /dev/sdd /mybtr?
修改数据、元数据等的底层存储的RAID级别。
btrfs balance start -mconvert=raid5 /mybtr
子卷管理:
btrfs subvolume list /mybtr :显示子卷
btrfs subvolume create /mybtr/logs? :创建logs子卷
挂载父卷时,同时会挂载子卷:
也可以单独挂载子卷:
btrfs -o subvol=logs DEVICE MOUNT_POINT
显示子卷的信息:btrfs subvolume show MOUNT_POINT
mount -o subvolid=subvolume_id /dev/sdd /btrsub,如上面显示的subvolume ID为264,可以如下挂载:
删除子卷:
创建快照:
创建logs的快照logs_snapshot,文件及内容相同。
修改/mybtr/logs/grub2.cfg,保存,此时在快照中的文件内容不变。
对单个文件创建快照:cp --reflink grub2.cfg grub2.cfg_snap
快照要在当前卷或其子目录下。修改grub2.cfg,快照grub2.cfg_snap保持不变。
文件系统的转换,将ext转换为btrfs:
先创建一个分区,格式化为ext4:
要转化文件系统,先卸载,在检测,最后转换:
.
回滚到ext系统:
btrfs子命令:filesystem、device、balance、subvolume等
压缩、解压缩及归档工具
compress/uncompress:.Z
gzip/gunzip:.gz
bzip2/bunzip2:.bz2
xz/unxz:.xz
zip/unzip:.zip
tar,cpio
1、gzip/gunzip
gzip [OPTION] FILE
? ? -d:解压缩,相当于gunzip
? ? -c:将结果输出至标准输出,gzip -c FILE > FILE.gz将保留源文件
? ? -#:指定压缩比,1-9
压缩:gzip FILE
解压缩:gunzip FILE.gz
压缩后,源文件删除,解压缩后,压缩文件删除,节省空间。
zcat:不显示展开的前提下查看文本文件内容;
2、bzip2/bunzip2/bzcat
bzip2 [OPTION] FILE
? ? -k:保留源文件
? ? -d:解压缩
? ? -#:1-9,压缩比
3、xz/unxz/xzcat
xz [OPTION] FILE
? ? -k:保留源文件
? ? -d:解压缩
? ? -#:1-9,压缩比
对目录进行压缩,只能压缩目录中的文件:
4、tar
tar [OPTION]...?
(1)创建归档
? ? tar -c -f /PATH/TO/SOMEFILE.tar FILE...
? ? tar -cf??/PATH/TO/SOMEFILE.tar FILE...
(2)查看归档文件中的文件列表
? ? tar -t -f?/PATH/TO/SOMEFILE.tar
(3)展开归档
? ??tar -x?-f?/PATH/TO/SOMEFILE.tar
? ??tar -x?-f?/PATH/TO/SOMEFILE.tar -C /PATH/OTHER
归档后文件大小可能变大,归档不是压缩,可以在归档的同时再压缩。
结合压缩工具实现归档并压缩,使用归档的如下选项:
? ? -j:bzip2,-z:gzip,-J:xz
bash脚本编程:
循环:for,while,until
? ? 循环体:要执行的代码,可能要执行 n遍
????????进入条件、退出条件
for循环:
? ? for 变量名 in 列表;do
? ? ? ? 循环体
? ? ?done
执行机制:依次将列表中的元素赋值给“变量名”;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束。
1 #!/bin/bash
2 #
3
4 if [ ! $UID -eq 0 ]; then
5 echo "Only root."
6 exit 1
7 fi
8 for username in user1 user2 user3; do
9 if id $username &> /dev/null; then
10 echo "$username exists."
11 else
12 useradd $username
13 if [ $? -eq 0 ]; then
14 echo "$username" | passwd --stdin $username &> /dev/null
15 echo "Add $username finished."
16 fi
17 fi
18 done
列表:
? ? 1) 直接给出列表,用空格隔开的序列
? ? 2) 整数列表:{start..end} 如{1..10},$(seq [start] [step] end),如$(seq 2 3 10)
? ? 3) 返回列表的命令:$(COMMAND),如 $(ls /var)
? ? 4) glob通配机制
? ? 5) 变量引用:$@,$*
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!