用Linux建立多应用系统备份服务器
1 建立LinuxFTP服务器
使用了Red Hat Enterprise Linux 5 Update1, 以下所有实例中的Linux命令均在该操作系统下完成,为了增强数据备份的安全性、服务器网络连接的高可用性及吞吐量,在服务器中可以使用Raid技术增强数据的安全性和完整性,使用双网卡绑定技术来提高网络连接需要的性能。Raid 的具体实现可以根据用户各自的硬件环境采用Raid卡或着Linux提供的软件Raid实现,下面是Linux下实现软件Raid的具体实例。
在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主机,以使设置生效。
执行命令# 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目录中建立备份系统目录结构,以
实现备份服务器应具备的全部功能。
设定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。
略
合Linux系统提供的软Raid技术,部署了异地灾难数据备份应用,对一线应用系统的
实时数据进行异地备份,有力的保证了生产系
统计算机在完全崩溃后实时数据的有效恢复。
本文出自 “李晨光原创技术博客” 博客,转载请与作者联系!
用Linux建立多应用系统备份服务器的更多相关文章
- 浅析Linux服务器集群系统技术
浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...
- Linux服务器集群系统(一)--转
引用地址:http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介 ...
- Linux服务器集群系统(一)(转)
add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...
- linux服务器开发二(系统编程)--进程相关
进程相关的概念 程序与进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(CPU.内存.打开的文件.设备.锁等等). 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...
- Linux服务器集群系统(LVS)
from:http://www.linuxvirtualserver.org/zh/lvs1.html#5 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目 ...
- Linux服务器集群系统(一)
Reference: http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 ...
- 官方文档-Linux服务器集群系统(一)
转载-Linux服务器集群系统(一) LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介绍了Linux服务器集群系统--LVS(Linux Virtual ...
- 转载-lvs官方文档-Linux服务器集群系统(二)
Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...
- Linux中如何将系统调优
Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.Linux服务器有各 ...
随机推荐
- Oracle学习总结(7)—— 常用的数据库索引优化语句总结
不管是用C/C++/Java等代码编写的程序,还是SQL编写的数据库脚本,都存在一个持续优化的过程.也就是说,代码优化对于程序员来说,是一个永恒的话题. 近期,我们对之前编写的数据库脚本进行了全面的自 ...
- 洛谷 P3146 [USACO16OPEN]248
P3146 [USACO16OPEN]248 题目描述 Bessie likes downloading games to play on her cell phone, even though sh ...
- tp5实现多数据库查询
引言: 有时候一个管理后台,需要涉及到多个数据库.比如,商城管理.直播管理.消息管理等等,它们都有自己的数据库.这个时候,就需要去连接多个数据库,进行处理了.thinkphp可以支持多个数据库连接. ...
- 安卓开发--scrollview
package com.cnn.scrollviewdemo01; import android.R.integer; import android.annotation.SuppressLint; ...
- 003.ES2015和ES2016新特性--类.md
JavaScript使用的是基于原型的OO模型,用对象字面量或者函数来实例化对象,用原型链来实现继承. 这样对于数据传统C++.Java的OO范式的开发者来说,会感到比较困惑,于是从ES2015开始逐 ...
- Bayes++ Library入门学习之熟悉class-Bayesian_filter_base(2)
前面我们已经熟悉了Bayesian_filter::Bayes_filter_base和其子类的击继承关系,接下来我们开始学习该类的实现. bayesFlt.hpp文件为其实现主体,首先是两个常规的头 ...
- Linux 图形文件压缩/解压缩实用程序,归档管理器。
1.ArkArk是KDE桌面环境默认的归档管理器,支持插件设置,允许你创建一个压缩包,查看压缩文件的内容,解压压缩包的内容到你所选定的目录.它能处理多种格式,包括 tar.gzip.bzip2.zip ...
- SPOJ8222 NSUBSTR - Substrings 后缀自动机_动态规划
讲起来不是特别好讲.总之,如果 $dp[i+1]>=dp[i]$,故$dp[i]=max(dp[i],dp[i+1])$ Code: #include <cstdio> #inclu ...
- php八大设计模式之策略模式
策略模式提供一个虚拟的整体,根据不同的要求(参数)提供不同的"零件"(调用不同的"零件"实现不同的结果). <?php /** * 策略模式 * 跟工厂模 ...
- javascript面向对象编程,带你认识封装、继承和多态
原文链接:点我 周末的时候深入的了解了下javascript的面向对象编程思想,收获颇丰,感觉对面向对象编程有了那么一丢丢的了解了~很开森 什么是面向对象编程 先上一张图,可以对面向对象有一个大致的了 ...