再学习,更上新台阶

 默认分类  再学习,更上新台阶已关闭评论
10月 112012
 

学习是一种信仰

学习是一种习惯

学习是一种乐趣

学习是一种能力

学习是一种态度

 

 

 Posted by at 上午 9:38
5月 162017
 

diff 可以比较两个文件,那么能否比较两个字符串呢(主要是懒得创建文件),其实是可以的,如:

不仅仅diff可以这么玩, vimdiff也能这么玩,如:

那么,比较的两部分算是什么呢?

其实也是两个文件,如下:

这是两个什么文件呢?其实是两个pipe,如下:

这里vimdiff还为这两个pipe创建了两个交换文件.

知识点

bash中 “<(list)” 是一种语法结构,叫做Process Substitution :

3.5.6 Process Substitution

Process substitution allows a process’s input or output to be referred to using a filename. It takes the form of

or

The process list is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. Note that no space may appear between the < or > and the left parenthesis, otherwise the construct would be interpreted as a redirection. Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files.

When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion.

该语法结构在zsh中记作: =(list)

 

参考:

https://unix.stackexchange.com/questions/62140/filesize-difference-of-same-name-folders

http://tiswww.case.edu/php/chet/bash/bashref.html#Process-Substitution

 

 Posted by at 下午 6:13
5月 132017
 

ceph  osd down $id: 将osd $id 标记为down(mark down),达到不再访问的效果,并不真正停止进程,(仍然参与hash?),ceph osd tree 查看的时候,依然可能是up的状态

ceph osd out $id: 将weight 设置为0(零), 达到不再访问的效果,(不参与hash?)

ceph osd lost $id: 删除该osd上的所有数据,该操作比较危险,需要明确指定 –yes-i-really-mean-it, 如:

ceph osd rm $id: 从集群中彻底删除该osd;如果要删除某osd,必须先停止进程,仅仅标记为down(ceph osd down $id) 是不够的,如:

停止指定osd进程:

仅仅rm掉osd还是可以在ceph osd tree中看到,如下:

需要从crush中移除:

然而,依然删除的不够干净,如 auth中还有相关信息:

删除:

查看所有osd:

 

 

 Posted by at 下午 3:58
5月 112017
 

关于cgroupdriver:

docker 默认的cgroupdriver为cgroupfs,也可以手动指定(通过环境变量、命令行参数、daemon.json)systemd,有些docker的rpm包会在 /usr/lib/systemd/system/docker.service 中通过命令行的方式指定cgroupdriver为systemd, 当前支持的cgroupdriver有: cgroupfs、systemd; 命令行设置方式:

虽然创建容器时没有指定cgroupdriver的选项,但是通过修改cgroupdriver重启daemon,可以使得同一个daemon下的容器使用不同的cgroupdriver的(仅仅是出于理解技术实现的思考,实践中似乎没有任何必要)

曾经有文章中疑惑,有的docker容器的cgroup都是在相同的docker目录下的,有的却是docker-xxxx.scope; 原因就在于前者是通过cgroupfs来实现的,后者是通过systemd来实现的; 另外 docker daemon也可以通过选项–cgroup-parent 来指定一个父cgroup(cgroup是有层级结构的),默认为docker,根据cgroupdriver的不同,该cgroup-parent的表现形式也不同,cgroupfs中表现为父目录,systemd中表现为前缀(参考: https://docs.docker.com/engine/reference/commandline/dockerd/#default-cgroup-parent );每个容器都可以有自己的–cgroup-parent,这个对于不同容器进行分组时似乎是不错的。

 

关于runc:

默认runc为 docker-runc,其实runc表现为一个可执行的二进制文件,docker info中显示的只是一个配置时指定的名字,至于该名字对应哪个二进制文件,是在配置的时候指定的,也就是说,你可以在不修改配置的情况下,直接修改对应的二进制文件来修改runc,重启容器就会生效; 另外,创建容器的时候,可以指定runc,指定的是配置daemon时使用的名字,每个容器可以有不同的runc

 

 

 Posted by at 下午 3:40
5月 112017
 

参考: http://blog.csdn.net/theorytree/article/details/6259104

说明: 显示所有支持的调度策略, 方框内的是当前启用的调度策略

查看当前系统支持的调度算法:

难道调度算法和设备本身也有关系?从下面来看,阿里云的云盘不支持任何调度策略:

但是:

值得一提的是,Anticipatory算法从Linux 2.6.33版本后,就被移除了,因为CFQ通过配置也能达到Anticipatory算法的效果。

 

查资料发现, 调度策略为 ‘none’ 的现象和阿里云虚拟机没关系,和阿里云云盘没关系,和操作系统版本也没有(直接)关系,仅仅和内核版本有关系, linux内核从3.13开始引入 blk-mq 队列机制,并在3.16得以全部实现,上面看到的非‘none’的情况,内核版本都在3.10之前,为‘none’的情况是被我手动升级内核到4.4.61 的

如何验证是否启用了blk-mq机制?可以通过查看是否存在mq目录,如下:

目录不存在,说明没有启用该机制

存在mq目录,说明使用的是blk-mq机制

参考: https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq)

参考: http://www.cnblogs.com/cobbliu/p/5389556.html

 Posted by at 上午 10:29

块儿设备操作

 Linux & Unix  块儿设备操作已关闭评论
5月 092017
 

centos中有rpm包util-linux,包含 blockdev命令(其实很多常用的命令都在这里),常见功能如下:

查看预读大小:(单位为扇区)

设置预读大小:

查询是否为只读:( 1 为只读 )

设置设备为只读:

设置设备为读写:

查看扇区大小: (一般都是512)

查看设备容量: (单位为 扇区 )

查看块儿大小: (单位为字节)

查看块儿设备综合信息:

其中:
RO: 是否只读
RA(read ahead):预读扇区数
SSZ(sector size): 扇区大小
BSZ(block size): 块儿大小

 

注意: 这里关于设备的设置在设备重新挂载后会失效,需要重新设置

 

参看: http://www.cnblogs.com/kerrycode/p/4743015.html

 Posted by at 上午 10:44

java core 调试

 Linux & Unix  java core 调试已关闭评论
4月 272017
 

根据java core文件打印java堆栈信息:

 

 Posted by at 下午 5:06