分类目录归档:技术文献

Ext3与Ext4的主要区别

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。

2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。

4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

5. 多块分配。 当 写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

9. “无日志”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

10. 在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。

11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。

12. 持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。

13. 默认启用 barrier。 磁 盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

php字符串处理函数大全

addcslashes — 为字符串里面的部分字符添加反斜线转义字符
addslashes — 用指定的方式对字符串里面的字符进行转义
bin2hex — 将二进制数据转换成十六进制表示
chop — rtrim() 的别名函数
chr — 返回一个字符的ASCII码
chunk_split — 按一定的字符长度将字符串分割成小块
convert_cyr_string — 将斯拉夫语字符转换为别的字符
convert_uudecode — 解密一个字符串
convert_uuencode — 加密一个字符串
count_chars — 返回一个字符串里面的字符使用信息
crc32 — 计算一个字符串的crc32多项式
crypt — 单向散列加密函数
echo — 用以显示一些内容
explode — 将一个字符串用分割符转变为一数组形式
fprintf — 按照要求对数据进行返回,并直接写入文档流
get_html_translation_table — 返回可以转换的HTML实体
hebrev — 将Hebrew编码的字符串转换为可视的文本
hebrevc — 将Hebrew编码的字符串转换为可视的文本
html_entity_decode — htmlentities ()函数的反函数,将HTML实体转换为字符
htmlentities — 将字符串中一些字符转换为HTML实体
htmlspecialchars_decode —htmlspecialchars()函数的反函数,将HTML实体转换为字符
htmlspecialchars — 将字符串中一些字符转换为HTML实体
implode — 将数组用特定的分割符转变为字符串
join — 将数组转变为字符串,implode()函数的别名
levenshtein — 计算两个词的差别大小
localeconv — 获取数字相关的格式定义
ltrim — 去除字符串左侧的空白或者指定的字符
md5_file — 将一个文件进行MD5算法加密
md5 — 将一个字符串进行MD5算法加密
metaphone — 判断一个字符串的发音规则
money_format — 按照参数对数字进行格式化的输出
nl_langinfo — 查询语言和本地信息
nl2br — 将字符串中的换行符“\n”替换成“<br/>”
number_format — 按照参数对数字进行格式化的输出
ord — 将一个ASCII码转换为一个字符
parse_str — 把一定格式的字符串转变为变量和值
print — 用以输出一个单独的值
printf — 按照要求对数据进行显示
quoted_printable_decode — 将一个字符串加密为一个8位的二进制字符串
quotemeta — 对若干个特定字符进行转义
rtrim — 去除字符串右侧的空白或者指定的字符
setlocale — 设置关于数字,日期等等的本地格式
sha1_file — 将一个文件进行SHA1算法加密
sha1 — 将一个字符串进行SHA1算法加密
similar_text — 比较两个字符串,返回系统认为的相似字符个数
soundex — 判断一个字符串的发音规则
sprintf — 按照要求对数据进行返回,但是不输出
sscanf — 可以对字符串进行格式化
str_ireplace — 像str_replace()函数一样匹配和替换字符串,但是不区分大小写
str_pad — 对字符串进行两侧的补白
str_repeat — 对字符串进行重复组合
str_replace — 匹配和替换字符串
str_rot13 — 将字符串进行ROT13加密处理
str_shuffle — 对一个字符串里面的字符进行随机排序
str_split — 将一个字符串按照字符间距分割为一个数组
str_word_count — 获取字符串里面的英文单词信息
strcasecmp — 对字符串进行大小比较,不区分大小写
strchr — 通过比较返回一个字符串的部分strstr()函数的别名
strcmp — 对字符串进行大小比较
strcoll – 根据本地设置对字符串进行大小比较
strcspn — 返回字符连续非匹配长度的值
strip_tags — 去除一个字符串里面的HTML和PHP代码
stripcslashes — 反转义addcslashes()函数转义处理过的字符串
stripos — 查找并返回首个匹配项的位置,匹配不区分大小写
stripslashes — 反转义addslashes()函数转义处理过的字符串
stristr — 通过比较返回一个字符串的部分,比较时不区分大小写
strlen — 获取一个字符串的编码长度
strnatcasecmp — 使用自然排序法对字符串进行大小比较,不区分大小写
strnatcmp — 使用自然排序法对字符串进行大小比较
strncasecmp — 对字符串的前N个字符进行大小比较,不区分大小写
strncmp — 对字符串的前N个字符进行大小比较
strpbrk — 通过比较返回一个字符串的部分
strpos — 查找并返回首个匹配项的位置
strrchr — 通过从后往前比较返回一个字符串的部分
strrev — 将字符串里面的所有字母反向排列
strripos — 从后往前查找并返回首个匹配项的位置,匹配不区分大小写
strrpos – 从后往前查找并返回首个匹配项的位置
strspn — 匹配并返回字符连续出现长度的值
strstr — 通过比较返回一个字符串的部分
strtok — 用指定的若干个字符来分割字符串
strtolower — 将字符串转变为小写
strtoupper –将字符串转变为大写
strtr — 对字符串比较替换
substr_compare — 对字符串进行截取后的比较
substr_count — 计算字符串中某字符段的出现次数
substr_replace — 对字符串中的部分字符进行替换
substr — 对字符串进行截取
trim — 去除字符串两边的空白或者指定的字符
ucfirst — 将所给字符串的第一个字母转换为大写
ucwords — 将所给字符串的每一个英文单词的第一个字母变成大写
vfprintf — 按照要求对数据进行返回,并直接写入文档流
vprintf — 按照要求对数据进行显示
vsprintf — 按照要求对数据进行返回,但是不输出
wordwrap — 按照一定的字符长度分割字符串

VHD和VHDX:虚拟硬盘格式的区别

  Windows Server 2012的发布带来了虚拟化方面的许多改进,但是VHDX文件格式的推出却引起了许多IT专家的注意。Windows Server 2012支持新的格式,同时允许Hyper-V管理员使用以前的VHD格式。有两种虚拟硬盘格式可供选择,下面是VHD和VHDX的对比。
  VHD和VHDX简介
  相对之前的VHD格式,VHDX最大的优势之一在于虚拟硬盘存储容量。在Windows Server 2012之前,Hyper-V虚拟硬盘存在最大2TB的容量限制。而VHDX最大能够达到64TB。而VHDX的优势不只限于容量方面的改进,VHDX为现在的硬盘而设计,相比于VHD文件,其4KB大小的逻辑区域大小有助于提高性能。
  通过不断监控元数据更新,VHDX还提供在突然断电情况下的文件讹误保护功能,而VHD格式并不具备这个特性。为动态和差分磁盘提供更大的文件块,存储自定义元数据特性,这些都是VHD和VHDX的不同之处。
  转换为VHDX格式
  首先,需要知道的是可以在Windows Server 2012上创建和使用两种格式,但是VHDX文件和Windows Server 2008并不兼容。微软推荐大多数Windows Server 2012用户将VHD文件升级到VHDX,以使用其中的各种新特性。但是,如果你希望将虚拟机移动到之前版本的Windows Server上,那么使用VHD文件会更加方便。用户可以在Hyper-V中的编辑虚拟硬盘向导中将VHD文件转换为VHDX文件。

BCDEDIT命令详解

案例:bcdedit添加系统启动项

使用BCDEDIT命令,编辑启动项,方便、快捷,只需记住几条命令,必要时替换即可。

以下是一个案例:

标识符 {de329298-0dd8-11e0-90b6-8af61b7989dc}

device partition=G:

path \Windows\system32\winload.exe

description Windows 7 Ultimate

osdevice partition=G:

systemroot \Windows

要实现添加以上启动项信息,可依次键入以下命令:

bcdedit /create {35f41e64-23c5-11e0-b95b-fe17cc1d8647} /d “Windows 7
Ultimate” /application osloader

bcdedit /set {35f41e64-23c5-11e0-b95b-fe17cc1d8647} device partition=G:

bcdedit /set {35f41e64-23c5-11e0-b95b-fe17cc1d8647} path \Windows\system32\winload.exe

bcdedit /set {35f41e64-23c5-11e0-b95b-fe17cc1d8647} systemroot \Windows

bcdedit /set {35f41e64-23c5-11e0-b95b-fe17cc1d8647} osdevice partition=G:

bcdedit /displayorder {35f41e64-23c5-11e0-b95b-fe17cc1d8647} /addfirst

附,关闭Hyper-V,让windows运行VMWare

Hyper-VVMWare共存。打开cmd,键入:

bcdedit /copy {default} /d “Windows Server 2008 Without Hyper-V” (windows会自动生成一个guid,注意记下)

然后再键入:

bcdedit /set {xxxxxxxxxxxx} hypervisorlaunchtype off {}里面填入前面一个命令出来的guid号。
然后你就可以在那个没有启动Hyper-V的系统里面安装使用Vmware了。

自定义启动管理项——Bcdedit命令详解

Bcdedit 位于X:\Windows\system32\ “X:”为安装Vista的盘符。

一、储存操作指令

====================

/createstore 创建一个新的空白启动配置数据文件。

bcdedit /createstore C:\Data\BCD 创建BCD启动配置数据文件储存到“C:\DATA\”文件夹。

/export 备份启动配置数据文件。

bcdedit /export “C:\Data\BCD Backup” 备份BCD启动配置文件到“C:\Data\”文件夹,并以“BCD Backup”命名。

/import 还原启动配置数据文件。

bcdedit /import “C:\Data\BCD Backup” “C:\Data\”文件夹恢复BCD启动配置文件。

二、储存项目操作指令

====================

/copy 项目拷贝

操作系统启动项目的拷贝:

bcdedit /copy {cbd971bf-b7b8-4885-951a-fa03044f5d71} /d “Copy of entry”

/create 新建项目

创建操作系统载入程序项目的 NTLDR(Ntldr):

bcdedit /create {ntldr} /d “Earlier Windows OS Loader”

创建存储器磁碟另外的选择项项目:

bcdedit /create {ramdiskoptions} /d “Ramdisk options”

创建一个新的操作系统启动项目:

bcdedit /create /d “Windows Vista” /application osloader

创建一个新的调试器:

bcdedit /create {dbgsettings} /d “Debugger Settings”

/delete 删除项目

删除指定的操作系统项目:

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71}

删除指定的操作系统项目但启动时不显示项目(彻底删除):

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /cleanup

删除指定的操作系统项目但启动时显示项目:

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /nocleanup

删除操作系统载入程序项目的 NTLDR:

bcdedit /delete {ntldr} /f

三、项目选择操作指令

====================

/deletevalue 删除项目选择项。

删除启动管理的bootmgr选择项项目:

bcdedit /deletevalue {bootmgr} bootsequence

删除(WinPE)操作系统的数值开机项目:

bcdedit /deletevalue winpe

删除来自指定的操作的 Windows PE 数值系统开机项目:

bcdedit /deletevalue {cbd971bf-b7b8-4885-951a-fa03044f5d71} winpe

/set 设定项目选择项数值。

设定操作系统“cbd971bf-b7b8-4885-951a-fa03044f5d71”引导分区“C”:

bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} device partition=C:

指定的操作系统引导文件“ windows\ system 32\ winload.exe”:

bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} path
\windows\system32\winload.exe

设定“NX”“OptIn”:

bcdedit /set nx optin

更改系统名称

默认XP系统名称在Vista启动管理器中是”earlier
version of Windows”,
更改:

bcdedit /set {ntldr} Description “Windows XP Professional SP2″

默认Vista系统名称在Vista启动管理器中是”Microsoft Windows”,更改:

bcdedit /set {current} Description “Windows Vista 5456″

四、输出控制指令

====================

/enum 在储存中的列表项目。

列出所有的操作系统载入程序启动项目:

bcdedit /enum OSLOADER

列出所有的启动管理项目:

bcdedit /enum BOOTMGR

列出默认的启动项目:

bcdedit /enum {default}

列出指定的操作系统启动项目:

bcdedit /enum {b38a9fc1-5690-11da-b795-e9ad3c5e0e3a}

/v 列出所有活动的项目

bcdedit /enum ACTIVE /v

五、启动管理控制指令

====================

/bootsequence 设定启动列表顺序。

设定二个操作系统项目和启动顺序:

bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f}
{cbd971bf-b7b8-4885-951a- fa03044f5d71} {ntldr}

加入操作系统项目为启动列表最后项:

bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f} /addlast

/default 设定默认启动项目。

设定默认启动项目:

bcdedit /default {cbd971bf-b7b8-4885-951a-fa03044f5d71}

设定默认启动操作系统程序为 NTLDR:

bcdedit /default {ntldr}

/displayorder 设定哪一个系统启动显示多启动画面。

设定二个操作系统项目和在启动管理显示命令中被建立操作系统载入的程序 NTLDR:

bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f}

{cbd971bf-b7b8-4885-951a-fa03044f5d71} {ntldr}

把指定的操作系统项目加入启动管理显示命令结束:

bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast

/timeout 设定启动暂停数值。

/toolsdisplayorder 设定命令在哪一个启动管理显示工具画面。

设定二个工具项目和内存诊断在那启动管理工具显示命令:

bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f}

{cbd971bf-b7b8-4885-951a-fa03044f5d71} {memdiag}

把指定的工具项目加入启动的结束管理工具显示命令:

bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast

六、BCDEDIT常用设置修复及配置示例

启动入口最主要是四个部分:

Identifier标识符——启动入口的系统标识,可能是bootmgrcurrentid形式等。

device设备——一般是驱动器路径或虚拟映像,系统启动引导后入口。

path路径——device设备的位置,系统用来定位启动文件。

description描述——显示描述,也就是大家见到的菜单显示。

{bootmgr} ——启动管理器

{current}——当前操作系统,启动时选择的系统

{default} ——缺省默认的启动项

{ntldr} ——早期Windows加载

七、为一个启动应用程序控制紧急处理服务的指令

====================

/bootems

开启启动管理紧急处理服务:

bcdedit /bootems {bootmgr} ON

/ems

为目前的操作系统启动项目 EMS 开启:

bcdedit /ems ON

/emssettings 设定紧急处理服务参数。

设定 EMS 参数使用基本输出入系统设定:

bcdedit /emssettings BIOS

BCDEDIT常用操作举例

1、为Windows XP创建一个分区启动入口:

bcdedit /create {ntldr} /d “Windows XP”

bcdedit /set {ntldr} device partition=F:

bcdedit /set {ntldr} path ntldr

bcdedit /displayorder {ntldr} /addlast

2、删除Windows XP启动入口

bcdedit /delete {ntldr} /f

3、设置启动分区

bcdedit /set {标识符} device
partition=C:

4、增加Linux引导入口

bcdedit /create /d “GrubInstallUbuntu” /application bootsector

命令执行后会返回一个GUID,然后使用鼠标选中右键全选,并在标题栏中右键复制下来,接着再执行以下命令(命令中的GUID需要替换成上面命令返回的ID 值)。

bcdedit /set {GUID} device partition=C:

bcdedit /set {GUID} path grldr.mbr

bcdedit /displayorder {GUID} /addlast

5、关闭系统DEP保护:

bcdedit.exe /set {current} nx AlwaysOff

6、创建一个配置数据库:

bcdedit /createstore C:\Myboot


如果打开其他指定的bcd文件如下:

示例:C:\boot>bcdedit.exe /store c:\BCD 后面可以加入操作命令。


ghost前的重要准备工作:

win+r 打开运行对话框:按顺序运行以下代码(复制到运行里回车)
以administrator权限运行以下命令:
BCDEDIT /set {bootmgr} device boot
BCDEDIT /set {default} device boot
BCDEDIT /set {default} osdevice boot

利用Win7卷影副本 找回已丢失的文件

在所有电脑问题中,找回丢失或删除的文件恐怕要算是最困难的了。这方面的软件虽然多,但要么是收费的,要么找回的文件已经损坏,无法打开了。其实如果你用的是Win7系统,不需要安装第三方软件也可以找回这些文件,不必再用“旧的不去,新的不来”这句话来安慰自己了。  

 如果想要在Win7中找回被意外修改或删除的文件,可以从备份中还原,当然,这需要你提前设备了Windows备份。或者也可以“从以前版本还原”这个文件,而这个“以前版本”,就是Windows作为还原点一部分自动保存的文件和文件夹的副本,也被称为“卷影副本”。  

方法一:从备份还原文件  

如果要从备份还原文件,可以单击“开始”按钮,打开“控制面板—系统和维护”,选择“备份和还原”。单击其中的“还原我的文件”,然后按向导中的步骤操作即可完成。    

方法二:从以前版本还原文件    

打开要还原的文件或文件夹所在目录,右键单击该文件或文件夹,选择“还原以前的版本”。

利用Win7卷影副本 找回已丢失的文件

在弹出的对话框中可以看到该文件或文件夹的以前版本列表,该列表包括在备份中保存的文件以及还原点。

利用Win7卷影副本 找回已丢失的文件  

选中列表中要还原的版本,点击“还原”,再次确认要还原的版本后,点击“确定”即可还原到该版本。

利用Win7卷影副本 找回已丢失的文件

需要注意的是,如果要还原包含在库中的以前版本的文件或文件夹,则要在保存该文件或文件夹的位置右键单击它,而不是在库中单击它。