技术文章
分页: 1/8 第一页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Jul 10
CentOS 7.5 最小化安装之后突遇停电,导致系统无法正常启动直接进入修复模式,经过文件系统修复之后系统开机启动。

进系统之后,启动某些服务发现仍然有分区文件损坏,于是想要卸载分区挂载点来修复文件系统,结果执行umount的时候无法卸载,逐执行fuser命令查看是什么进程在占用,结果直接报-bash: fuser: command not found,找不到此命令。

一般这种错误就是系统没有安装相关的包,所以没有这个命令,解决方法很简单,找到这个命令在哪个包里,安装上就可以了,但是麻烦的就是很多命令你不知道是在哪个包里面,还好yum有个功能可以查到某个命令在哪个包里面,使用yum provides  ifconfig,yum provides lsof,yum provides fuser等可以查到这个命令的安装包是什么,用起来很方便。

知道在哪个包里使用yum安装即可。

Tags: ,
Aug 2
ESXI虚拟机磁盘扩容总体上比较简单,为了数据的安全,动手前做好数据备份,或者克隆虚拟机备份,通过VMware vSphere Client客户端连接ESXI,编辑要扩容磁盘的虚拟机设置,选择磁盘可以直接修改为想要扩容的大小,注意该大小确定之后不能往小的修改,重启虚拟机之后你会发现磁盘的容量并没有发生改变,用fdisk -l查看硬盘的容量确实是已修改后的容量了,要想正常使用新增的容量我们还要做以下几步:

一、关闭要扩容的虚拟机,然后把磁盘添加到其他的虚拟机,或者使用LiveCD引导,我们这里直接把磁盘添加到另一台虚拟机,使用VMware vSphere Client客户端连接ESXI,选择要添加磁盘的那台虚拟机,编辑虚拟机设置-添加-硬盘-使用现有虚拟磁盘-浏览选择我们要扩容的那块磁盘之后确定保存,然后重启这台虚拟机。

二、登录虚拟机操作系统,执行以下操作:

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 268.4 GB, 268435456000 bytes
255 heads, 63 sectors/track, 32635 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd0b1bc7f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1033     8297541   82  Linux swap / Solaris
/dev/sdb2            1034       20887   159477255   83  Linux

这是我们内部的测试机,磁盘空间有限,为了充分的利用磁盘空间,分区比较简单,就一个交换分区和根分区,下面我们使用fdisk删除根分区,并重新建根分区:

[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): d
Partition number (1-4): 2

Command (m for help): p

Disk /dev/sdb: 268.4 GB, 268435456000 bytes
255 heads, 63 sectors/track, 32635 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd0b1bc7f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1033     8297541   82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1034-32635, default 1034):
Using default value 1034
Last cylinder, +cylinders or +size{K,M,G} (1034-32635, default 32635):
Using default value 32635

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

三、格式化磁盘
使用 resize2fs 扩大文件系统大小,磁盘原有的数据不会丢失。
e2fsck -f /dev/sdb2
resize2fs /dev/sdb2

四、关闭该虚拟机,移除这块磁盘,启动那台要扩容的虚拟机,登录系统之后我们发现磁盘已经是扩容后的大小了,最重要的是数据无损。
[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       239G  101G  126G  45% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
[root@localhost ~]#

如果像阿里云那样,数据盘在单独的一块磁盘,就更好操作了。
Oct 8
一、安装xhprof
1.1、下载xhprof
下载地址:http://pecl.php.net/package/xhprof

我们选择最新的版本下载:
wget http://pecl.php.net/get/xhprof-0.9.4.tgz

1.2、解压
tar xzvf xhprof-0.9.4.tgz

1.3、编译安装
cd xhprof-0.9.4/extension/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install

1.4、配置
vi /usr/local/webserver/php/etc/php.ini
添加:
[xhprof]
extension = "xhprof.so"
xhprof.output_dir=/tmp/xhprof

1.5、查看xhprof是否正常加载
/usr/local/webserver/php/bin/php -m|grep xhprof
点击在新窗口中浏览此图片
重启php-fpm
/usr/local/webserver/php/sbin/php5 restart
你也可以访问phpinfo页面查看是否已经加载xhprof
点击在新窗口中浏览此图片

二、安装graphviz工具
2.1、使用yum安装
yum install graphviz libpng libpng-devel -y

2.2、编译安装
下载地址:http://www.graphviz.org/Download_source.php
下载当前最新版本
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz
2.3、解压
tar xzvf graphviz-2.38.0.tar.gz

2.4、编译
cd graphviz-2.38.0/
./configure --with-png=yes
make
make install

三、配置实例及xhprof图形化web工具
3.1、到xhprof文件目录复制相关文件到站点目录
cp -r examples xhprof_html xhprof_lib /home/www/

3.2、运行实例查看效果
打开浏览器输入你的站点访问地址:http://url/examples/sample.php
你会得到例似http:///index.php?run=561600a67ba32&source=xhprof_foo的URL,如下图:
点击在新窗口中浏览此图片

把http://后面输入你的站点访问地址,再次使用浏览器打开就可以看见运行的结果了。
点击在新窗口中浏览此图片

如果你点击:[View Full Callgraph]出现failed to execute cmd " dot -Tpng"的错误,可能是你的php.ini配置中disable_functions那里禁用了proc_open函数,修改php.ini配置文件去掉这个限制就可以图形展示了,感兴趣的朋友可以自己配置一个玩玩。
点击在新窗口中浏览此图片
Tags: ,
May 12
我们知道在Linux中删除文件一般使用rm, 但是rm命令并不会真的清空保存该文件的数据块的内容,而只是释放了该文件所占用的索引节点和数据块。因此用rm删除的文件是可以通过一些方法恢复的(比如可以用debugfs恢复,具体方法Google之)。

有些时候我们要彻底删除一些文件,可以使用shred命令来实现,shred是coreutils的一部分,所以Linux中基本都会有这个命令。

shred彻底删除文件的方法:

$ shred -u file

shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。

如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。

$ shred -u -z file

另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:

$ shred /dev/sdb1   (注意不要加-u参数)

shred的详细参数:

-f, --force   更改权限允许写入(如有必要)

-n, --iterations=N   重写N次,默认为3次

--random-source=FILE 从指定文件读取数据

-s, --size=N  将文件粉碎为固定大小 (可使用后缀如K、M、C等)

-u, --remove   重写后截短并移除文件

-v, --verbose   显示进度

-z, --zero - add  用0覆盖数据

–help  显示帮助

–version   显示版本信息
May 12
    当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

1. rsync安装,有些系统默认安装有该命令
CentOS 系统:yum install rsync
其他的可以源码安装,到下面的网站下载
http://rsync.samba.org

2. rsync提供了一些跟删除有关的参数
rsync --help | grep delete
     --del                                an alias for --delete-during
     --delete                          delete extraneous files from destination dirs
     --delete-before             receiver deletes before transfer, not during
     --delete-during             receiver deletes during transfer (default)
     --delete-delay               find deletions during, delete after
     --delete-after                receiver deletes after transfer, not during
     --delete-excluded        also delete excluded files from destination dirs
     --ignore-errors             delete even if there are I/O errors
     --max-delete=NUM    don't delete more than NUM files
其中--delete-before接收者在传输之前进行删除操作

3. 示例
清空目录或文件,如下:
1、先建立一个空目录

mkdir /data/blank
2、用rsync删除目标目录

rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/
或者
rsync --delete-before -d /data/blank/ /var/edatacache/
这样/var/edatacache目录就被快速的清空了。

选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress          在传输时显示传输过程
-a                       归档模式,表示以递归方式传输文件,并保持所有文件属性
-H                      保持硬连接的文件
-v                       详细输出模式
–stats                给出某些文件的传输状态
-d                      transfer directories without recursing

3、也可以用来删除大文件
假如我们在/root/下有一个几十G甚至上百G的文件data,现在我们要删除它
一、创建一个空文件
    touch /root/empty
二、用rsync清空/root/data文件
    rsync --delete-before -d --progess --stats /root/empty /root/data

注意:
当SRC和DEST文件性质不一致时将会报错
当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件
当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录
分页: 1/8 第一页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]