zzz's profileMagic 's Forest , ...PhotosBlogListsMore ![]() | Help |
|
November 06 MySQL主从服务器+读写分离花了三天时间,把MySQL的主从数据库+读写分离部署好了。感觉对缓解大数据流量的服务器压力还是很有效果的。 最近大把时间都花在了数据库上,幸好之前有自己研究过一段时间的数据库,貌似还是上大学的时候。。现在竟然还能回忆起来些 数据库确实是个值得花费精力的地方,很有用。
一、搭Mysql主、从服务器 安装Mysql不是很复杂。主从主要是备份、后续读写分布事务处理等用途
useradd mysql –s /sbin/nologin #生成一个mysql的用户 tar zxvf mysql-5.0.22.tar.gz cd mysql-5.0.22 ./configure --prefix=/usr/local/mysql --localstatedir=/opt/data && make && make install cp support-files/my-large.cnf /etc/my.cnf #配置文档 cd /usr/local/mysql /usr/local/mysql/bin/mysql_install_db --user=mysql chown -R mysql:mysql /opt/data chown -R mysql:mysql /usr/local/mysql 从服务器修改/etc/my.cnf配置文档,server-id=10 /usr/local/mysql/bin/mysqladmin –p shutdown #停服务 /usr/local/mysql/bin/mysqld_safe & #起服务,如果没有起来 多数是权限问题 /usr/local/mysql/bin/mysqladmin –p password’111111’ #修改密码 /usr/local/mysql/bin/mysql –p #登陆,新安装应该没有密码
主服务器上: mysql>grant all privileges on *.* to back@192.168.x.x identified by ‘111111’; #新建一个给从服务器登陆的账号 mysql> show master status;
记下file及position的值,做从服务器操作的时候需要。
配置从服务器 mysql> change master to master_host='192.168.x.x', master_user='back', mysql> start slave; #启用slave mysql> show slave status\G #显示当前slave状态 Slave_IO_Running: Yes
主数据库若有数据:
把主服务器数据文件复制到从服务器,整个目录一起tar过去即可
或者采用如下备份方法: mysqldump -u root -p testdb testtab>d:\testdb_testtab.sql 恢复命令: create database testdb;use testdb; mysql>source d:\testdb_testtab.sql
配置从服务器,保证主服务器的position位置和备份保持一致即可
以上主从服务器操作关键在于 备份数据position对应 以及change master命令。
#关于/mysql-data/master.info文档,看my.cnf配置文档中的说明
也就是说还是推荐用change master to 命令来修改master.info文档。而不要用my.cnf的从服务器配置。
测试: 主服务器上
从服务器上
确认从服务器上有相同的记录即可。
二、读写分离 这部分主要有点是用来给服务器做均衡负载的,其实还是蛮有趣的一个功能。 搭建Mysql-proxy服务可就没那么简单了,如果能够yum一下就全都搞定那就太开心了! 无所谓这台代理服务搭在哪里,主、从或者第三方都OK,我推荐可以在从上面做,测试比较清楚 下面基本就用我history里的命令了,省的一句一句打。
安装 lua
安装 libevent
安装check
安装glib2
安装mysql-proxy
结果提示glib2版本不对
然后提示lua不对,于是我下了一个lua.pc
接着提示libevent错误 研究了半天 直接把安装路径放到/usr/下面
这次总算./configure 通过了 接着make,结果又出错~~提示找不到什么.h的文件
总算make && make install通过了
测试一把,又出错了。。。
原来是selinux作怪,改了。
总算OK了。
接着来配服务。 把 rw-splitting.lua 放到/usr/local/mysql-proxy/share/mysql-proxy/下面
rw-splitting.lua:
local stmt = tokenizer.first_stmt_token(tokens) if stmt.token_name == "TK_SQL_SELECT" then for i = 1, #tokens do if utext == "LAST_INSERT_ID" or -- we found the two special token, we can't find more -- if we ask for the last-insert-id we have to ask it on the original
启动mysql-proxy代理
读写分离测试 登陆3306端口,在从服务器testtb上增加几条记录 客户端做多个连接到mysql-proxy的端口4040。 insert一条记录,可以看到主服务器也有增加了记录。从服务器是同步过来的数据 select * from testtb;在一个客户端连接的时候,显示的是主服务器的表内容 而有多个客户端连接之后,就会显示从服务器的testtb表内容
最后,他是同步所有database的,如果只需要备份指定的数据库,请一定要在my.cnf中加上 replicate-do-db=dbname 不然,他找不到其他数据库,正常的数据库也不会更新了。
生成一个/usr/local/bin/mysql-proxy.sh
在/etc/rc.local 文档中加入一条 /usr/local/bin/mysql-proxy.sh &
参考资料: http://sery.blog.ccidnet.com/blog-htm-do-showone-uid-3587-itemid-472099-type-blog.html MySQL 主从复制读写分离实现 http://www.yayu.org/look.php?id=136 MySQL 主从同步关键句 http://butian.org/knowledge/develop/DB/20090520/1124.html MySQL 主从服务器的一些技巧 http://www.3389hack.com/xueyuan/fuwuqi/MySQL/22601.html MySQL配置文件my.cnf 例子的最详细翻译 November 05 Oracle数据库的灾难恢复(转)
首先将数据库shutdown abort,从最近的一次全备份中恢复所有的数据文件,将数据库启动到mount状态。如果原来的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改变文件的存放位置。然后,使用recover database until cancel命令来恢复数据库,直到提示最后一个归档日志运用完之后,输入cancel。之后用alter database open resetlogs打开数据库,如果没有问题,立即进行一个冷备份。注意!所有包含在损坏的redo log中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上一防止发生介质故障。
November 03 对不起。本来想写影评的,明天再写吧
实在是有些受不了。 一个28岁的人 还要寄人于篱下 被迫离开自己最亲的人,去受人照顾 怎么也接受不了。我宁愿一个人漂泊流离 也要靠自己的能力来换取生活 总是想不依靠别人的力量 总是想独立 而且更应该去帮助身边的人 可是似乎很失败 28岁的自己 才刚能勉强让自己一个人生活起来 更别提拿出精力来为别人付出
可是 即使如此 我也不愿意再无端受人照顾了 这是耻辱。
谢谢你们。其实我也知道你们是好意。非常对不起。 November 02 It’s loveWe shall always save a place for ourselves, only for ourselves. And then begin to love. Have no idea of what it is, who he is, how to love or how long it will be. Just wait for one love. Maybe no one will come out, but this kind of waiting is the love itself.
刚才在朋友的blog里看到的一句话,突然觉得很有feeling。也许这样子的爱情才是真正的爱情, 态度 可是 等待 似乎又不是一个 最好的途径 谢国忠:有效市场是个神话
最好的办法,是限制货币增长与名义GDP增长率间的偏差 货币需求是有效的吗?这个问题的答案关系到怎样的货币政策称得上最好。随着金融机构杠杆率的提高,对货币需求不断增大,这个问题就相当于在问金融体系是否有效。我认为,答案是否定的。货币当局或中央银行有责任考虑到这一点。最好的办法,是限制货币增长与名义GDP增长率间的偏差。特别是,当经济基本面可能在短期受损时,持续的偏差仍应予以纠正。 神话破灭 这是一个严肃的学术课题。我为什么要在这里和普通读者讨论这个问题? 首先,这与每个人都息息相关。中国的散户投资者主导着资产市场。他们做出投资或投机决定时,大多认为“政府不会让资产价格下跌”。政府支出一旦有了限制,那这种期望还有几分可信?关于对货币扩张限制的讨论,能够帮助中国投资者评估投资决策的风险。 其次,从世界范围来看,货币供应量增速都远远高于名义GDP的增速。也就是说,货币增长被用来支撑高杠杆率,这在金融部门尤其明显。当然,原因是央行通过降低利率来应对金融危机,有时甚至是强行增加银行的流动性,以期他们能够增加贷款,刺激经济。不过,这些钱却流入了资产市场,导致资产市场繁荣兴旺。活跃的资产价格稳定了全球经济。尽管大多数分析家认为,活跃的资产市场反映了他们对全球经济蓬勃发展的正确预期。但是,我认为这不是事实。像过去的十年一样,资产市场的繁荣支持了经济增长,而不是倒过来——由于强大的经济增长导致资产市场繁荣——因此,一切只不过是个泡沫。 尽管全球经济正温和复苏,整体经济形势仍困难重重。经合组织国家的失业率都处于历史高位。资产市场的繁荣与真实的经济困难之间的对比,在近代可谓绝无仅有。尽管工人和企业都在努力挣扎,资产玩家却重新收获了账面利润。资产繁荣的背后,是央行的货币政策。我们不禁要问,政策实现了其帮助实体经济的目标了吗?还是说,政策帮助的只是那些投机者,希望他们能给实体经济留点残羹冷炙? 金融机构从中央银行获取大量货币,但当前的金融危机暴露了货币运行存在的严重低效。对那些引发了危机的人提供如此多的钱,理由恰恰是因为他们引发了危机,这是什么道理?好比说,当房子着火了,你必须扑灭大火并找到罪魁祸首。可问题是,纵火者被要求去救火。那么,如何可以肯定,他们不会引起另一场大火? 大部分人认为改革金融体制,而非限制货币供应,是解决这一问题的办法。一旦如此,未来对货币的需求将是有效的。到目前为止,金融危机中发现的问题仍没有得到纠正。过去十年,全球金融体系已变得相当庞大,将中央银行、立法者和政府困在其中。行将推进的改革,不会触碰到那些引发当前危机的主要因素。即使最好的改革能够实行,核心问题仍然难以解决:金融从业人员用别人的钱来赌博,当下对注的时候,他们将得到巨大的回报;下错注,他们也不会赔偿。这个激励问题表明,现行的全球金融体系,鼓励了风险冒进的偏好,有效市场并非如此。中央银行限制货币供给,是解决这一问题的惟一办法。过去十年的资产价格通胀,以及破灭后的灾难,都证明了这一论点是可信的。 上世纪70年代的滞胀,促使经济学家研究为何货币刺激并没有增加需求,却直接转为通胀。这一研究促进了理性预期理论的发展,解释了大众对货币政策的反应。它的结论显而易见,即决策者可以反复愚弄普通人。多人因此获得诺贝尔奖。米尔顿·弗里德曼主张将以货币供给增长为目标,作为中央银行的指导原则。这一做法将使中央银行以货币增长为目标,“自动驾驶”,并让市场决定利率。 理性预期理论被进一步用来解释投资者的行为,并引出了有效市场理论:在一定条件下,理智的投资者将带来有效的资产价格,这种价格能够正确反映未来预期。用学术术语来说,有效资产价格,就是包含了所有有关未来的有用信息的价格。这为拆除那些源自“大萧条”时期得到的教训而建立起来的监管架构,奠定了基础。 上世纪70年代的滞胀,使得中央银行疲于应付短期通胀。依据有效市场理论,中央银行决定完全满足金融机构的货币需求,以支持他们的杠杆率。这种组合为过去十年间出现的巨大泡沫奠定了基础。由于全球化通胀保持在较低水平,华尔街可以无限量地从中央银行获得流动性,制造泡沫。 在西方金融市场中,机构投资者占主导地位,散户或个人投资者则主导了东方金融市场。多数机构投资者是以季度市场指数为基准,同时,他们持有的现金量还有限制。这些制约因素使他们处于不利地位,很难跑赢大盘。这就是为什么大多数机构投资者都是指数追随者。额外的管理成本,使得大多数机构投资者表现比指数差,这并不会增加市场的效率。 改革的困境 过去十年,金融市场最显著的发展是绝对表现基金(Absolute performance funds)和对冲基金的增加。但是,他们只是放大了市场的波动性,并未提高市场效率。由于对冲基金经理的薪酬是旱涝保收,因此,他们自然乐于见到长期波动。这是一个委婉的“正面算我赢,反面算你输”的掷硬币游戏。对冲基金业让其管理人员,而不是投资人收益颇丰。 无论怎样尝试去改善机构投资者的激励结构,“管理别人的钱”带来的激励扭曲难以改变。制度化一度被誉为提高市场效率的一大进步,已被证明使无效状况更甚。面临着变幻莫测市场的发展中国家,一直寻求以制度化来稳定市场。他们应该三思。制度化或能减少短期波动,但会变成大崩溃。 散户或者个人投资者经常错误地将短时期波动当做趋势。“羊群行为”产生了自我实现的趋势,而这大都只是暂时的。但是,这种羊群行为有时也会持续很长一段时间,引发巨大的泡沫。这种泡沫会导致资源配置严重失当。 为了尽量减少今后出现金融危机的可能,人们可以改革金融体系,以减少出现危机的倾向;或者在制定货币政策时,同时考虑资产价格以及消费物价。一年前,危机爆发时,世界各地的决策者发誓要改革金融体系,消除腐败和过度杠杆化。在政府花费数万亿美元救助金融机构之后,改革的动力已经减弱。美国国会改革法案已经淡化,因此,他们并无力阻止另一次重大危机。 资本充足率要求以及透明度,是有效的金融改革的关键。例如,场外交易的衍生品的名义价值达到数万亿美元。它们在一个不透明的环境中蓬勃发展。做市商可以通过欺骗买家和监管机构获取高额利润:向他们收取超高费用,但他们并未为提供这种高风险产品投入大量资金。如果市场是透明的,而且资本要求合理,那么这项业务也不会开展得这样大。在理论上,衍生工具能够帮助买家降低风险;而在实践中,由于复杂的结构可以隐藏杠杆率,衍生工具会带来更大的风险。除非能够看到旨在针对衍生产品市场的问题的改革,否则,所谓的金融改革很难称之为“有效”。 谁又将声名扫地? 天下没有不散的宴席,现在也是如此。有两个情形预示着另一场危机的爆发。首先,每个交易者借入美元购买东西。华尔街多数交易商是美国人、英国人,还有澳大利亚人。他们都很了解美国。美联储维持着零利率政策,美国政府也支持弱势美元,以刺激美国的出口。除非是傻瓜,人人都能看出,美国政府正在“ 帮助”你借美元去投机。但是,这些交易员对其他国家并不熟悉,特别是新兴经济体。他们一年也就去那里一两次,即使这一两次,还是和美国的投行一起去的:这些投行可是很想要卖东西给他们的。他们愿意相信任何事,除了美元会升值。当然,华尔街的银行也会这么告诉他们。由于这些人为数众多,他们的行动在短期内会自我实现。举例来说,澳元从底部算起,已经升值了35%。现在,这些家伙坐在巨大的账面利润上,感觉自己是如此聪明。当然,华尔街的交易商们在付给投资人之前,已经先喂饱了自己。 一旦交易规模过大,就像现在这样,只需要一个小冲击就能引发飓风,而你永远不知道这个冲击会是什么。一旦有事发生,所有这些交易商就会迅速退出,这可能会导致另一场危机。 石油价格的飙升,可能是宴会中另一个不速之客。它可能引发通胀预期回升,并引发债券市场大崩溃。由此产生的极高债券收益率可能迫使央行提高利率,以减少对通货膨胀的担心。另一轮资产价格大下滑,将再度激起对于全球主要金融机构资产负债表的恐惧,再次造成混乱。 石油是制造泡沫的完美材料:石油供应不能及时回应油价上涨,它需要很长的时间来扩大生产能力,而且由于生活方式和生产方式的粘性,石油需求也不能迅速减少。无论是需求还是供应方面,石油的价格敏感度都较低,很适合用来制造泡沫。当流动性既便宜又易得的时候,石油投机者随处可见。 石油投机商不再只是那些偷偷摸摸的对冲基金。普通百姓也可以通过购买交易所交易基金拥有石油或其他任何东西。而且,没有道理不去这么做。中央银行已明确表示,将保持尽可能充足的货币供给,使纸币贬值,帮助债务人。如果你赌得很大,当你下错注的时候,政府会帮你摆脱困境,并且降低利率以使你能够下更大的赌注。所以,在这个世界上,最好做个投机者,当权者永远与你同在。 对于那些想成为投机分子的人,我有一言相劝:一旦债券市场大幅下跌,尽快逃命去吧。石油泡沫来得容易,去得也快,因为它会刺破其他泡沫。一旦这些泡沫破灭,供石油泡沫生存的氧气也就消失了。 2010年出现二次探底的情况已经很明显。目前的经济复苏得益于企业补充库存以及财政刺激。明年,西方消费者在囊中羞涩之后迅速恢复的几率微乎其微。高失业率将使他们的收入难以支撑其消费。他们不太可能再去借钱消费。 许多分析家都认为,只要失业率依旧居高不下,那么,就应当不断采取刺激政策。正如我刚才所说,供求不匹配——而不是需求疲软本身——是高失业率的主要原因。更多的刺激只会引发通货膨胀和金融不稳定。 上世纪70年代的滞胀,让一批认为可以“用一点通胀换得经济大幅增长”的银行家声名狼藉。当前的这场危机,将会使那些忽略资产价格通胀,甚至创造通胀去刺激经济增长的这一代中央银行家们声名扫地。玩火者,必自焚。■ October 31 工作第一周hoho上班一周 公司出乎意料的好相处,老总依旧是那么滴帅。 认识的同事也越来越多 原来都是很好的人呐 老总的眼光确实有些合我的口味 所以手下的人似乎都能很顺利地沟通 整个团队的方向感很明确 领导者功不可没,除了老总以外 技术部和营业部的领导也都很赞 有特点。
不过公司的业务实在是有些出乎意料。 整天看到测评部的几个同事在打WOW。。而且还是美服的。。真是羡慕啊 工作的任务就是打游戏~~貌似有些辛苦。 有一天的下午整个公司同仁被召集起来打新开发的一个游戏作压力测试。。
工作方面 公司的计算机管理水准还处在一个开荒阶段。。 我发现每次我去交接工作 都只有很短的时间。这次只有3天 上一份工作也就一个礼拜。 最难以接受的是 交接的方式是通过即兴创作的文档+探寻式反馈 几乎没有成型的文档 我上份工作走的时候 自己工作涉及的每个方面、曾经碰到的难点问题 都有归纳文档 很容易接任者的工作继续 不过怎么说呢 这样子也算是对自己的挑战吧 一个全都管理得井井有条没有破绽的计算机系统 对自我价值的实现而言也就没什么意义了。根本体现不出我的能力嘛 哈哈。 最大的问题在于开发部分。领导准备把公司所有涉及公网服务器的部分全都交给我来处理~ 包括服务器的均衡负载、热切换、Mysql的读写分离、镜像服务器备份、测试等。 以前的工作内容几乎不涉及公网的服务器以及数据库部分的深入操作,所以接触不多。。 还好闲情逸志时曾经研究过一段时间数据库 命令什么的还有大致的印象~~ 所以前几天已经临时上阵过了。。还好没有什么大的问题。就是反应要点时间、迟钝了些,哈哈
下周开始要正式打仗了 服务器和公司系统管理的东西全都特意留着等我来发挥呢 任务计划已经有2页了
来吧。老子斗志昂扬着呢
这次找工作算是比较满意了吧 公司内部很团结、融洽 也有一些自己公司文化的味道 能学到些重要的东西 后台数据库和服务器应用方面 是很值得花费精力去研究的 收入么也符合我的想象 它的问题就是远了些、小了些 发展的未知性很大, 但游戏公司么 发展的空间也是无限的 总之拖开对老总个人崇拜之情不讲。把自己托付给这样子的公司、那样的几位领导,我心里觉得 机会还是存在的。
另外 RHCE考试的时间终于定下来了。。11月30号 这个考试就是今年最后一个没有完成的目标了 加油加油 今天收到一个快递 原来是8级的证书 哈哈 真是开心 哈哈。
那篇文章写的蛮赞呢:) 即兴高手今天闲来无事在网上找歌听 结果真的找到一个即兴高手。 感觉像专业的 听了几首 绝对可以和张崇德的那张专辑相提并论了,感情、力度都很到位。放在这里收藏 他为什么不去出张专辑什么的,肯定受欢迎。 挑几首放在这边。
早期的 速度稍快 不过太熟了就快很正常,到后来慢慢的就很有感觉了 《冬季恋歌》
《遇见》
《天黑黑》 非常喜欢听这首
《死了都要爱》 原来 钢琴也能把这首歌如此表达。。有小瑕疵 瑕不掩瑜
《青花瓷》 后半段即兴和弦发挥的淋漓尽致
《彩虹》 琴从立式的YAMAHA换成三角斯坦威了。。。看来出道了。。呵呵
《珊瑚海》
《红豆》
个人主页里面一共有38首~就不全贴出来了 http://u.youku.com/user_video/id_UMTkzMTQ0NDA=_order_1_type_1_page_1.html October 30 一帘幽梦我有一帘幽梦 不知与谁能共 谁能解我情衷 谁将柔情深种
我有一帘幽梦,梦里掬水见月,梦枕流云而眠。
清晨时分 日薄朦胧 一缕清香 飘入耳际 心中感触无边 October 26 《帕格尼尼24首随想曲》+ 3个版本的《钟》
杨一村推荐收藏版 呵呵 帕格尼尼24首随想曲 小提琴独奏 亚历山大·马科夫(Alexander Markov)
叶夫根尼·基辛噢 欧洲人和亚洲人的感觉到底是不一样,颗粒哈清晰~! 这个技巧已经好到无以复加了。。。崇拜之情如滔滔江水阿。。。。
李云迪的感觉就明显更加优雅而柔娴 绝对东方人的味道~哪个好呢? 不过从技巧的角度 还是前面一位大师更胜李云迪一筹的。
这一段倒是钟的原版 帕格尼尼小提琴版的 演奏者 阿卡多。 有点长10分钟。 不过怎么说呢 改编的钢琴版比之原版较老的小提琴版更加紧凑吧。现代和古代的音乐欣赏风格不同。 October 25 韩寒经典语录韩寒:开奔驰宝马的女大学生都是好样 1.她们没有选择混吧消沉野炮卖淫,选择了长期一对一性关系,干净安全,对社会无害。 2.他们没有选择日本车,爱国之心彰显。当然,如果当年德国把苏联拿下了,势必也要侵略到中国.这事太长,又没发生,就不说了. 3.从原则上,她们只是交了个男朋友而已。男朋友愿意送她们什么,别人管不着. 4.对很多工作十年没车没房的男人来说,的确不公平,但是,这世界上就没公平. 5.她们的男朋友肯定是有钱人,我们不能因为这点指责她们。尤其是男人,你们难道不愿意找个有钱的女朋友吗。矛盾就在于,有钱的女朋友之所以有钱是因为找了个有钱的男朋友,而你不是。 6.漂亮姑娘难道一定要跟穷人在一起,世界才好看? 7.那些开好车的姑娘,肯定不止漂亮,还聪明。他们配了没有上进心只会抱怨的诸多男大学生,那才叫浪费。 8.有钱人的素质,至少表面上的整体素质要比没钱的强。我们要看到,人穷志短,穷山恶水出刁民,穷凶极恶是普遍存在的。我们至少没听说过,某巨富打老婆虐待孩子,某巨富搓麻将搓的把女儿都抵押给别人了,某巨富以划别人的汽车或拔别人自行车气门嘴为乐趣,某巨富喜欢拿硫酸泼熊或则挖猫眼睛(这事严重啊,合起来说就是拿硫酸泼熊猫还被挖眼睛),某巨富动不动就把人肚子搞大了等等。 9.她们生活的挺幸福,往往男朋友还假装挺有品位,也不时刻缠着她们,有品位而不腻味,多么难得。最怕就是被一没趣味的成天腻着。
11.那些心理不平衡的人,你们难道觉得有钱人都是笨蛋吗,一个光脸蛋好话都说不利索的姑娘能开奔驰吗。有钱人的选择,不一定对,但一定不错。不错的姑娘的选择,不一定对,但一定不错。 12.她们小小年纪就知道用自己的资本去得到更好的生活,无可厚非。贪官污吏才是我们指责的对象。如果她们傍了贪官污吏,势必加速了他们的暴露,对社会也是好事。男人最容易栽在这方面。 13.归根结底,我们不能要求聪明的美女一定要配个辛勤的工人或者不上进的大学生,故事才圆满。平凡的我们,不能因为看到美女和有钱人在一起,而觉得她们都不是好东西(我这是真心话),或者说,和穷鬼在一起,就是好姑娘。这两者间没有联系。大家要控制自己的妒忌心,因为无论漂亮姑娘和谁在一起了,都没和你在一起。所以,我们要祝福她们,下雨不再淋雨,购物随心所欲。
1.我到现在都一直在庆幸自己没去上大学,而且我觉得高考是一定要改革的。我将继续不遗余力的说高考和大学的坏话。我很早前就说过,现如今的大学像妓女一样,只要有钱,全国所有大学都乖乖排成一排随便你点,想上哪个上哪个,愿意多花点钱甚至可以几个一起上。 2.作文的看法是,作文就是很傻的东西。高考作文肯定是集所有大傻于一身的。我们的作文讲究的是培养狗奴才,而不是真性情。 3.世界上根本就不存在早恋或者偷食禁果。无论什么样的年龄,只要双方喜欢,心甘情愿,任何的感情或者性行为,都是天赋人权,那是人类最大的权利,是不能被别人干涉阻止的。 4.刘翔,居然有人觉得他应该谦虚点.已经是世界记录保持者了,如果非要在那说,不行不行,我跑的还不行.可能某些人听着心里舒服,但这样的谦虚其实是对别人更大的侮辱,这都叫不行,那你们都是残废了. 5.文坛是个屁谁都别装逼。部分前辈们应该认真写点东西,别非黄既暴,其实内心比年轻人还骚动,别凑一起搞些什么东西假装什么坛什么圈的,什么坛到最后也都是祭坛,什么圈到最后也都是花圈。 6.所谓脚痛踢脚,头痛踢头,另一个外援在国内联赛里眼睛又被踢残了。的确不太文明,弄不好国际社会对中国队的印象就是在原始森林海边踢椰子的一群狒狒。 7.我几年前在电视上看到过一个广告,大意是这样的,在公共汽车上,一个老者垂头丧气,人家问,你怎么了。老头说,我得了癌。车上的售票员说,没事,我几年前也得了癌,在前面某站的一个医院治疗了,现在好了。司机接着说,是的,我的癌也是那里治好的。然后一车的乘客纷纷说,我们的癌,都是在那里治好的。 9.上海也没什么不好,和别的城市差不多,治安很不错,经过多年发展,终于在国内出轨,和国际接轨。当然,唯一接轨的就是房价。 10.以前老听说,做艺术搞文化就要去北京,我就给骗去了几年,可能沙尘暴堵住了鼻孔,也没嗅到有什么文化气息。 11.不管80后是多么的粗俗,多么的幼稚,写的多么的差,以后的文学界是属于他们的,因为他们要活的更长一点,别人都死了,还剩下他们活着。这些人更加应该清高一点,一个写作的人必须要更加的清高。为什么现在的那些作家写的东西,不管是80后、70后、60后他们写的东西,没有梁实秋、鲁迅那批人写得好,是因为他们更贱,没有那些人清高。 12.进入娱乐圈并不是长的帅就可以,你不觉得现在娱乐圈得人长得很怪吗?我觉得现在写东西的圈子是比娱乐圈更娱乐圈的圈子,总是吵来吵去的。 13.不漂亮的女孩子撒娇成功率其实比漂亮女孩子要高,因为漂亮女孩子撒娇时男的会忍不住要多看一会儿,再在心里表决是否值得;不漂亮的女孩子撒的娇,则像我国文人学成的西方作家写作手法,总有走样的感觉;看她们撒娇,会有一种罪恶感,所以男的都会忙不迭答应,以制止其撒娇不止。 14.其实,这世上最可畏的男人是自称不近女色的,他们只是未遇理想中的女色罢了,一旦遇上,凭着中国汉字的博大精深,"不近女色"马上会变成"不禁女色",所以,历史学科无须再追究汉字是不是仓颉所创,总之,汉字定是男人造的,而且是风流男人造的。在人看来,占着茅坑不拉屎是可恶的,其实,最可恨的却是拉完了屎还要占着等坑。 15.有精神的人死后,精神不死;同种道理,有钱人死后,钱不死;沈万三的钱引得中外游人如织,沈厅里的人口密度正教人认识计划生育的重要性。 16.据一个古老传说,上帝造人时,第一批出炉的人都有两个头四只手四条腿,就是现今生物学里的雌雄共体,可上帝觉得他们太聪明了,就把"火'一劈为二,成为现在的样子,于是,男人便有了搜寻靠近另一半--女人的本能。当然也不乏找错的,就是同性恋了。 17.和女性争辩是不明智的。无论这个女性是不是明智。
19.得出这么一个规律,踩着中国人的脚,不能说"对不起",要说"sorry",被害者才会原谅你,可见外文比中文值钱。你说一个sorry可抵上十声"对不起",与人民币兑美元英镑的汇率相符,足以证明语言与经济的亲密关系;而踩上外国人的脚大可不必担心,他们的脚趾和他们的财气一样粗壮,断然没有一脚踩伤的后患,说不准自己的脚底还隐隐生癌呢。 20.街上美女很少,因为这年头,每天上一次床的美女比每天上一次街的美女多。举凡女孩子,略有姿色,都在大酒店里站着;很有姿色,都在大酒店里睡着;极有姿色,都在大酒店经理怀里躺着。偶有几个清秀脱俗的,漫步走过,极其文静。 21.一个男子失恋以后,要么自杀,要么再恋一次爱,而第二次找对象的要求往往相近于第一个,这种心理是微妙的,比如一样东西吃得正香,突然被人抢掉,自然要千方百计再想找口味相近的--这个逻辑只适用于女方背叛或对其追求未果。若两人彼此再无感情,便不存在这种"影子恋爱",越吃越臭的东西是不必再吃一遍的。
24.上海的美女走在街上向来目不斜视,高傲地只看前方,穿马路也不例外;上海的男人却大多目不正视,竭力搜索美女,脸上的肌肉已经被培训得可以不受大脑控制而独立行动,见到美女就会调出个笑,因为如此的关注,所以,在上海只听到车子撞老太婆,鲜闻有车子撞上美女。 看来名气就仿佛后脑勺的头发,本人是看不见的,旁人却一目了然。 25.男人挑女友绝不会像买菜那么随便,恨世上没有人汇集了西施的面容,梦露的身材,林激因的气质,雅典娜的智慧--不对,雅典娜的智慧是要不得的,哪个女孩子有了这种智慧,男人耍的一切花招都没用了。 26.所谓的正书,乃是过了七月份就没用的书,所谓闲书,乃是~辈子都受用的书。" 27.教师不吃香而家教却十分热火,可见求授知识这东西就像谈恋爱,一拖几十的就是低贱,而一对一的便是珍贵。珍贵的东西当然真贵,一个小时几十元,基本上与妓女开的是一个价。同是赚钱,教师就比妓女厉害多了。妓女赚钱,是因为妓女给了对方快乐;而教师给了对方痛苦,却照样收钱,这就是家教的伟大之处。 28.我们当初和一群青年飙车的时候,觉得只有高速让人清醒。当时我们初涉文坛,读了很多废品,包括无数名著,神情恍惚,心里常常思考诸如"我为什么要活着","人生的意义是什么",思考得一片颓废,除了街头的烟贩子看见我们顿时精神抖擞以外,其他人看见我们都面露厌恶。我们当时觉得我们的世界完蛋了。哲学的东西看多了就是这德行,没办法。在后期我们开始觉得这个世界虚幻。其实是因为没有什么事情可以做,睡多了自然虚幻。一个人在床上的时间多了,必然觉得这个世界不真实。妓女也是一个性质的。我们像妓女一样地生活,有事没事离开不了床。在上面看天花板,觉得妈的这个世界完了,我们完了,人类完了。至于为什么完了,答案是:不知道。 29.思想品德不及格,总比没思想好。 30.小学偶像是比赛的对手,中学的偶像还说要起诉我。 31.我很期待,有个实力相当的人,好好来骂我。 32.你身在江湖,但江湖上一直没有你的传说,这也挺惨的。 33.其实高考的压力是完全的经济压力,如果高考前一天,忽然告诉你你爹妈都死了,但是居然卖烧饼的爹妈有几个亿的遗产,我想绝大部分的人会以居高临下的姿态参加考试,并且在碰到一个诸如叫你分析"居然"和"竟然"两词除了笔画不一样多以外有什么区别之类的题目的时候高呼一声:爷不考了!
35.如果世界上所有国家的外汇储备都拿人民币来衡量,那我们就不用学习英语了,至少不用学习到那么辛苦了。 36.真理往往是在少数人手里,而少数人必须服从多数人,到头来真理还是在多数人手里,人云亦云就是这样堆积起来的。第一个人说一番话,被第二个人听见,和他一起说,此时第三个人反对,而第四个人一看,一边有两个人而一边只有一个人,便跟着那两个人一起说。可见人多口杂的那一方不一定都有自己的想法,许多是冲着那里人多去的。 37.我这辈子说得最让人无从反驳的话就是被子不用叠--本来就是要摊开睡的--然而这也是第一个被人反驳掉的。懂么,这就是规矩。我们之所以悲哀,是因为我们有太多规矩。 38.如果现在这个时代能出全才,那便是应试教育的幸运和这个时代的不幸。如果有,他便是人中之王,可惜没有,所以我们只好把"全"字人下的"王"给拿掉。时代需要的只是人才。 现在教育问题是没有人会一丝不挂去洗澡,但太多人正穿着棉袄洗澡。 39.潮流是只能等不能追的,这和在火车站等候火车是一个道理,乖乖留在站上,总会有车来,至于刚开走的车,我们泛泛之辈是追不上的。 40.中国看不起说大话的人。而在我看来大话并无甚,好比古代妇女缠惯了小脚,碰上正常的脚就称"大脚";中国人说惯了"小话",碰上正常的话,理所当然就叫"大话"了。敢说大话的人得不到好下场,吓得后人从不说大话变成不说话。 41.痛恨一个人四年比喜欢一个人四年更加厉害。喜欢只是一种惯性,痛恨却需要不断地鞭策自己才行。 42.我生性不爱受困,常常违反班规,班主任常罚我抄班规20遍,我只好三支笔一起握。我常对人说,我的一手好字就是这么练出来的。 43.数理化语文英语全很好,音乐体育计算机都零分,连开机都不会,我还是一个优等生。但如果我音乐体育计算机好得让人发指,葡萄牙语说得跟母语似的,但是数学英语和化学全不及格,我也是个差生。 44.语文,"秘诀"有二:一是不看语文书;二是不看作文书 我的小说主人公基本上没干什么事,就这么混混沌沌过着。这就是生活。为什么一定要高于生活? 45.数学,我想我只要上到初二就够了。一个人全面发展当然好,但可能越全面发展越是个庸才。说一个人学习高等数学是为了培养逻辑能力,我觉得逻辑能力是与生俱来的东西,并不是培养出来的东西。古人不学高等数学,难道就没有逻辑能力吗? 46.我们有理由相信,建立在爱情上的爱情是短暂的,因为爱情本身是短暂的;而建立在金钱上的爱情是永远的,因为金钱是永远的。 47.答非所问;没有一个问题能在二十句话内解决;不论什么东西最后都要引到自己研究的领域中去,哪怕嫖娼之类的问题也是;喜欢打断别人话,不喜欢别人打断他的话;对无论什么东西都要分成几个方面去说,哪怕说的是一个道理;在否定一样东西前一定要肯定一下;在他们回答问题回答到一半的时候问他们记不记得刚才的问题是什么他们八成不记得了;偏胖;说话的时候手一定要挥舞;被逼到没辙的时候总拿自己经历过文化大革命作为比别人强的本钱,但不能解释像他这样的学术权威为什么没有被打倒;被打倒的一定要让人知道自己曾经被打倒;总结性的话都能在死掉的人写的书里找到。 48.将一句话谨献给所有正春风得意或秋风不得意的人们,非常平凡,但你一定要坚信自己:我是金子,我要闪光的。 49.到今年我发现转眼已经四年过去,而在序言里我也没有什么好说的,因为要说的都在正文里,只是四年来不管至今还是喜欢我的,或者痛恨我的,我觉得都很不容易。四年的执著是很大的执著,尤其是痛恨一个人四年我觉得比喜欢一个人四年更加厉害。喜欢只是一种惯性,痛恨却需要不断地鞭策自己才行。无论怎么样,我都谢谢大家能够与我一起安静或者飞驰。 我发现我喜欢在书里感叹"多少多少年过去了"。因为我有一个丝毫没有新意的发现,时间的过去真的是很快。在我参加赛车的三年以及之前准备的两年,在我记忆只是一个拼命想往前跑的一个过程。所有能叫被叫做过程的,都是短暂的。
51.记得以前有一次,一记者劈头就问我一句,您是如何理解"宽容和生命"的。我就楞了半钟头。今天的采访说着说着就拧上了,开始兜圈圈,大概兜了半小时圈圈,他突然深情的望着我,说,您可真像徐静蕾。我一口水差点喷他脸上。他继续回忆,说,1999年的时候做过徐静蕾一个采访,当时就感觉不能沟通,完全是两个世界的人。我想,您怎么连25岁的徐静蕾都搞不定. 52.郑渊洁说,他要写搏客20年,点击量上亿。这志向很远大,而且很难,需要多方面配合,20年,就算郑渊洁健在,新浪也不一定健在。 53.还有一阵子觉得如果学会一乐器,那多么牛逼,能边演奏边唱,不幸,我鬼使神差,大脑抽筋加上经济限制,居然选择了口琴,学了半天才发现,这玩意根本不能就边吹边唱,一度情绪低落。 54.一个钢琴弹的不错的朋友说,教我弹钢琴,我说算了。朋友说没关系,可以强行记一两个歌就行了,比如两只老虎和两只蝴蝶什么的,我想了想,觉得还是算了,一件事,弄得一知半解最没意思,要么就做一出场别人就全歇了的那种,要么还是观赏别的强人得了。如果搞半天,让人知道我会弹钢琴,但只会弹四只动物,那也太难为情了。 55.我们要承认,有些事情,某些领域,的确不适合自己做,并且要有"老婆,和牛魔王出来看上帝"的谦逊认输品格。 56.我本人喜欢的是一个电影说一个情绪,哪怕它再小。某些大导演,自不量力,老企图在电影里探讨深刻的哲学问题,什么命运啊信任啊,还要扩及到全人类,乃至挖掘到远古时代。其实,人类的问题都是因人而异。这世界上存在肤浅,但不存在深刻。 你觉得他是这样,结果他是那样,你觉得自己是那样,结果自己不是那样,这样,生活有点异样,但是没有变样,自己还那么小样,没忘记人家的模样,结果都是一样。 在想,我们的大导演,是不是很多时候没有爱情了,很多时候没有被感动了。多年没有被感动的人,如何能拍出一个感动别人的片子呢?除了片子里的演员互相"我被你感动了"以外,我看的一头雾水。还是没有想象力啊。
58.我从来觉得,喜欢和爱是相同的感情,就如同爸爸和爹是相同的一样。没有理由觉得喜欢是浅而爱是深。 59.如果隔岸观火,说不定还感觉温暖,如果烧的是你仇人家,那更加温暖。如果飞蛾扑火,八成就是不好结果,扑准了,给烧死,扑大发了,把火灭了。 60.爱情这东西,死活是个死,生活这东西,死活都得活,这两个东西一凑合,只能折腾的半死不活。 61.我身边有朋友说,此人过气了。我想,对于音乐,对于文学,对于电影,难道一直在蹦哒又不自己做事情的家伙就叫当红,而安心做自己的事情的人就叫过气? 62.警察很多时候是圈养的土匪,打个比方,坏蛋是狼,警察就是雪橇犬,上司就是主人,法律就是北京市宠物管理条例,括弧还是草案。 63.善恶到头终有报,报应全是死翘翘. 64.以前我录傻呼呼的电视节目,大家观点不同,鸡一嘴鸭一嘴的。我也说了不少话,但可能过于激烈,最后编辑的时候都被剪了,所以出来的电视节目里,大家都觉得我很酷,不说话,任凭风吹雨打,其实不是这样的。几次以后我就明白了,言多必失,说太多了肯定要被剪掉不少。所以从那以后定了个规矩,就是只录专访,录前问清楚对方节目的时间,比如节目半个小时,我就给你们半个小时时间,让你们剪。不幸的是,那样还能剪,有时候甚至再填点别的内容也能剪。于是我就再不做什么电视节目了。 65.科技凝固了瞬间,快门凝固了狗脸。 66.低级趣味也是趣味,娱乐自己始终不易。 67.我们的导演,图个自己开心。 我们的编剧,写死不能出名。 我们的电影,最高这个水平。 我们的观众,也就这个操行。 我们的资方,收益基本是零。 我们的人民,永远不能脱贫。 68.世界上逻辑分两种,一种是逻辑,一种是中国逻辑。 70.权力高于你尽全力捍卫的权利。 72.所谓压力大,学习苦,名额少,全是老百姓的事情,有钱有权的人,从没有说过教育有什么不好,因为这完全是他们所不能体会的东西。 73.现在的考试好比中国的足球,往往当事人还没发愁,旁人却替他们忧心忡忡惶蘧不已。该努力的没努力,不该努力的却拼了命的努力。 74.这种发行量大的报纸又没人看,还是上头强要摊牌订阅的,为官的只有在上厕所时看,然后草纸省下许多--不过正好,狗屁报纸擦狗屁股,也算门当户对。 75.九十年代女中学生的文章仿佛是个马厮,里面尽是黑马王子和无尽的青梅竹马。 典型不是一万个人里面一个代表,而是一万个人里面只有那么一个。 76.前几年考重点高中成风,现在已经成疯。 77.规矩其实是温饱以后的消遣,温饱都不能了,还要规矩吗。 78.《圣经*所罗门之歌》中说:如果有人想用自己的所有家产换取别人的爱情,那必定受鄙夷。《圣经》显然过于神圣了,其实上面的情况不仅不应受鄙夷,还应受表扬,真正要鄙夷的应该是想用自己的爱情换取别人所有家产的人。
82.任何失恋的女人一样,要么一生不嫁,要么嫁得飞快。 87.有句话说"爱情是女人最好的化妆品",这话其实不对,爱情没这威力,爱情只是促使女人去买最好的化妆品,仅此而已。 运动无极限
身轻如燕阿 看来腿上也要把沙袋绑起来。
腿法
武当太极十三式 太极可以去研究一下
这身形动作~
貌似前几年就看过这个武当道长的视频 可那时候对人类身体的理解还完全没有概念 四肢、柔韧性、爆发力等等~ 几年滚打下来 对于移动、旋转时身体重心之类的才刚刚有了初步的心得 动静结合的体会也逐渐丰富起来 现在再仔细看了道长的每个动作 真是觉得受益匪浅 尤其是一些对外界的反应变换 爆发时机的判断 身体呼吸的节奏控制等 把自己想象成道长所处的位置 做出同样的动作 心里比之几年前 就有了可以理解的框架 理解之下 则更为感叹此人的行云流水 收获颇丰。
收藏在这里。
http://www.wdgf.cn/?action=text|wdgf|361|cn|490|423
是不是有机会去武当山看一下呢 起码比少林寺那个胖主持来得真材实料些。 一个人的生活2中央新闻台新闻。 呼和浩特监狱逃了4个人 结果监狱长几天之后被免职 台湾进口美国牛肉 引起群众不满 台湾卫生部长接受参访说 你们如果觉得不满意 那我愿意辞职
MSN网站新闻。 “ 落差高达百余米 经国家相关部门批复,三峡工程175米试验性蓄水于9月15日凌晨启动,起蓄水位为145.87米。经过39天的蓄水进程,坝前水位顺利突破170米大关。站在坝顶遥看坝上,高峡平湖美不胜收,转眼坝下,泄洪闸汹涌澎湃。 据介绍,目前大坝上下游的水位落差已高达105米,新增库容已近160亿立方米,总库容已超过300亿立方米,已超过我国最大淡水湖鄱阳湖的汛期水量。 加大下泄为下游“解渴” 记者了解到,冬季枯水期为长江中下游补水是三峡工程四大综合性功能之一。自今年8月以来,长江中下游不少地区连续高温,部分地区严重伏秋连旱。湘江和赣江及境内各大河流相继出现历史最低水位,洞庭湖、鄱阳湖因境内河流来水偏少,水位一路下跌,比往年提前40天进入枯水期。 为确保下游航道安全,缓解沿江旱情,根据长江防总19日下达的调度令,三峡集团公司逐步加大发电出力,增大下泄流量,比往年提前一个多月为下游补水。 昨晚8时,长江上游来水入库流量为11400立方米/秒,出库下泄流量7970立方米/秒,下泄流量已远远大于原蓄水计划的6500立方米/秒。 目前,三峡工程的生态补水效益已经显现,长江水文局昨日上午8时发布水位公告显示上看到,宜昌、沙市、城陵矶及武汉关水位均已开始转涨。其中洞庭湖水位出现了70多天来的首次上涨。 ” 明明就是这个大坝截了水才导致下游地区水位下跌的,还说得这么好听正好造了这个大坝这次可以为中下游补水。。 我看着新闻真是觉得受不了了。 竟然还说为了缓解沿江旱情~今年第一次实验性蓄水 哪里来的比往年提前一个多月?往年哪里蓄过水来? 生态补水效益已经显现。。你明知道70多天干旱。。还蓄了39天水。。还让不让下游的老百姓活了? 真是太无语了 这则新闻简直白吃到顶。
唉 突然就上班 今年整个计划都被打乱了。现在都没心思看书~~~我郁闷。。 可是早点上班也算是件好事情吧。。只能看自己能力了,是不是能一边上班一边把试考出来。 已经到关键时刻拉~还有半个月。加油!加油! 今年的目标看来要打折扣了~ MCSE不知道还有没有兴趣去考。RHCE一定要搞出来!
上班倒计时中 之前要求我找工作来热身的爸爸又提出一个想法。让我一个人先住出去。 。。一个人住就一个人住吧。都听爸爸的。其实还蛮自由 想听音乐想练琴想看书想发呆的时候 都很安静 我要去个走出门就是淮海中路南京西路衡山路的地方 哈哈
买瓶12年的Chivas、再弄瓶Baileys放在家里 找个高点的玻璃台 上面吊个暗点的长射灯 没事就把灯全关了留这一个 坐在上面看看窗外夜景 喝喝酒也蛮开心的 冬天 就快来了。 弄点天然的精油 找个小炉子熏一熏 不知道能熏蚊子伐。。对了 冬天蚊子比我先去睡觉去了 房间不大的话正好5.1可以放到房间4个角落 争取把喇叭吊起来 这个环绕效果肯定赞 哈哈 墙上去找2幅画挂上 其余空档全敲上书架搁板 地方小~老子的书就都给我架起来 拿起来也方便 看心情随便取 这个练琴就麻烦了 地方小估计会影响到别人~~唉 看来以后要勤于打理邻里关系了。。 搬过去问候人家先~要问好人家的作息时间 呵呵 马上把CPU换了 半年前还在看AM2+的接口 现在都AM3拉 价格还和之前的差不多 赚到了 :) 弄个双核的545看看能不能把屏蔽的4核开开来 得要找个1.5TB的硬盘换上,冬天了 准备一个人在家里捂被子 打持久战拉。片子这东西必不可少 哈哈, 准备这个冬天把星际之门的9个季全搞定。 恩,说到看片子 看来得自己准备个42的等离子电视~~小房子一般不会提供这样子的设备吧。。。阿~这个只能先问妈咪贷款了。。 。。汗。。松下的等离子貌似不错,弄个120Hz刷新率的 再去配一副Nvidia的3D眼镜打WOW 噢~~太赞了 大沙袋估计没地方挂 挂了也施展不开 算了~看看是不是有地方可以挤进一个弧形仰卧板 这个冬天就给自己定唯一个目标 六块腹肌
额~琴、音乐、书、片子、运动、游戏、酒、香熏 恩 差不多了 这个冬天就这么对付吧。
之前在算桶装水的费用 结果发现2个月会喝掉我50个大洋~~白开水也要花这么多钱么。。疯特。看来要准备个电水壶 想想一个人开货仓实在是不合算,烧顿饭累么累死 烧多了一个菜还要吃上好几顿 实在是不值得。 看来这个冬天要与外卖为伍了。孤独的厨师没有前途。 或是找朋友、同事一起? 洗衣机。。我就不换新的了吧。。到超市去买袋清洁洗衣机的东西 先给我浸上几次。。内衣内裤还是手洗一下算了。。 有点想哭。。呵呵 微波炉还是要准备一个 冰箱要不要开呢~ 酒应该不用放冰箱的 反正快要入冬 只要避免阳光就好~而且也不通风 其他好像也没东西了~ 噢 对了 酸奶。。靠阿 是不是要弄个小冰柜。。 墙不知道要不要刷一下 如果太旧或是颜色不喜欢的话就刷一下吧 反正应该不会很大的地方。 还要布一下线 喇叭线、网线这种小房间里肯定没有的; 要弄几个电源开关 把几套用电的设备归一下类。灯啊、电脑、电视、功放之类的 以后只要一个开关就能控制一套电器。出门什么的也方便 一个开关统统报销 要不要申请IPTV呢 还是申请数字电视? IPTV不要钱 频道还超级多 可是要签2年合约。。看不满2年要赔钱。。 数字电视明显效果好很多 可是我喜欢的游戏风云竟然算在收费套餐内打包价的。。。 算了 钱不多的话 还是数字电视吧。 转椅和床要弄个舒服点的~唉 还得自己买个好点的枕头。
恩。
自己 安排自己的生活其实也蛮开心的 也是一定要习惯的。 以后的日子 终究还是要 一个人过。
我其实还是会想你们的,休息天我会来看你们。
明年 就给自己放个半年假吧。。暂时不给自己定其他目标了。今年实在是发生了太多事 有点累。
工作的时候等休息 休息了一段时间呢 又想工作了。 就像市区住久了想去郊区陶冶陶冶 郊区住了段时间呢 又开始想念市区的繁华。
人 就是这么折腾。 活着的意义么? ~~ 算了 不提也罢。 能够有条件这样子折腾 想怎么折腾就怎么折腾 也算是自己的幸运了吧。 可以了。
October 21 第一次面试周四奉爸爸旨意 投了几分简历。 周五竟然接到了一个面试通知,出乎意料。 周一去面试,恩 面试的技术经理感觉满谈得来 可惜公司太小了,应该不会考虑吧。 周二通知复试。 周三原来是老总来复试。
和我聊了很多。
说公司初期目标很宏伟 要上市 有几千万风投 前几年突然经济不好 钱都亏光了 后来还欠了别人几百万,可还是有一个团队愿意跟着他 虽然几个月发不出工资。 人人都说他倒闭了 可是他不信邪。带着他的团队 现在又开始恢复了。钱也还清了 公司慢慢重又走上正轨
老总问我,你喜欢写作? 我在我的兴趣爱好一栏上写着。 我也喜欢阿 我以前可是文学系毕业的噢 专业写作的阿。 。。。 老总问我,你喜欢弹琴? 我在我的兴趣爱好一栏上写着。 我也喜欢弹琴阿,我以前也有学,可是经济不好那段日子实在是太忙了。 。。。 老总问我,女朋友有了没啊?没有啊 不错啊 一个人挺自由的 我也没结婚呢 是没结过婚阿。可不是结了又离的那种。 。。。。。。 老总问我,你82年啊 属狗吧 我也属狗 比你正好大一圈噢。 。。。。。。
这个老总 与众不同。 很酷 很帅 有魄力 有感染力 很感性 有艺术气息 坚毅下隐藏着激情 有冲劲
气场貌似很对
老总说,“不错 我觉得你适合我这个团队。 我就冒昧帮你做个决定 来这里上班了”
脑子有些混乱,似乎完全被他吸引了。 可我还是说 请给我一天时间考虑吧。 还要理一下思路。
这样子的性格肯定比我更适合作老总,可是太感性的人能把他自己的事业做到完美吗 我一直自认 自己不会是曹操 孙权也未必。 我觉得自己像陆逊。
和他在一起工作 应该会开心吧 会和以前的朝九晚六死鱼趟水不太一样吧。 活着么 工作也是生活的一部分 要开心 这对我来说 就是最好的理由了
好吧 人家既然给出了他觉得值得的价格 我也应该要有相应的证明给予。 让他相信,他的眼光没有错。
为了开心 我冲动了 拼一枪。。 即使和想象的不一样 可是能给我这种感受 也值了。
他难道是天平的? October 19 鳥哥的 Linux 私房菜(转)地址:http://linux.vbird.org/linux_basic/0420quota.php 这个鸟哥写的貌似很入门 收藏
如果您的 Linux 伺服器有多個用戶經常存取資料時,為了維護所有使用者在硬碟容量的公平使用,磁碟配額 (Quota) 就是一項非常有用的工具!另外,如果你的用戶常常抱怨磁碟容量不夠用,那麼更進階的檔案系統就得要學習學習。 本章我們會介紹磁碟陣列 (RAID) 及邏輯捲軸檔案系統 (LVM),這些工具都可以幫助你管理與維護使用者可用的磁碟容量喔! 1. 磁碟配額 (Quota) 的應用與實作 Quota 這個玩意兒就字面上的意思來看,就是有多少『限額』的意思啦!如果是用在零用錢上面, 就是類似『有多少零用錢一個月』的意思之類的。如果是在電腦主機的磁碟使用量上呢?以 Linux 來說,就是有多少容量限制的意思囉。我們可以使用 quota 來讓磁碟的容量使用較為公平, 底下我們會介紹什麼是 quota ,然後以一個完整的範例來介紹 quota 的實作喔! 在 Linux 系統中,由於是多人多工的環境,所以會有多人共同使用一個硬碟空間的情況發生, 如果其中有少數幾個使用者大量的佔掉了硬碟空間的話,那勢必壓縮其他使用者的使用權力! 因此管理員應該適當的限制硬碟的容量給使用者,以妥善的分配系統資源!避免有人抗議呀! 舉例來說,我們使用者的預設家目錄都是在 /home 底下,如果 /home 是個獨立的 partition , 假設這個分割槽有 10G 好了,而 /home 底下共有 30 個帳號,也就是說,每個使用者平均應該會有 333MB 的空間才對。 偏偏有個使用者在他的家目錄底下塞了好多隻影片,佔掉了 8GB 的空間,想想看,是否造成其他正常使用者的不便呢? 如果想要讓磁碟的容量公平的分配,這個時候就得要靠 quota 的幫忙囉!
quota 比較常使用的幾個情況是:
上頭講的是針對網路服務的設計,如果是針對 Linux 系統主機上面的設定那麼使用的方向有底下這一些:
大概有這些實際的用途啦!
雖然 quota 很好用,但是使用上還是有些限制要先瞭解的:
所以囉,你不能針對『某個目錄』來進行 Quota 的設計,但你可以針對『某個檔案系統 (filesystem) 』來設定。 如果不明白目錄與掛載點還有檔案系統的關係,請回到第八章去瞧瞧再回來!
quota 這玩意兒針對整個 filesystem 的限制項目主要分為底下幾個部分:
既然是規範,當然就有限制值。不管是 inode/block ,限制值都有兩個,分別是 soft 與 hard。 通常 hard 限制值要比 soft 還要高。舉例來說,若限制項目為 block ,可以限制 hard 為 500MBytes 而 soft 為 400MBytes。這兩個限值的意義為:
剛剛上面就談到寬限時間了!這個寬限時間只有在使用者的磁碟用量介於 soft 到 hard 之間時,才會出現且會倒數的一個咚咚! 由於達到 hard 限值時,使用者的磁碟使用權可能會被鎖住。為了擔心使用者沒有注意到這個磁碟配額的問題, 因此設計了 soft 。當你的磁碟用量即將到達 hard 且超過 soft 時,系統會給予警告,但也會給一段時間讓使用者自行管理磁碟。 一般預設的寬限時間為七天,如果七天內你都不進行任何磁碟管理,那麼 soft 限制值會即刻取代 hard 限值來作為 quota 的限制。 以上面設定的例子來說,假設你的容量高達 450MBytes 了,那七天的寬限時間就會開始倒數, 若七天內你都不進行任何刪除檔案的動作來替你的磁碟用量瘦身, 那麼七天後你的磁碟最大用量將變成 400MBytes (那個 soft 的限制值),此時你的磁碟使用權就會被鎖住而無法新增檔案了。 整個 soft, hard, grace time 的相關性我們可以用底下的圖示來說明:
圖中的長條圖為使用者的磁碟容量,soft/hard 分別是限制值。只要小於 400M 就一切 OK , 若高於 soft 就出現 grace time 並倒數且等待使用者自行處理,若到達 hard 的限制值, 那我們就搬張小板凳等著看好戲啦!嘿嘿!^_^!這樣圖示有清楚一點了嗎? 坐而言不如起而行啊,所以這裡我們使用一個範例來設計一下如何處理 Quota 的設定流程。
好了,那你怎麼規範帳號以及相關的 Quota 設定呢?首先,在這個小節我們先來將帳號相關的屬性與參數搞定再說吧! # 製作帳號環境時,由於有五個帳號,因此鳥哥使用 script 來建立環境! [root@www ~]# vi addaccount.sh #!/bin/bash # 使用 script 來建立實驗 quota 所需的環境 groupadd myquotagrp for username in myquota1 myquota2 myquota3 myquota4 myquota5 do useradd -g myquotagrp $username echo "password" | passwd --stdin $username done [root@www ~]# sh addaccount.sh 接下來,就讓我們來實作 Quota 的練習吧! 前面我們就談到,要使用 Quota 必須要核心與檔案系統支援才行!假設你已經使用了預設支援 Quota 的核心, 那麼接下來就是要啟動檔案系統的支援啦!不過,由於 Quota 僅針對整個檔案系統來進行規劃,所以我們得先查一下, /home 是否是個獨立的 filesystem 呢? [root@www ~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/hda3 4.8G 740M 3.8G 17% /home <==鳥哥主機的 /home 確實是獨立的! [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw) 從上面的資料來看,鳥哥這部主機的 /home 確實是獨立的 filesystem,因此可以直接限制 /dev/hda3 。 如果你的系統的 /home 並非獨立的檔案系統,那麼可能就得要針對根目錄 (/) 來規範了!不過,不太建議在根目錄設定 Quota。 此外,由於 VFAT 檔案系統並不支援 Linux Quota 功能,所以我們得要使用 mount 查詢一下 /home 的檔案系統為何? 看起來是 Linux 傳統的 ext2/ext3 ,這種檔案系統肯定有支援 Quota 啦!沒問題! 如果只是想要在這次開機中實驗 Quota ,那麼可以使用如下的方式來手動加入 quota 的支援: [root@www ~]# mount -o remount,usrquota,grpquota /home [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota) # 重點就在於 usrquota, grpquota !注意寫法! 事實上,當你重新掛載時,系統會同步更新 /etc/mtab 這個檔案, 所以你必須要確定 /etc/mtab 已經加入 usrquota, grpquota 的支援到你所想要設定的檔案系統中。 另外也要特別強調,使用者與群組的 quota 檔案系統支援參數分別是:usrquota, grpquota !千萬不要寫錯了!這一點非常多初接觸 Quota 的朋友常常搞錯。 不過手動掛載的資料在下次重新掛載就會消失,因此最好寫入設定檔中啊!在鳥哥這部主機的案例中, 我可以直接修改 /etc/fstab 成為底下這個樣子: [root@www ~]# vi /etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 # 其他項目鳥哥並沒有列出來!重點在於第四欄位!於 default 後面加上兩個參數! [root@www ~]# umount /home [root@www ~]# mount -a [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota) 還是要再次的強調,修改完 /etc/fstab 後,務必要測試一下!若有發生錯誤得要趕緊處理! 因為這個檔案如果修改錯誤,是會造成無法開機完全的情況啊!切記切記!最好使用 vim 來修改啦! 因為會有語法的檢驗,就不會讓你寫錯字了!啟動檔案系統的支援後,接下來讓我們建立起 quota 的記錄檔吧! 其實 Quota 是透過分析整個檔案系統中,每個使用者(群組)擁有的檔案總數與總容量, 再將這些資料記錄在該檔案系統的最頂層目錄,然後在該記錄檔中再使用每個帳號(或群組)的限制值去規範磁碟使用量的。 所以啦,建置這個 Quota 記錄檔就顯的非常的重要。掃瞄有支援 Quota 參數 (usrquota, grpquota) 的檔案系統, 就使用 quotacheck 這個指令!這個指令的語法如下:
[root@www ~]# quotacheck [-avugfM] [/mount_point]
選項與參數:
-a :掃瞄所有在 /etc/mtab 內,含有 quota 支援的 filesystem,加上此參數後,
/mount_point 可不必寫,因為掃瞄所有的 filesystem 了嘛!
-u :針對使用者掃瞄檔案與目錄的使用情況,會建立 aquota.user
-g :針對群組掃瞄檔案與目錄的使用情況,會建立 aquota.group
-v :顯示掃瞄過程的資訊;
-f :強制掃瞄檔案系統,並寫入新的 quota 設定檔 (危險)
-M :強制以讀寫的方式掃瞄檔案系統,只有在特殊情況下才會使用。
quotacheck 的選項你只要記得『 -avug 』一起下達即可!那個 -f 與 -M 是在檔案系統可能已經啟動 quota 了, 但是你還想要重新掃瞄檔案系統時,系統會要求你加入那兩個選項啦 (擔心有其他人已經使用 quota 中)!平時沒必要不要加上那兩個項目。好了,那就讓我們來處理我們的任務吧! # 針對整個系統含有 usrquota, grpquota 參數的檔案系統進行 quotacheck 掃瞄 [root@www ~]# quotacheck -avug quotacheck: Scanning /dev/hda3 [/home] quotacheck: Cannot stat old user quota file: No such file or directory <==有找到檔案系統,但尚未製作記錄檔! quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory done <==上面三個錯誤只是說明記錄檔尚未建立而已,可以忽略不理! quotacheck: Checked 130 directories and 107 files <==實際搜尋結果 quotacheck: Old file not found. quotacheck: Old file not found. # 若執行這個指令卻出現如下的錯誤訊息,表示你沒有任何檔案系統有啟動 quota 支援! # quotacheck: Can't find filesystem to check or filesystem not mounted with # quota option. [root@www ~]# ll -d /home/a* -rw------- 1 root root 8192 Mar 6 11:58 /home/aquota.group -rw------- 1 root root 9216 Mar 6 11:58 /home/aquota.user # 在鳥哥的案例中,/home 獨立的檔案系統,因此搜尋結果會將兩個記錄檔放在 # /home 底下。這兩個檔案就是 Quota 最重要的資訊了! 這個指令只要進行到這裡就夠了,不要反覆的進行!因為等一下我們會啟動 quota 功能,若啟動後你還要進行 quotacheck , 系統會擔心破壞原有的記錄檔,所以會產生一些錯誤訊息警告你。如果你確定沒有任何人在使用 quota 時, 可以強制重新進行 quotacheck 的動作。強制執行的情況可以使用如下的選項功能: # 如果因為特殊需求需要強制掃瞄已掛載的檔案系統時 [root@www ~]# quotacheck -avug -mf quotacheck: Scanning /dev/hda3 [/home] done quotacheck: Checked 130 directories and 109 files # 資料要簡潔很多!因為有記錄檔存在嘛!所以警告訊息不會出現! 這樣記錄檔就建立起來了!你不用手動去編輯那兩個檔案~因為那兩個檔案是 quota 自己的資料檔,並不是純文字檔啦! 且該檔案會一直變動,這是因為當你對 /home 這個檔案系統進行操作時,你操作的結果會影響磁碟吧! 所以當然會同步記載到那兩個檔案中啦!所以要建立 aquota.user, aquota.group,記得使用的是 quotacheck 指令! 不是手動編輯的喔! 製作好 Quota 設定檔之後,接下來就是要啟動 quota 了!啟動的方式很簡單!使用 quotaon ,至於關閉就用 quotaoff 即可
[root@www ~]# quotaon [-avug]
[root@www ~]# quotaon [-vug] [/mount_point]
選項與參數:
-u :針對使用者啟動 quota (aquota.user)
-g :針對群組啟動 quota (aquota.group)
-v :顯示啟動過程的相關訊息;
-a :根據 /etc/mtab 內的 filesystem 設定啟動有關的 quota ,若不加 -a 的話,
則後面就需要加上特定的那個 filesystem 喔!
# 由於我們要啟動 user/group 的 quota ,所以使用底下的語法即可
[root@www ~]# quotaon -auvg
/dev/hda3 [/home]: group quotas turned on
/dev/hda3 [/home]: user quotas turned on
# 特殊用法,假如你的啟動 /var 的 quota 支援,那麼僅啟動 user quota 時
[root@www ~]# quotaon -uv /var
這個『 quotaon -auvg 』的指令幾乎只在第一次啟動 quota 時才需要進行!因為下次等你重新啟動系統時, 系統的 /etc/rc.d/rc.sysinit 這個初始化腳本就會自動的下達這個指令了!因此你只要在這次實例中進行一次即可, 未來都不需要自行啟動 quota ,因為 CentOS 5.x 系統會自動幫你搞定他!
[root@www ~]# quotaoff [-a] [root@www ~]# quotaoff [-ug] [/mount_point] 選項與參數: -a :全部的 filesystem 的 quota 都關閉 (根據 /etc/mtab) -u :僅針對後面接的那個 /mount_point 關閉 user quota -g :僅針對後面接的那個 /mount_point 關閉 group quota 這個指令就是關閉了 quota 的支援!我們這裡需要練習 quota 實作,所以這裡請不要關閉他喔! 接下來讓我們開始來設定使用者與群組的 quota 限額吧!
edquota 是 edit quota 的縮寫,所以就是用來編輯使用者或者是群組限額的指令囉。我們先來看看 edquota 的語法吧, 看完後再來實際操作一下。 [root@www ~]# edquota [-u username] [-g groupname]
[root@www ~]# edquota -t <==修改寬限時間
[root@www ~]# edquota -p 範本帳號 -u 新帳號
選項與參數:
-u :後面接帳號名稱。可以進入 quota 的編輯畫面 (vi) 去設定 username 的限制值;
-g :後面接群組名稱。可以進入 quota 的編輯畫面 (vi) 去設定 groupname 的限制值;
-t :可以修改寬限時間。
-p :複製範本。那個 範本帳號 為已經存在並且已設定好 quota 的使用者,
意義為『將 範本帳號 這個人的 quota 限制值複製給 新帳號 』!
好了,先讓我們來看看當進入 myquota1 的限額設定時,會出現什麼畫面: 範例一:設定 dmtsai 這個使用者的 quota 限制值 [root@www ~]# edquota -u myquota1 Disk quotas for user myquota1 (uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 0 0 10 0 0 上頭第一行在說明針對哪個帳號 (myquota1) 進行 quota 的限額設定,第二行則是標頭行,裡面共分為七個欄位, 七個欄位分別的意義為:
當 soft/hard 為 0 時,表示沒有限制的意思。好,依據我們的範例說明,我們需要設定的是 blocks 的 soft/hard ,至於 inode 則不要去更動他!因此上述的畫面我們將他改成如下的模樣: Tips: Disk quotas for user myquota1 (uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 250000 300000 10 0 0 # 鳥哥使用 1000 去近似 1024 的倍數!比較好算啦!然後就可以儲存後離開囉! 設定完成之後,我們還有其他 5 個用戶要設定,由於設定值都一樣,此時可以使用 quota 複製喔! # 將 myquota1 的限制值複製給其他四個帳號 [root@www ~]# edquota -p myquota1 -u myquota2 [root@www ~]# edquota -p myquota1 -u myquota3 [root@www ~]# edquota -p myquota1 -u myquota4 [root@www ~]# edquota -p myquota1 -u myquota5 這樣就方便多了!然後,趕緊更改一下群組的 quota 限額吧! [root@www ~]# edquota -g myquotagrp Disk quotas for group myquotagrp (gid 713): Filesystem blocks soft hard inodes soft hard /dev/hda3 400 900000 1000000 50 0 0 # 記得,單位為 KB 喔! 最後,將寬限時間給他改成 14 天吧! # 寬限時間原本為 7 天,將他改成 14 天吧! [root@www ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda3 14days 7days # 原本是 7days ,我們將他給改為 14days 喔! 透過這個簡單的小步驟,我們已經將使用者/群組/寬限時間都設定妥當!接下來就是觀察到底設定有沒有生效啦! quota 的報表主要有兩種模式,一種是針對每個個人或群組的 quota 指令,一個是針對整個檔案系統的 repquota 指令。 我們先從較簡單的 quota 來介紹!你也可以順道看看你的設定值對不對啊!
[root@www ~]# quota [-uvs] [username]
[root@www ~]# quota [-gvs] [groupname]
選項與參數:
-u :後面可以接 username ,表示顯示出該使用者的 quota 限制值。若不接 username
,表示顯示出執行者的 quota 限制值。
-g :後面可接 groupname ,表示顯示出該群組的 quota 限制值。
-v :顯示每個用戶在 filesystem 的 quota 值;
-s :使用 1024 為倍數來指定單位,會顯示如 M 之類的單位!
# 直接使用 quota 去顯示出 myquota1 與 myquota2 的限額
[root@www ~]# quota -uvs myquota1 myquota2
Disk quotas for user myquota1 (uid 710):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 245M 293M 10 0 0
Disk quotas for user myquota2 (uid 711):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 245M 293M 10 0 0
# 這個指令顯示出來的資料跟 edquota 幾乎是一模一樣的!只是多了個 grace 項目。
# 你會發現 grace 底下沒有任何資料,這是因為我們的使用量 (80) 尚未超過 soft
# 顯示出 myquotagrp 的群組限額
[root@www ~]# quota -gvs myquotagrp
Disk quotas for group myquotagrp (gid 713):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 400 879M 977M 50 0 0
由於使用常見的 K, M, G 等單位比較好算,因此上頭我們使用了『 -s 』的選項,就能夠以 M 為單位顯示了。 不過由於我們使用 edquota 設定限額時,使用的是近似值 (1000) 而不是實際的 1024 倍數, 所以看起來會有點不太一樣喔!由於 quota 僅能針對某些用戶顯示報表,如果要針對整個 filesystem 列出報表時, 那個可愛的 repquota 就派上用場啦!
[root@www ~]# repquota -a [-vugs]
選項與參數:
-a :直接到 /etc/mtab 搜尋具有 quota 標誌的 filesystem ,並報告 quota 的結果;
-v :輸出的資料將含有 filesystem 相關的細部資訊;
-u :顯示出使用者的 quota 限值 (這是預設值);
-g :顯示出個別群組的 quota 限值。
-s :使用 M, G 為單位顯示結果
# 查詢本案例中所有使用者的 quota 限制情況:
[root@www ~]# repquota -auvs
*** Report for user quotas on device /dev/hda3 <==針對 /dev/hda3
Block grace time: 14days; Inode grace time: 7days <==block 寬限時間為 14 天
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 651M 0 0 5 0 0
myquota1 -- 80 245M 293M 10 0 0
myquota2 -- 80 245M 293M 10 0 0
myquota3 -- 80 245M 293M 10 0 0
myquota4 -- 80 245M 293M 10 0 0
myquota5 -- 80 245M 293M 10 0 0
Statistics: <==這是所謂的系統相關資訊,用 -v 才會顯示
Total blocks: 9
Data blocks: 2
Entries: 22
Used average: 11.000000
根據這些資訊,您就可以知道目前的限制情況囉! ^_^!怎樣, Quota 很簡單吧!你可以趕緊針對你的系統設定一下磁碟使用的規則,讓你的用戶不會抱怨磁碟怎麼老是被耗光! Quota 到底有沒有效果?測試看看不就知道了?讓我們使用 myquota1 去測試看看,如果建立一個大檔案時, 整個系統會便怎樣呢? # 測試一:利用 myquota1 的身份,建置一個 270MB 的大檔案,並觀察 quota 結果!
[myquota1@www ~]# dd if=/dev/zero of=bigfile bs=1M count=270
hda3: warning, user block quota exceeded.
270+0 records in
270+0 records out
283115520 bytes (283 MB) copied, 3.20282 seconds, 88.4 MB/s
# 注意看,我是使用 myquota1 的帳號去進行 dd 指令的喔!不要惡搞啊!
# 然後你可以發現出現一個 warning 的訊息喔!接下來看看報表。
[root@www ~]# repquota -auv
*** Report for user quotas on device /dev/hda3
Block grace time: 14days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
myquota1 +- 276840 250000 300000 13days 11 0 0
# 這個指令則是利用 root 去查閱的!
# 你可以發現 myquota1 的 grace 出現!並且開始倒數了!
# 測試二:再建立另外一個大檔案,讓總容量超過 300M !
[myquota1@www ~]# dd if=/dev/zero of=bigfile2 bs=1M count=300
hda3: write failed, user block limit reached.
dd: writing `bigfile2': Disk quota exceeded <==看!錯誤訊息不一樣了!
23+0 records in <==沒辦法寫入了!所以只記錄 23 筆
22+0 records out
23683072 bytes (24 MB) copied, 0.260081 seconds, 91.1 MB/s
[myquota1@www ~]# du -sk
300000 . <==果然是到極限了!
此時 myquota1 可以開始處理他的檔案系統了!如果不處理的話,最後寬限時間會歸零,然後出現如下的畫面: [root@www ~]# repquota -au
*** Report for user quotas on device /dev/hda3
Block grace time: 00:01; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
myquota1 +- 300000 250000 300000 none 11 0 0
# 倒數整個歸零,所以 grace 的部分就會變成 none 啦!不繼續倒數
其實倒數歸零也不會有什麼特殊的意外啦!別擔心!只是如果你的磁碟使用量介於 soft/hard 之間時, 當倒數歸零那麼 soft 的值會變成嚴格限制,此時你就沒有多餘的容量可以使用了。如何解決? 就登入系統去刪除檔案即可啦!沒有想像中那麼可怕啦!問題是,使用者通常傻傻分不清楚到底系統出了什麼問題, 所以我們可能需要寄送一些警告信 (email) 給用戶比較妥當。那麼如何處理呢?透過 warnquota 來處置即可。
warnquota字面上的意義就是 quota 的警告 (warn) 嘛!那麼這東西有什麼用呢?他可以依據 /etc/warnquota.conf 的設定,然後找出目前系統上面 quota 用量超過 soft (就是有 grace time 出現的那些傢伙) 的帳號,透過 email 的功能將警告信件發送到使用者的電子郵件信箱。 warnquota 並不會自動執行,所以我們需要手動去執行他。單純執行『 warnquota 』之後,他會發送兩封信出去, 一封給 myquota1 一封給 root ! [root@www ~]# warnquota
# 完全不會出現任何訊息!沒有訊息就是『好訊息』! ^_^
[root@www ~]# mail
N329 root@www.vbird.tsai Fri Mar 6 16:10 27/1007 "NOTE: ....
& 329 <==因為新信件在第 329 封之故
From root@www.vbird.tsai Fri Mar 6 16:10:18 2009
Date: Fri, 6 Mar 2009 16:10:17 +0800
From: root <root@www.vbird.tsai>
Reply-To: root@myhost.com
Subject: NOTE: You are exceeding your allocated disk space limits
To: myquota1@www.vbird.tsai
Cc: root@www.vbird.tsai <==注意這三行,分別是標題、收件者與副本 (CC)。
Your disk usage has exceeded the agreed limits on this server <==問題說明
Please delete any unnecessary files on following filesystems:
/dev/hda3 <==底下這幾行為發生磁碟『爆表』的資訊啦!
Block limits File limits
Filesystem used soft hard grace used soft hard grace
/dev/hda3 +- 300000 250000 300000 13days 12 0 0
root@localhost <==這個是警告訊息發送者的『簽名資料』啦!
& exit <==離開 mail 程式!
執行 warnquota 可能也不會產生任何訊息以及信件,因為只有當使用者的 quota 有超過 soft 時, warnquota 才會發送警告信啦!那麼上表的內容中,包括標題、資訊內容說明、簽名檔等資料放在哪裡呢? 剛剛不是講過嗎? /etc/warnquota 啦!因為上述的資料是英文,不好理解嗎?沒關係,你可以自己轉成中文喔! 所以你可以這樣處理的: [root@www ~]# vi /etc/warnquota.conf # 先找到底下這幾行的設定值: SUBJECT = NOTE: You are exceeding your allocated disk space limits <==第10行 CC_TO = "root@localhost" <==第11行 MESSAGE = Your disk usage has exceeded the agreed limits\ <==第21行 on this server|Please delete any unnecessary files on following filesystems:| SIGNATURE = root@localhost <==第25行 # 可以將他改成如下的模樣啊! SUBJECT = 注意:你在本系統上擁有的檔案容量已經超過最大容許限額 CC_TO = "root@localhost" <==除非你要寄給其他人,否則這個項目可以不改 MESSAGE = 你的磁碟容量已經超過本機的容許限額,|\ 請在如下的檔案系統中,刪除不必要的檔案:| SIGNATURE = 你的系統管理員 (root@localhost) # 在 MESSAGE 內的 | 代表斷行的意思,反斜線則代表連接下一行; 如果你重複執行 warnquota ,那麼 myquota1 就會收到類似如下的信件內容: Subject: 注意:你在本系統上擁有的檔案容量已經超過最大容許限額 To: myquota1@www.vbird.tsai Cc: root@www.vbird.tsai 你的磁碟容量已經超過本機的容許限額, 請在如下的檔案系統中,刪除不必要的檔案: /dev/hda3 Filesystem used soft hard grace used soft hard grace /dev/hda3 +- 300000 250000 300000 none 11 0 0 你的系統管理員 (root@localhost) 不過這個方法並不適用在 /var/spool/mail 也爆表的 quota 控管中,因為如果使用者在這個 filesystem 的容量已經爆表,那麼新的信件當然就收不下來啦!此時就只能等待使用者自己發現並跑來這裡刪除資料, 或者是請求 root 幫忙處理囉!知道了這玩意兒這麼好用,那麼我們怎麼讓系統自動的執行 warnquota 呢? 你可以這樣做: [root@www ~]# vi /etc/cron.daily/warnquota /usr/sbin/warnquota # 你沒有看錯!只要這一行,且將執行檔以絕對路徑的方式寫入即可! [root@www ~]# chmod 755 /etc/cron.daily/warnquota 那麼未來每天早上 4:02am 時,這個檔案就會主動被執行,那麼系統就能夠主動的通知磁碟配額爆表的用戶囉! 您瞧瞧!這玩意兒是否很好用啊!至於為何要寫入上述的檔案呢?留待下一章工作排程時我們再來加強介紹囉!
如果你想要使用 script 的方法來建立大量的帳號,並且所有的帳號都在建立時就給予 quota ,那該如何是好? 其實有兩個方法可以考慮:
不同於 edquota 是呼叫 vi 來進行設定,setquota 直接由指令輸入所必須要的各項限制值。 他的語法有點像這樣: [root@www ~]# setquota [-u|-g] 名稱 block(soft) block(hard) \
> inode(soft) inode(hard) 檔案系統
# 觀察原始的 myquota5 限值,並給予 soft/hard 分別為 100000/200000
[root@www ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 714):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 250000 300000 10 0 0
[root@www ~]# setquota -u myquota5 100000 200000 0 0 /home
[root@www ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 714):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 100000 200000 10 0 0
# 看吧!真的有改變過來!這就是 quota 的簡單腳本設定語法!
想一想,如果你的主機原先沒有想到要設定成為郵件主機,所以並沒有規劃將郵件信箱所在的 /var/spool/mail/ 目錄獨立成為一個 partition ,然後目前你的主機已經沒有辦法新增或分割出任何新的分割槽了。那我們知道 quota 是針對整個 filesystem 進行設計的,因此,你是否就無法針對 mail 的使用量給予 quota 的限制呢? 此外,如果你想要讓使用者的郵件信箱與家目錄的總體磁碟使用量為固定,那又該如何是好? 由於 /home 及 /var/spool/mail 根本不可能是同一個 filesystem (除非是都不分割,使用根目錄,才有可能整合在一起), 所以,該如何進行這樣的 quota 限制呢? 其實沒有那麼難啦!既然 quota 是針對整個 filesystem 來進行限制,假設你又已經有 /home 這個獨立的分割槽了, 那麼你只要:
只要這樣的一個小步驟,嘿嘿!您家主機的郵件就有一定的限額囉!當然囉!您也可以依據不同的使用者與群組來設定 quota 然後同樣的以上面的方式來進行 link 的動作!嘿嘿嘿!就有不同的限額針對不同的使用者提出囉!很方便吧! ^_^ Tips: Linux RAID(下)在過去鳥哥還年輕的時代,我們能使用的硬碟容量都不大,幾十 GB 的容量就是大硬碟了!但是某些情況下,我們需要很大容量的儲存空間, 例如鳥哥在跑的空氣品質模式所輸出的資料檔案一個案例通常需要好幾 GB ,連續跑個幾個案例,磁碟容量就不夠用了。 此時我該如何是好?其實可以透過一種儲存機制,稱為磁碟陣列 (RAID) 的就是了。這種機制的功能是什麼?他有哪些等級?什麼是硬體、軟體磁碟陣列?Linux 支援什麼樣的軟體磁碟陣列? 底下就讓我們來談談! 磁碟陣列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容錯式廉價磁碟陣列。 RAID 可以透過一個技術(軟體或硬體),將多個較小的磁碟整合成為一個較大的磁碟裝置; 而這個較大的磁碟功能可不止是儲存而已,他還具有資料保護的功能呢。整個 RAID 由於選擇的等級 (level) 不同,而使得整合後的磁碟具有不同的功能, 基本常見的 level 有這幾種(註1):
這種模式如果使用相同型號與容量的磁碟來組成時,效果較佳。這種模式的 RAID 會將磁碟先切出等量的區塊 (舉例來說, 4KB), 然後當一個檔案要寫入 RAID 時,該檔案會依據區塊的大小切割好,之後再依序放到各個磁碟裡面去。由於每個磁碟會交錯的存放資料, 因此當你的資料要寫入 RAID 時,資料會被等量的放置在各個磁碟上面。舉例來說,你有兩顆磁碟組成 RAID-0 , 當你有 100MB 的資料要寫入時,每個磁碟會各被分配到 50MB 的儲存量。RAID-0 的示意圖如下所示:
上圖的意思是,在組成 RAID-0 時,每顆磁碟 (Disk A 與 Disk B) 都會先被區隔成為小區塊 (chunk)。 當有資料要寫入 RAID 時,資料會先被切割成符合小區塊的大小,然後再依序一個一個的放置到不同的磁碟去。 由於資料已經先被切割並且依序放置到不同的磁碟上面,因此每顆磁碟所負責的資料量都降低了!照這樣的情況來看, 越多顆磁碟組成的 RAID-0 效能會越好,因為每顆負責的資料量就更低了! 這表示我的資料可以分散讓多顆磁碟來儲存,當然效能會變的更好啊!此外,磁碟總容量也變大了! 因為每顆磁碟的容量最終會加總成為 RAID-0 的總容量喔! 只是使用此等級你必須要自行負擔資料損毀的風險,由上圖我們知道檔案是被切割成為適合每顆磁碟分割區塊的大小, 然後再依序放置到各個磁碟中。想一想,如果某一顆磁碟損毀了,那麼檔案資料將缺一塊,此時這個檔案就損毀了。 由於每個檔案都是這樣存放的,因此 RAID-0 只要有任何一顆磁碟損毀,在 RAID 上面的所有資料都會遺失而無法讀取。 另外,如果使用不同容量的磁碟來組成 RAID-0 時,由於資料是一直等量的依序放置到不同磁碟中,當小容量磁碟的區塊被用完了, 那麼所有的資料都將被寫入到最大的那顆磁碟去。舉例來說,我用 200G 與 500G 組成 RAID-0 , 那麼最初的 400GB 資料可同時寫入兩顆磁碟 (各消耗 200G 的容量),後來再加入的資料就只能寫入 500G 的那顆磁碟中了。 此時的效能就變差了,因為只剩下一顆可以存放資料嘛!
這種模式也是需要相同的磁碟容量的,最好是一模一樣的磁碟啦!如果是不同容量的磁碟組成 RAID-1 時,那麼總容量將以最小的那一顆磁碟為主!這種模式主要是『讓同一份資料,完整的保存在兩顆磁碟上頭』。舉例來說,如果我有一個 100MB 的檔案,且我僅有兩顆磁碟組成 RAID-1 時, 那麼這兩顆磁碟將會同步寫入 100MB 到他們的儲存空間去。 因此,整體 RAID 的容量幾乎少了 50%。由於兩顆硬碟內容一模一樣,好像鏡子映照出來一樣, 所以我們也稱他為 mirror 模式囉~
如上圖所示,一份資料傳送到 RAID-1 之後會被分為兩股,並分別寫入到各個磁碟裡頭去。 由於同一份資料會被分別寫入到其他不同磁碟,因此如果要寫入 100MB 時,資料傳送到 I/O 匯流排後會被複製多份到各個磁碟, 結果就是資料量感覺變大了!因此在大量寫入 RAID-1 的情況下,寫入的效能可能會變的非常差 (因為我們只有一個南橋啊!)。 好在如果你使用的是硬體 RAID (磁碟陣列卡) 時,磁碟陣列卡會主動的複製一份而不使用系統的 I/O 匯流排,效能方面則還可以。 如果使用軟體磁碟陣列,可能效能就不好了。 由於兩顆磁碟內的資料一模一樣,所以任何一顆硬碟損毀時,你的資料還是可以完整的保留下來的! 所以我們可以說, RAID-1 最大的優點大概就在於資料的備份吧!不過由於磁碟容量有一半用在備份, 因此總容量會是全部磁碟容量的一半而已。雖然 RAID-1 的寫入效能不佳,不過讀取的效能則還可以啦!這是因為資料有兩份在不同的磁碟上面,如果多個 processes 在讀取同一筆資料時, RAID 會自行取得最佳的讀取平衡。
RAID-0 的效能佳但是資料不安全,RAID-1 的資料安全但是效能不佳,那麼能不能將這兩者整合起來設定 RAID 呢? 可以啊!那就是 RAID 0+1 或 RAID 1+0。所謂的 RAID 0+1 就是: (1)先讓兩顆磁碟組成 RAID 0,並且這樣的設定共有兩組; (2)將這兩組 RAID 0 再組成一組 RAID 1。這就是 RAID 0+1 囉!反過來說,RAID 1+0 就是先組成 RAID-1 再組成 RAID-0 的意思。
如上圖所示,Disk A + Disk B 組成第一組 RAID 0,Disk C + Disk D 組成第二組 RAID 0, 然後這兩組再整合成為一組 RAID 1。如果我有 100MB 的資料要寫入,則由於 RAID 1 的關係, 兩組 RAID 0 都會寫入 100MB,但由於 RAID 0 的關係,因此每顆磁碟僅會寫入 50MB 而已。 如此一來不論哪一組 RAID 0 的磁碟損毀,只要另外一組 RAID 0 還存在,那麼就能夠透過 RAID 1 的機制來回復資料。 由於具有 RAID 0 的優點,所以效能得以提升,由於具有 RAID 1 的優點,所以資料得以備份。 但是也由於 RAID 1 的缺點,所以總容量會少一半用來做為備份喔!
RAID-5 至少需要三顆以上的磁碟才能夠組成這種類型的磁碟陣列。這種磁碟陣列的資料寫入有點類似 RAID-0 , 不過每個循環的寫入過程中,在每顆磁碟還加入一個同位檢查資料 (Parity) ,這個資料會記錄其他磁碟的備份資料, 用於當有磁碟損毀時的救援。RAID-5 讀寫的情況有點像底下這樣:
如上圖所示,每個循環寫入時,都會有部分的同位檢查碼 (parity) 被記錄起來,並且記錄的同位檢查碼每次都記錄在不同的磁碟, 因此,任何一個磁碟損毀時都能夠藉由其他磁碟的檢查碼來重建原本磁碟內的資料喔!不過需要注意的是, 由於有同位檢查碼,因此 RAID 5 的總容量會是整體磁碟數量減一顆。以上圖為例, 原本的 3 顆磁碟只會剩下 (3-1)=2 顆磁碟的容量。而且當損毀的磁碟數量大於等於兩顆時,這整組 RAID 5 的資料就損毀了。 因為 RAID 5 預設僅能支援一顆磁碟的損毀情況。 在讀寫效能的比較上,讀取的效能還不賴!與 RAID-0 有的比!不過寫的效能就不見得能夠增加很多! 這是因為要寫入 RAID 5 的資料還得要經過計算同位檢查碼 (parity) 的關係。由於加上這個計算的動作, 所以寫入的效能與系統的硬體關係較大!尤其當使用軟體磁碟陣列時,同位檢查碼是透過 CPU 去計算而非專職的磁碟陣列卡, 因此效能方面還需要評估。 另外,由於 RAID 5 僅能支援一顆磁碟的損毀,因此近來還有發展出另外一種等級,就是 RAID 6 ,這個 RAID 6 則使用兩顆磁碟的容量作為 parity 的儲存,因此整體的磁碟容量就會少兩顆,但是允許出錯的磁碟數量就可以達到兩顆了! 也就是在 RAID 6 的情況下,同時兩顆磁碟損毀時,資料還是可以救回來!
當磁碟陣列的磁碟損毀時,就得要將壞掉的磁碟拔除,然後換一顆新的磁碟。換成新磁碟並且順利啟動磁碟陣列後, 磁碟陣列就會開始主動的重建 (rebuild) 原本壞掉的那顆磁碟資料到新的磁碟上!然後你磁碟陣列上面的資料就復原了! 這就是磁碟陣列的優點。不過,我們還是得要動手拔插硬碟,此時通常得要關機才能這麼做。 為了讓系統可以即時的在壞掉硬碟時主動的重建,因此就需要預備磁碟 (spare disk) 的輔助。 所謂的 spare disk 就是一顆或多顆沒有包含在原本磁碟陣列等級中的磁碟,這顆磁碟平時並不會被磁碟陣列所使用, 當磁碟陣列有任何磁碟損毀時,則這顆 spare disk 會被主動的拉進磁碟陣列中,並將壞掉的那顆硬碟移出磁碟陣列! 然後立即重建資料系統。如此你的系統則可以永保安康啊!若你的磁碟陣列有支援熱拔插那就更完美了! 直接將壞掉的那顆磁碟拔除換一顆新的,再將那顆新的設定成為 spare disk ,就完成了! 舉例來說,鳥哥之前所待的研究室有一個磁碟陣列可允許 16 顆磁碟的數量,不過我們只安裝了 10 顆磁碟作為 RAID 5。 每顆磁碟的容量為 250GB,我們用了一顆磁碟作為 spare disk ,並將其他的 9 顆設定為一個 RAID 5, 因此這個磁碟陣列的總容量為: (9-1)*250G=2000G。運作了一兩年後真的有一顆磁碟壞掉了,我們後來看燈號才發現! 不過對系統沒有影響呢!因為 spare disk 主動的加入支援,壞掉的那顆拔掉換顆新的,並重新設定成為 spare 後, 系統內的資料還是完整無缺的!嘿嘿!真不錯!
說的口沫橫飛,重點在哪裡呢?其實你的系統如果需要磁碟陣列的話,其實重點在於:
尤其資料的可靠性與完整性更是使用 RAID 的考量重點!畢竟硬體壞掉換掉就好了,軟體資料損毀那可不是鬧著玩的! 所以企業界為何需要大量的 RAID 來做為檔案系統的硬體基準,現在您有點瞭解了吧? 為何磁碟陣列又分為硬體與軟體呢?所謂的硬體磁碟陣列 (hardware RAID) 是透過磁碟陣列卡來達成陣列的目的。 磁碟陣列卡上面有一塊專門的晶片在處理 RAID 的任務,因此在效能方面會比較好。在很多任務 (例如 RAID 5 的同位檢查碼計算) 磁碟陣列並不會重複消耗原本系統的 I/O 匯流排,理論上效能會較佳。此外目前一般的中高階磁碟陣列卡都支援熱拔插, 亦即在不關機的情況下抽換損壞的磁碟,對於系統的復原與資料的可靠性方面非常的好用。 不過一塊好的磁碟陣列卡動不動就上萬元台幣,便宜的在主機板上面『附贈』的磁碟陣列功能可能又不支援某些高階功能, 例如低階主機板若有磁碟陣列晶片,通常僅支援到 RAID0 與 RAID1 ,鳥哥喜歡的 RAID 5 並沒有支援。 此外,作業系統也必須要擁有磁碟陣列卡的驅動程式,才能夠正確的捉到磁碟陣列所產生的磁碟機! 由於磁碟陣列有很多優秀的功能,然而硬體磁碟陣列卡偏偏又貴的很~因此就有發展出利用軟體來模擬磁碟陣列的功能, 這就是所謂的軟體磁碟陣列 (software RAID)。軟體磁碟陣列主要是透過軟體來模擬陣列的任務, 因此會損耗較多的系統資源,比如說 CPU 的運算與 I/O 匯流排的資源等。不過目前我們的個人電腦實在已經非常快速了, 因此以前的速度限制現在已經不存在!所以我們可以來玩一玩軟體磁碟陣列! 我們的 CentOS 提供的軟體磁碟陣列為 mdadm 這套軟體,這套軟體會以 partition 或 disk 為磁碟的單位,也就是說,你不需要兩顆以上的磁碟,只要有兩個以上的分割槽 (partition) 就能夠設計你的磁碟陣列了。此外, mdadm 支援剛剛我們前面提到的 RAID0/RAID1/RAID5/spare disk 等! 而且提供的管理機制還可以達到類似熱拔插的功能,可以線上 (檔案系統正常使用) 進行分割槽的抽換! 使用上也非常的方便呢! 另外你必須要知道的是,硬體磁碟陣列在 Linux 底下看起來就是一顆實際的大磁碟,因此硬體磁碟陣列的裝置檔名為 /dev/sd[a-p] ,因為使用到 SCSI 的模組之故。至於軟體磁碟陣列則是系統模擬的,因此使用的裝置檔名是系統的裝置檔, 檔名為 /dev/md0, /dev/md1...,兩者的裝置檔名並不相同!不要搞混了喔!因為很多朋友常常覺得奇怪, 怎麼他的 RAID 檔名跟我們這裡測試的軟體 RAID 檔名不同,所以這裡特別強調說明喔! 軟體磁碟陣列的設定很簡單呢!簡單到讓你很想笑喔!因為你只要使用一個指令即可!那就是 mdadm 這個指令。 這個指令在建立 RAID 的語法有點像這樣: [root@www ~]# mdadm --detail /dev/md0 [root@www ~]# mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N \ > --level=[015] --spare-devices=N /dev/sdx /dev/hdx... 選項與參數: --create :為建立 RAID 的選項; --auto=yes :決定建立後面接的軟體磁碟陣列裝置,亦即 /dev/md0, /dev/md1... --raid-devices=N :使用幾個磁碟 (partition) 作為磁碟陣列的裝置 --spare-devices=N :使用幾個磁碟作為備用 (spare) 裝置 --level=[015] :設定這組磁碟陣列的等級。支援很多,不過建議只要用 0, 1, 5 即可 --detail :後面所接的那個磁碟陣列裝置的詳細資訊 上面的語法中,最後面會接許多的裝置檔名,這些裝置檔名可以是整顆磁碟,例如 /dev/sdb , 也可以是分割槽,例如 /dev/sdb1 之類。不過,這些裝置檔名的總數必須要等於 --raid-devices 與 --spare-devices 的個數總和才行!鳥哥利用我的測試機來建置一個 RAID 5 的軟體磁碟陣列給您瞧瞧! 首先,將系統裡面過去練習過而目前用不到的分割槽通通刪除掉: [root@www ~]# fdisk -l Disk /dev/hda: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1288 10241437+ 83 Linux /dev/hda3 1289 1925 5116702+ 83 Linux /dev/hda4 1926 5005 24740100 5 Extended /dev/hda5 1926 2052 1020096 82 Linux swap / Solaris /dev/hda6 2053 2302 2008093+ 83 Linux /dev/hda7 2303 2334 257008+ 82 Linux swap / Solaris /dev/hda8 2335 2353 152586 83 Linux /dev/hda9 2354 2366 104391 83 Linux [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 9920624 3858800 5549756 42% / /dev/hda1 101086 21408 74459 23% /boot tmpfs 371332 0 371332 0% /dev/shm /dev/hda3 4956316 1056996 3643488 23% /home # 從上面可以發現,我的 /dev/hda6~/dev/hda9 沒有用到!將他刪除看看! [root@www ~]# fdisk /dev/hda Command (m for help): d Partition number (1-9): 9 Command (m for help): d Partition number (1-8): 8 Command (m for help): d Partition number (1-7): 7 Command (m for help): d Partition number (1-6): 6 Command (m for help): p Disk /dev/hda: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1288 10241437+ 83 Linux /dev/hda3 1289 1925 5116702+ 83 Linux /dev/hda4 1926 5005 24740100 5 Extended /dev/hda5 1926 2052 1020096 82 Linux swap / Solaris Command (m for help): w [root@www ~]# partprobe # 這個動作很重要!還記得吧!將核心的 partition table 更新! 底下是鳥哥希望做成的 RAID 5 環境:
最終我需要 5 個 1GB 的 partition 。由於鳥哥的系統僅有一顆磁碟,這顆磁碟剩餘容量約 20GB 是夠用的, 分割槽代號僅使用到 5 號,所以要製作成 RAID 5 應該是不成問題!接下來就是連續的建置流程囉!
如前所述,我需要 5 個 1GB 的分割槽,請利用 fdisk 來建置吧! [root@www ~]# fdisk /dev/hda Command (m for help): n First cylinder (2053-5005, default 2053): <==直接按下 [enter] Using default value 2053 Last cylinder or +size or +sizeM or +sizeK (2053-5005, default 5005): +1000M # 上述的動作請作五次! Command (m for help): p Disk /dev/hda: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1288 10241437+ 83 Linux /dev/hda3 1289 1925 5116702+ 83 Linux /dev/hda4 1926 5005 24740100 5 Extended /dev/hda5 1926 2052 1020096 82 Linux swap / Solaris /dev/hda6 2053 2175 987966 83 Linux /dev/hda7 2176 2298 987966 83 Linux /dev/hda8 2299 2421 987966 83 Linux /dev/hda9 2422 2544 987966 83 Linux /dev/hda10 2545 2667 987966 83 Linux # 上面的 6~10 號,就是我們需要的 partition 囉! Command (m for help): w [root@www ~]# partprobe
接下來就簡單啦!透過 mdadm 來建立磁碟陣列先! [root@www ~]# mdadm --create --auto=yes /dev/md0 --level=5 \
> --raid-devices=4 --spare-devices=1 /dev/hda{6,7,8,9,10}
# 詳細的參數說明請回去前面看看囉!這裡我透過 {} 將重複的項目簡化!
[root@www ~]# mdadm --detail /dev/md0
/dev/md0: <==RAID 裝置檔名
Version : 00.90.03
Creation Time : Tue Mar 10 17:47:51 2009 <==RAID 被建立的時間
Raid Level : raid5 <==RAID 等級為 RAID 5
Array Size : 2963520 (2.83 GiB 3.03 GB) <==此 RAID 的可用磁碟容量
Used Dev Size : 987840 (964.85 MiB 1011.55 MB) <==每個裝置的可用容量
Raid Devices : 4 <==用作 RAID 的裝置數量
Total Devices : 5 <==全部的裝置數量
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Tue Mar 10 17:52:23 2009
State : clean
Active Devices : 4 <==啟動的(active)裝置數量
Working Devices : 5 <==可動作的裝置數量
Failed Devices : 0 <==出現錯誤的裝置數量
Spare Devices : 1 <==預備磁碟的數量
Layout : left-symmetric
Chunk Size : 64K <==就是圖2.1.4內的小區塊
UUID : 7c60c049:57d60814:bd9a77f1:57e49c5b <==此裝置(RAID)識別碼
Events : 0.2
Number Major Minor RaidDevice State
0 3 6 0 active sync /dev/hda6
1 3 7 1 active sync /dev/hda7
2 3 8 2 active sync /dev/hda8
3 3 9 3 active sync /dev/hda9
4 3 10 - spare /dev/hda10
# 最後五行就是這五個裝置目前的情況,包括四個 active sync 一個 spare !
# 至於 RaidDevice 指的則是此 RAID 內的磁碟順序
由於磁碟陣列的建置需要一些時間,所以你最好等待數分鐘後再使用『 mdadm --detail /dev/md0 』去查閱你的磁碟陣列詳細資訊! 否則有可能看到某些磁碟正在『spare rebuilding』之類的建置字樣!透過上面的指令, 你就能夠建立一個 RAID5 且含有一顆 spare disk 的磁碟陣列囉!非常簡單吧! 除了指令之外,你也可以查閱如下的檔案來看看系統軟體磁碟陣列的情況: [root@www ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda9[3] hda10[4](S) hda8[2] hda7[1] hda6[0] <==第一行
2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] <==第二行
unused devices: <none>
上述的資料比較重要的在特別指出的第一行與第二行部分(註2):
這兩種方法都可以知道目前的磁碟陣列狀態啦!
接下來就是開始使用格式化工具啦!這部分就簡單到爆!不多說了,直接進行吧! [root@www ~]# mkfs -t ext3 /dev/md0 # 有趣吧!是 /dev/md0 做為裝置被格式化呢! [root@www ~]# mkdir /mnt/raid [root@www ~]# mount /dev/md0 /mnt/raid [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 9920624 3858820 5549736 42% / /dev/hda1 101086 21408 74459 23% /boot tmpfs 371332 0 371332 0% /dev/shm /dev/hda3 4956316 1056996 3643488 23% /home /dev/md0 2916920 69952 2698792 3% /mnt/raid # 看吧!多了一個 /dev/md0 的裝置,而且真的可以讓你使用呢!還不賴! 俗話說『天有不測風雲、人有旦夕禍福』,誰也不知道你的磁碟陣列內的裝置啥時會出差錯,因此, 瞭解一下軟體磁碟陣列的救援還是必須的!底下我們就來玩一玩救援的機制吧!首先來瞭解一下 mdadm 這方面的語法: [root@www ~]# mdadm --manage /dev/md[0-9] [--add 裝置] [--remove 裝置] \ > [--fail 裝置] 選項與參數: --add :會將後面的裝置加入到這個 md 中! --remove :會將後面的裝置由這個 md 中移除 --fail :會將後面的裝置設定成為出錯的狀態
首先,我們來處理一下,該如何讓一個磁碟變成錯誤,然後讓 spare disk 自動的開始重建系統呢? # 0. 先複製一些東西到 /mnt/raid 去,假設這個 RAID 已經在使用了
[root@www ~]# cp -a /etc /var/log /mnt/raid
[root@www ~]# df /mnt/raid ; du -sm /mnt/raid/*
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md0 2916920 188464 2580280 7% /mnt/raid
118 /mnt/raid/etc <==看吧!確實有資料在裡面喔!
8 /mnt/raid/log
1 /mnt/raid/lost+found
# 1. 假設 /dev/hda8 這個裝置出錯了!實際模擬的方式:
[root@www ~]# mdadm --manage /dev/md0 --fail /dev/hda8
mdadm: set /dev/hda8 faulty in /dev/md0
[root@www ~]# mdadm --detail /dev/md0
....(前面省略)....
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1 <==出錯的磁碟有一個!
Spare Devices : 1
....(中間省略)....
Number Major Minor RaidDevice State
0 3 6 0 active sync /dev/hda6
1 3 7 1 active sync /dev/hda7
4 3 10 2 spare rebuilding /dev/hda10
3 3 9 3 active sync /dev/hda9
5 3 8 - faulty spare /dev/hda8
# 看到沒!這的動作要快做才會看到! /dev/hda10 啟動了而 /dev/hda8 死掉了
[root@www ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda9[3] hda10[4] hda8[5](F) hda7[1] hda6[0]
2963520 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]
[>.......] recovery = 0.8% (9088/987840) finish=14.3min speed=1136K/sec
上面的畫面你得要快速的連續輸入那些 mdadm 的指令才看的到!因為你的 RAID 5 正在重建系統! 若你等待一段時間再輸入後面的觀察指令,則會看到如下的畫面了: # 2. 已經藉由 spare disk 重建完畢的 RAID 5 情況
[root@www ~]# mdadm --detail /dev/md0
....(前面省略)....
Number Major Minor RaidDevice State
0 3 6 0 active sync /dev/hda6
1 3 7 1 active sync /dev/hda7
2 3 10 2 active sync /dev/hda10
3 3 9 3 active sync /dev/hda9
4 3 8 - faulty spare /dev/hda8
[root@www ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 hda9[3] hda10[2] hda8[4](F) hda7[1] hda6[0]
2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
看吧!又恢復正常了!真好!我們的 /mnt/raid 檔案系統是完整的!並不需要卸載!很棒吧!
首先,我們再建立一個新的分割槽,這個分割槽要與其他分割槽一樣大才好!然後再利用 mdadm 移除錯誤的並加入新的! # 3. 建立新的分割槽
[root@www ~]# fdisk /dev/hda
Command (m for help): n
First cylinder (2668-5005, default 2668): <==這裡按 [enter]
Using default value 2668
Last cylinder or +size or +sizeM or +sizeK (2668-5005, default 5005): +1000M
Command (m for help): w
[root@www ~]# partprobe
# 此時系統會多一個 /dev/hda11 的分割槽喔!
# 4. 加入新的拔除有問題的磁碟
[root@www ~]# mdadm --manage /dev/md0 --add /dev/hda11 --remove /dev/hda8
mdadm: added /dev/hda11
mdadm: hot removed /dev/hda8
[root@www ~]# mdadm --detail /dev/md0
....(前面省略)....
0 3 6 0 active sync /dev/hda6
1 3 7 1 active sync /dev/hda7
2 3 10 2 active sync /dev/hda10
3 3 9 3 active sync /dev/hda9
4 3 11 - spare /dev/hda11
嘿嘿!你的磁碟陣列內的資料不但一直存在,而且你可以一直順利的運作 /mnt/raid 內的資料,即使 /dev/hda8 損毀了!然後透過管理的功能就能夠加入新磁碟且拔除壞掉的磁碟!注意,這一切都是在上線 (on-line) 的情況下進行! 所以,您說這樣的咚咚好不好用啊! ^_^ 新的 distribution 大多會自己搜尋 /dev/md[0-9] 然後在開機的時候給予設定好所需要的功能。不過鳥哥還是建議你, 修改一下設定檔吧! ^_^。software RAID 也是有設定檔的,這個設定檔在 /etc/mdadm.conf !這個設定檔內容很簡單, 你只要知道 /dev/md0 的 UUID 就能夠設定這個檔案啦!這裡鳥哥僅介紹他最簡單的語法: [root@www ~]# mdadm --detail /dev/md0 | grep -i uuid
UUID : 7c60c049:57d60814:bd9a77f1:57e49c5b
# 後面那一串資料,就是這個裝置向系統註冊的 UUID 識別碼!
# 開始設定 mdadm.conf
[root@www ~]# vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b
# RAID裝置 識別碼內容
# 開始設定開機自動掛載並測試
[root@www ~]# vi /etc/fstab
/dev/md0 /mnt/raid ext3 defaults 1 2
[root@www ~]# umount /dev/md0; mount -a
[root@www ~]# df /mnt/raid
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md0 2916920 188464 2580280 7% /mnt/raid
# 你得確定可以順利掛載,並且沒有發生任何錯誤!
如果到這裡都沒有出現任何問題!接下來就請 reboot 你的系統並等待看看能否順利的啟動吧! ^_^ 除非你未來就是要使用這顆 software RAID (/dev/md0),否則你勢必要跟鳥哥一樣,將這個 /dev/md0 關閉! 因為他畢竟是我們在這個測試機上面的練習裝置啊!為什麼要關掉他呢?因為這個 /dev/md0 其實還是使用到我們系統的磁碟分割槽, 在鳥哥的例子裡面就是 /dev/hda{6,7,8,9,10,11},如果你只是將 /dev/md0 卸載,然後忘記將 RAID 關閉, 結果就是....未來你在重新分割 /dev/hdaX 時可能會出現一些莫名的錯誤狀況啦!所以才需要關閉 software RAID 的步驟! 那如何關閉呢?也是簡單到爆炸!(請注意,確認你的 /dev/md0 確實不要用且要關閉了才進行底下的玩意兒) # 1. 先卸載且刪除設定檔內與這個 /dev/md0 有關的設定: [root@www ~]# umount /dev/md0 [root@www ~]# vi /etc/fstab /dev/md0 /mnt/raid ext3 defaults 1 2 # 將這一行刪除掉!或者是註解掉也可以! # 2. 直接關閉 /dev/md0 的方法! [root@www ~]# mdadm --stop /dev/md0 mdadm: stopped /dev/md0 <==不囉唆!這樣就關閉了! [root@www ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] unused devices: <none> <==看吧!確實不存在任何陣列裝置! [root@www ~]# vi /etc/mdadm.conf ARRAY /dev/md0 UUID=7c60c049:57d60814:bd9a77f1:57e49c5b # 一樣啦!刪除他或是註解他! Tips: 想像一個情況,你在當初規劃主機的時候將 /home 只給他 50G ,等到使用者眾多之後導致這個 filesystem 不夠大, 此時你能怎麼作?多數的朋友都是這樣:再加一顆新硬碟,然後重新分割、格式化,將 /home 的資料完整的複製過來, 然後將原本的 partition 卸載重新掛載新的 partition 。啊!好忙碌啊!若是第二次分割卻給的容量太多!導致很多磁碟容量被浪費了! 你想要將這個 partition 縮小時,又該如何作?將上述的流程再搞一遍!唉~煩死了,尤其複製很花時間ㄟ~有沒有更簡單的方法呢? 有的!那就是我們這個小節要介紹的 LVM 這玩意兒! LVM 的重點在於『可以彈性的調整 filesystem 的容量!』而並非在於效能與資料保全上面。 需要檔案的讀寫效能或者是資料的可靠性,請參考前面的 RAID 小節。 LVM 可以整合多個實體 partition 在一起, 讓這些 partitions 看起來就像是一個磁碟一樣!而且,還可以在未來新增或移除其他的實體 partition 到這個 LVM 管理的磁碟當中。 如此一來,整個磁碟空間的使用上,實在是相當的具有彈性啊! 既然 LVM 這麼好用,那就讓我們來瞧瞧這玩意吧! LVM 的全名是 Logical Volume Manager,中文可以翻譯作邏輯捲軸管理員。之所以稱為『捲軸』可能是因為可以將 filesystem 像捲軸一樣伸長或縮短之故吧!LVM 的作法是將幾個實體的 partitions (或 disk) 透過軟體組合成為一塊看起來是獨立的大磁碟 (VG) ,然後將這塊大磁碟再經過分割成為可使用分割槽 (LV), 最終就能夠掛載使用了。但是為什麼這樣的系統可以進行 filesystem 的擴充或縮小呢?其實與一個稱為 PE 的項目有關! 底下我們就得要針對這幾個項目來好好聊聊!
我們實際的 partition 需要調整系統識別碼 (system ID) 成為 8e (LVM 的識別碼),然後再經過 pvcreate 的指令將他轉成 LVM 最底層的實體捲軸 (PV) ,之後才能夠將這些 PV 加以利用! 調整 system ID 的方是就是透過 fdisk 啦!
所謂的 LVM 大磁碟就是將許多 PV 整合成這個 VG 的東西就是啦!所以 VG 就是 LVM 組合起來的大磁碟!這麼想就好了。 那麼這個大磁碟最大可以到多少容量呢?這與底下要說明的 PE 有關喔~因為每個 VG 最多僅能包含 65534 個 PE 而已。 如果使用 LVM 預設的參數,則一個 VG 最大可達 256GB 的容量啊!(參考底下的 PE 說明)
LVM 預設使用 4MB 的 PE 區塊,而 LVM 的 VG 最多僅能含有 65534 個 PE ,因此預設的 LVM VG 會有 4M*65534/(1024M/G)=256G。 這個 PE 很有趣喔!他是整個 LVM 最小的儲存區塊,也就是說,其實我們的檔案資料都是藉由寫入 PE 來處理的。 簡單的說,這個 PE 就有點像檔案系統裡面的 block 大小啦。 這樣說應該就比較好理解了吧?所以調整 PE 會影響到 VG 的最大容量喔!
最終的 VG 還會被切成 LV,這個 LV 就是最後可以被格式化使用的類似分割槽的咚咚了!那麼 LV 是否可以隨意指定大小呢? 當然不可以!既然 PE 是整個 LVM 的最小儲存單位,那麼 LV 的大小就與在此 LV 內的 PE 總數有關。 為了方便使用者利用 LVM 來管理其系統,因此 LV 的裝置檔名通常指定為『 /dev/vgname/lvname 』的樣式! 此外,我們剛剛有談到 LVM 可彈性的變更 filesystem 的容量,那是如何辦到的?其實他就是透過『交換 PE 』來進行資料轉換, 將原本 LV 內的 PE 移轉到其他裝置中以降低 LV 容量,或將其他裝置的 PE 加到此 LV 中以加大容量! VG、LV 與 PE 的關係有點像下圖:
如上圖所示,VG 內的 PE 會分給虛線部分的 LV,如果未來這個 VG 要擴充的話,加上其他的 PV 即可。 而最重要的 LV 如果要擴充的話,也是透過加入 VG 內沒有使用到的 PE 來擴充的!
透過 PV, VG, LV 的規劃之後,再利用 mkfs 就可以將你的 LV 格式化成為可以利用的檔案系統了!而且這個檔案系統的容量在未來還能夠進行擴充或減少, 而且裡面的資料還不會被影響!實在是很『福氣啦!』那實作方面要如何進行呢?很簡單呢! 整個流程由基礎到最終的結果可以這樣看:
如此一來,我們就可以利用 LV 這個玩意兒來進行系統的掛載了。不過,你應該要覺得奇怪的是,那麼我的資料寫入這個 LV 時,到底他是怎麼寫入硬碟當中的? 呵呵!好問題~其實,依據寫入機制的不同,而有兩種方式:
基本上,LVM 最主要的用處是在實現一個可以彈性調整容量的檔案系統上, 而不是在建立一個效能為主的磁碟上,所以,我們應該利用的是 LVM 可以彈性管理整個 partition 大小的用途上,而不是著眼在效能上的。因此, LVM 預設的讀寫模式是線性模式啦! 如果你使用 triped 模式,要注意,當任何一個 partition 『歸天』時,所有的資料都會『損毀』的! 所以啦,不是很適合使用這種模式啦!如果要強調效能與備份,那麼就直接使用 RAID 即可, 不需要用到 LVM 啊! LVM 必需要核心有支援且需要安裝 lvm2 這個軟體,好佳在的是, CentOS 與其他較新的 distributions 已經預設將 lvm 的支援與軟體都安裝妥當了!所以你不需要擔心這方面的問題!用就對了! 鳥哥使用的測試機又要出動了喔!剛剛我們才練習過 RAID,必須要將一堆目前沒有用到的分割槽先殺掉, 然後再重建新的分割槽。並且由於鳥哥僅有一個 40GB 的磁碟,所以底下的練習都僅針對同一顆磁碟來作的。 我的要求有點像這樣:
鳥哥就不仔細的介紹實體分割了,請您自行參考第八章的 fdisk 來達成底下的範例:(注意:修改系統識別碼請使用 t 這個 fdisk 內的指令來處理即可) [root@www ~]# fdisk /dev/hda <==其他流程請自行參考第八章處理 [root@www ~]# partprobe <==別忘記這個動作了!粉重要! [root@www ~]# fdisk -l Disk /dev/hda: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1288 10241437+ 83 Linux /dev/hda3 1289 1925 5116702+ 83 Linux /dev/hda4 1926 5005 24740100 5 Extended /dev/hda5 1926 2052 1020096 82 Linux swap / Solaris /dev/hda6 2053 2235 1469916 8e Linux LVM /dev/hda7 2236 2418 1469916 8e Linux LVM /dev/hda8 2419 2601 1469916 8e Linux LVM /dev/hda9 2602 2784 1469916 8e Linux LVM 上面的 /dev/hda{6,7,8,9} 這四個分割槽就是我們的實體分割槽!也就是底下會實際用到的資訊! 注意看,那個 8e 的出現會導致 system 變成『 Linux LVM 』哩!其實沒有設定成為 8e 也沒關係, 不過某些 LVM 的偵測指令可能會偵測不到該 partition 就是了!接下來,就一個一個的處理各流程吧!
要建立 PV 其實很簡單,只要直接使用 pvcreate 即可!我們來談一談與 PV 有關的指令吧!
那就直接來瞧一瞧吧! # 1. 檢查有無 PV 在系統上,然後將 /dev/hda6~/dev/hda9 建立成為 PV 格式
[root@www ~]# pvscan
No matching physical volumes found <==找不到任何的 PV 存在喔!
[root@www ~]# pvcreate /dev/hda{6,7,8,9}
Physical volume "/dev/hda6" successfully created
Physical volume "/dev/hda7" successfully created
Physical volume "/dev/hda8" successfully created
Physical volume "/dev/hda9" successfully created
# 這個指令可以一口氣建立這四個 partition 成為 PV 啦!注意大括號的用途
[root@www ~]# pvscan
PV /dev/hda6 lvm2 [1.40 GB]
PV /dev/hda7 lvm2 [1.40 GB]
PV /dev/hda8 lvm2 [1.40 GB]
PV /dev/hda9 lvm2 [1.40 GB]
Total: 4 [5.61 GB] / in use: 0 [0 ] / in no VG: 4 [5.61 GB]
# 這就分別顯示每個 PV 的資訊與系統所有 PV 的資訊。尤其最後一行,顯示的是:
# 整體 PV 的量 / 已經被使用到 VG 的 PV 量 / 剩餘的 PV 量
# 2. 更詳細的列示出系統上面每個 PV 的個別資訊:
[root@www ~]# pvdisplay
"/dev/hda6" is a new physical volume of "1.40 GB"
--- NEW Physical volume ---
PV Name /dev/hda6 <==實際的 partition 裝置名稱
VG Name <==因為尚未分配出去,所以空白!
PV Size 1.40 GB <==就是容量說明
Allocatable NO <==是否已被分配,結果是 NO
PE Size (KByte) 0 <==在此 PV 內的 PE 大小
Total PE 0 <==共分割出幾個 PE
Free PE 0 <==沒被 LV 用掉的 PE
Allocated PE 0 <==尚可分配出去的 PE 數量
PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
....(底下省略)....
# 由於 PE 是在建立 VG 時才給予的參數,因此在這裡看到的 PV 裡頭的 PE 都會是 0
# 而且也沒有多餘的 PE 可供分配 (allocatable)。
講是很難,作是很簡單!這樣就將 PV 建立了兩個囉!簡單到不行吧! ^_^!繼續來玩 VG 去!
建立 VG 及 VG 相關的指令也不少,我們來看看:
與 PV 不同的是, VG 的名稱是自訂的!我們知道 PV 的名稱其實就是 partition 的裝置代號, 但是這個 VG 名稱則可以隨便你自己取啊!在底下的例子當中,我將 VG 名稱取名為 vbirdvg 。建立這個 VG 的流程是這樣的: [root@www ~]# vgcreate [-s N[mgt]] VG名稱 PV名稱
選項與參數:
-s :後面接 PE 的大小 (size) ,單位可以是 m, g, t (大小寫均可)
# 1. 將 /dev/hda6-8 建立成為一個 VG,且指定 PE 為 16MB 喔!
[root@www ~]# vgcreate -s 16M vbirdvg /dev/hda{6,7,8}
Volume group "vbirdvg" successfully created
[root@www ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vbirdvg" using metadata type lvm2
# 確實存在這個 vbirdvg 的 VG 啦!
[root@www ~]# pvscan
PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free]
PV /dev/hda9 lvm2 [1.40 GB]
Total: 4 [5.57 GB] / in use: 3 [4.17 GB] / in no VG: 1 [1.40 GB]
# 嘿嘿!發現沒!有三個 PV 被用去,剩下一個 /dev/hda9 的 PV 沒被用掉!
[root@www ~]# vgdisplay
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 4.17 GB <==整體的 VG 容量有這麼大
PE Size 16.00 MB <==內部每個 PE 的大小
Total PE 267 <==總共的 PE 數量共有這麼多!
Alloc PE / Size 0 / 0
Free PE / Size 267 / 4.17 GB
VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO
# 最後那三行指的就是 PE 能夠使用的情況!由於尚未切出 LV,因此所有的 PE
# 均可自由使用。
這樣就建立一個 VG 了!假設我們要增加這個 VG 的容量,因為我們還有 /dev/hda9 嘛!此時你可以這樣做: # 2. 將剩餘的 PV (/dev/hda9) 丟給 vbirdvg 吧! [root@www ~]# vgextend vbirdvg /dev/hda9 Volume group "vbirdvg" successfully extended [root@www ~]# vgdisplay ....(前面省略).... VG Size 5.56 GB PE Size 16.00 MB Total PE 356 Alloc PE / Size 0 / 0 Free PE / Size 356 / 5.56 GB VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO # 基本上,不難吧!這樣就可以抽換整個 VG 的大小啊! 我們多了一個裝置喔!接下來為這個 vbirdvg 進行分割吧!透過 LV 功能來處理!
創造出 VG 這個大磁碟之後,再來就是要建立分割區啦!這個分割區就是所謂的 LV 囉!假設我要將剛剛那個 vbirdvg 磁碟,分割成為 vbirdlv ,整個 VG 的容量都被分配到 vbirdlv 裡面去!先來看看能使用的指令後,就直接工作了先!
[root@www ~]# lvcreate [-L N[mgt]] [-n LV名稱] VG名稱
[root@www ~]# lvcreate [-l N] [-n LV名稱] VG名稱
選項與參數:
-L :後面接容量,容量的單位可以是 M,G,T 等,要注意的是,最小單位為 PE,
因此這個數量必須要是 PE 的倍數,若不相符,系統會自行計算最相近的容量。
-l :後面可以接 PE 的『個數』,而不是數量。若要這麼做,得要自行計算 PE 數。
-n :後面接的就是 LV 的名稱啦!
更多的說明應該可以自行查閱吧! man lvcreate
# 1. 將整個 vbirdvg 通通分配給 vbirdlv 啊,要注意, PE 共有 356 個。
[root@www ~]# lvcreate -l 356 -n vbirdlv vbirdvg
Logical volume "vbirdlv" created
# 由於本案例中每個 PE 為 16M ,因此上述的指令也可以使用如下的方式來建立:
# lvcreate -L 5.56G -n vbirdlv vbirdvg
[root@www ~]# ll /dev/vbirdvg/vbirdlv
lrwxrwxrwx 1 root root 27 Mar 11 16:49 /dev/vbirdvg/vbirdlv ->
/dev/mapper/vbirdvg-vbirdlv
# 看見了沒有啊!這就是我們最重要的一個玩意兒了!
[root@www ~]# lvdisplay
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdlv <==這個才是 LV 的全名!
VG Name vbirdvg
LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0
LV Write Access read/write
LV Status available
# open 0
LV Size 5.56 GB <==這個 LV 的容量這麼大!
Current LE 356
Segments 4
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
如此一來,整個 partition 也準備好啦!接下來,就是針對這個 LV 來處理啦!要特別注意的是, VG 的名稱為 vbirdvg , 但是 LV 的名稱必須使用全名!亦即是 /dev/vbirdvg/vbirdlv 才對喔! 後續的處理都是這樣的!這點初次接觸 LVM 的朋友很容易搞錯!
這個部分鳥哥我就不再多加解釋了!直接來進行吧! # 1. 格式化、掛載與觀察我們的 LV 吧!
[root@www ~]# mkfs -t ext3 /dev/vbirdvg/vbirdlv <==注意 LV 全名!
[root@www ~]# mkdir /mnt/lvm
[root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 9920624 3858984 5549572 42% /
/dev/hda3 4956316 1056996 3643488 23% /home
/dev/hda1 101086 21408 74459 23% /boot
tmpfs 371332 0 371332 0% /dev/shm
/dev/mapper/vbirdvg-vbirdlv
5741020 142592 5306796 3% /mnt/lvm
[root@www ~]# cp -a /etc /var/log /mnt/lvm
其實 LV 的名稱建置成為 /dev/vbirdvg/vbirdlv 是為了讓使用者直覺式的找到我們所需要的資料, 實際上 LVM 使用的裝置是放置到 /dev/mapper/ 目錄下的!所以你才會看到上表當中的特殊字體部分。 透過這樣的功能,我們現在已經建置好一個 LV 了!你可以自由的應用 /mnt/lvm 內的所有資源! 我們不是說 LVM 最大的特色就是彈性調整磁碟容量嗎?好!那我們就來處理一下,如果要放大 LV 的容量時, 該如何進行完整的步驟呢?其實一點都不難喔!你只要這樣做即可:
其中最後一個步驟最重要!我們在第八章當中知道, 整個檔案系統在最初格式化的時候就建立了 inode/block/superblock 等資訊,要改變這些資訊是很難的! 不過因為檔案系統格式化的時候建置的是多個 block group ,因此我們可以透過在檔案系統當中增加 block group 的方式來增減檔案系統的量!而增減 block group 就是利用 resize2fs 啦!所以最後一步是針對檔案系統來處理的, 前面幾步則是針對 LVM 的實際容量大小! # 1. 處理出一個 3GB 的新的 partition ,在鳥哥的系統中應該是 /dev/hda10
[root@www ~]# fdisk /dev/hda <==其他的動作請自行處理
[root@www ~]# partprobe
[root@www ~]# fdisk -l
Device Boot Start End Blocks Id System
....(中間省略)....
/dev/hda10 2785 3150 2939863+ 8e Linux LVM
# 這個就是我們要的新的 partition 囉!
# 2. 建立新的 PV:
[root@www ~]# pvcreate /dev/hda10
Physical volume "/dev/hda10" successfully created
[root@www ~]# pvscan
PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda9 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda10 lvm2 [2.80 GB]
Total: 5 [8.37 GB] / in use: 4 [5.56 GB] / in no VG: 1 [2.80 GB]
# 可以看到 /dev/hda10 是新加入並且尚未被使用的喔!
# 3. 加大 VG ,利用 vgextend 功能!
[root@www ~]# vgextend vbirdvg /dev/hda10
Volume group "vbirdvg" successfully extended
[root@www ~]# vgdisplay
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 5
Act PV 5
VG Size 8.36 GB
PE Size 16.00 MB
Total PE 535
Alloc PE / Size 356 / 5.56 GB
Free PE / Size 179 / 2.80 GB
VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO
# 不但整體 VG 變大了!而且剩餘的 PE 共有 179 個,容量則為 2.80G
# 4. 放大 LV 吧!利用 lvresize 的功能來增加!
[root@www ~]# lvresize -l +179 /dev/vbirdvg/vbirdlv
Extending logical volume vbirdlv to 8.36 GB
Logical volume vbirdlv successfully resized
# 這樣就增加了 LV 了喔!lvresize 的語法很簡單,基本上同樣透過 -l 或 -L 來增加!
# 若要增加則使用 + ,若要減少則使用 - !詳細的選項請參考 man lvresize 囉!
[root@www ~]# lvdisplay
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdlv
VG Name vbirdvg
LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0
LV Write Access read/write
LV Status available
# open 1
LV Size 8.36 GB
Current LE 535
Segments 5
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@www ~]# df /mnt/lvm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
5741020 261212 5188176 5% /mnt/lvm
看到了吧?最終的結果中 LV 真的有放大到 8.36GB 喔!但是檔案系統卻沒有相對增加! 而且,我們的 LVM 可以線上直接處理,並不需要特別給他 umount 哩!真是人性化! 但是還是得要處理一下檔案系統的容量啦!開始觀察一下檔案系統,然後使用 resize2fs 來處理一下吧! # 5.1 先看一下原本的檔案系統內的 superblock 記錄情況吧!
[root@www ~]# dumpe2fs /dev/vbirdvg/vbirdlv
dumpe2fs 1.39 (29-May-2006)
....(中間省略)....
Block count: 1458176 <==這個filesystem的 block 總數
....(中間省略)....
Blocks per group: 32768 <==多少個 block 設定成為一個 block group
Group 0: (Blocks 0-32767) <==括號內為 block 的號碼
....(中間省略)....
Group 44: (Blocks 1441792-1458175) <==這是本系統中最後一個 group
....(後面省略)....
# 5.2 resize2fs 的語法
[root@www ~]# resize2fs [-f] [device] [size]
選項與參數:
-f :強制進行 resize 的動作!
[device]:裝置的檔案名稱;
[size] :可以加也可以不加。如果加上 size 的話,那麼就必須要給予一個單位,
譬如 M, G 等等。如果沒有 size 的話,那麼預設使用『整個 partition』
的容量來處理!
# 5.3 完整的將 LV 的容量擴充到整個 filesystem 吧!
[root@www ~]# resize2fs /dev/vbirdvg/vbirdlv
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-line resizing
Performing an on-line resize of /dev/vbirdvg/vbirdlv to 2191360 (4k) blocks.
The filesystem on /dev/vbirdvg/vbirdlv is now 2191360 blocks long.
# 可怕吧!這一版的 lvm 竟然還可以線上進行 resize 的功能哩!真好!
[root@www ~]# df /mnt/lvm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
8628956 262632 7931368 4% /mnt/lvm
[root@www ~]# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x 17 root root 4096 Mar 11 14:17 log
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
# 剛剛複製進去的資料可還是存在的喔!並沒有消失不見!
嘿嘿!真的放大了吧!而且如果你已經有填資料在 LVM 磁區當中的話!這個資料是不會死掉的喔!還是繼續存在原本的磁區當中啦! 整個動作竟然這麼簡單就完成了!原本的資料還是一直存在而不會消失~您說, LVM 好不好用啊! 此外,如果你再以 dumpe2fs 來檢查 /dev/vbirdvg/vbirdlv 時,就會發現後續的 Group 增加了! 如果還是搞不清楚什麼是 block group 時,請回到第八章看一下該章內圖1.3.1的介紹吧! 上一小節我們談到的是放大容量,現在來談到的是縮小容量喔!假設我們想將 /dev/hda6 抽離出來! 那該如何處理啊?就讓上一小節的流程倒轉過來即可啊!我們就直接來玩吧! # 1. 先找出 /dev/hda6 的容量大小,並嘗試計算檔案系統需縮小到多少
[root@www ~]# pvdisplay
--- Physical volume ---
PV Name /dev/hda6
VG Name vbirdvg
PV Size 1.40 GB / not usable 11.46 MB
Allocatable yes (but full)
PE Size (KByte) 16384
Total PE 89
Free PE 0
Allocated PE 89
PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN
# 從這裡可以看出 /dev/hda6 有多大,而且含有 89 個 PE 的量喔!
# 那如果要使用 resize2fs 時,則總量減去 1.40GB 就對了!
[root@www ~]# pvscan
PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda9 VG vbirdvg lvm2 [1.39 GB / 0 free]
PV /dev/hda10 VG vbirdvg lvm2 [2.80 GB / 0 free]
Total: 5 [8.36 GB] / in use: 5 [8.36 GB] / in no VG: 0 [0 ]
# 從上面可以發現如果扣除 /dev/hda6 則剩餘容量有:1.39*3+2.8=6.97
# 2. 就直接降低檔案系統的容量吧!
[root@www ~]# resize2fs /dev/vbirdvg/vbirdlv 6900M
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-line resizing
On-line shrinking from 2191360 to 1766400 not supported.
# 容量好像不能夠寫小數點位數,因此 6.9G 是錯誤的,鳥哥就使用 6900M 了。
# 此外,放大可以線上直接進行,縮小檔案系統似乎無法支援!所以要這樣做:
[root@www ~]# umount /mnt/lvm
[root@www ~]# resize2fs /dev/vbirdvg/vbirdlv 6900M
resize2fs 1.39 (29-May-2006)
Please run 'e2fsck -f /dev/vbirdvg/vbirdlv' first.
# 他要我們先進行磁碟檢查!不囉唆!那就直接進行吧!
[root@www ~]# e2fsck -f /dev/vbirdvg/vbirdlv
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vbirdvg/vbirdlv: 2438/1087008 files (0.1% non-contiguous),
[root@www ~]# resize2fs /dev/vbirdvg/vbirdlv 6900M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vbirdvg/vbirdlv to 1766400 (4k) blocks.
The filesystem on /dev/vbirdvg/vbirdlv is now 1766400 blocks long.
# 再來 resize2fs 一次就能夠成功了!如上所示啊!
[root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm
[root@www ~]# df /mnt/lvm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
6955584 262632 6410328 4% /mnt/lvm
然後再來就是將 LV 的容量降低!要注意的是,我們想要抽離的是 /dev/hda6,這個 PV 有 89 個 PE (上面的 pvdisplay 查詢到的結果)。所以要這樣進行: # 3. 降低 LV 的容量,同時我們知道 /dev/hda6 有 89 個 PE [root@www ~]# lvresize -l -89 /dev/vbirdvg/vbirdlv WARNING: Reducing active and open logical volume to 6.97 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vbirdlv? [y/n]: y Reducing logical volume vbirdlv to 6.97 GB Logical volume vbirdlv successfully resized # 會有警告訊息!但是我們的實際資料量還是比 6.97G 小,所以就 y 下去吧! [root@www ~]# lvdisplay --- Logical volume --- LV Name /dev/vbirdvg/vbirdlv VG Name vbirdvg LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0 LV Write Access read/write LV Status available # open 1 LV Size 6.97 GB Current LE 446 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 很簡單吧!這樣就將 LV 縮小了!接下來就要將 /dev/hda6 移出 vbirdvg 這個 VG 之外囉! 我們得要先確定 /dev/hda6 裡面的 PE 完全不被使用後,才能夠將 /dev/hda6 抽離! 所以得要這樣進行: # 4.1 先確認 /dev/hda6 是否將 PE 都移除了! [root@www ~]# pvdisplay --- Physical volume --- PV Name /dev/hda6 VG Name vbirdvg PV Size 1.40 GB / not usable 11.46 MB Allocatable yes (but full) PE Size (KByte) 16384 Total PE 89 Free PE 0 Allocated PE 89 PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN ....(中間省略).... --- Physical volume --- PV Name /dev/hda10 VG Name vbirdvg PV Size 2.80 GB / not usable 6.96 MB Allocatable yes PE Size (KByte) 16384 Total PE 179 Free PE 89 Allocated PE 90 PV UUID 7MfcG7-y9or-0Jmb-H7RO-5Pa5-D3qB-G426Vq # 搞了老半天,沒有被使用的 PE 竟然在 /dev/hda10 !此時得要搬移 PE 囉! [root@www ~]# pvmove /dev/hda6 /dev/hda10 # pvmove 來源PV 目標PV ,可以將 /dev/hda6 內的 PE 通通移動到 /dev/hda10 # 尚未被使用的 PE 去 (Free PE)。 # 4.2 將 /dev/hda6 移出 vbirdvg 中! [root@www ~]# vgreduce vbirdvg /dev/hda6 Removed "/dev/hda6" from volume group "vbirdvg" [root@www ~]# pvscan PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda9 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda10 VG vbirdvg lvm2 [2.80 GB / 0 free] PV /dev/hda6 lvm2 [1.40 GB] Total: 5 [8.37 GB] / in use: 4 [6.97 GB] / in no VG: 1 [1.40 GB] [root@www ~]# pvremove /dev/hda6 Labels on physical volume "/dev/hda6" successfully wiped 很有趣吧!這樣你的檔案系統以及實際的 LV 與 VG 通通變小了,而且那個 /dev/hda6 還真的可以拿出來! 可以進行其他的用途啦!非常簡單吧! 現在你知道 LVM 的好處咯,未來如果你有想要增加某個 LVM 的容量時,就可以透過這個放大、縮小的功能來處理。 那麼 LVM 除了這些功能之外,還有什麼能力呢?其實他還有一個重要的能力,那就是系統快照 (snapshot)。 什麼是系統快照啊?快照就是將當時的系統資訊記錄下來,就好像照相記錄一般! 未來若有任何資料更動了,則原始資料會被搬移到快照區,沒有被更動的區域則由快照區與檔案系統共享。 用講的好像很難懂,我們用圖解說明一下好了:
左圖為最初建置系統快照區的狀況,LVM 會預留一個區域 (左圖的左側三個 PE 區塊) 作為資料存放處。 此時快照區內並沒有任何資料,而快照區與系統區共享所有的 PE 資料, 因此你會看到快照區的內容與檔案系統是一模一樣的。 等到系統運作一陣子後,假設 A 區域的資料被更動了 (上面右圖所示),則更動前系統會將該區域的資料移動到快照區, 所以在右圖的快照區被佔用了一塊 PE 成為 A,而其他 B 到 I 的區塊則還是與檔案系統共用! 照這樣的情況來看,LVM 的系統快照是非常棒的『備份工具』,因為他只有備份有被更動到的資料, 檔案系統內沒有被變更的資料依舊保持在原本的區塊內,但是 LVM 快照功能會知道那些資料放置在哪裡, 因此『快照』當時的檔案系統就得以『備份』下來,且快照所佔用的容量又非常小!所以您說,這不是很棒的工具又是什麼? 那麼快照區要如何建立與使用呢?首先,由於快照區與原本的 LV 共用很多 PE 區塊,因此快照區與被快照的 LV 必須要在同一個 VG 上頭。但是我們剛剛將 /dev/hda6 移除 vbirdvg 了,目前 vbirdvg 剩下的容量為 0 !因此,在這個小節裡面我們得要再加入 /dev/hda6 到我們的 VG 後, 才能繼續建立快照區囉!底下的動作趕緊再來玩玩看!
底下的動作主要再增加需要的 VG 容量,然後再透過 lvcreate -s 的功能建立快照區 # 1. 先觀察 VG 還剩下多少剩餘容量 [root@www ~]# vgdisplay --- Volume group --- VG Name vbirdvg ....(其他省略).... VG Size 6.97 GB PE Size 16.00 MB Total PE 446 Alloc PE / Size 446 / 6.97 GB Free PE / Size 0 / 0 <==沒有多餘的 PE 可用! # 2. 將剛剛移除的 /dev/hda6 加入這個 VG 吧! [root@www ~]# pvcreate /dev/hda6 Physical volume "/dev/hda6" successfully created [root@www ~]# vgextend vbirdvg /dev/hda6 Volume group "vbirdvg" successfully extended [root@www ~]# vgdisplay --- Volume group --- VG Name vbirdvg ....(其他省略).... VG Size 8.36 GB PE Size 16.00 MB Total PE 535 Alloc PE / Size 446 / 6.97 GB Free PE / Size 89 / 1.39 GB <==多出了 89 個 PE 可用囉! # 3. 利用 lvcreate 建立系統快照區,我們取名為 vbirdss,且給予 60 個 PE [root@www ~]# lvcreate -l 60 -s -n vbirdss /dev/vbirdvg/vbirdlv Logical volume "vbirdss" created # 上述的指令中最重要的是那個 -s 的選項!代表是 snapshot 快照功能之意! # -n 後面接快照區的裝置名稱, /dev/.... 則是要被快照的 LV 完整檔名。 # -l 後面則是接使用多少個 PE 來作為這個快照區使用。 [root@www ~]# lvdisplay --- Logical volume --- LV Name /dev/vbirdvg/vbirdss VG Name vbirdvg LV UUID K2tJ5E-e9mI-89Gw-hKFd-4tRU-tRKF-oeB03a LV Write Access read/write LV snapshot status active destination for /dev/vbirdvg/vbirdlv LV Status available # open 0 LV Size 6.97 GB <==被快照的原 LV 磁碟容量 Current LE 446 COW-table size 960.00 MB <==快照區的實際容量 COW-table LE 60 <==快照區佔用的 PE 數量 Allocated to snapshot 0.00% Snapshot chunk size 4.00 KB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 您看看!這個 /dev/vbirdvg/vbirdss 快照區就被建立起來了!而且他的 VG 量竟然與原本的 /dev/vbirdvg/vbirdlv 相同!也就是說,如果你真的掛載這個裝置時,看到的資料會跟原本的 vbirdlv 相同喔!我們就來測試看看: [root@www ~]# mkdir /mnt/snapshot
[root@www ~]# mount /dev/vbirdvg/vbirdss /mnt/snapshot
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 9920624 3859032 5549524 42% /
/dev/hda3 4956316 1056996 3643488 23% /home
/dev/hda1 101086 21408 74459 23% /boot
tmpfs 371332 0 371332 0% /dev/shm
/dev/mapper/vbirdvg-vbirdlv
6955584 262632 6410328 4% /mnt/lvm
/dev/mapper/vbirdvg-vbirdss
6955584 262632 6410328 4% /mnt/snapshot
# 有沒有看到!這兩個咚咚竟然是一模一樣喔!我們根本沒有動過
# /dev/vbirdvg/vbirdss 對吧!不過這裡面會主動記錄原 vbirdlv 的內容!
[root@www ~]# umount /mnt/snapshot
# 最後將他卸載!我們準備來玩玩有趣的東西!
首先,我們來玩一下,如何利用快照區復原系統吧!不過你要注意的是,你要復原的資料量不能夠高於快照區所能負載的實際容量。由於原始資料會被搬移到快照區, 如果你的快照區不夠大,若原始資料被更動的實際資料量比快照區大,那麼快照區當然容納不了,這時候快照功能會失效喔! 所以上面的案例中鳥哥才給予 60 個 PE (共 900MB) 作為快照區存放資料用。 我們的 /mnt/lvm 已經有 /mnt/lvm/etc, /mnt/lvm/log 等目錄了,接下來我們將這個檔案系統的內容作個變更, 然後再以快照區資料還原看看: # 1. 先將原本的 /dev/vbirdvg/vbirdlv 內容作些變更,增增減減一些目錄吧!
[root@www ~]# df /mnt/lvm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
6955584 262632 6410328 4% /mnt/lvm
[root@www ~]# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x 17 root root 4096 Mar 11 14:17 log
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
[root@www ~]# rm -r /mnt/lvm/log
[root@www ~]# cp -a /boot /lib /sbin /mnt/lvm
[root@www ~]# ll /mnt/lvm
drwxr-xr-x 4 root root 4096 Dec 15 16:28 boot
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x 14 root root 4096 Sep 5 2008 lib
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
drwxr-xr-x 2 root root 12288 Sep 5 2008 sbin
# 看起來資料已經不一樣了!
[root@www ~]# lvdisplay /dev/vbirdvg/vbirdss
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdss
VG Name vbirdvg
....(中間省略)....
Allocated to snapshot 12.22%
....(底下省略)....
# 從這裡也看得出來,快照區已經被使用了 12.22% !因為原始的檔案系統有異動過!
# 2. 利用快照區將原本的 filesystem 備份
[root@www ~]# mount /dev/vbirdvg/vbirdss /mnt/snapshot
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
6955584 370472 6302488 6% /mnt/lvm
/dev/mapper/vbirdvg-vbirdss
6955584 262632 6410328 4% /mnt/snapshot
# 看吧!兩者確實不一樣了!開始將快照區內容複製出來吧!
[root@www ~]# mkdir -p /backups <==確認真的有這個目錄!
[root@www ~]# cd /mnt/snapshot
[root@www snapshot]# tar -jcv -f /backups/lvm.tar.bz2 *
# 此時你就會有一個備份資料,亦即是 /backups/lvm.tar.bz2 了!
為什麼要備份呢?為什麼不可以直接格式化 /dev/vbirdvg/vbirdlv 然後將 /dev/vbirdvg/vbirdss 直接複製給 vbirdlv 呢? 要知道 vbirdss 其實是 vbirdlv 的快照,因此如果你格式化整個 vbirdlv 時,原本的檔案系統所有資料都會被搬移到 vbirdss。 那如果 vbirdss 的容量不夠大 (通常也真的不夠大),那麼部分資料將無法複製到 vbirdss 內,資料當然無法全部還原啊! 所以才要在上面表格中製作出一個備份檔案的!瞭解乎? 而快照還有另外一個功能,就是你可以比對 /mnt/lvm 與 /mnt/snapshot 的內容,就能夠發現到最近你到底改了啥咚咚! 這樣也是很不賴啊!您說是吧! ^_^!接下來讓我們準備還原 vbirdlv 的內容吧! # 3. 將 vbirdss 卸載並移除 (因為裡面的內容已經備份起來了) [root@www ~]# umount /mnt/snapshot [root@www ~]# lvremove /dev/vbirdvg/vbirdss Do you really want to remove active logical volume "vbirdss"? [y/n]: y Logical volume "vbirdss" successfully removed [root@www ~]# umount /mnt/lvm [root@www ~]# mkfs -t ext3 /dev/vbirdvg/vbirdlv [root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm [root@www ~]# tar -jxv -f /backups/lvm.tar.bz2 -C /mnt/lvm [root@www ~]# ll /mnt/lvm drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc drwxr-xr-x 17 root root 4096 Mar 11 14:17 log drwx------ 2 root root 16384 Mar 11 16:59 lost+found # 是否與最初的內容相同啊!這就是透過快照來還原的一個簡單的方法囉!
換個角度來想想,我們將原本的 vbirdlv 當作備份資料,然後將 vbirdss 當作實際在運作中的資料, 任何測試的動作都在 vbirdss 這個快照區當中測試,那麼當測試完畢要將測試的資料刪除時,只要將快照區刪去即可! 而要複製一個 vbirdlv 的系統,再作另外一個快照區即可!這樣是否非常方便啊? 這對於教學環境中每年都要幫學生製作一個練習環境主機的測試,非常有幫助呢! Tips: # 1. 建立一個大一些的快照區,讓我們將 /dev/hda6 的 PE 全部給快照區!
[root@www ~]# lvcreate -s -l 89 -n vbirdss /dev/vbirdvg/vbirdlv
Logical volume "vbirdss" created
[root@www ~]# lvdisplay /dev/vbirdvg/vbirdss
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdss
VG Name vbirdvg
LV UUID as0ocQ-KjRS-Bu7y-fYoD-1CHC-0V3Y-JYsjj1
LV Write Access read/write
LV snapshot status active destination for /dev/vbirdvg/vbirdlv
LV Status available
# open 0
LV Size 6.97 GB
Current LE 446
COW-table size 1.39 GB
COW-table LE 89
Allocated to snapshot 0.00%
Snapshot chunk size 4.00 KB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
# 如何!這個快照區不小吧!
# 2. 隱藏 vbirdlv 掛載 vbirdss
[root@www ~]# umount /mnt/lvm
[root@www ~]# mount /dev/vbirdvg/vbirdss /mnt/snapshot
[root@www ~]# df /mnt/snapshot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdss
7192504 265804 6561340 4% /mnt/snapshot
# 3. 開始惡搞!
[root@www ~]# rm -r /mnt/snapshot/etc /mnt/snapshot/log
[root@www ~]# cp -a /boot /lib /sbin /mnt/snapshot/
[root@www ~]# ll /mnt/snapshot
drwxr-xr-x 4 root root 4096 Dec 15 16:28 boot
drwxr-xr-x 14 root root 4096 Sep 5 2008 lib
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
drwxr-xr-x 2 root root 12288 Sep 5 2008 sbin <==與原本資料有差異了
[root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm
[root@www ~]# ll /mnt/lvm
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x 17 root root 4096 Mar 11 14:17 log
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
# 不論你在快照區惡搞啥咚咚,原本的 vbirdlv 裡面的資料安好如初啊!
# 假設你將 vbirdss 搞爛了!裡面的資料不再需要!那該如何是好?
# 4. 還原原本快照區的資料,回到與原檔案系統相同的資訊
[root@www ~]# umount /mnt/snapshot
[root@www ~]# lvremove /dev/vbirdvg/vbirdss
Do you really want to remove active logical volume "vbirdss"? [y/n]: y
Logical volume "vbirdss" successfully removed
[root@www ~]# lvcreate -s -l 89 -n vbirdss /dev/vbirdvg/vbirdlv
[root@www ~]# mount /dev/vbirdvg/vbirdss /mnt/snapshot
[root@www ~]# ll /mnt/snapshot
drwxr-xr-x 105 root root 12288 Mar 11 16:59 etc
drwxr-xr-x 17 root root 4096 Mar 11 14:17 log
drwx------ 2 root root 16384 Mar 11 16:59 lost+found
# 資料這樣就復原了!
老實說,上面的測試有點無厘頭~因為快照區損毀了就刪除再建一個就好啦!何必還要測試呢? 不過,為了讓您瞭解到快照區也能夠這樣使用,上面的測試還是需要存在的啦!未來如果你有接觸到虛擬機器, 再回到這裡來溫習一下肯定會有收穫的! 好了,我們將上述用過的一些指令給他彙整一下,提供給您參考參考: 任務 搜尋(scan) 建立(create) 列出(display) 增加(extend) 減少(reduce) 刪除(remove) 改變容量(resize) 改變屬性(attribute) 至於檔案系統階段 (filesystem 的格式化處理) 部分,還需要以 resize2fs 來修訂檔案系統實際的大小才行啊! ^_^ 。至於雖然 LVM 可以彈性的管理你的磁碟容量,但是要注意,如果你想要使用 LVM 管理您的硬碟時,那麼在安裝的時候就得要做好 LVM 的規劃了, 否則未來還是需要先以傳統的磁碟增加方式來增加後,移動資料後,才能夠進行 LVM 的使用啊! 會玩 LVM 還不行!你必須要會移除系統內的 LVM 喔!因為你的實體 partition 已經被使用到 LVM 去, 如果你還沒有將 LVM 關閉就直接將那些 partition 刪除或轉為其他用途的話,系統是會發生很大的問題的! 所以囉,你必須要知道如何將 LVM 的裝置關閉並移除才行!會不會很難呢?其實不會啦! 依據以下的流程來處理即可:
好吧!那就實際的將我們之前建立的所有 LVM 資料給刪除吧! [root@www ~]# umount /mnt/lvm
[root@www ~]# umount /mnt/snapshot
[root@www ~]# lvremove /dev/vbirdvg/vbirdss <==先處理快照
Do you really want to remove active logical volume "vbirdss"? [y/n]: y
Logical volume "vbirdss" successfully removed
[root@www ~]# lvremove /dev/vbirdvg/vbirdlv <==再處理原系統
Do you really want to remove active logical volume "vbirdlv"? [y/n]: y
Logical volume "vbirdlv" successfully removed
[root@www ~]# vgchange -a n vbirdvg
0 logical volume(s) in volume group "vbirdvg" now active
[root@www ~]# vgremove vbirdvg
Volume group "vbirdvg" successfully removed
[root@www ~]# pvremove /dev/hda{6,7,8,9,10}
Labels on physical volume "/dev/hda6" successfully wiped
Labels on physical volume "/dev/hda7" successfully wiped
Labels on physical volume "/dev/hda8" successfully wiped
Labels on physical volume "/dev/hda9" successfully wiped
Labels on physical volume "/dev/hda10" successfully wiped
最後再用 fdisk 將磁碟的 ID 給他改回來 82 就好啦!整個過程就這樣的啦! ^_^
( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看 )
簡答題部分:
2002/07/14:第一次完成 2003/02/10:重新編排與加入 FAQ 2003/09/02:加入 quotacheck 發生錯誤時的解決方法。 2005/09/06:將舊的文章移動到 此處 。 2005/09/06:進行版面風格的轉換,並且進行資料的查詢,加入 repquota 的簡單說明而已! 2009/03/04:將原本舊的基於 FC4 的文件移動到 此處 。 2009/03/06:加入 warnquota 這玩意兒!挺有趣的哩! 2009/03/12:加入了 software RAID 與 LVM 的加強說明,尤其是 LVM 的快照 (snapshot) 的說明! 2009/09/10:修改一些字樣之外,增加情境模擬,以及後續的簡答題部分題目。 October 18 如何在 Active Directory 中还原已删除的用户帐户及其组成员身份(转)
转贴地址 http://support.microsoft.com/kb/840001/zh-cn 参考 您可以使用三种方法还原已删除的用户帐户、计算机帐户和安全组。这些对象统称为安全主体。在所有这三种方法中,都是先对已删除的对象执行授权还原,然后再还原已删除安全主体的组成员身份信息。还原已删除对象时,您必须还原受影响安全主体先前的 member 和 memberOf 属性值。这三种方法如下:
方法 1 和 2 可为域用户和管理员提供更好的体验,因为它们会保留自上次备份系统状态到发生删除这段时间内向安全组中添加的用户。方法 3 不对安全主体进行个别调整,而是将安全组成员身份回滚到上次备份时的状态。 注意:要避免意外删除或移动对象,可以向每个对象的安全描述符中添加两个 Deny 访问控制项 (ACE)。 本文分步介绍如何在从 Active Directory 中删除之后还原用户帐户、计算机帐户及其组成员身份。这一情况又可以分为多种情形,用户帐户、计算机帐户或安全组可能已被单个删除,也可能组合在一起删除。无论是哪种情况,初始步骤都是一样的 — 授权还原(或者使用 auth restore 还原)意外删除的对象。有些已删除的对象还需要其他一些操作才能被还原。这些对象包括用户帐户等对象,它们包含用作其他对象属性的反向链接的属性。其中的两个属性是 managedBy 和 memberOf。
虽然本文重点介绍如何恢复已删除的用户帐户及其在安全组中的成员身份,但其概念同样适用于其他对象删除操作。这些概念还适用于 Active Directory 中其属性值使用到其他对象的正向链接和反向链接的已删除对象。 您可以使用上述三种方法当中的任意一种来恢复安全主体。使用方法 1 时,您可以将添加到林中任一安全组的所有安全主体保留在原位置,并且只将从各自域中删除的安全主体添加至原来的安全组中。例如,您可以做一个系统状态备份,将用户添加到安全组中,然后还原系统状态备份。使用方法 1 或 2 时,将保留自创建系统状态备份到还原备份这段时间内向包含已删除用户的安全组中添加的所有用户。使用方法 3 时,会将包含已删除用户的所有安全组的安全组成员身份回滚到创建系统状态备份时的状态。 方法 1:还原已删除的用户帐户,然后使用 Ntdsutil.exe 命令行工具将已还原的用户添加到原来的组中(仅限 Microsoft Windows Server 2003 Service Pack 1 [SP1])注意:此方法仅在运行 Windows Server 2003 SP1 的域控制器上有效。如果用于恢复的域控制器上未安装 Windows Server 2003 SP1,请使用方法 2。在 Windows Server 2003 SP1 中,Ntdsutil.exe 命令行工具增加了一项新功能,有助于管理员更轻松地还原已删除对象的反向链接。每次授权还原操作都会生成两个文件。其中一个文件包含授权还原的对象的列表。另一个文件则是由 Ldifde.exe 实用工具使用的 .ldf 文件。此文件用于为授权还原的对象还原反向链接。在 Windows Server 2003 SP1 中,授权还原用户对象还会生成包含组成员身份信息的 LDIF 文件。此方法可避免双重还原。 使用此方法时,需执行下列高级步骤:
通知适当域中的管理员和技术支持管理员以及发生删除的域中的域用户停止这些更改。 注意:如果系统状态备份是删除时的最新状态,请跳过此步骤并转到步骤 4。 如果在步骤 1 中确定了恢复域控制器,现在请备份它的系统状态。 如果删除中复制了发生删除的域中的所有全局编录,请备份该域中全局编录的系统状态。 如果创建了备份,则可将恢复域控制器还原为它当前的状态,并可以在首次尝试失败时再次执行恢复计划。 只有用户域中全局编录域控制器的还原操作包含位于外部域中的安全组的全局和通用组成员身份信息。如果删除了用户的域中不存在全局编录域控制器的系统状态备份,您将无法使用还原的用户帐户的memberOf 属性来确定全局或通用组成员身份,或恢复外部域中的成员身份。此外,建议您查找非全局编录域控制器的最新系统状态备份。 当运行 Microsoft Windows 2000 Service Pack 2 (SP2) 和更高版本的域控制器处于联机 Active Directory 模式下时,您可以使用 setpwd 命令行工具重置其密码。 注意:Microsoft 不再支持 Windows 2000 SP2。安装最新的 Windows 2000 Service Pack 可获得此功能。 有关更改恢复控制台管理员密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 239803 如何在域控制器上更改恢复控制台的管理员密码 Windows Server 2003 域控制器的管理员可以使用 Ntdsutil 命令行工具中的 set dsrm password 命令重置脱机管理员帐户的密码。 322672 如何在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码 如果恢复域控制器是一个潜在的全局编录域控制器,请不要还原系统状态。转到步骤 7。 如果您要通过使用系统状态备份来创建恢复域控制器,请立即还原在该恢复域控制器上创建的最新系统状态备份。 注意:授权还原这一术语是指使用 Ntdsutil 命令行工具中的 authoritative restore 命令增加特定对象或特定容器及其所有从属对象的版本号的过程。一旦发生端到端复制,恢复域控制器本地 Active Directory 副本中的目标对象就会在所有共享该分区的域控制器上变得具有授权。授权还原不同于系统状态还原。系统状态还原使用创建系统状态备份时的对象版本填充已还原的域控制器的 Active Directory 本地副本。 有关对域控制器执行授权还原的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 241594 如何在 Windows 2000 中对域控制器执行授权还原 授权还原使用 Ntdsutil 命令行工具执行并引用已删除用户或承载已删除用户的容器的域名 (dn) 路径。
重要说明:在还原 OU 的从属对象时,必须以显式方式授权还原已删除的从属对象的所有已删除父容器。 对于还原的每个组织单位,至少会生成两个文件。这些文件的格式如下: ar_YYYYMMDD-HHMMSS_objects.txt 此文件包含授权还原的对象的列表。在已还原的用户属于“本地域”组成员的林中的任何其他域中,请将此文件与 ntdsutil authoritatative restore "create ldif file from" 命令结合使用。 有关更多信息,请访问下面的 Microsoft 网站: ar_YYYYMMDD-HHMMSS_links_usn.loc.ldf repadmin /options <recovery dc name> +DISABLE_INBOUND_REPL 重新启用到已还原系统状态的恢复域控制器的网络连接。 在禁用对恢复域控制器的入站复制的同时,键入以下命令,以便将已授权还原的对象推入域中所有的跨站点复制域控制器以及林中所有的全局编录: repadmin /syncall /d /e /P <recovery dc> <Naming Context> 如果符合下列所有条件,将在还原和复制已删除的用户帐户时重建组成员身份链接。请转到步骤 14。
repadmin /options <recovery dc name> -DISABLE_INBOUND_REPL
对于授权还原的用户帐户和计算机帐户,如果其域密码在系统还原后发生了更改,技术支持管理员就可能需要重置这些密码。 在创建了系统状态备份之后更改密码的用户将会发现他们的新密码不再有效了。如果这些用户知道旧密码,可以让他们尝试使用旧密码进行登录。否则,技术支持管理员必须重置密码并选中“用户下次登录时须更改密码”复选框,此操作最好是在用户所在的 Active Directory 站点中的域控制器上执行。 方法 2:还原已删除的用户帐户,然后将已还原用户添加至原来的组中使用此方法时,需执行下列高级步骤:
为了保持最灵活的恢复路径,请暂时停止对以下项目的更改。这些更改包括域用户、技术支持管理员和发生删除的域中的管理员进行的密码重置,以及已删除用户的组中进行的组成员身份更改。请停止对以下项目的添加、删除和修改操作:
通知适当域中的管理员和技术支持管理员以及发生删除的域中的域用户停止这些更改。 注意:如果系统状态备份是删除时的最新状态,请跳过此步骤并转到步骤 4。 如果在步骤 1 中确定了恢复域控制器,现在请备份它的系统状态。 如果删除中复制了发生删除的域中的所有全局编录,请备份该域中全局编录的系统状态。 如果创建了备份,则可将恢复域控制器还原为它当前的状态,并可以在首次尝试失败时再次执行恢复计划。 只有用户域中全局编录域控制器的还原操作包含位于外部域中的安全组的全局和通用组成员身份信息。如果删除了用户的域中不存在全局编录域控制器的系统状态备份,您将无法使用还原的用户帐户的memberOf 属性来确定全局或通用组成员身份,或恢复外部域中的成员身份。此外,建议您查找非全局编录域控制器的最新系统状态备份。 当运行 Microsoft Windows 2000 Service Pack 2 (SP2) 和更高版本的域控制器处于联机 Active Directory 模式下时,您可以使用 setpwd 命令行工具重置其密码。 注意:Microsoft 不再支持 Windows 2000 SP2。安装最新的 Windows 2000 Service Pack 可获得此功能。 有关更改恢复控制台管理员密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 239803 如何在域控制器上更改恢复控制台的管理员密码 Windows Server 2003 域控制器的管理员可以使用 Ntdsutil 命令行工具中的 set dsrm password 命令重置脱机管理员帐户的密码。 322672 如何在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码 如果恢复域控制器是一个潜在的全局编录域控制器,请不要还原系统状态。转到步骤 7。 如果您要通过使用系统状态备份来创建恢复域控制器,请立即还原在该恢复域控制器上创建的最新系统状态备份。 注意:授权还原这一术语是指使用 Ntdsutil 命令行工具中的 authoritative restore 命令增加特定对象或特定容器及其所有从属对象的版本号的过程。一旦发生端到端复制,恢复域控制器本地 Active Directory 副本中的目标对象就会在所有共享该分区的域控制器上变得具有授权。授权还原不同于系统状态还原。系统状态还原使用创建系统状态备份时的对象版本填充已还原的域控制器的 Active Directory 本地副本。 有关对域控制器执行授权还原的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 241594 如何在 Windows 2000 中对域控制器执行授权还原 授权还原使用 Ntdsutil 命令行工具执行并引用已删除用户或承载已删除用户的容器的域名 (dn) 路径。
重要说明:在还原 OU 的从属对象时,必须以显式方式授权还原已删除的从属对象的所有已删除父容器。 repadmin /options <recovery dc name> +DISABLE_INBOUND_REPL 重新启用到已还原系统状态的恢复域控制器的网络连接。 在禁用对恢复域控制器的入站复制的同时,键入以下命令,以便将已授权还原的对象推入域中所有的跨站点复制域控制器以及林中所有的全局编录: repadmin /syncall /d /e /P <recovery dc> <Naming Context> 如果符合下列所有条件,将在还原和复制已删除的用户帐户时重建组成员身份链接。请转到步骤 14。
注意:在向这些组中添加用户之前,必须先将您在步骤 7 中授权还原的用户以及您在步骤 11 中出站复制的用户,复制到引用的域控制器所在域的域控制器以及林中的所有全局编录域控制器上。 如果部署了使用组提供实用工具来重新填充安全组的成员身份,请立即使用该实用工具将已删除用户还原到他们被删除之前所在的安全组中。在林的域和全局编录服务器中的所有直接和中间域控制器都已入站复制了授权还原的用户和所有已还原容器后,再执行此操作。 如果您没有此类实用工具,在恢复域控制器上运行时,Ldifde.exe 命令行工具和 Groupadd.exe 命令行工具可以自动完成此这项任务。这些工具可以通过 Microsoft 产品支持服务获得。在此情况下,Ldifde.exe 将从管理员指定的 OU 容器开始,创建包含用户帐户及其安全组的名称的 LDAP 数据交换格式 (LDIF) 信息文件。然后,Groupadd.exe 将读取 .ldf 文件中列出的每个用户帐户的memberOf 属性,并为林中每个域生成独立的、唯一的 LDIF 信息。此 LDIF 信息包括需要将已删除用户添回其中以便恢复用户组成员身份的安全组的名称。在此恢复阶段,请按照以下步骤操作。
repadmin /options +DISABLE_OUTBOUND_REPL 注意:要重新启用出站复制,请键入以下文本,然后按 Enter: repadmin /options -DISABLE_OUTBOUND_REPL
对于授权还原的用户帐户和计算机帐户,如果其域密码在系统还原后发生了更改,技术支持管理员就可能需要重置这些密码。 在创建了系统状态备份之后更改密码的用户将会发现他们的新密码不再有效了。如果这些用户知道旧密码,可以让他们尝试使用旧密码进行登录。否则,技术支持管理员必须重置密码并选中“用户下次登录时须更改密码”复选框,此操作最好是在用户所在的 Active Directory 站点中的域控制器上执行。 方法 3:授权还原两次已删除的用户和已删除用户的安全组使用此方法时,需执行下列高级步骤:
要使用方法 3,请按照以下过程操作:
注意:如果系统状态备份是发生删除时的状态,跳过此步骤,转到步骤 4。 如果在步骤 1 中确定了恢复域控制器,现在请备份它的系统状态。 如果删除中复制了位于发生删除的域中的所有全局编录,请备份该域中全局编录的系统状态。 如果创建了备份,则可将恢复域控制器还原为它当前的状态,并可以在首次尝试失败时再次执行恢复计划。 只有用户域中的全局编录域控制器的数据库包含林中外部域的组成员身份信息。如果删除了用户的域中不存在全局编录域控制器的系统状态备份,您将无法使用还原的用户帐户的 memberOf 属性来确定全局或通用组成员身份,或恢复外部域中的成员身份。转到下一个步骤。如果外部域中存在组成员身份的外部记录,请在还原用户帐户之后,将已还原用户添加到这些域中的安全组中。 当运行 Microsoft Windows 2000 Service Pack 2 (SP2) 和更高版本的域控制器处于联机 Active Directory 模式下时,您可以使用 setpwd 命令行工具重置其密码。 注意:Microsoft 不再支持 Windows 2000 SP2。安装最新的 Windows 2000 Service Pack 可获得此功能。 有关更改恢复控制台管理员密码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 239803 如何在域控制器上更改恢复控制台的管理员密码 Windows Server 2003 域控制器的管理员可以使用 Ntdsutil 命令行工具中的 set dsrm password 命令重置脱机管理员帐户的密码。 322672 如何在 Windows Server 2003 中重置目录服务还原模式的管理员帐户密码 如果恢复域控制器是一个潜在的全局编录域控制器,请不要还原系统状态。直接转到步骤 7。 如果您要通过使用系统状态备份来创建恢复域控制器,现在请还原在包含已删除的对象的恢复域控制器上创建的最新系统状态备份。 注意:授权还原这一术语是指使用 Ntdsutil 命令行工具中的 authoritative restore 命令增加特定对象或特定容器及其所有从属对象的版本号的过程。一旦发生端到端复制,恢复域控制器本地 Active Directory 副本中的目标对象就会在所有共享该分区的域控制器上变得具有授权。授权还原不同于系统状态还原。系统状态还原使用创建系统状态备份时的对象版本填充已还原的域控制器的 Active Directory 本地副本。 有关对域控制器执行授权还原的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 241594 如何在 Windows 2000 中对域控制器执行授权还原 授权还原是通过引用已删除用户或承载已删除用户的容器的域名 (dn) 路径,使用 Ntdsutil 命令行工具执行的。
重要说明:还原 OU 的从属对象时,必须以显式方式,对已删除从属对象的所有父容器执行授权还原。 在禁用对恢复域控制器的入站复制的同时,键入以下命令,以便将已授权还原的对象推入域中所有的跨站点复制域控制器以及林中的全局编录: repadmin /syncall /d /e /P <recovery dc> <Naming Context> 在林的域和全局编录服务器中的所有直接和中间域控制器都已入站复制了授权还原的用户和所有已还原容器后,转到步骤 11。
如果这些组也已经被删除,或者您无法保证在转换到 Windows Server 2003 过渡版或林功能级别后已将所有已删除的用户添加到了所有安全组中,请转到步骤 12。
repadmin /options recovery dc name -DISABLE_INBOUND_REPL 技术支持管理员可能必须重置那些系统还原后域密码发生更改的已授权还原的用户帐户和计算机帐户的密码。 在创建了系统状态备份之后更改密码的用户将会发现他们的新密码不再有效了。如果这些用户知道旧密码,可以让他们尝试使用旧密码进行登录。否则,技术支持管理员必须重置密码并选中“用户下次登录时须更改密码”复选框,此操作最好是在用户所在的 Active Directory 站点中的域控制器上执行。 如果没有有效的系统状态备份,如何在 Windows Server 2003 域控制器上恢复已删除的用户如果您没有删除了用户帐户或安全组的域中的当前系统状态备份,并且该删除发生在包含 Windows Server 2003 域控制器的域中,请按照以下步骤从已删除的对象容器中手动重新加进已删除对象:
如何在已删除对象的容器中手动撤消删除对象要在已删除对象的容器中手动恢复对象,请按照以下步骤操作:
删除对象后,将去除除 SID、ObjectGUID、LastKnownParent 和 SAMAccountName 之外的所有属性值。 注意:重新加进的对象的主 SID 与删除前相同,但是必须将该对象重新添加到同一安全组中,它才能具有相同的资源访问级别。第一版的 Windows Server 2003 不保留重新加进的用户帐户、计算机帐户和安全组的 sIDHistory 属性。Windows Server 2003 Service Pack 1 保留已删除对象的sIDHistory 属性。 注意:如果删除发生在 Windows Server 2003 域控制器上,则支持重新加进已删除的对象。如果删除发生在 Windows 2000 域控制器上,而该控制器后来又升级至 Windows Server 2003,则不支持重新加进已删除的对象。 注意:如果删除发生在域的 Windows 2000 域控制器上,lastParentOf 属性将不会填充到 Windows Server 2003 域控制器上。 如何确定删除发生的时间和位置如果用户是由于批量删除而被删除的,您可能想了解删除发生的位置。为此,请按照下列步骤操作:
将来如何尽可能减小批量删除的影响要尽可能降低批量删除用户、计算机和安全组所造成的影响,关键是要做到以下几点:确保您拥有最新的系统状态备份;严格控制对特权用户帐户的访问以及这些帐户可以执行的操作;最后是要练习如何从批量删除中进行恢复。系统状态每天都会发生更改。这些更改可能包括用户帐户和计算机帐户上的密码重置、组成员身份更改以及用户帐户、计算机帐户和安全组上的其他属性更改。如果发生硬件故障、软件故障或站点遇到其他灾难,则需要在林中的每个 Active Directory 域和站点中还原在每次进行一系列重大更改后创建的备份。如果您没有保留当前备份,则可能会丢失数据或必须回滚已还原的对象。 Microsoft 建议您执行以下步骤以避免批量删除:
可帮助您从批量删除中恢复的工具和脚本Groupadd.exe 命令行实用工具读取 OU 中用户集合的 memberOf 属性并创建将每个已还原用户帐户添加到林中每个域中的安全组中的 .ldf 文件。Groupadd.exe 自动发现已删除用户所属的域和安全组并将它们添回这些组中。方法 1 的步骤 11 中详细说明了此过程。 Groupadd.exe 在以下域控制器上运行:
groupadd /after_restore ldf_file [/before_restore ldf_file] 此处,ldf_file 表示要与原来的参数一起使用的 .ldf 文件的名称,after_restore 表示用户文件数据源,before_restore 表示产品环境中的用户数据。(用户文件数据源是正确的用户数据。) 有关如何还原包含扩展字符的对象的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 886689 在 Windows Server 2003 和 Windows 2000 中,如果可分辨名称路径包含扩展字符,Ntdsutil 授权还原操作将失败 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 824684 有关用于描述 Microsoft 软件更新标准术语的介绍 910823 尝试在运行 Windows Server 2003 Service Pack 1 的计算机上导入 .ldf 文件时收到错误消息:“Add error on line LineNumber: No such object”(在 LineNumber 行添加出错: 无此对象) 937855 通过在基于 Windows Server 2003 的域控制器上执行授权还原来还原已删除的对象后,某些对象的链接属性未复制到其他域控制器中 这篇文章中的信息适用于:
kbhowto kbactivedirectory kbwinservds KB840001
October 08 感恩国庆 祝福你 姐姐。看着朋友们全国天南地北的玩 上至北京下至台湾。。 还是很为他们高兴的。。终于能玩痛快了~当年我也如此盼望着 之后我也马上又要回归了。。 当然 自己的这个国庆还是有特别的意义的~ 2号开始就去杭州给姐姐婚礼打下手,其实基本没啥事 带着厚厚的RHCE书半本也没看掉 今天好不得半天看书的时间 做了几个实验,明天后天又要出去一整天。
时间总是比想象的更少。
这几天总觉得 什么事情牵涉到感觉上 这事情真的就很难说清楚。
我一直信奉做人要本色 对亲人、对朋友、对上司 该怎样就怎样一人 我就是我 好的地方不刻意 自然有人会发觉会喜欢, 不好地方不掩盖 会遇到早晚会遇到 藏得了一时藏不了一世又何必 刘备不是人人能当。 我想要的你能给 我就会问你要 你不给我也觉得很正常;你想要的我一定尽全力满足 满足不了我也不会愧疚 当然想要说的话就说一遍 听不听任随君便 不强加自己的想法于别人头上 也不会轻易让别人左右自己的内心
平时一直让自己走的理智路线 总希望什么都能客观再客观 即使是自己攸关的事情 也要从第三者的角度去考虑
可是就前几天 我突然发觉 如果一旦那感觉不知从哪里冒出来 似乎平时再怎么习惯冷静和思考 也还是会变得一塌胡涂 浮躁 思维短路 一点不冷静 完全把思考和克制扔到了脑后 行为言谈举止一下子就变得不像自己了 现在想想真是有些受不了 自己咋还那么不成熟呢 唉 冲动是魔鬼阿
感觉 这事情真的很难说清楚。
几年前的一面之缘 似乎已经很遥远了 现在仔细回想 才依稀记得当年的心情 几年后重新认识 当时的心情难以形容 慢慢回想起来 竟与之前几无差别 这是多么奇妙的一件事情~~ 唯一最大的不同就是觉得自己老了。。老了很多 而她却没有自己老去的这么快 似乎彼此之间贴近了许多 但是仍旧 远远超过一个手臂的距离 这样子的动力 现在的我 很喜欢 谢谢你 让我如此开心
姐姐婚礼当天 我突然被委派为现场调音师
很突然 总觉得这应该是专业化的职业吧 什么时候切换何种音乐 音量的大小 现场的气氛 一整套环节不能有一丝的纰漏 尤其是开头的那一段关键场景 “调音师不能来了”就这样一个理由 让我坐上了一个晚上吃不到几口菜的座位上:)
司仪简单和我说了一遍流程 然后就开始彩排 唯一的一次彩排却跳过了不少的环节~父母、小天使、交换戒指、倒香槟 甚至男方上台迎接新娘的一段也很快就过了~ 整遍下来几乎没有什么概念 每个人似乎都不怎么担心我坐在这样子一个座位 或许是不想给我压力么?呵呵 彩排之后就再也没有人来关心过管理着整场现场音乐的我来了~~ 每个人都有他们忙碌的事情啊 反复听直到强记下每段音乐。 调音师是如何工作的?我只能自己想象 要观察现场 观察主角的移动、变化 事件流程 把自己觉得应该适合的片断配合上这样一个现场 音乐围绕着现场 但现场又脱离不了音乐 他们是一体的 这是我的理解 于是我把所有的音乐都记熟到能哼为止。然后拉来了司仪详细地了解他的过场词、每个环节的扣节点 场面上会发生的一切 我全都要了解~~
脑海中终于有了一整场婚礼的流程概念。算准每个时间的精确点 这个是一秒都不能差的阿。。婚礼可不能在我手上变得尴尬不堪~
整场婚礼 是由我按下第一个 司仪进场曲的键开始的。
黑暗的场景 只有聚光灯在转换 我的心却随着音乐起伏 我的手指随着我心中的歌声起伏 随着司仪一句一句话音的落下 音乐就要适时地出现
开场独白 爸爸拉着女儿的手进场 ……
姐夫慢慢走上舞台 唱着I'm sure you are mine 缓缓而温柔 每个人都能听到姐夫的心跳声
当姐夫站在姐姐面前 大声说出“老婆我爱你”的那一瞬间 整个的音量推到最高 然后一下放出音乐
嚄 和我想象中的完全一样 感动 这时的我已经完全出离了时间的概念 现场就是时间!我觉得用心去感受气氛 音乐就能随心而响起! 后面的过程就更加放松了 拉起手往回走、走到最前台转身、小天使缓缓走上来、交换戒指、拥抱 每一个片断 我觉得音乐真的得心应手! 和宾客们看着姐姐姐夫走完全程 我几乎不觉得音乐出自我手~而是就那么原本自然而然地出现了。
谢谢姐姐。过去一直用心地对我 对我们大家。 谢谢姐姐 这二十多年的照顾 每次都是你带领着我们 给与我们帮助 也是时候让我们一起来为你付出了。 谢谢姐姐。
……不过 姐姐阿。。 那个龙虾阿。。我一口都没吃到阿…… 5555~~
朋友大喜的日子 总会觉得发自内心地为其高兴 最亲的人婚礼之后 却不知道为何有些酸楚 似血肉被拉扯分离一般 虽然明知道她还是在那里 还是一样地上班 一样地生活 一样可以聊天 一样可以勾肩搭背一样可以打打闹闹
可是为其祝福之余 还是有觉到哪里隐隐的伤感。。。 伤感。。 伤感。 脑海中儿童时代的各种回忆 总是会在这样不适时宜的时机出现。有一件事是我一辈子的愧疚
听着这么些歌 没来由的 不争气地。。
很喜欢那个kiss的镜头 很喜欢
这个不会停止。。还会自动播放 有些麻烦。。呵呵 开心上看到的。 October 04 一些视频集~噢 国外的国庆录像 拍得真不错~
China's 60th Anniversary national day - timelapse and slow motion - 7D and 5DmkII from Dan Chung on Vimeo.
超级搞笑 笑到肚子痛!挣扎~~再挣扎
噢 第一次觉得原来吉他也这么难的啊。。。我觉得这个难度比小提琴都有夸张
September 28 王羽佳王羽佳~~很厉害啊…
野蜂飞舞 - the Flight of the Bumble-Bee
土耳其进行曲 个结尾噢
独奏音乐会 108分钟 开头就很赞 后面还没听下去~
LX3 2.0 理解呵呵 最近忙着看书 其他什么都不管不顾了~ 不过这个东东还是值得花个把时间来探讨一下的~虽然真是件很奢侈花费时间的~事情
前几天某村同学新换了相机 —— LX3。 于是拖上我出去扫街,我自然也是很有兴趣滴对这2.0光圈的神机咯 2.0哇 神机哇~~
先放一点自己喜欢的吧 嘎嘎~稍后讨论技术问题 下面几张是自己拍的, 主要还是给某村练手 所以我就随意拍了几张
色彩稍显不足 2.0光圈这种景深感还是很强烈的 可惜对焦总有些小问题 操作不娴熟的关系吧~~
为了抓拍表情于是构图就没那么专业了 往右边去点是不是会好点~
下面都是某村的成果,蛮好的~
这张光影过渡的超好~看了就觉得舒服 照相机有点小威力~
这一张可惜用了2.8的光圈~ 如果有 主题的物件+准确的对焦 那就赞了
还是蛮有立体感的
路上随意遇见一个小餐厅 于是提议进去小歇一记~
她说 给自己拍照最好找熟人来干。一点没错 了解对方 熟悉对方 接触的更多 心里自然会产生一种思维 会认为哪种形式的格局比较适合对方
其实拍摄拍摄 虽说摄影师的能力很重要 但是说穿了 毕竟照片的主题是照片内的这个人 所以 不管摄影师如何 关键要这整张照片的构格要适合里面的人 不管色彩阿 框架阿 内容阿 所有的一切都要符合贴切 这样子的照片才是美的 才是能够令人留连忘返的
给一般不熟悉的人拍就会让人有一种这样的感觉 背景很美 人也很美 拍的也很好 可是不知为何内容里面就是欠缺了点融洽、沟通~ 总觉得 他们是分开的 景是景 人是人 似乎都很美 可是又在哪里有说不出的一丝异样 就像现在看了很多婚纱照 P完后画面确实都很赞,构图、色彩都完全没有问题 可是让人觉得有灵性的 能产生共鸣的 到底有多少呢? 不多 还是有的。
好的摄影师 不光要技术能力佳 更要有热情能投入思想和感情 肯花时间去了解熟悉、理解关切所拍的主题 他的曾经 他的存在感 他所能产生的 他所需要的 要做到用心去感受、并且要理解 对方那边的理想、当时的状态 让他与身边的一切融为一体 身与心走到一起之后 再去谈拍摄 而不是光用眼睛、光用相机。
这样子 或许 才是理想中的 纪念和表达
好了 感性完了 再来谈理性~~来说点技术的东西吧~ 一、先看看这相机在不同ISO下面的表现好了, 快门全都是1/15 我手持情况下不太抖动的阀值 光圈f/2.0 3200 (这张对焦没对好~手工的还是有点不适应 ) 1600 800 400 200 100 仔细看来 400以上才开始有明显的噪点 比我家的ixus860那200以上就明显 800以上几乎不能入眼是好很多了 800、1600、3200 似乎3档的噪点情况都差不多~ 所以说即使是3200的感光度 仍旧有实际应用的可能 在灯光极其昏暗的情况下 也能比较完好还原场景所要表达的东西
另外发觉一个有趣的现象 大白天对着天拍摄的时候即使是200感光度的照片 仍旧能够找到明显的噪点 而下面一张80的就完全没有~ 所以说 一个感光度的数值并不能代表一切 还是要看当时的情况 比较极端的情况并不是不可能
二、关于景深
其实2.0对景深的影响没有想象中的那么夸张 0.9米差不多是个界限了 但是很明显的一点 这2张都是f/2.8 一眼看上去 总觉得一块地方特别清楚 而一块地方就有些没那么清楚 这些快门都是1/150左右的感觉应该不至于抖掉~而且也有地方是很清晰的咯~ 或许是我的心理作用~ 而f/4以上的 应该再远的范围都差不多了 所以拍大范围的风景 没有什么重点的希望所有地方都照顾到 还是最好用小光圈来解决
而一旦有了主题 这种吸引人目光的方式 就会有到特别的效果~
三、关于快门 原本没觉得快门会有很大的影响到什么效果
但是看了多了这几张片子后 总是发觉 有好几张很有立体感、突兀感而有些却没有 似乎和快门有关系 1/300以下的就会有这种感觉 而这种1/800、1/1000的就没这种感觉~
感觉上1/300以下的照片有厚度 色彩扎实 而高速快门总觉得颜色上会有些虚 立体感也没有那么强烈 当然这些差距不是很明显 或许也是心理作用也说不定~ 反正我觉得1/30-1/150是个不错的快门速度范围~
四、夜景 还算不错的吧~大光圈到底不是盖的 不过似乎还没有达到完美 不知道是不是镜头的关系~
这些都是手持的 稍许的抖动无可避免~快门在1/10-1/20之间 光圈么锁定2.0的 看下来觉得色彩都还原的比较好 就是边缘部分有少许的曝光导致的奇怪~ 似乎这方面GX200做的稍好 不知道是不是镜头的关系 |
|
|