快照卷:
快照的作用主要是能够进行在线数据备份与恢复。
- 生命周期为整个数据时长,在这段时长内,数据的增长量不能超过快照卷大小。
- 快照卷应该是只读的。
- 跟原卷在同一个卷组内。
1 | 为testlv创建快照卷大小50M,(这个时候的快照,是当前testlv下的快照) |
快照卷:
快照的作用主要是能够进行在线数据备份与恢复。
1 | 为testlv创建快照卷大小50M,(这个时候的快照,是当前testlv下的快照) |
类型为8E
fdisk-l /dev/sdb{1,2,3}
pvcreate
pvmove
pvscan
pvdisplay
pvremove
pvcreate /dev/sdb{1,2,3}
这个时候所有分区为pv,即分区为一个个的PV;
vgcreate
vgscan
vgdisplay
vgextend 在vg内增加额外pv such as: vgextend meiyunvg /dev/sdc
vgreduce 在vg内删除pv vgreduce meuyun /dev/sdb2
vgchange 设置vg是否启动(active)
vgremove 删除一个vg
vgcreate -s 16M meiyunvg /dev/sdb{1,2,3} -s指定PE大小,默认4M,最大容量即:4M*65534=256G ,meiyunvg为卷组的名称,后加vg容易查看;
这样就合并成一个大的vg了;
-L 后面接容量 最好为PE的倍数
-l 后面接PE的数量
-n 后面接LV的名称
lvcreate -l 356 -n meiyunlv meiyunvg
即增加到356*PE,而添加+号,如下所示,表示在原来的基础上再进行增加。
mkfs.ext4 /dev/meiyunvg/meiyunlv
mkdir /mnt/lvm
mount /dev/meiyunvg/meiyunlv /mnt/lvm
修改/etc/fstab
实际的名称在/dev/mapper下,不能有-。
lvresize -l +179 /dev/meiyunvg/meiyunlv
lvdisplay 查看下lv有多大;比如有6.11G
然后增加文件系统的容量:
resize2fs /dev/meiyunvg/meiyunlv 6110M
或者使用:
resize2fs -p /dev/meiyunvg/meiyunlv (即自动扩展)
df -h
直接执行会提示无法在线减少,先卸载umount /mnt/lvm
resize2fs /dev/meiyunvg/meiyunlv 4900M
e2fsck -f /dev/meiyunvg/meiyunlv
resize2fs /dev/meiyunvg/meiyunlv 4900M
如果提示resizing…to …block,表明执行成功;
lvresize -L (-){(6.1G-4.9G)/16m}/dev/meiyunvg/meiyunlv
不过这样可能会损失数据
IDE:133Mbps,并行
USB:串行
SCSI:UitraSCSI,320Mbps,并行
http://soft.zol.com.cn/2005/0126/149010.shtml
一般做RAID的就是下面两种,SAS硬盘小/贵
SAS:串行的SCSI
http://baike.baidu.com/link?url=0blKbgAUIn8q6g8Aue-XU_mslil6G0wsBlbBkHUebBM0HkVydjuP6uS5wAofGpzqgcSV2d3DGPb5A4X0dn8jZa
SATA(Serial ATA):6Gbps,串行
http://bbs.zol.com.cn/diybbs/d34440_582.html
可以简单认为:
SCSI–>SATA–>SAS
/proc/filesystems
查看系统支持的所有文件系统类型
SCSI:
8:
1个initiator,7个target
16:
1个initiator,15个target
mdadm: multi disks administer
/dev/md0
/dev/md1,2…
类型是fd
/proc/mdstat:
显示所有启动raid的信息
mdadm:将任何块设备做成RAID
模式化的命令:
创建模式
-C
专用选项:
-l:级别
-n:设备个数
-a{yes|no}:自动为其创建设备文件
-c:CHUNK大小 (即一个raid的块设备大小,大小:2*n,默认是64K)
所以在格式化的时候可以mke2fs -j -E stride=16 -b 4096 /dev/md0 (会使性能提升)
-x:指定空闲盘个数(其中的一个磁盘损坏然后下一个磁盘代替)
管理模式
–add, –remove,–fail
–add|-a:添加
mdadm /dev/md1 -a /dev/sda9
–fail|-f:模拟成损坏
mdadm /dev/md#(设备) -f /dev/sdb
–remove|-r:删除
mdadm -r /dev/md0 /dev/sda7
监控模式
-F
增长模式
-G
装配模式
-A
mdsdm -A /dev/md0 /dev/sda5 /dev/sda6
详细信息
-D|–detail:
mdadm -D –scan 显示所有mdadm设备
将当前RAID信息保存至配置文件,一边以后进行装配
mdadm -D –scan > /etc/mdadm.conf
停用阵列:
-S
mdadm -S /dev/md0
RAID0:
2+2G
cfdisk /dev/sdb,c Type:fd
partprobe /dev/sdb /dev/sdc (可以是分区)
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd{b,c}
(然后会提示会覆盖掉所有数据,问是否同意,yes即可。)
mke2fs -j /dev/md0 // mkfs.Type /dev/md0
mount /dev/md0 /mnt
就搞定了。
mdadm -D /dev/md0可以查看详细信息
RAID1:
2+2G
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
cat /proc/mdstat (可以看到正在使两个硬盘同步)
mkfs.Type /dev/md1
mount /dev/md1 /media
RAID5:
http://blog.csdn.net/hbdys/article/details/5911589
watch:周期性的执行指定命令,并以全屏方式显示结果
watch cat /proc/mdstat
默认是以2S运行``内的命令
-n:指定周期长度,默认是2S
watch -n 3 cat /proc/mdstat
SATA是串行接口设备,多块共同使用达到并行目的。
—独立冗余磁盘阵列
组成:
多块硬盘+RAID Controller
http://zh.wikipedia.org/wiki/RAID(更多可看wiki介绍)
RAID:
1 |
|
RAID 10是先镜射再分区数据,再将所有硬盘分为两组,
视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作
RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。
它将所有的硬盘分为两组,
变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。
5:
性能表现,读写提升
冗余能力有,空间利用率(n-1)/n
RAID 5可以理解为是RAID 0和RAID 1的折衷方案。
RAID 5可以为系统提供数据安全保障,
但保障程度要比镜像低而磁盘空间利用率要比镜像高。
RAID 5具有和RAID 0相近似的数据读取速度,
只是因为多了一个奇偶校验信息,
写入数据的速度相对单独写入一块硬盘的速度略慢,
若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,
RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。
50:
读写都提升
有冗余能力
空间利用率(n-2)/n
JBOD:就是一个硬盘用满了,用下一个。
性能无提升
无冗余能力
空间利用率100%
数据的存放机制是由第一颗硬盘开始依序往后存放,
即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。
但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。
若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分区表
(partition table)?存在磁盘前端,即第一颗),
失去磁盘分区表即失去一切数据,若遭遇磁盘阵列数据或硬盘
出错的状况,危险程度较RAID 0更剧。
它的好处是不会像RAID,每次访问都要读写全部硬盘。
这个在Hadoop中使用的多;;
默认压缩后删除原文件,解压亦然,另外下面的三个只能压缩文件,不能压缩目录,zip可以。
gzip: .gz
gzip /PATH/TO/FILE,压缩完成后将会删除原文件
-d:解压
-#(1~9):指定压缩比,默认是6,9最大
gunzip:
解压完成后会删除原文件
zcat /path/to/file.gz:在不解压的情况下,查看文本文件内容
bzip2:.bz2
bzip2:
-d:解压
-#(1-9):指定压缩比,默认是6,9最大
-k:保留原文件
bunzip2:解压
bzcat /path/to/file.bz2
xz:.xz
xz /path/to/file
-d:解压
-#(1-9):指定压缩比,默认是6,9最大
-k:压缩保留原文件
unxz:解压
xzcat:在不解压的情况下,查看文本文件。。
zip:既归档又压缩的工具
zip FILENAME.zip file1,file2,file3…压缩后不删除原文件
unzip:解压
tar:
-c:创建归档文件
-f FILE.tar:操作的归档文件
-x:展开归档
-t:不展开归档,直接查看归档了哪些文件
xzvf:解压归档文件.tar.gz
czvf:创建归档文件并压缩.gz
xzjf:解压归档文件.tar.bz2
czjf:创建归档文件并压缩.tar.bz2
read name age
user1 18
如果读入的内容的格式和提示的格式相同,就会很正常
如果是:
user1 18 19
就会输出
user1 18 19
这样就会和你所期望的有点不同
read:
-p:给出提示
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
分区完成后,查看 /proc/partitions可能没有得到新的磁盘分区情况,
可以执行partprobe命令
partprobe:redhat5用,redhat6使用其他的,不过也可以用
通知内核重读硬盘分区表
1 |
|
创建文件系统:
cat /proc/filesystems
查看系统所支持的文件系统
或者mkfs双tab查看mkfs
-t fstypemkfs.ext2/3/4
mkfs -t ext2 = mkfs.ext2
即mkfs -t 调用mkfs.ext(x)。。。
专门管理ext系列文件:
mke2fs
-j:ext3
mke2fs -j /dev/sda5 (ext3)
mke2fs /dev/sda5(ext2)
-t fstype:ext2/ext3/ext4
-b:指定block size,默认为4096,可用取值为1024,2048,4096 !!!!!!!!!!!!
-L:指定分区卷标(label),
mke2fs -L mydata /dev/sda5
-m:指定预留给超级用户的块数百分比,默认%5..
mke2fs -m 3 /dev/sda5 预留%3
-i:默认8K块一个inode;
mke2fs -i 4096 /dev/sda5
-N:指定要创建的inode的个数
-F:强制创建文件系统
-E:用于指定额外的文件系统属性
UUID:系统生成用于唯一指明磁盘设备的身份
TYPE:查看文件系统类型
LABEL:查看卷标
e2label:用于查看或定义卷标
e2label 设备文件 卷标:设定卷标
-j:升级文件系统ext2 到 ext3
tune2fs -j /dev/sda5
blkid /dev/sda5 查看就是ext3了;
这个无损创建(即不损坏原来的数据)
-L:设定卷标
tune2fs -L mydata /dev/sda5(设定或修改卷标)
-m:调整预留百分比(和上面一样用法)
-r:指定预留块数
-o:设定默认挂载选项
acl:Enable Access control list
(在分区时会提示挂载20次或者使用180时会进行自检,而
当服务器上的磁盘有几个T大小时,自检就会消耗大量的资源,这个
时候,可使其关闭)
-c #:指定挂载次数达到#次之后进行自检(0或-1表示关闭此功能)
-i #:每挂载多少天后进行自检(0或-1表示关闭此功能表示关闭此功能)
-h:只显示超级块信息 superbpock
dumpe2fs -h /dev/sda5fsck:检查并修复Linux文件系统
-t fstype:指定文件系统属性(可以不指定,系统会调用blkid)
-a 自动修复e2fsck:检查ext2和ext3和ext4文件系统
-f:强制检查
-p:自动修复
挂载:将新的文件系统关联至当前根文件系统
卸载:将某文件系统与根文件系统的关联关系予以移除
mount 设备 挂载点
设备:
设备文件 : /dev/sda5
卷标 : LABEL=””
UUID : UUID=””
挂载点:目录
要求:
用户模式:用户空间
内核模式:
文件系统是内核的功能
由于VFS的存在,使linux支持多种文件系统
磁盘一部分存元数据,(matadata):inode;另外存放数据.
块的大小(block size):
1KB 2KB 4KB 2^n次方大小
inode的大小还要由块的大小来决定
软链接一般不会需要block
设备文件不会用到block
bitmap:查找数据的一种重要方式
inode bitmap
block bitmap
ext2 和 ext3的最大区别是:
ext3是日志文件系统(journal file system)
Super block: 可以使用dumpe2fs -h进行查看
它是硬盘分区开头——开头的第一个byte是byte 0,
从 byte 1024开始往后的一部分数据。
由于 block size最小是 1024 bytes,所以super block可能是在block 1中(此时block 的大小正好是 1024 bytes),
也可能是在block 0中。 超级块中的数据其实就是文件卷的控制信息部分,
也可以说它是卷资源表,有关文件卷的大部分信息都保存在这里。
例如:硬盘分区中每个block的大小、硬盘分区上一共有多少个
block group、以及每个block group中有多少个inode。
摘自:
http://baike.baidu.com/link?url=vkyx7jTxTT5yBt_I29X13auWsh9vRO8dD2LRf4-VYSJEpJhy-Z035-awqti-5udLRTB9m8Bd3a8Wk5-4n2Fc9q
设备文件: 都在/dev目录下,用于设备的访问入口的;
对于设备的访问入口这句话的理解:
tty
/dev/tty1
换一个:
tty
/dev/tty2
tty1下:
echo “hello” >> /dev/tty2
tty2下:
就会显示#hello
b:(block)按块为单位,随机访问的设备
c:(character)按字符为单位,线性设备
b:硬盘
c:键盘
ls -l /dev
crw-rw—-,1 root root 7, 1 Feb ….
7:是主设备号(用于标识设备的类型)
1:次设备号(用于标识同一种类型中不同设备)
设备文件的创建:
mknod
-m 模型(MODE)
mknod /dev/mydev b 66 0 块设备 主设备号 此设备号
硬盘设备的设备文件名:
IDE,ATA:hd开头
SATA:sd开头
SCSI:sd开头
USB:sd开头
使用a,b,c…进行区分同一种类型的不同设备
IDE:
第一个IDE口:主/从
/dev/hda /dev/hdb
第二个IDE口:主/从
/dev/hdc /dev/hdd
sda,sdb,sdc…
查看硬盘信息:
fdisk -l
低级格式化:格式化磁道
高级格式化:创建文件系统, mkfs
VFS:
例如mkdir的原作者想要创建mkdir命令,但是为了能够在不同的文件系统上
创建目录,就需要根据不同的文件系统的接口写代码以支持不同的我呢见系统,
这样做就会使开发难度增加,所以,为了能够简化这种开发难度,linux上有个
VFS(virtual filesystem)来统一出来不同文件系统的接口,只需要根据这个接口,
就可以简单实现不同文件系统的操作。。
FAT32(linux下叫vfat)
NTFS
ISO9660
CIFS(windows下)
NFS(linux下)
ext2
ext3
ext4
xfs
reiserfs
jfs(日志文件系统IBM)
ocfs2
gfs2
每一个分区都可以使用不同的文件系统,最终归于根目录下;
fdisk
p:显示
n:创建新分区
d:删除
w:保存退出
t:分区类型
q:不保存退出
l:显示所支持的所有类型
partprobe:redhat5用,redhat6使用其他的,不过也可以用
通知内核重读硬盘分区表
这个会在分区完会自动提示这个命令,那个暂时忘了,到时补充。
MBR:Master Boot Record
446bytes:
BootLoader 程序
64bytes:
16bytes:标识一个分区
2bytes:Magic Number
标记MBR是否有效
按柱面进行分区
性能:
平均寻道速度(5400,7500 RPM)
(SICI(10K,15K RPM))
文件系统 :
matadata(类似于索引)
数据
可以把其理解图书馆中的书籍管理与图书存放;;
inode + 块存储
一般删除只是把inode给删掉了,而存储在硬盘中的数据并没有删除,
硬链接
#echo “This is a test!” >ln_test.txt
#ln ln_test.txt ln_test1.txt
stat ln_test.txt
stat ln_test1.txt
可以看到属性都相同
ln -s ln_test.txt ln_test2.txt
stat ln_test2.txt
可以看到属性有变化,并且inode也变化了。
du:
显示文件所占用的磁盘空间大小
du -h显示目录下所有文件所占用的磁盘空间大小
du -sh /usr 显示/usr所占用的磁盘空间大小
df -h :显示当前系统的磁盘使用情况
面向过程:
控制结构
顺序结构
选择结构
循环结构
1 |
|
写一个脚本,可以接受选项及参数,而后能够获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作,比如:
adminusers.sh –add tom,jerry –del tom,blair -v|–verbose -h|help
1 |
|
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true