陈日志 发布的文章

Keepalived 是由 c 语言编写的一个路径选择软件,是 IPVS 的一个扩展性项目,为 IPVS 提供高可用性(故障转移)特性,它的高可用性是通过 VRRP 协议实现的,并实现了对负载均衡服务器池中的 real server 进行健康状态检测,当 real server 不可用时,自身实现了故障的隔离,这弥补了 IPVS 不能对 real server 服务器进行健康检测的不足,这也是 keepalived 运用最广泛的场景,当然 keepalived 不只限于实现 IPVS 的高可用。

Keepalived 软件架构

Keepalived 是一个模块化设计的软件,其有多个组件共同组成,每个组件各司其职共同完成 Keepalived 的各项功能。

Keepalived Software Design.gif

Checkers:对后端服务器节点(RS)进行健康状态监测和故障隔离,我们知道,LVS 本身是没有健康状态监测功能,keepalived 起初就是为 LVS 生成 IPVS 规则和增加健康状态检测功能而设计的。

VRRP Stack:这是 keepalived 实现 VRRP 功能的模块,VRRP 功能可以实现对前端调度器集群的故障切换(failover)。

SMTP:Checkers 和 VRRP Stack 都是对节点进行状态监测,不同的是监测前端调度器和监测后端RS,但是这两个模块都可以通过SMTP通知管理员故障信息的邮件。

System Call:Checkers 和 VRRP Stack 同样都可以调用系统内核功能完成故障隔离和故障切换。

IPVS wrapper:Checkers 通过监测后端 RS 的工作状态得出信息,IPVS wrapper 通过这些信息添加 IPVS 规则,内核中的 IPVS 则通过这些规则进行工作。

Netlink Reflector:在调度器发生故障切换的时候,该模块充当调用内核 NETLINK 的接口,完成虚拟 IP 的设置和切换。

Watch Dog:keepalived 的核心模块就是 Checkers 和 VRRP Stack,当这两个模块发生故障的时候怎么办呢,这时候 Watch Dog 就发生了作用,它是一个检测工具,周期性的去检测 Checkers 和 VRRP Stack 的运行状态,一旦 Checkers 和 VRRP Stack 发生故障,Watch Dog 就能够检测到并采取恢复措施(重启)。

- 阅读剩余部分 -

之前在介绍 Linux 文件系统的文章中,有提过 ZFS、Btrfs文件系统中,有内置快照的功能,也有提到过其快照的由 CoW 机制实现的。那么这篇文章将带领大家了解快照的原理。

快照技术分类

常见快照的类别有两类:

  • 全拷贝快照
  • 差分快照

全拷贝快照

拷贝快照是通过镜像技术来实现的,即其同时会写两个磁盘,我们可以理解为磁盘整列技术中的 RAID1。

下面通过一张原理图来介绍全拷贝快照的实现原理。

全拷贝快照.png

- 阅读剩余部分 -

Btrfs 简介

文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统。近年来 ext2/3 暴露出了一些扩展性问题,于是便催生了 ext4 。在 2008 年发布的 Linux2.6.19 内核中集成了 ext4 的 dev 版本。 2.6.28 内核发布时,ext4 结束了开发版,开始接受用户的使用。似乎 ext 就将成为 Linux 文件系统的代名词。然而当您阅读很多有关 ext4 的文章时,会发现都不约而同地提到了 btrfs,并认为 ext4 将是一个过渡的文件系统。 ext4 的作者 Theodore Tso 也盛赞 btrfs 并认为 btrfs 将成为下一代 Linux 标准文件系统。 Oracle,IBM, Intel 等厂商也对 btrfs 表现出了极大的关注,投入了资金和人力。为什么 btrfs 如此受人瞩目呢。这便是本文首先想探讨的问题。

Kevin Bowling[1] 有一篇介绍各种文件系统的文章,在他看来,ext2/3 等文件系统属于“古典时期”。文件系统的新时代是 2005 年由 Sun 公司的 ZFS 开创的。 ZFS 代表” last word in file system ”,意思是此后再也不需要开发其他的文件系统了。 ZFS 的确带来了很多崭新的观念,对文件系统来讲是一个划时代的作品。

如果您比较 btrfs 的特性,将会发现 btrfs 和 ZFS 非常类似。也许我们可以认为 btrfs 就是 Linux 社区对 ZFS 所作出的回应。从此往后在 Linux 中也终于有了一个可以和 ZFS 相媲美的文件系统。

- 阅读剩余部分 -

1、文件系统相关概念

计算机文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。

文件系统通常使用硬盘光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议(如NFSSMB9P等)提供的或者内存上,甚至可能根本没有对应的文件(如proc文件系统)。

严格地说,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。

文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(或者称为),一般每块512字节。数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。

不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。

100_000-files_5-bytes_each_--_400_megs_of_slack_space.png

空闲空间示例:每簇4,096字节的NTFS文件系统,每个文件5字节,共100,000个文件,逻辑字节总共500,000字节,但由于一个文件需独占整数倍个(最后一簇无论是否占满,仍会独占一整个簇),实际占用磁盘空间409,600,000字节(每个文件5字节独占一个簇)

- 阅读剩余部分 -

1、计划任务简介

计划任务是指将需要定时或周期性执行的任务通过计算机程序自动执行。在 Linux 中,提供这类服务的程序通常是 crond,常常也叫 crontab。

crond 是 Linux 下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与 Windows 下的计划任务类似。通常的,crond 是 Linux 发行版自带的服务,并且设置了开机自动启动,crond 进程的最小调度单位是分钟,即每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

2、深入了解 crontab

crond 的任务类别分为两类,系统任务和用户任务。他们对应的配置文件分别是 /etc/crontab/var/spool/cron/用户名

先看用户任务,用户任务的配置文件在 /var/spool/cron/用户名,其定义如下:

*****command
命令
    • 0-59:具体的分钟
    • *:每分钟
    • */n:n为数值,表示每n分钟
    • 0-23:具体的小时
    • *:每小时
    • */n:n为数值,表示每n小时
    • 1-31:具体的日期
    • *:每日
    • */n:n为数值,表示每n天
    • 1-12:具体的月份
    • *:每月
    • */n:n为数值,表示每n月
    • 0-7:具体的周几,0和7都表示周日
    • *:每周
    • */n:n为数值,表示每n周

- 阅读剩余部分 -