Linux初学之btrfs文件系统及磁盘配额

btrfsnode

Technical Preview, 技术预览版linux

BtrFS(B-tree文件系统,又称为Butter FS或Better FS),2007由oracle开源后,获得了IBM、intel等厂商的大力支持,其目标计划是替代linux目前的ext3/4,成为下一代linux标准的文件系统。服务器

btrfs的特性:oracle

1.可扩展性:ide

1) ext系列文件系统使用块位图来保存每一个块空闲与否的信息(每一个块用一个位来表示是否空闲),当容量扩展时,块位图所占的空间会线性的增长,试想一下若是快位图变得很大时,那么查找空闲块就须要大量的时间;BtrFS管理磁盘空间的最小单位是extent,一个extent由一组连续的block组成,extent由extent树进行管理,所以相比ext系列10个块须要10个bit来表示,btrfs只须要一个extent就能够,所以减小了元数据的量。对于大文件,extent表现出更加优异的管理性能。布局


2) ext系统inode是预分配的且大小固定,好比,100G的分区中,inode table只能存放131072个inode,意味着不可能建立131072个文件;同时, inode分配太小,容易致使磁盘空间没法充分利用,过大,容易形成磁盘空间浪费;btrfs为了解决这个问题,使用了动态分配inode,以下图,每一个inode只是FS tree中的一个节点,用户能够无限制地任意插入新的inode,其物理存储位置是动态分配的,因此没有对文件个数的限制。性能


2.多物理卷支持:spa

btrfs能够跨越多个物理磁盘设备,动态的增长/减小设备来达到扩容/缩容的目的,技术上还支持(raid0、raid一、raid五、raid10等特性),以及联机“添加”、“移除”以及“修改”指针

3.写时复制更新机制(CoW):对象

复制、更新及替换指针,而非“就地”更新;btrfs的数据一致性是经过COW(Copy On Write)事务来保证的,所谓COW,即每次写磁盘数据时,先当前块数据复制到一个新块,而后在新块上进行更新写入,当新块写入完成时,只需将原来指向旧块的指针指向新块。


4.数据及元数据校验码:checksum

btrfs的另外一特色是使用checksum来保证数据的可靠性,假设从磁盘读取一个块数据,能够经过比较其checksum来判断数据是否完整,其余文件系统在文件系统级别上是没法得知数据是否损坏的;同时因为checksum数据存储在checksum树的节点上,与块数据是分开管理的,这样的好处是能避免checksum和数据保存在同一个块的时候,文件系统上层获取了一个错误位置的块时无从得知(由于checksum只计算块数据是否完整而不是数据应该存在哪一个块,只要块内数据并没有损坏,checksum永远都是正确的)


5.子卷:sub_volume

在一个文件系统(或逻辑卷)上建立子卷,并无层级限制,而且全部卷的空间大小都是能够动态调整的。其应用场景是能够为每一个用户分配一个单独隔离的卷空间,来达到权限控制和配额管理的目的。


6.快照:支持快照的快照


7.透明压缩,隐形压缩:


mkfs.btrfs

选项:

-L|--label <name>:为即将建立的btrfs文件系统指定卷标

-d|--data <type>:为数据存储指定类型;能够选择的类型有:raid0, raid1, raid5, raid6, raid10 or single

-m|--metadata <profile>:指定元数据的存储方式;能够选择的类型有:raid0, raid1, raid5, raid6, raid10, single or dup

-O|--features <feature1>[,<feature2>...]:指定btrfs文件系统的特性,若是想要查看哪些特性,可使用命令:mkfs.btrfs -O list-all


能够用支持btrfs文件系统的mount命令中使用下列方式开启透明压缩功能:

mount -o compress={lzo|zlib} DEVICE MOUNT_POINT


btrfs

btrfs - control a btrfs filesystem

btrfs <command> [<args>]


btrfs filesystem show

查看btrfs文件系统的详细属性;


btrfs filesystem df MOUNT_POINT

查看文件系统的挂载和使用状况

例:btrfs filesystem df /mnt/btrfs/


在线修改文件系统大小:

btrfs filesystem resize {+|-}SIZE[KkMmGgTtPpEe] MOUNT_POINT 


例:btrfs filesystem resize -15G /mnt/btrfs/

btrfs filesystem resize +5G /mnt/btrfs/

btrfs filesystem resize max /mnt/btrfs/


向btrfs文件系统中添加或删除设备

btrfs device

btrfs device add [options] <device> [<device>...] <path>

      向文件系统中添加一个新设备

    btrfs device delete <device> [<device>...] <path>

      从文件系统中删除一个设备



平衡数据:

    btrfs balance start [options] <path>

      开启跨设备的chunk的数据平衡

      -mconvert={radi0|raid1|raid5|radi10|raid6|single|dup}

      改变元数据的数据平衡布局方式

    例:btrfs balance start -mconvert=raid5 /mnt/btrfs/


      -dconvert={radi0|raid1|raid5|radi10|raid6|single}

      改变数据的数据平衡布局方式

例:btrfs balance start -dconvert=raid6 /mnt/btrfs/


    btrfs balance pause <path>

      暂停数据平衡

    btrfs balance cancel <path>

      取消正在进行的或已经暂停的数据平衡

    btrfs balance resume <path>

      恢复被打断的数据平衡

    btrfs balance status [-v] <path>

      显示正在进行的或已经暂停的数据平衡的状态信息


子卷管理:

btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

    建立子卷

  例:btrfs subvolume create /mnt/btrfs/mysub1/


  btrfs subvolume delete [options] <subvolume> [<subvolume>...]

    删除子卷

    例:btrfs subvolume delete /mnt/btrfs/mysub1/


  btrfs subvolume show <subvol-path>

  显示子卷的信息

  例:btrfs subvolume show /mnt/btrfs/mysub1/



子卷相似于ext文件系统中的将其余分区挂载到根目录下的某个空闲子目录的操做;


快照:

btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>

    建立指定子卷的快照卷


例:btrfs subvolume snapshot /mnt/btrfs/mysub1/ /mnt/btrfs/snap_mysub1


将btrfs和ext系列进行转换:

btrfs-convert

btrfs-convert - convert from ext2/3/4 filesystem to btrfs or rollback

btrfs-convert [options] <device>


将文件系统从ext转换为btrfs:

~]# btrfs-convert /dev/sdb1


注意:/dev/sdb1分区,应该事先格式化为ext系列文件系统;


将文件系统从btrfs回滚到ext

~]# btrfs-convert -r /dev/sdb1

磁盘配额:

  文件服务器:共享存储空间,用户随时存储数据

  FTP

  SMB

  网盘


磁盘配额主要针对这类文件服务器进行用户的磁盘空间使用限制而提出的。


磁盘配额的设定对象:

  可以实施读写操做的块设备

  要有正确的文件系统

 

 磁盘配额主要限制哪些对象的访问行为

   1.用户

    为指定的用户限制磁盘使用量

      磁盘空间(块)一个block的限制,表明1KB存储空间

      inode


   2.组

     限制指定组中全部成员的磁盘使用量的总和


 磁盘配额的类型:

  soft limit:软限制

    当用户的使用量达到了软配额限制,将会启动宽限期倒计时,在宽限期到期以前,用户能够 正常使用剩余的配额,当宽限期归零时,用户将不能使用磁盘空间,除非将数据进行清理,低于软限制,然后能够继续使用磁盘空间;

  hard limit :硬限制

     用户所可以使用磁盘空间的真正上限


  通常来说,软限制的数值低于硬限制

  默认的宽限期为7天


  须要一个用户记录和组磁盘使用量和配额量的数据文件

  aquota.user

  aquota.group

  若是想要让分区或卷支持磁盘配额的设定,须要单独的挂载选项支持;

   usrquota   grpquota


  1.# mount -o usrquota   grpquota  DEVICE MOUNT_POINT

  2./etc/fstab

   # /DEVICE MOUNT_POINT FSTYPE defaults,usrquota   grpquota 0 0

quotacheck

   quotacheck - scan a filesystem for disk usage, create, check and repair quota files

   选项

    -v, --verbose:显示整个操做过程的详细信息

    -u,--user:建立,检测和修复用户配额文件

    -g,--group:建立,检测和修复组配额文件

    -c,--create files:通过检测若是没有用户配置文件和或组配额文件,就按照用户给定的选项来进行文件的额建立

    -a,--all:全部的在/etc/fstab文件中包含了与配额有关的挂载选项的设备上,是否有对应选项的配额文件


  用于编写配额内容的命令:

    edquota

      -u,--user:编写用户配额,默认功能

      -g,--group:编写组配额 

      -t,--edit-period:设置超出软限制的宽限期,默认七天,能够选择以秒,分,时,天为时间单位


  使配额功能生效

   quotaon:开启 

   quotaoff:关闭


     quotaon /dev/sdd1


  查看配额的使用状况

   quota


   repquota(管理员专用)汇总文件系统的使用状况



   注意:root不受磁盘限制

相关文章
相关标签/搜索