两种特殊文件:

设备文件:

mknod


符号链接文件:


链接:就是访问一个文件的不同路径;

硬连接:

数据块指针指向同一个数据块的文件;

不能跨文件系统创建硬连接;

目录文件不能创建硬连接;

每次创建硬连接都会增加indoe的引用计数

符号链接(软链接):

用于储存被链接文件的路径的文件;

可以跨文件系统创建;

也可以对目录创建;

每次都必粗进行两组路径的查找;


ln命令:

ln [option...] src_flie link_file

ln - make links between files

-S, --suffix=SUFFIX:创建符号链接,省略该选项,即创建硬连接;

-v, --verbose:显示链接创建的过程;


注意:创建符号链接时,如果想要保证该链接文件被复制或移动到其他路径中依然可用,最好链接至被链接文件的绝对路径;


版本管理:

apache:

2.2 2.4


将不同版本的软件分别放置于不同的目录中,使用符号链接,将软件链接到一个统一的路径:


/usr/local/apache --> /usr/local/apache-2.#

/usr/local/apache-2.2

/usr/local/apache-2.4


RAID:

IDE:

SCSI:


redundant array of inexpensive disks,廉价磁盘冗余阵列

redundant array of independent disks,独立磁盘冗余阵列


RAID:

提高IO能力:

使多个磁盘实现并行读写;

磁盘条带化,chunk

提高耐用性:

磁盘冗余实现

即使磁盘发生故障或损坏,也不会影响数据;


RAID的实现方式:

硬件实现:

通过硬件RAID控制器或适配器。将所需的磁盘组织成RAID,而后安装OS;

BIOS程序

软件模拟实现:

操作系统通过系统调用的方式模拟RAID实现;


RAID的操作级别:

RAID0:

提高IO性能,条带卷,strip

至少2块磁盘

没有冗余容错能力

没有存储空间浪费,要求每个磁盘必须提供相同大小的储存空间;


RAID1:镜像卷,mirror

提供高可用性

需要2块磁盘

先将数据存入主盘,然后再将数据存入从盘;

写入效率较低,略微提示读效率

磁盘空间的整体利用率为50%

有冗余容错的能力


RAID2:

...

RAID4:

至少需要3块磁盘

用多块磁盘进行异或运算,得到校验值,并且使用专门的一块磁盘存放校验值;

即使一块磁盘损坏,也不会丢失数据;

校验盘IO压力巨大,很容易形成性能瓶颈;


RAID5:

用多块磁盘进行循环冗余校验,将校验值随机分配到不同磁盘的条带中;

读、写IO性能均明显提示,又不会出现性能瓶颈

磁盘利用率=(n-1)/n*100%

冗余容错,

至少需要3块磁盘


RAID6:

用多块磁盘进行两轮循环冗余校验,将校验值随机分配到两个不同磁盘的条带中;

读、写IO性能均明显提示,又不会出现性能瓶颈

最多允许两块磁盘出现故障或损坏依然保证数据可用;

代价就是增加了计算校验值的时间;


    RAID混合级别:

    RAID01:

    先做RAID0,在做RAID1


      RAID10:

    先做RAID1,在做RAID0    


RAID7:

可以理解为一个存储计算机,自带操作系统以及相应的管理工具,可以独立运行;


    RAID50:

    先做RAID5,在做RAID0


    JBOD:

    just a bunch of disks,仅仅就是一组磁盘;

    将多块磁盘的储存空间连接到一起,顺序存放数据;


    在centos上实现软RAID:

    内核提供一个md的模块(multi disks,multi devices)

    用户空间需要mdadm的工具,来设置和修改md内核模块的参数;


    mdadm:模式化工具

    mdadm [mode] <raiddevice> [option...] <component device>

    模式包括:

    创建模式:-C

    -n #:使用#块磁盘创建RAID设备

    -l #:指示RAID的级别

    -a {yes|no}:允许系统或不许系统自动创建md设备文件;

    -c CHUNK_SIEZ:指定chunk大小,

    -x #:指定在阵列中空闲磁盘的数量

    装配模式: -A

    根据/etc/madam.conf指示的raid进行装配

    管理模式:-a,-r,-f

    杂项:

    -D --scan

    显示raid设备的详细信息

    mdadm -D --scan > /etc/madam.conf

    该配置文件用于raid设备的再次装配

    -S:停止raid的设备

  dd - convert and copy a file    

  

  LVM2

  logical volume manager,逻辑卷管理器,version(版本)2

  IBM


  使用纯软件的方式组织一个或多个底层的块设备,将它们重新定义为一个逻辑块设备的解决方案;


  利用内核中的dm模块实现;

  dm:device mapper,设备映射表

  dm模块可以将一个或多个底层块设备组织成一个逻辑块设备;

  用户空间中的相应命令来向dm模块发出系统调用,就可以完成后逻辑块设备的管理;


  逻辑块设备统一存放在/dev/dm-#


  使用DM机制实现LVM管理的步骤:

  1.创建并标识物理卷,PV

  注意:如果用来创建物理卷的设备是普通分区,一定要将分区的ID修改为8e;

  2.基于PV创建卷组,逻辑块设备,创建卷组的同时指定PE的大小;

  注意:一旦PE大小被指定,就不允许更改;

  3.在已经创建的卷组中创建逻辑卷

  4.在逻辑卷中创建文件系统(高级格式化)

  5.挂载


  物理卷的管理操作:

  pvcreate:创建物理卷

  pvdisplay:显示物理卷的详细信息

  pvs:显示物理卷的简单信息

  pvremove:删物理卷

  pvmove:将某个物理卷中的所有的PE移动到其他物理卷中;


  卷组的管理操作:

  vgcreate:创建卷组

  -s #{kKmMgG}:指定PE的大小,如果省略该选择,默认的PE为4M

  vgremove:删除卷组

  vgextend:扩展卷组容量,将新的pv添加到卷组中

  vgreduce:缩减卷组容量,将pv从卷组中移除;在做此操作之前,应该先使用pvmove,保证被移除的pv上没有被占用的pe

  vgdisplay:显示卷组的详细信息

  vgs:显示卷组的简短信息


  逻辑卷的管理操作:

  lvcreate:创建逻辑卷

  -L LV_SIZE(#{kK|mM|gG}):指定逻辑卷的大小,不能超过卷组的容量;

        -l #${FREE|VG|ORIGIN|PVS}:指定逻辑卷占用对应存储单元的百分比;

        -n LV_NAME:指定逻辑卷的名称

        -i #:在创建逻辑卷的时候,以条带的方式创建,并指明这个逻辑卷上有#个条带

        -I #:在创建逻辑卷的时候,以条带的方式创建,并指明CHUNK的大小;

      lvremove:移除逻辑卷

      lvdisplay:显示逻辑卷的详细信息

      lvs:显示逻辑卷的简短信息

      lvchange:修改LV的状态

      -ay:激活逻辑卷

      -an:停用逻辑卷

      lvextend:扩展逻辑卷的空间,

      注意:一定要先扩展逻辑卷的物理边界,再扩展逻辑卷的逻辑边界;

        使用ext系列文件系统的时候,resize2fs命令扩展逻辑边界;

      lvreduce:缩减逻辑卷的空间

      注意:先缩减逻辑卷的逻辑边界,再缩减逻辑卷的物理边界,

      使用ext系列文件系统的时候,resize2fs命令缩减逻辑边界;


  为了更方便的使用逻辑卷,为/dev/dm-#设备创建了两个符号链接文件;

  /dev/mapper/VG_NAME-LV_NAME --> ../dm-#

  /dev/VG_NAME/LV_NAME --> ../dm-#


  逻辑卷的快照:

  快照,本身也是一种逻辑卷;目标逻辑卷的另外一个访问路径;


  lvcreate -s -p r -L 15G -n mylv-snopshot /path/to/dest_lv