用Linux建立多应用系统备份服务器
本文旨在结合自己的工作实际,利用LinuxFTP服务器建立了一个多系统备份服务器异地备份策略.
1 建立LinuxFTP服务器
使用了Red Hat Enterprise Linux 5 Update1, 以下所有实例中的Linux命令均在该操作系统下完成,为了增强数据备份的安全性、服务器网络连接的高可用性及吞吐量,在服务器中可以使用Raid技术增强数据的安全性和完整性,使用双网卡绑定技术来提高网络连接需要的性能。Raid 的具体实现可以根据用户各自的硬件环境采用Raid卡或着Linux提供的软件Raid实现,下面是Linux下实现软件Raid的具体实例。
1.1 Linux创建软Raid的配置过程以Raids为例,在Linux中使用3块廉价IDE硬盘组建一个Raid5设备,从而实现数据的安全性。组成Raid5设备的3块IDE硬盘在Linux中的设备文件名分别为:/dev/hdb (第2个IDE硬盘)、 /dev/hdc (第3个IDE硬盘)、/dev/hdd(第4个IDE硬盘)。(1)创建新磁盘分区用root用户执行命令#fdisk /dev/hdb, 完成对第2 个IDE 硬盘的格式化。
在Command(m for help) :提示下输入n,即
创建新的磁盘分区。
在Command action
e   extended
p   primary partition  (1-4) : 提示下输入p, 即创建主分区。
在Partition number  (1-4) :  提示下输入1 , 即分区号。
在First cylinder  (1-522, default  1) :   提示下按回车,即指定起始柱面(注意:括号中尾柱面数字取决于硬盘的具体型号)。
在Last cylinder or +size or +sizeM or +sizeK  (1-522, default 522) : 提示下按回车, 即指定尾柱面。在Command (m for help) :  提示下输入p , 即查看分区状态,如果看到/dev/sdb1 等信息则说明分区成功。
在Command(m for help) :提示下输入t,即转换分区类型。
在Hex code (type L list codes) : 提示下输入L,即显示分区编码列表。
在Hex code  (type L list codes) : 提示下输入fd,即LinuxRaid分区编码。
在Command(m for help) :提示下输入w ,即保存退出。
重复以上步逐,在其余2块硬盘上创建Linux-Raid分区。完成后需要重新启动Linux主机,以使设置生效。
(2)创建Raid设备
执行命令# mdadm -Cv /dev/md0 -l5 -n3 -c128 /dev/hd[b,c,d]1命令中各参数的作用如下:“-C” :创建一个新的阵列; “/dev/md0” :表示阵列设备名称; “-l5”表示设置阵列模式,可以选择0、  1、 4、  5、 6, 它们分别对应于Raid0、 Raid1、 Raid4、Raid5、Raid6,这里设为Raid5模式; “-n3”指设置阵列中活动设备的数目, 该数目加上备用设备的数目应等于阵列中的总设备数; “-c128”指设置块的
尺寸为128 kb, 缺省为64 kb ; “/dev/hd[b, c,d,]1” 指当前阵列中包含的所有设备标识符,也可以分开来写,中间用空格分开。当创建一个新阵列或者对阵列重构时,设备需要进行同步操作。这一过程需要一定时间,可以通过查看/proc/mdstat文件, 来显示阵列的当前状态以
及同步进度、所需时间等信息。
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 hdd1[2] hdc1[1] hdb1[0]
75469842 blocks level 5, 128 k chunk, algorithm  2
[3/2] [UU_]
 [>....................] recovery = 4.3  % (1622601/
37734912) finish=1.0min speed=15146K/sec
unused devices:
当新建或重构完成后,再次查看/proc/mdstat
文件:
# more /proc/mdstat
Personalities : [raid5]
md0 : active raid5 hdd1[2] hdc1[1] hdb1[0]
75469842 blocks level 5, 128k chunk, algorithm 2 [3/
3] [UUU]
unused devices:
由此可以很清楚地看出当前阵列的状态,各部
分所代表的意思如下: “[3/3]”中的第1位数表示阵
列所包含的设备数,第2位数表示活动的设备数,如
果有一个设备损坏,则第2位数将减1; “[UUU]”标
记当前阵列可以正常使用的设备情况,现假设/dev/
hdb1出现故障,则该标记将变成 [_UU],这时的阵
列以降级模式运行,即该阵列仍然可用,但是不再
具有任何冗余; “sdd1[2]” 指阵列所包含的设备数为
n,若方括号内的数值小于 n,则表示该设备为活动
设备,若数值大于等于n,则该设备为备份设备,当
一个设备出现故障的时候,相应设备的方括号后将
被标以(F)。
3)配置Raid设备
接下来为mdadm生成配置文件, mdadm的缺省
配置文件为/etc/mdadm.conf,为了方便阵列的日常
管理而设置的,为了减少日后管理中不必要的麻
烦,还是应该坚持把这一步做完。
在mdadm.conf文件中要包含两种类型的行:一
种是以DEVICE 开头的行,它指明在阵列中的设备
列表;另一种是以ARRAY 开头的行,它详细地说
明了阵列的名称、模式、阵列中活动设备的数目以
及设备的UUID 号。
(4)生成文件系统
创建文件系统并挂接(mount)使用。Raid5已
经启动并处于运行状态,现在要做的就是在其上创
建一个文件系统,使用mkfs命令,文件系统类型为
ext3。命令如下:
# mkfs -t ext3 /dev/md0 //以ext3文件系统格式
化Raid5设备
当新的文件系统生成之后,就可以将/dev/md0
挂接到指定的目录了。命令如下:
# mount /dev/md0 /ftp //挂接/dev/md0设备到/
ftp目录
为了让系统在启动时自动将/dev/md0挂接到/
ftp,还需要修改/etc/fstab文件,添加如下内容:
/dev/md0 /ftp ext3 defaults 0  0
这样在系统重新启动后, Raid5设备/dev/md0将
被自动挂接到/ftp目录中,我们对目录/ftp的操作
实际就是对Raid5设备/dev/md0的操作。
通过以上步骤,完成了在Linux 系统下创建软
件Raid的配置过程,再将使用Linux提供的vsftpd
服务器,创建一个具有不同功能权限的FTP 服务器
用户,并在/ftp目录中建立备份系统目录结构,以
实现备份服务器应具备的全部功能。
1.2  FTP服务器及备份目录结构的设置
设定3 个不同的用户权限:upload 用户,用于
上传数据; download用户,用于下载数据;admin用
户,作为管理员。为了有效地保护系统安全,这些
用户都不能登录系统,并且用FTP 连接时锁定在自
己的根目录中不能进入系统文件夹。
创建FTP 用户的命令如下:
(1)  vi logins.txt
1>upload
2>upload  (注:本行的“upload”为“upload”
用户的密码)
3>download
4>download
5>admin
6>admin
此文本文件的格式是单数行为用户名,偶数行
为密码。
(2) db_load -T -t hash -f logins.txt /etc/vsftpd_log-
in.db
(3) chmod 600 /etc/vsftpd_login.db
(4) useradd -d /ftp virtual ; chmod 700 /ftp
(5)修改FTP 配置文件:
在/etc/vsftpd.conf文件中插入下面的配置语句
Anonymous_enable=NO(禁止匿名用户)
guest_enable=YES(启用虚拟用户)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_username=virtual (将虚拟用户映射为本
地virtual用户)
pam_service_name=vsftpd.pam(指定PAM配置
文件为在/etc/pam.d/下的vsftpd)
user_config_dir=/etc/vsftpd_user_conf (指定不
同虚拟用户配置文件的存放路径)
保存退出
(6)  cp /usr/share/doc/vsftpd-2.0.1/EXAMPLE/
VIRTUAL_USRES/vsftpd.pam /etc/pam.d/
(7) mkdir /etc/vsftpd_user_conf
(8)开放不同用户的不同权限 
echo "anon_world_readable_only=NO">/etc/
vsftpd_user_conf/download (开放 download用户的
下载权限—只能下载;注意这个地方不要写成YES,
否则将不能列出文件和目录)
cp /etc/vsftpd_user_conf/download /etc/
vsftpd_user_conf/upload
vi /etc/vsftpd_user_conf/upload, 添加下列行
write_enable=YES  (增加写权限)
anon_upload_enable=YES(增加上传权限)
anon_world_readable_only=YES (禁止列出文件
和目录)
anno_other_write_enable=YES (增加用户的删
除/ 重命名的权限)
cp /etc/vsftpd_user_conf/upload /etc/vsftpd_user_
conf/admin
修改一行:
anon_world_readable_only=NO
重新启动vsftpd服务器,就可以使用以上创建
的3 个功能不同的用户来实现其各自不同的功能。
在/ftp目录中建立备份系统目录树结构。 将在
/ftp 目录中以车站电报码为各车站数据备份一级目
录,在一级目录下再依次建立相关系统的备份目
录,这样室的数据将被异地备份到vsftpd服务器
中的相关备份目录中,目录结构图如图1。
 
2 部署各应用系统的备份策略
 
本文通过使用Linux系统提供的FTP服务器,结
合Linux系统提供的软Raid技术,部署了异地灾难数据备份应用,对一线应用系统的
实时数据进行异地备份,有力的保证了生产系
统计算机在完全崩溃后实时数据的有效恢复。
 

本文出自 “李晨光原创技术博客” 博客,转载请与作者联系!

用Linux建立多应用系统备份服务器的更多相关文章

  1. 浅析Linux服务器集群系统技术

    浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...

  2. Linux服务器集群系统(一)--转

    引用地址:http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介 ...

  3. Linux服务器集群系统(一)(转)

    add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...

  4. linux服务器开发二(系统编程)--进程相关

    进程相关的概念 程序与进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(CPU.内存.打开的文件.设备.锁等等). 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...

  5. Linux服务器集群系统(LVS)

    from:http://www.linuxvirtualserver.org/zh/lvs1.html#5 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目 ...

  6. Linux服务器集群系统(一)

    Reference: http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 ...

  7. 官方文档-Linux服务器集群系统(一)

    转载-Linux服务器集群系统(一) LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介绍了Linux服务器集群系统--LVS(Linux Virtual ...

  8. 转载-lvs官方文档-Linux服务器集群系统(二)

    Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...

  9. Linux中如何将系统调优

    Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.Linux服务器有各 ...

随机推荐

  1. U盘安装CentOS 7系统

    首先,本文适合新的不能再新的新手 小白出身的轩轩,由于最近正在学习Linux的centos系统,所以突发奇想,为什么不把轩轩的本机也安装一个centos系统呢,让两个系统互不干扰,想到就做到,遂开始动 ...

  2. ASP.NET-ajax.acionlink使用

    Ajax 属性的ActionLink方法可以创建一个具有异步行为的锚标签. ActionLink方法的第一个参数指定了链接文本,第二个参数是要异步调用的操作的名称.类似于同名的HTML辅助方法,AJA ...

  3. [Typescript] Promise based delay function using async / await

    Learn how to write a promise based delay function and then use it in async await to see how much it ...

  4. Linux之我最常用的20条命令

    Linux之我最常用的20条命令 玩过 Linux的人都会知道, Linux中的命令的确是非常多,但是玩过 Linux的人也从来不会因为 Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的 ...

  5. extjs Combox 调用数据

    1方法一 从 json获取 var typeStore = new Ext.data.Store({                 proxy : new Ext.data.HttpProxy({u ...

  6. css实现上下左右布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 8.ES6测试

    转自:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html 如果测试脚本是用ES6写的,那么运行测试之前,需 ...

  8. Nginx下部署TP5项目

    标签(空格分隔): linux nginx配置文件: server { listen 81; #listen [::]:80; server_name _; index index.html inde ...

  9. BZOJ 3503 高斯消元

    思路: 高斯消元就好啦 注意每个格子最多只能和4个相邻 所以是 n*m*n*m*5 的 并不会TLE //By SiriusRen #include <cstdio> #include & ...

  10. Python的matplotlib库画图不能显示中文问题解决

    有两种解决办法: 一种是在代码里设置为能显示中文的字体,如微软雅黑(msyh.ttf)和黑体(simsun.ttc) 如下在要画图的代码前添加: import matplotlib.pyplot as ...