写一个脚本:给脚本传递几个文件,选择压缩方式进行压缩;

#!/bin/bash

#

read -p "Please input some files:" file

select I in gzip bzip2 xz ; do

case $I in

gzip)

gzip file

;;

bzip2)

bzip2 file

;;

xz)

xz file

;;

*)

echo "Input again some files:"

;;

esac

done

#!/bin/bash

#

filedest=/usr/bin/file

read -p "Please input some files:" file1 file2 file3 file4

select I in gzip bzip2 xz ; do

case $I in

gzip)

tar -czf ${filedest}.tar.gz file1 file2 file3 file4

;;

bzip2)

tar -cjf ${filedest}.tar.bz2 file1 file2 file3 file4

;;

xz)

tar -cJf ${filedest}.tar.xz file1 file2 file3 file4

;;

*)

echo "Input again some files:"

;;

esac

done

/etc/issue /etc/init.d /etc/java /etc/yum

file.tar

回顾:

压缩、归档工具

gzip

bzip2

xz

zip/unzip

tar

cpio

机械式磁盘的工作原理,技术参数,常用术语

使用磁盘的步骤:

分区

fdisk gdisk

parted

高级格式化

ext

超级块(备份),GDT,metadata,data

mkfs.ext2/3/4 mkfs.vfat

mke2fs

dumpe2fs

tune2fs

blkid

挂载

mount

-o

acl

umount

/etc/fstab

设备文件(设备名,卷标,UUID...) 挂载点 fs类型 选项 转储频率 自检次序

两种特殊文件:

设备文件:

mknod

符号链接文件:

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

硬链接

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

不能跨文件系统创建硬链接

目录文件不能创建硬链接

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

符号链接(软链接)

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

可以跨文件系统创建

也可以对目录创建

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

ln命令:

ln [option...] src_file link_file

-s, --symbolic:创建符号链接,省略该选项,即创建硬链接;

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

2

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

版本管理:

apache:

2.2  2.4

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

/usr/local/apache --> /usr/local/apache-2.2

/usr/local/apache-2.2

/usr/local/apache-2.4

user.sh --> user1.sh

user1.sh user2.sh user3.sh

什么是RAID

RAID:Redundant Arrays of Inexpensive Disks

即:廉价磁盘冗余阵列

Redundant Arrays of Independent Disks

独立磁盘冗余阵列

1988年由加利福尼亚大学伯克利分校(University of California-Berkeley)提出的“A Case for Redundant Arrays of Inexpensive Disks”。

旨在将多个相对廉价的IDE接口的磁盘合成一个“阵列”来提供更好的IO性能、实现磁盘冗余,或者两者都提供。

RAID

提高IO能力:

磁盘并行读写

提高耐用性;

磁盘冗余来实现

级别:多块磁盘组织在一起的工作方式有所不同

RAID实现的方式:

外接式磁盘阵列:通过扩展卡提供适配能力

内接式RAID:主板集成RAID控制器

安装OS前在BIOS里配置

Software RAID:

RAID级别

RAID-0:条带卷,strip

RAID-1: 镜像卷,mirror

RAID-2

..

RAID-5

RAID-6

RAID-10

RAID-01

RAID-0:

读、写性能提升;

可用空间:N*min(S1,S2,...)

无容错能力

最少磁盘数:2, 2

RAID-1:

读性能提升、写性能略有下降;

可用空间:1*min(S1,S2)

有冗余能力

最少磁盘数:2, 2+

RAID-4:

多块数据盘异或运算值,存于专用校验盘

坏了一块硬盘仍然可以继续工作的模式称为降级模式

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

RAID-5:

读、写性能提升

可用空间:(N-1)*min(S1,S2,...)

有容错能力:允许最多1块磁盘损坏

最少磁盘数:3, 3+

RAID-6:

读、写性能提升

可用空间:(N-2)*min(S1,S2,...)

有容错能力:允许最多2块磁盘损坏

最少磁盘数:4, 4+

RAID混合类型级别

RAID-10:

读、写性能提升

可用空间:N*min(S1,S2,...)/2

有容错能力:每组镜像最多只能坏一块

最少磁盘数:4, 4+

RAID-01、RAID-50

RAID7:可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式

JBOD:Just a Bunch Of Disks

功能:将多块磁盘的空间合并一个大的连续空间使用

可用空间:sum(S1,S2,...)

常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

实现方式:

硬件实现方式

软件实现方式

CentOS 6上的软件RAID的实现:

结合内核中的md(multi devices)模块实现;

mdadm:模式化工具

命令的语法格式:

mdadm [mode] <raiddevice> [options] <component-devices>

支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10,...

模式:

创建模式:-C

装配模式:-A

监控模式:-F

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

<raiddevice>:/dev/md#

<component-devices>:任意块设备,注意如果是分区的话,其分区类型要改为fd

-C:创建模式

-n #:使用#个块设备来创建此RAID

-l #:指明要创建的RAID的级别

-a {yes|no}:自动创建目标RAID设备的设备文件

-c CHUNK_SIZE:指明块大小, 默认值为512K

-x #:指明空闲盘的个数

例如:创建一个10GB可用空间的RAID5

混杂模式

显示RAID的详细信息

-D

mdadm -D /dev/md#

停止md设备:

mdadm -S /dev/md0

管理模式:

-f:为指定的磁盘或分区添加损坏标记

-a:添加磁盘或分区到md设备中

-r:从md设备中移除磁盘或分区

装配模式:Assemble

-A

用于将停止的RAID设备重新装配使之能够正常工作。

在装配RAID设备的时候,需要依赖/etc/mdadm.conf文件进行

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

mdadm -S /dev/md2

mdadm -S /dev/md0

mdadm -C -n 2 -l 0 /dev/sdc /dev/sdf

mdadm -A /dev/md2

mdadm /dev/md2 -a /dev/md0

观察md的状态:

cat /proc/mkstat

watch命令:

-n #:刷新时间间隔,单位为秒,默认为1秒;

watch -n # 'COMMAND'

写一个脚本:模拟Linux登录界面

1) 将用户名和密码(明文即可)存放于/tmp/userinfo文件中,格式为username:password

2) 运行脚本后提示用户输入用户名和密码

3) 用户输入完成后,判断用户输入的是否正确

a) 如果输入错误的用户名,直接提示用户重新输入正确的用户名;

b) 如果用户名正确,密码错误,提示用户重新输入密码,三次连续输错,则让用户重新输入用户名

#!/bin/bash

#

while : ; do

read -p "login: " GET_USERNAME

if ! grep -q "^\<$GET_USERNAME\>" /tmp/userinfo ; then

continue

fi

COUNT=0

until false ; do

if [ $COUNT -eq 3 ] ; then

break

fi

read -p "password: " GET_PASSWORD

PASSWORD=$(grep "^\<$GET_USERNAME\>" /tmp/userinfo| cut -d: -f2)

if [ "$GET_PASSWORD" != "$PASSWORD" ] ; then

let COUNT++

continue

else

break 2

fi

done

done

echo "login successfully."

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添加到卷组中

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

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

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

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命令扩展逻辑边界;

扩大逻辑卷的物理边界:

lvextend -L [+]SIZE /PATH/TO/LVM

如果SIZE有+:表示在原有逻辑卷容量的基础上,增加SIZE空间

如果SIZE无+:表示将逻辑卷的容量扩大到SIZE空间

扩大逻辑卷的逻辑边界:

e2fsck /PATH/TO/LVM

resize2fs [-f] /PATH/TO/LVM

lvreduce:缩减逻辑卷的空间

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

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

lvreduce -L [-]SIZE /PATH/TO/LVM

如果SIZE有-:表示在原有逻辑卷容量的基础上,削减SIZE空间

如果SIZE无-:表示将逻辑卷的容量直接削减至SIZE空间

umount /PATH/TO/LVM

e2fsck /PATH/TO/LVM            //强制校验数据一致性

resize2fs -f /PATH/TO/LVM LV_SiZE //修改逻辑卷的逻辑边界,LV_SIZE为调整后的逻辑卷大小

lvchange -an /PATH/TO/LVM      //关闭逻辑卷

lvreduce -L [+]SIZE /PATH/TO/LVM  //修改逻辑卷的物理边界,大小要和逻辑边界保持一致

lvchange -ay /PATH/TO/LVM      //重新激活逻辑卷

mount /PATH/TO/LVM /PATH/TO/LVM_MOUNT_POINT

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

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

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

逻辑卷的快照:

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

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择。

快照只有在它们和原来的逻辑卷不同时才会消耗空间。

在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。

快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

也可以使用lvextend扩展快照卷。

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享。

由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须要要在同一个VG上!系统恢复的时候的文件数量不能高于快照区的实际容量。

快照逻辑卷

lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM

-L SIZE:指定快照逻辑卷的大小

-s:创建一个快照逻辑卷

-p r:创建处理的逻辑卷是只读权限

-n SNAPSHOT_NAME:指定快照逻辑卷的名称

三个命令:

df命令:

df - report file system disk space usage

df [OPTION]... [FILE]...

-h, --human-readble:单位转换

-l, --local:只显示本地文件系统,不显示网络文件系统

-i, --inodes:显示inode使用状态

-T, --print-type:显示文件系统类型

-P, --portability:使用POSIX输出格式,更易于阅读

du命令:

du - estimate file space usage

du [OPTION]... [FILE]...

-s, sumary,:显示整个目录汇总的文件大小

-h, human-readble:单位转换

dd命令:convert and copy a file

dd [OPERAND]...

dd OPTION

常见的OPERAND:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=BYTES:block size, 复制单元大小

count=N:复制多少个bs

of=FILE:写到所命名的文件而不是到标准输出

if=FILE:从所命名文件读取而不是从标准输入

ibs=BYTES:一次读size个byte

obs=BYTES:一次写size个byte

skip=BLOCKS:从开头忽略blocks个ibs大小的块

seek=BLOCKS:从开头忽略blocks个obs大小的块

conv=conversion[,conversion...]:用指定的参数转换文件。

转换参数:

ascii:转换EBCDIC为ASCII。

ebcdic:转换ASCII为EBCDIC。

block:把每一行转换为长度为cbs的记录,不足部分用空格填充。

unblock:使每一行的长度都为cbs,不足部分用空格填充。

lcase:把大写字符转换为小写字符。

ucase:把小写字符转换为大写字符。

swab:交换输入的每对字节。

noerror:读取出错时继续读取。

notrunc:不截短输出文件。

sync:把每个输入块填充到ibs个字节,不足部分用空(NULL)字符补齐

磁盘拷贝:

~]# dd if=/dev/sda of=/dev/sdb

备份MBR:

~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader:

~]# dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

有二进制文件fileA,size>2K。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?

~]# dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

备份:

将本地的/dev/sdx整盘备份到/dev/sdy

~]# dd if=/dev/sdx of=/dev/sdy将本地的/dev/sdx整盘备份到/dev/sdy

将/dev/sdx全盘数据备份到指定路径的p_w_picpath文件

~]# dd if=/dev/sdx of=/path/to/p_w_picpath

备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

~]# dd if=/dev/sdx | gzip >/path/to/p_w_picpath.gz

恢复:

将备份文件恢复到指定盘

~]# dd if=/path/to/p_w_picpath of=/dev/sdx

将压缩的备份文件恢复到指定盘

~]# gzip -dc /path/to/p_w_picpath.gz | dd of=/dev/sdx

拷贝内存资料到硬盘

将内存里的数据拷贝到root目录下的mem.bin文件

~]# dd if=/dev/mem of=/root/mem.bin bs=1024

从光盘拷贝iso镜像

拷贝光盘数据到root文件夹下,并保存为cd.iso文件

~]# dd if=/dev/cdrom of=/root/cd.iso

销毁磁盘数据

利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行。

~]# dd if=/dev/urandom of=/dev/sda1

得到最恰当的block size

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

~]# dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

~]# dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

~]# dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

测试硬盘读写速度

通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null

~]# dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

修复硬盘

当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

~]# dd if=/dev/sda of=/dev/sda

转载于:https://blog.51cto.com/12481590/1931435

Linux 磁盘阵列、逻辑卷相关推荐

  1. Linux下逻辑卷LVM的管理和RAID磁盘阵列

    Linux系统安全 | Linux下逻辑卷LVM的管理和RAID磁盘阵列 原创 谢公子 [谢公子学安全](javascript:void(0);) 昨天 转载自公众号:谢公子学安全 图片 图片 LVM ...

  2. Linux中逻辑卷相关知识简介

    一.在redhat系列Linux中逻辑卷的相关介绍 LVM(Logical Volume Manager),是逻辑卷管理器,是一个软件,可以实现磁盘的高效管理,如磁盘扩展和缩减等. 它包括物理卷(Ph ...

  3. Android逻辑卷管理LVM,LINUX——LVM逻辑卷管理

    LVM: logical volumes manager LVM逻辑卷部署 物理卷->卷组->逻辑卷 第一步:关机添加磁盘:两个磁盘可以构成一个磁盘组. 第二步:查看磁盘 # ls /de ...

  4. linux 创建逻辑卷命令,Linux对逻辑卷的创建与管理基本命令

    Linux对逻辑卷的创建与管理 linux 逻辑卷创建.增加与减少 创建逻辑卷: 1.创建物理卷 pvcreate /dev/sda3 /dev/sdb3 pvdisplay显示已建的物理卷 2.创建 ...

  5. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载) Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量, ...

  6. linux的逻辑卷和磁盘阵列,使用RAID与LVM磁盘阵列技术

    #### RAID 0 RAID0技术把多块物料硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中. 这样硬盘的读写性能会提升数倍,但若任意一块硬盘 ...

  7. linux 裸设备 逻辑卷,Linux通过逻辑卷使用裸设备

    本文不涉及基础概念,只是简单列一下Linux上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. (一)创建裸设备 1.用fdisk命令为磁盘阵列划分区(如sdc1,sdc2.... ...

  8. linux删除配置信息,Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)...

    一.预备知识 LVM全称为Logical Volume Manager逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分 ...

  9. LINUX在逻辑卷基础加盘操作步骤

    扩容之前的磁盘状况 [root@localhost ~]# df -h 文件系统             容量 已用 可用已用%%挂载点 /dev/mapper/VolGroup-lv_root 5. ...

  10. linux lvm 逻辑卷 创建 扩容 缩减 删除

    目录 什么是LVM? 逻辑卷管理概念? 创建物理卷PV 创建卷组vg LVM的在线扩展 LVM的缩减操作 删除LVM 什么是LVM? LVM是逻辑盘卷管理(Logical Volume Manager ...

最新文章

  1. esp32 python-ESP32及其开发板介绍
  2. pyqt5能否用于鸿蒙系统,PyQt显示来自opencv的视频流
  3. VTK修炼之道45:图形进阶_vtkPolyData属性数据
  4. windows 下查看进程占用
  5. 程序员啊程序员...济南昊锐科技
  6. scrapy离线调试本地HTML文件
  7. 探秘手淘高可用平台(三)——热修复和开发流程
  8. python的模块导入问题_python的模块导入问题
  9. 高效的CSV文本处理利器——univocity-parsers
  10. 全国计算机信息处理技术员报名官网入口,信息处理技术员考试,就是这么简单!...
  11. 小米r1d安装php,小米路由器 一键安装LLM教程
  12. STM32开发 -- Jlink常用命令
  13. 昨天面了一位,见识到了Spring的天花板~
  14. 2021年中国房地产贷款情况分析:房地产贷款余额达52.17万亿元,其中个人住房贷款余额占73.45%[图]
  15. 算法设计技巧与分析(六):图遍历(Graph Traversal)
  16. java media player 设置音量_SoundPlayer可调音量 - c#
  17. Python系统学习流程图,教你一步步学习python
  18. CC2530 + RFX2401C Zigbee模块
  19. 用Audacity分析浊音、清音、爆破音的时域及频域特性
  20. 物资管理系统的设计与实现

热门文章

  1. 4tensorflow-优化器
  2. mysql config win.h_mysql python安装错误:无法打开include文件'config win.h'
  3. 干掉QQ2009preview4的迷你首页广告
  4. 工作站 显卡 测试软件,AMD 推出Radeon Pro VII 工作站显卡,ProRender软件同步更新
  5. CPU中的“核”怎么理解
  6. Cursor对象详解:
  7. 计算机技术在模具设计中的应用,南通模具设计培训 冲压模具设计和制造中的数字化技术应用...
  8. 摩托车无钥匙启动解决方案设计
  9. html伪类鼠标悬停,实现鼠标悬停Tooltip效果的CSS3代码
  10. Java语言程序设计(郎波) 笔记(一)