Linux常用命令(文件系统与磁盘相关操作)

1、基础知识

1:通常称呼一个可被挂载的数据为一个文件系统而不是一个分区。2:操作系统的文件数据除了文件的实际内容外,通常含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(所有者、群组、时间参数等)。文件系统通常会将这两部分的数据分别存放在不同的块,权限与属性放置到inode中,至于实际数据则放置到data block块中。另外还有一个超级块(super block)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。每个inode与block都有编号,这三个数据的意义简略说明如下:
super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。block:实际记录文件的内容,若文件太大时,会占用多个block。3:挂载点的意义:
每个文件系统都有独立的inode、block、super block等信息,这个文件系统要能够链接到目录树才能够被使用。将文件系统与目录树结合的操作称为挂载。挂载点一定是目录,该目录为进入该文件系统的入口。因此并不是所有文件系统都能使用,必须要“挂载”到目录树的某个目录后,才能够使用该文件系统。

存储管理

主要知识点:基本分区,逻辑LVM,ext3/4xfs文件系统,RAID

硬盘的分类:

常见磁盘类型:
SAS 硬盘
SATA 硬盘
SSD 硬盘
SCSI 硬盘
IDE 硬盘

SSD采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈, 拥有极高的存储性能,被认为是存储技术发展的未来新星。
与传统硬盘相比,SSD固态电子盘具有以下优点:
第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
第二,SSD全部采用闪存芯片,经久耐用与硬物碰撞,数据丢失的可能性也能够降到最小。  
第三,得益于无机械部件及闪存芯片,SSD没有任何噪音,功耗低。 
第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化
无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。

3、从分区方式区分

MBR (MSDOS根据分区表来分区的) <2TB
#分区工具:fdisk
一共可以分4个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的可以。
一块硬盘最多分4个主分区。
GPT >2TB和<2TB
#分区工具:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。
#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

基本分区

1:添加磁盘:热插拔,直接插上磁盘即可。非热插拔,插上重启,或关闭服务器插上磁盘:
2:创建分区:使用mbr分区方式,使用fdisk分区工具,
刷新分区表(建议执行),pratprobe /dev/sdb
3:创建挂载点: /mnt /data15
4:格式化文件系统:mkfs.ext4 /dev/sdb
5:挂载:在新建个目录,mkdir /data15 ;
用来挂载这个分区。mount /dev/sdb5 /data15
6:检查:查看挂载是否成功:df -TH /data15思考题:为什么要单独挂载数据盘yum install -y ntfs-3g #自动识别磁盘
ll /dev/sd* #查看全部sd的磁盘
lsblk (list block devices)用于列出设备及其状态,

4、查看磁盘分区:fdisk

fdisk命令中的参数以作用
参数  作用a    切换可启动标志b    编辑bsd disklabelc    切换dos兼容性标志d    删除分区g    创建一个新的空GPT分区表G    创建一个IRIX(SGI)分区表l    列出已知的分区类型m    打印此菜单n    添加一个新分区o    创建一个新的空DOS分区表p    打印分区表q    退出而不保存更改s    创建一个新的空Sun disklabelt    更改分区的系统IDu    更改显示/输入单位v    验证分区表w    将表写入磁盘并退出x    额外功能(仅限专家

5、在系统添加一块磁盘,对磁盘进行分区

MBR 14个分区(4个主分区,扩展分区,逻辑分区)

fdisk分区工具

fdisk -l /dev/sdb #查看磁盘分区信息
fdisk /dev/sdb #针对MBR格式,创建分区
m  查看帮助
n  新建分区
Partition type: p  新建主分区p   primary (0 primary, 0 extended, 4 free)e   extended
默认回车
设置主分区大小创建主分区,然后
Command (m for help): p  ---打印分区信息
创建扩展分区
Command (m for help): n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): e
#注意:扩展分区将剩下的空间全部给了。一路回车即可
创建逻辑分区
Command (m for help): n
Partition type:p   primary (1 primary, 1 extended, 2 free)l   logical (numbered from 5)
Select (default p): l   创建逻辑分区
Adding logical partition 5
First sector (208896-20971519, default 208896):
Using default value 208896
Last sector, +sectors or +size{K,M,G} (208896-20971519, default 20971519): +5G #指定大小
Partition 5 of type Linux and of size 5 GiB is set
Command (m for help): w   --保存退出
# partprobe /dev/sdb   #更新磁盘分区表,手动让内核更新分区表。不需要重启
# lsblk #查看磁盘设备a   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flag#d   delete a partition  删除分区#g   create a new empty GPT partition table 创建gpt分区表 G   create an IRIX (SGI) partition tablel   list known partition typesm   print this menu#n   add a new partition 创建新分区#o   create a new empty DOS partition table 创建mbr分区表#p   print the partition table 打印当前所有分区#q   quit without saving changes 退出(不保存)s   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition table#w   write table to disk and exit 保存x   extra functionality (experts only)新建第一个主分区:
Command (m for help): n                   # 添加分区
Command actione   extended                           # 添加扩展分区p   primary partition (1-4)            # 添加主分区
p                                         # 输入p来创建第一个主分区
Partition number (1-4): 1                 # 输入分区号,从1开始
First cylinder (1-1305, default 1):     # 输入柱面号,不输人默认是1
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G
# 给第一个主分区/dev/sdb1分2G,也可以使用柱面号来指定大小Command (m for help): p     # 第一个分区结束,p查看下已分区信息Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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: 0x2d8d64ebDevice Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux新建扩展分区:
Command (m for help): n      # 再建一个分区
Command actione   extendedp   primary partition (1-4)
e      # 创建扩展分区
Partition number (1-4): 2     # 扩展分区号为2
First cylinder (263-1305, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): # 剩余空间全部给扩展分区
Using default value 1305
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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: 0x2d8d64ebDevice Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263        1305     8377897+   5  Extended新建逻辑分区:
Command (m for help): n      # 新建逻辑分区
Command actionl   logical (5 or over)   # 这里不再是扩展分区标识e,只有l。# 如果已有3个主分区,这里连l都没有p   primary partition (1-4)
l        # 新建逻辑分区
First cylinder (263-1305, default 263):   # 这里也不能选逻辑分区号了
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): +3G
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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: 0x2d8d64ebDevice Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263        1305     8377897+   5  Extended
/dev/sdb5             263         655     3156741   83  Linux
分区结束,保存。如果不保存,则按q。
Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.

gdisk分区工具

yum -y install gdisk
分区的时候直接带上设备即可。以下是对新硬盘划分gpt分区的过程。
[root@xiaoqiang ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10Partition table scan:MBR: not presentBSD: not presentAPM: not presentGPT: not presentCreating new GPT entries.Command (? for help): ?
b       back up GPT data to a file
c       change a partition's name
d       delete a partition                               # 删除分区
i       show detailed information on a partition         # 列出分区详细信息
l       list known partition types                       # 列出所以已知的分区类型
n       add a new partition                              # 添加新分区
o       create a new empty GUID partition table (GPT)    # 创建一个新的空的guid分区表
p       print the partition table                        # 输出分区表信息
q       quit without saving changes                      # 退出gdisk工具
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code                   # 修改分区类型
v       verify disk
w       write table to disk and exit                     # 将分区信息写入到磁盘
x       extra functionality (experts only)
?       print this menu添加一个新分区。
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +10G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F8AE925F-515F-4807-92ED-4109D0827191
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 20971453 sectors (10.0 GiB)Number  Start (sector)    End (sector)  Size       Code  Name1            2048        20973567   10.0 GiB    8300  Linux filesystemCommand (? for help): i
Using 1
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: B2452103-4F32-4B60-AEF7-4BA42B7BF089
First sector: 2048 (at 1024.0 KiB)
Last sector: 20973567 (at 10.0 GiB)
Partition size: 20971520 sectors (10.0 GiB)
Attribute flags: 0000000000000000
Partition name: 'Linux filesystem'
保存分区表到磁盘。Command (? for help): w  Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
执行partprobe重新读取分区表信息。[root@xiaoqiang ~]# partprobe /dev/sdb
gdisk还有几个expert only的命令,其实没什么专家不专家可用的,只需要知道命令何时能用,它们的作用是什么?在gdisk交互过程命令行下,按下x表示进入扩展功能模式,该模式下的功能大部分都和gpt分区表相关,在不是非常了解gpt分区表结构的时候不建议做修改动作,但是查看信息类是没问题的。以下是扩展功能模式下的命令。
Command (? for help): xExpert command (? for help): ?
a       set attributes
c       change partition GUID
d       display the sector alignment value
e       relocate backup data structures to the end of the disk
g       change disk GUID
h       recompute CHS values in protective/hybrid MBR
i       show detailed information on a partition
l       set the sector alignment value
m       return to main menu
n       create a new protective MBR
o       print protective MBR data
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       resize partition table    # 修改分区表大小,注意不是分区大小
t       transpose two partition table entries
u       Replicate partition table on new device  # 将分区表导出
v       verify disk
w       write table to disk and exit
z       zap (destroy) GPT data structures and exit     # 损毁gpt上的数据
?       print this menu

GPT 128个主分区

parted分区工具

[root@xiaoqiang ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.(parted) helpalign-check TYPE N                     check partition N for TYPE(min|opt) alignmentcheck NUMBER (centos 7上已删除该功能) do a simple check on the file systemcp [FROM-DEVICE] FROM-NUMBER TO-NUMBER (centos 7上已删除该功能)   copy file system to another partitionhelp [COMMAND]                        print general help, or help on COMMANDmklabel,mktable LABEL-TYPE             create a new disklabel (partition table)mkfs NUMBER FS-TYPE (centos 7上已删除该功能)  make a FS-TYPE file system on partition NUMBERmkpart PART-TYPE [FS-TYPE] START END    make a partitionmkpartfs PART-TYPE FS-TYPE START END  (centos 7上已删除该功能)   make a partition with a file systemmove NUMBER START END    (centos 7上已删除该功能)  move partition NUMBERname NUMBER NAME                       name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER]   display the partition table,available devices,free space, all                                            found partitions,or a particular partitionquit                                     exit programrescue START END                      rescue a lost partition near START and ENDresize NUMBER START END (修改分区大小(centos 7上已删除该功能))  resize partition NUMBER and its file systemrm NUMBER      (删除分区)             delete partition NUMBERselect DEVICE (重选磁盘进入parted状态)  choose the device to editset NUMBER FLAG STATE  (设置分区状态,如将其off或on)   change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]] (修改文件系统类型,如swap、lvm)   toggle the state of FLAG on partition NUMBERunit UNIT  (修改默认单位,kB/MB/GB等)   set the default unit to UNITversion     display the version number and copyright information of GNU Parted常用的命令是mklabel/rm/print/mkpart/help/quit,至于parted中一些看上去很好的功能如mkfs/mkpartfs/resize等可能会损毁当前数据而不够安全,所以只要使用它的5个常用命令即可。parted分区的前提是磁盘已经有分区表(partition table)或磁盘标签(disk label),否则将显示unrecognised disk label,这是和fdisk/gdisk不同的地方,所以需要先使用mklabel创建标签或分区表,最常见的标签(分区表)为msdos和gpt,其中msdos分区就是MBR格式的分区表,也就是会有主分区、扩展分区和逻辑分区的概念和限制。
下面使用parted对/dev/sdc创建msdos的新分区。
[root@xiaoqiang ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel             # 创建磁盘分区标签(分区表类型)
New disk label type? msdos   # 选择msdos即MBR类型     # 上面的两步也可以直接一步进行:(parted) mklabel msdos
(parted) mkpart              # 开始进行分区
Partition type?  primary/extended? p  # 创建主分区
File system type?  [ext2]? ext4       # 创建ext4文件系统# (这里虽指明了文件系统,但没有意义,仍需手动格式化并选择文件系统类型)
Start? 1                              # 分区开始位置,默认是M为单位,表示从1M开始,也可直接指定1G这种方式
End? 1024                             # 分区结束位置,1024-1=1023M(parted) p                   # print,查看分区信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdosNumber  Start   End     Size    Type     File system  Flags1      1049kB  1024MB  1023MB  primary# 可以一步完成一个命令中的多个动作
(parted) mkpart p ext4 1026M 4096M    # 可一步完成,也可一步完成到任何位置,然后继续交互下一步
# 可能会提示分区未对齐"Warning: The resulting partition is not properly aligned for best performance.",忽略它(parted) mkpart e 4098 -1  # 创建扩展分区,注意创建扩展分区时不指定文件系统类型;-1表示剩余的全部分配给该分区
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdosNumber  Start   End     Size    Type      File system  Flags1      1049kB  1024MB  1023MB  primary2      1026MB  4096MB  3070MB  primary3      4098MB  21.5GB  17.4GB  extended               lba(parted) mkpart l ext4 4099 8194     # 创建逻辑分区,指定ext4
(parted) mkpart l ext4 8195 -1       # 继续创建逻辑分区
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdosNumber  Start   End     Size    Type      File system  Flags1      1049kB  1024MB  1023MB  primary2      1026MB  4096MB  3070MB  primary3      4098MB  21.5GB  17.4GB  extended               lba5      4099MB  8194MB  4095MB  logical6      8195MB  21.5GB  13.3GB  logical(parted) rm 5    # 删除5号分区
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdosNumber  Start   End     Size    Type      File system  Flags1      1049kB  1024MB  1023MB  primary2      1026MB  4096MB  3070MB  primary3      4098MB  21.5GB  17.4GB  extended               lba5      8195MB  21.5GB  13.3GB  logical(parted) quit                                    # 退出parted工具
Information: You may need to update /etc/fstab.  # 提示要更新/etc/fstab中的配置,说明该工具可在线分区
mkfs和mkpartfs等命令不完善,下面的警告信息已经给出了提示。(parted) mkfs 1
WARNING: you are attempting to use parted to operate on (mkfs) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Warning: The existing file system will be destroyed and all data on the partition will be lost. Do you want to
continue?
parted: invalid token: 1
Yes/No? n

三个分区工具的非交互操作

parted命令只能一次非交互一个命令中的所有动作。如下所示:parted /dev/sdb mklabel msdos                # 设置硬盘flag
parted /dev/sdb mkpart primary ext4 1 1000   # MBR格式分区,分别是partition type/fstype/start/end
parted /dev/sdb mkpart 1 ext4 1M 10240M  # gpt格式分区,分别是name/fstype/start/end
parted /dev/sdb mkpart 1 10G 15G         # 省略fstype的交互式分区
parted /dev/sdb rm 1                     # 删除分区
parted /dev/sdb p                        # 输出信如果不确定分区的起点大小,可以加上-s选项使用script模式,该模式下parted将回答一切默认值,如yes、no。$ parted -s /dev/sdb mkpart 3 14G 16G
Warning: You requested a partition from 14.0GB to 16.0GB.
The closest location we can manage is 15.0GB to 16.0GB.
Is this still acceptable to you?
Information: You may need to update /etc/fstab.
disk实现非交互的原理是从标准输入中读取,每读取一行传递一次操作。所以可以有两种方式:使用echo和管道传递;将操作写入到文件中,从文件中读取。例如:下面的命令创建了两个分区。使用默认值时传递空行即可。echo -e "n\np\n1\n\n+5G\nn\np\n2\n\n+1G\nw\n"  | fdisk /dev/sdb
如果要传递的操作很多,则可以将它们写入到一个文件中,从文件中读取。echo -e "n\np\n1\n\n+5G\nn\np\n2\n\n+1G\nw\n" >/tmp/a.txt
fdisk /dev/sdb </tmp/a.txt
gdisk实现非交互
原理同fdisk。例如:echo -e "n\n1\n\n+3G\n\nw\nY\n" | gdisk /dev/sdb
上面传递的各参数意义为:新建分区,分区number为1,使用默认开始扇区位置,分区大小+3G,使用默认分区类型,保存,确认。
转格式的时候保证此分区,没有被系统占用。
# parted -s /dev/sdc mklabel gpt   #将/dev/sdc(MBR格式)转换成(GPT格式)
# parted -s /dev/sdc mklabel msdos  //将/dev/sda(GPT格式)转换成(MBR格式)parted /dev/sdc mklablegpt
parted /dev/ sdc print #查看系统分区表类型
创建于删除分区:parted [磁盘] mkpart  分区类型 文件系统类型 开始 结束
其中,mkpart指令为创建新的分区,分区类型有:permary logical extended三种,文件系统类型有:fat16 fat32 ext2 ext3 linux-sawp等,开始与结束标记区分开始与结束的位置(默认单位为MB)parted /dev/sdc/ mkpart primary ext3 2G 3G
parted /dev/sdc rm 2 #删除分区
gdisk参数:
a切换可启动标志
b编辑BSD磁盘
c切换dos兼容性标志
b将GPT数据备份到文件
c更改分区的名称
d删除分区
我在分区上显示详细信息
l列出已知的分区类型
n添加一个新分区
o创建一个新的空GUID分区表(GPT)
p打印分区表
q退出而不保存更改
r恢复和转换选项(仅限专家)
s排序分区
更改分区的类型代码
v验证磁盘
w将表写入磁盘并退出
x额外功能(仅限专家)
# yum -y install gdisk  #安装分区工具
# gdisk -l /dev/sdc
# gdisk /dev/sdc
Command (? for help): n  --创建分区
Partition number (1-128, default 1):
First sector (34-16777182, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: +100M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):      ---直接回车
Command (? for help): p   --打印分区信息
Command (? for help): w    ---保存
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y   是否覆盖是
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
# partprobe /dev/sdc  #刷新分区表
# gdisk -l /dev/sdc
# lsblk

6、创建文件系统(格式化)centos7默认使用xfs

mkfs.ext4 /dev/sdb1 #格式化成ext4格式的文件系统
mkfs.xfs /dev/sdc2  #格式化成xfs格式的文件系统

mkfs工具和mke2fs工具

mkfs工具mkfs [-t fstype] 分区
该工具非常简单,它只需指定一个可选的-t选项指定要创建的文件系统类型,如果省略则默认创建ext2文件系统。该工具指定的”-t”选项其实是在调用对应文件系统专属的格式化工具。mke2fs工具
mkfs.ext2/mkfs.ext3/mkfs.ext4或mkfs -t extX其实都是在调用mke2fs工具。该工具创建文件系统时,会从/etc/mke2fs.conf配置中读取默认的配置项。mke2fs [ -c ] [ -b block-size ] [ -f fragment-size ] [ -g blocks-per-group ] [ -G number-of-groups ] [ -i bytes-per-inode ] [ -I inode-size ] [ -j ] [ -N number-of-inodes ] [ -m reserved-blocks-percentage ] [ -q ] [ -r fs-revision-level ] [ -v ] [ -L volume-label ] [ -S ] [ -t fs-type ] device [ blocks-count ]选项说明:
-t fs-type
指定要创建的文件系统类型(ext2,ext3 ext4),若不指定,则从/etc/mke2fs.conf中获取默认的文件系统类型。-b block-size
指定每个block的大小,有效值有1024、2048和4096,单位是字节。-I inode-size
指定inode大小,单位为字节。必须为2的幂次方,且大于等于128字节。值越大,说明inode的集合体inode table占用越多的空间,这不仅会挤占文件系统中的可用空间,还会降低性能,因为要扫描inode table需要消耗更多时间,但是在linux kernel 2.6.10之后,由于使用inode存储了很多扩展的额外属性,所以128字节已经不够用了,因此ext4默认的inode size已经变为256,尽inode大小增大了,但因为使用inode存储扩展属性带来的性能提升远高于inode size变大导致的负面影响,所以仍建议使用256字节的inode。-i bytes-per-inode
指定每多少个字节就为其分配一个inode号。值越大,说明一个文件系统中分配的inode号越少,更适用于存储大量大文件,值越小,inode号越多,更适用于存储大量小文件。该值不能小于一个block的大小,因为这样会造成inode多余。注意,创建文件系统后该值就不能再改变了。-c
创建文件系统前先检查设备是否有bad blocks。-f fragment-size
指定fragments的大小,单位字节。-g blocks-per-group
指定每个块组中的block数量。不建议修改此项。-G number-of-groups
该选项用于ext4文件系统(严格地说是启用了flex_bg特性),指定虚拟块组(即一个extent)中包含的块组个数,必须为2的幂次方。对于ext4文件系统来说,使用extent的功能能极大提升其性能。-j
创建带有日志功能的文件系统,即ext3。如果要指定关于日志方面的设置,在-j的基础上再使用-J指定,不过一般默认即可,具体可指定的选项看man文档。  -L new-volume-label
指定卷标名称,名称不得超出16字节。-m reserved-blocks-percentage
指定文件系统保留block数量的比例,保留一部分block,可以降低物理碎片。默认比例为5%。-N number-of-inodes
强制指定该文件系统应该分配多少个inode号,它会覆盖通过计算得出inode数量的结果(根据block大小、数量和每多少字节分配一个inode得出Inode数量),但是不建议这么做。-q
安静模式,可用于脚本中 -S
重建superblock和group descriptions。在所有的superblock和备份的superblock都损坏时有用。它会重新初始化superblock和group descriptions,但不会改变inode table、bmap和imap(若真的改变,该分区数据就全丢了,还不如重新格式化)。在重建superblock后,应该执行e2fsck来保证文件系统的一致性。但要注意,应该完全正确地指定block的大小,其改选项并不能完全保证数据不丢失。-v
输出详细执行过程
所以,有可能用到的选项一般是-t指定文件系统类型,-b指定block大小,-I指定inode大小,-i指定分配inode的比例。例如:$ mke2fs -t ext4 -I 256 /dev/sdb2 -b 4096
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
提示使用tune2fs修改自动检测文件系统的频率。见下文。

7、挂载mount使用:

mount参数:
mount [-t 欲挂载文件系统类型 ] [-o 特殊选项] 设备名 挂载目录
-a  将/etc/fstab文件里指定的挂载选项重新挂载一遍。
-t  支持ext2/ext3/ext4/vfat/fat/iso9660(光盘默认格式)。不用-t时默认会调用blkid来获取文件系统类型。
-n  不把挂载记录写在/etc/mtab文件中,一般挂载会在/proc/mounts中记录下挂载信息,然后同步到/etc/mtab,指定-n表示不同步该挂载信息。
-o  指定挂载特殊选项。下面是两个比较常用的:loop  挂载镜像文件,如iso文件ro    只读挂载rw    读写挂载auto  相当于mount -adev   如果挂载的文件系统中有设备访问入口则启用它,使其可以作为设备访问入口default rw,suid,dev,exec,auto,nouser,async,and relatimeasync 异步挂载,只写到内存sync  同步挂载,通过挂载位置写入对方硬盘atime 修改访问时间,每次访问都修改atime会导致性能降低,所以默认是noatimenoatime 不修改访问时间,高并发时使用这个选项可以减少磁盘IOnodiratime   不修改文件夹访问时间,高并发时使用这个选项可以减少磁盘IOexec/noexec  挂载后的文件系统里的可执行程序是否可执行,默认是可以执行exec,优先级高于权限的限定remount  重新挂载,此时可以不用指定挂载点。suid/nosuid 对挂载的文件系统启用或禁用suid,对于外来设备最好禁用suid_netdev 需要网络挂载时默认将停留在挂载界面直到加载网络了。使用_netdev可以忽略网络正常挂载。如NFS开机挂载。user  允许普通用户进行挂载该目录,但只允许挂载者进行卸载该目录users  允许所有用户挂载和卸载该目录nouser  禁止普通用户挂载和卸载该目录,这是默认的,默认情况下一个目录不指定user/users时,将只有root能挂载mkdir /mnt/huihui  #创建挂载目录
mkdir /mnt/xiexie  #创建挂载目录(ro只读,rx读写,执行)
mount -o rw /dev/sdb1 /mnt/huihui/ #-o指定读写权限
mount /dev/sdb2 /mnt/xiexie#remount重新挂载,此时可以不用指定挂载点。
mount -t ext4 -o remount /dev/sdb1 /data1

8、df查看磁盘挂载与磁盘使用空间

参数解释:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统。
-k:以KB的容量显示各文件系统。
-m:以MB的容量显示各文件系统。
-h:以人们较易阅读的GB,MB,KB等格式自行显示。
-H:以M=1000K替代M=1024K的进位方式。
-T:连同该分区的文件系统名称(例如ext3)也列出。
-i:不用硬盘容量,而以inode的数量来显示。lsblk  df -TH 有什么区别?
在硬盘或分区没有挂载之前只能通过lsblk查看
想要直到硬盘使用的情况,只有查看df _TH才能知道df -TH

9、取消挂载

umount [-fn] 设备文件名或挂载点
参数:
-f:强制卸载。可用在类似网络文件系统(NFS)无法读取到的情况下。
-n:不更新/etc/mtab的情况下卸载。
umount /mnt/huihui/
umount -lf /mnt/diskl/  #强行卸载,即使目录有资源被占用,也可以卸载

10、fstab开机自动挂载

/etc/fstab文件实现开机的时候自动挂载

系统挂载的一些限制:1、根目录是必须挂载的,而且一定要先于其他mount point被挂载进来。2、其他挂载点必须为已新建的目录,可任意指定,但一定要遵守必需的系统目录架构原则。3、所有挂载点在同一时间内,只能挂载一次。4、所有分区在同一时间内,只能挂载一次。5、若进行卸载,必须先将工作目录移到挂载点(及其子目录)之外,否则会报文件系统被占用。blkid /dev/sdb1    #查看uuID和文件系统类型
vim /etc/fstab
参数解释:
UUID=30e35d8b-bddd-480b-a05e-a3de0f0360f1 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0第1列:挂载设备
(1)/dev/sda5  或者
(2)UUID=设备的uuid(blkid /dev/sdb#查到设备的uuid)   rhel6/7的默认写法   同一台机器内唯一的一个设备标识
第2列:挂载点    #指定要挂载到的目录,需在挂载前创建好
第3列:文件系统类型   #指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
第4列:文件系统属性   #若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
第5列:是否对文件系统进行磁带备份:0 不备份 #若为1则开机后使用dump进行磁盘备份
第6列:是否检查文件系统:0 不检查  #若为1则开机后自动进行磁盘自检#blkid
虽然它有不少比较强大的功能,但一般只用它一个功能,就是查看器文件系统类型和UUid。
blkid #查看已经设置设备的uuid
blkid /dev/sdb #设备uuid
vim /etc/mtab #系统实时记录的挂载文件

mount -a #自动挂载 写到、etc/dstab 里面的会自动挂载不用重启
vim /etc/fstab
mount -a

etc/rc.d/rc.local开机自动挂载

这个配置文件会在永辉登录之前读取,这个文件中写入了什么命令。在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统日志系统启动运行的工作。则只需写入 /etc/rc.d/rc.local配置文件即可
vim /etc/rc.d/rc.local #将挂载命令直接写入到文件中

chmod +x /etc/rc.d/rc.local #添加执行权限
reboot

11、磁盘检查:fsck

fsck [-ny] 设备名称
参数:
-n:检查文件系统。
fsck -n /dev/sda
-y:自动修复检查到的有问题的扇区。
#注意:
1、通常只有在root用户下且文件系统可能有问题的时候才使用这个命令,否则正常状况下使用此命令,可能会对系统造成损害。
2、被检查的分区务必不可挂载到系统上,需要在卸载状态下执行。

快速创建文件系统

有时候仅仅为了实验而插入新磁盘、扫描SCSI设备、再分区、格式化,整个过程挺麻烦的。好在,有更为便捷的方式:dd if=/dev/zero of=sdx bs=1M count=32
mke2fs sdx
现在sdx文件就是一个ext家族的文件系统了,相当于已经格式化的/dev/sdxN,它可以直接拿来挂载使用。
mount sdx /mnt/sdx还可以使用mkisofs命令工具快速将目录创建成一个可挂载的镜像文件:
mkdir -p foo/bar/baz
mkisofs -o test.iso foo  # 将foo打包成iso镜像
现在,test.iso镜像文件也可以直接挂载使用:
mount test.iso /mnt/test

文件系统

一、文件系统分类

1.1分类
分类:
本地文件系统,不能在网络上用。
ntfs  xfs  ext2,ext3,ext4
网络文件系统,也可以在本地用。
nfs   glusterfs   hdfs   ceph
1.2概念
作用:
管理文件的一套系统。
文件的编辑,拷贝,粘贴,移动。
node :inode块。专门存储inode信息。里面是文件的属性,权限,访问时间
理解inode

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。索引节点编号;它是文件或目录在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode的内容

文件的字节数文件拥有者的User ID文件的Group ID文件的读、写、执行权限文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。链接数,即有多少文件名指向这个inode文件数据block的位置

查看inode信息

[root@xiaoqiang ~]# stat /etc/hosts#详细查看File: ‘/etc/hosts’Size: 158             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 16778306    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-28 19:11:48.781000069 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-18 15:37:52.353025437 +0800Birth: -[root@xiaoqiang ~]# ls -i /etc/hosts  #-i:查看inode号
16778306 /etc/hosts
1.3.EXT
EXT 家族支持度最广:
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!
1.4.XFS
XFS 同样是一种日志式文件系統:
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快
inode 与 block 都是系統需要用到時,才动态配置产生

LVM逻辑卷制作,扩容,删除,快照,raid5等

lvm相关的概念和机制

LVM(Logical Volume Manager)可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的。
Ivm需要使用的软件包为lvm2, 一般在CentOS发行版中都已经预安装了。> PV(Physical Volume)即物理卷
硬盘分区后(还未格式化为文件系统)使用pvcreate命令可以将分区创建为pv,要求分区的system ID为8e,即为LVM格式的系统标识符。> VG(Volume Group)即卷组
将多个PV组合起来,使用vgcreate命令创建成卷组,这样卷组包含了多个PV就比较大了,相当于重新整合了多个分区后得到的磁盘。虽然VG是整合 多个PV的,但是创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统的Block»
>PE(Physical Extend)
PE是VG中的存储单元。实际存储的数据都是存储在这里面的。>LV(Logical Volume)
VG相当于整合过的硬盘,那么LV就相当于分区,只不过该分区是通过VG来划分的。VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可 以直接指定大小(如多少兆)来划分。划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统。
通俗地讲,非LVM管理的分区步骤是将硬盘分区,然后将分区格式化为文件系统。而使用LVM,则是在硬盘分区为特定的LVM标识符的分区后将其转变 为LVM可管理的PV,其实PV仍然类似于分区,然后将几个PV整合为类似于磁盘的VG,最后划分VG为LV,此时LV就成了 LVM可管理的分区,只需再 对其格式化即可成为文件系统。>LE(logical extent)
PE是物理存储单元,而LE则是漏记存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。从vg中划分Iv,实际上是从vg中划分vg中的 pe,只不过划分lv后它不再称为pe,而是成为le。
能够通过LVM伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲的PE。

lvm的制作(yum install -y lvm2)

第一步,拥有基本分区
做成物理卷:PV -----sdb1,sdb2 打PV的标记
PVcreate /dev/sdb
pvs #pvscan 扫描并列出所有的pv  #pvdisplay 列出pv属性信息
加入卷组:  vg------卷组里面包含:sdb1 sdb2,建立在pv之上
vgcreat vg1(创建卷组的名字)  /dev/sdb(物理卷)
vgs  #vgscan 扫描并列出所有的vg  #vgdisplay 列出vg属性信息
切割逻辑卷  lv -----逻辑卷是从卷组里面拿空间出来做成的逻辑卷,再起个名,建立在VG之上
参数解释:-L 指定的大小 -n 给创建的lv起一个名字 -l 20指定pe(块) 默认4M一个块。
lvcreate -L 150M -n xiexie(创建逻辑卷的名字)  vg1(卷组名)
lvcreate -l 20 -n xiexie (创建逻辑卷的名字)  vg1(卷组名)
lvs  #lvscan 扫描并列出所有的vg  #lvdisplay 列出vg属性信息
格式化文件系统-----mkfs.xfs /dev/vg1/xiexie #lv的路径
mkfs.xfs /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
df -TH 查看文件系统属性,大小,使用率,挂载点。。然后挂载
mount /dev/vg1/lv1 /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1

lvm逻辑卷扩容:

1:如果vg卷容量不够则先扩容:
先扩容vg:创建新的pv pvcreate /dev/sdc ;然后直接vgextend 【扩容的vg卷组名字】 /dev/sdc;然后vgs
#如果想取消vg扩容,则:vgreduce vg(卷组名) /dev/sdc
2:如果vg卷容量充足则直接扩容lv:
再扩容LV:vgs查看;lvextend -L 250M /dev/vg1(卷组)/lv1(逻辑卷名) 250M表示这个lvm扩容到250Mlvextend  -L +250M /dev//lv1 #在原有的基础上加250M lvextend -l +15 /dev/vg1/lv1  #在原来有的基础上加15个pe,默认一个块4M最后: #lvs lvscan  display
FS文件系统扩容:扩容后要修改文件系统属性,否则文件无法识别
df -TH 查看文件系统属性和扩容后是否修改了
则:
xfs_growfs /de
v/vg1/xiexie  #xfx扩容
resize2fs  /dev/vg1/xiexie  #ext4扩容   vg卷组名 LV逻辑卷名
最后:df -TH 查看刷新容量是否扩容成功
重新挂载硬盘设备并查看挂载状态。mount -adf -h

lvm逻辑卷快照:

LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:

#快照卷的容量必须等同于逻辑卷的容量;

#快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

-s 关键选项,创建快照snap****的意思

-L -l后面跟快照包含多少个PE****的数量

-n 后面跟创建的快照的名字

1:vgdisplay  #首先查看卷组的信息,是否足够创建lvm快照
2:lvdisplay  #其次查看你要快照的逻辑卷的大小
3:lvcreate -s -L 100 -n mykuaizhao /dev/myvg/mylv#这里快照的大小需要结合查看到的pe大小
1:在校验快照卷的效果,首先通过vgdisplay卷组输出的信息可以看到使用的容量。接下来用重定向往逻辑卷设备所挂载的目录中写入一个文件。
echo "Welcome to shejianshang de yunjisuan" > /linuxkuaizhao/xiexie.txt或
dd if=/dev/zero of=/linuxkuaizhao/qiangqiang count=1 bs=100M:
2:最后对逻辑卷进行快照还原操作。(在此之前记得先卸载掉逻辑卷设备与目录的挂载)
#umount /linuxkuaizhao
lvconvert --merge /dev/myvg/mykuaizhao
3:执行上面的还原快照后快照卷会被自动删除,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。
mount -a
ls /linuxkuaizhao

删除逻辑卷:

当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。

第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
#umount /opt
#vim /etc/fstab
第2步:删除逻辑卷设备,需要输入y来确认操作。#lvremove /dev/vg/lv
第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
#vgremove vg
第4步:删除物理卷设备。#pvremove /dev/sdb /dev/sdc

交换分区:swap

交换分区管理swap--也叫虚拟内存,作用提升内存的容量,防止oom(out of memory)
现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程).如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽查看当前的交换分区:free -m  ;  swapon  -s 查看交换分区信息

增加交换分区,可以是基本分区lvm, file两种:

lvm:
1:在一个磁盘分一个主分区出来 fdisk /dev/sdd
刷新分区表:partprobe /dev/sdd
ll /dev/sdd* #查看以sdd磁盘的所有分区
初始化:mkswap /dev/sdd1
查看uuid:blkid /dev/sdd1 #查看这个分区的uuid
开机挂载:vim /etc/fstab
1:/dev/sdd1 swap swap defaults 0 0 或 UUID:         swap swap defaults 0 0
激活sqap分区(读取/etc/fstab):swapon -a
查看交换分区:swapon -s
关闭swap分区:swapoff /dev/sdd1file:
dd 命令的基本格式如下:
# dd if="输入文件" of="输出文件" bs="数据块" count="数量"
m
2:dd if=/dev/zero of=/swap2.img(自己创建的目录)  bs=1M count=512
解释:dd 读入从空设备里面拿空快  到交换分区  块多大 一共多少兆
初始化:mkswap /swap2.img
查看uuid:blkid /dev/sdd1 #查看这个分区的uuid
开机挂载:vim /etc/fstab
1:/dev/sdd1 swap swap defaults 0 0 或 UUID:         wap swap defaults 0 0
交换分区权限需要设置为600,默认644权限不安全
激活sqap分区(读取/etc/fstab):swapon -a
查看交换分区:swapon -s
关闭swap分区:swapoff /dev/sdd1

raid–磁盘阵列

1、RAID介绍

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

概念

1、镜像( Mirroring ):镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。

2、数据条带( Data Stripping ):磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。

3、数据校验( Data parity ):镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。

#注意
#所有服务器在安装操作系统之前必须先做raid【常识】
作用
为什么要做raid? #为了保证数据完整性,防止数据丢失

最常用的raid级别:0、1、5、6、10:10是 1和0 的组合

yum install -y mdadm
raid0 ---数据条带卷
raid0把连续的数据分散到多个磁盘上存取,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:
1.读写速度快,
2.磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。应用场景:
1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
2)要求读写效率高,安全性能要求不高,如图像工作站
============================================================================
raid1 又叫镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据。一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快
缺点:写速度慢,无数据校验。磁盘利用率不高
磁盘利用率:50%应用场景:
存放重要数据,如数据存储领域
===========================================================
raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。RAID5的磁盘上同时存储数据和校验数据,数据快和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。 raid5最少需要3块磁盘。
优点:
1.可以找回丢失的数据---数据可以通过校验计算得出,
2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
3.有校验机制
4.读写速度高
5.磁盘利用率高
缺点:
1.磁盘越多安全性能越差
(n-1)/n应用场景:安全性高,如金融、数据库、存储等。
==================================================
raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。
最少需要四块磁盘,两块存校验位。RAID6引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
优点:
1.容错:允许两块磁盘同时坏掉。读写快。
2.良好的随机读性能
3.有校验机制缺点:
1.写入速度差
2.成本高应用场景:对数据安全级别要求比较高的企业
===============================================
RAID10:先做镜像再作条带化--也叫混合raid
优点:
1.RAID10的读性能将优于RAID01
2.较高的IO性能
3.有数据冗余
4.无单点故障
5.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
=======================================================
购买磁盘后需要操作
# 1.有磁盘,2.制作read5,3.开始分区,4.刷新分区表,5,制作文件系统,6.挂载。

RAID5(3块硬盘)+热备(1块硬盘)

一:没lvm逻辑卷
1:准备4块硬盘
ll /dev/sd*
2:对磁盘进行分区:fdisk -l查看分区情况,raid组需要每一个分区大小一致
3:创建RAID5(yum install -y mdadm)
mdadm -C /dev/md0(创建的名字) -x1 -n3 -l5 /dev/sd{a,s,d,f}
注:-l RAID级别,这里为5,即RAID5 -n RAID组中硬盘数量,这里有3块 -x 热备盘数量,这量设置为1块 /dev/sdb[1-4] 使用的是哪些硬盘,这里使用/dev/sdb1~/dev/sdb4一共四个硬盘(3块建RAID5,1块用于热备)。#2>将RAID配置信息写入到配置文件Mdadm --detail --scan --verbose /dev/md0 > /etc/mdadm.conf
注:Linux启动时会自动读取/etc/mdadm.conf,对raid组进行配置。
3>查看RAID信息
a.查看RAID组的详细信息mdadm --detail /dev/md0
b.查看RAID组的状态信息cat /proc/mdstat
#mdadm -D /dev/mdO查看信息4:格式化,挂载
#mkfs.ext4 /dev/md0
#vim /ect/fstab
blkid /dev/md0 查看设备uuid
#mount -a
或者:mount /dev/md0 /opt
4:df -TH 二:有lvm逻辑卷
1:准备4块硬盘
ll /dev/sd*
2:创建RAID5(yum install -y mdadm)
mdadm -C /dev/md0(创建的名字) -x1 -n3 -l5 /dev/sd{a,s,d,f}
3:创建Pv,vg,lv
pvcreate /dev/md0
vgcreate xiexie /dev/md0
lvcreate -L 50M -n qiangqiang /dev/xiexie
4:格式化和挂载
mkfs.xfs /dev/xiexie/qiangqiang
mkfs.ext4 /dev/xiexie/qiangqiang
#vi /etc/fstab
blkid /dev/xiexie/qiangqiang
mount -a
5:df -TH查看raid信息:mdadm -D /dev/md0

模拟一块硬盘损坏并移除

终端一:watch -n 0.5 'mdadm -D /dev/md0 | tail'     //watch持续查看
终端二:mdadm /dev/md0 -f /dev/sde -r /dev/sde  //模拟坏了并移除  -f  --fail  -r  --remove通过manage模式可以模拟阵列中的设备损坏。
mdadm --manage /dev/md[0-9] [—add 设备名][—remove 设备名][—fail 设备名] 选项说明:
manage : mdadm 使用 manage 模式,此模式下可以做一add/—remove/—fail/―replace 动作 —add   :将后面列出的设备加入到这个md
—remove :将后面列出的设备从md中移除
-fail :将后面列出的设备设定为错误状态,即人为损坏
设置RAID开机生效:
mdadm -D -s
mdadm选项:
-s  --scan
-S  --stop
-D  --detail
mdadm -D /dev/mdO
-C  --create
-f   --fail  模拟损坏
-r   --remove  拔出硬盘
-a  插回硬盘
-n  --raid-devices=3
-x  --spare-devices=1
-l   --level=5raid5 删除操作
1、卸载raid挂载
umount /dev/md02、停止raid
mdadm -S /dev/md03、删除raid卷
mdadm --misc --zero-superblock /dev/sd{b,c,d,e}#mdadm —manage Zdev/mnO -add Zdev/sdd 再修复时将新磁盘加入到raid中。

04Linux常用命令(文件系统与磁盘相关操作)相关推荐

  1. Ubuntu 常用快捷键、指令以及相关操作

    Ubuntu 常用快捷键.指令以及相关操作 Ubuntu常用快捷键.指令(简洁版) 系统自带截图工具的使用 配置环境变量 Ubuntu常用快捷键.指令(简洁版) 快捷键 快捷键 含义 Ctrl + A ...

  2. 05_NoSQL数据库之Redis数据库:Redis的常用命令,键值相关命令和服务器相关命令

     Redis常用命令 Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以再Linux终端使用. 键值相关命令: Keys:返回满足给定pattern的所有key 用表达式*表 ...

  3. Linux常用命令大全--有关磁盘空间的命令

    1.mount 命令的功能是挂载文件系统,可以挂载硬盘.光盘.软盘,也可以挂载NFS网络文件系统 mount -t 设备类型 存放目录mount IP地址:/所提供的目录 存放目录(无) 不加任何参数 ...

  4. MySQL命令(一)| 数据类型、常用命令一览、库的操作、表的操作

    文章目录 数据类型 数值类型 字符串类型 日期/时间类型 常用命令一览 库的操作 显示当前数据库 创建数据库 使用数据库 删除数据库 表的操作 创建表 显示当前库中所有表 查看表结构 删除表 数据类型 ...

  5. postgresql数据库工作常用命令-(数据库性能检查相关命令) -TODO

    文章目录 一.postgresql数据库工作常用命令 1. 数据库性能检查相关命令 2. 表结构信息查询 3. 命令行下更好显示 查询结果 一.postgresql数据库工作常用命令 查看当前都有什么 ...

  6. screen的常用命令和运行程序的操作步骤

    1 安装screen 在linux上安装screen时候 apt-get install screen 报错: E: Could not open lock file /var/lib/dpkg/lo ...

  7. linux磁盘的命令是,linux磁盘相关的命令

    # disk # # # 2011.11.4 1:记录一些与磁盘分区,文件系统相关的命令.如df,fdisk,mount,umount等. 2:df命令 df -a                 # ...

  8. 【AIX】AIX磁盘相关操作

    下面是使用VIO的AIX服务器上功能删除一块存储上硬盘分区的操作方法 操作环境:AIX操作系统版本5.3 AIX删除用户卷组VG操作3大步骤如下: l  umount  文件系统 l  varyoff ...

  9. Linux常用命令:文件及磁盘

    #查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令: linux文件或者目录名称最长可以有265个字符,".&q ...

最新文章

  1. MyEclipse2014 破解图文教程
  2. 新技术不断涌现,下一代云计算的突破口在哪里?
  3. windows下使用svn命令行
  4. 1-1、作用域深入和面向对象
  5. python网络通信框架_【python:flask-SocketIO】网络通信框架简单了解
  6. python操作redis实例_Java,php,Python连接并操作redis实例
  7. 没有bug队——加贝——Python 41,42
  8. eclipse java source_Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法
  9. 来自山西机器人乐队_冰山上的机器人X三十禁放映 | 庞宽、李霄云对谈预告
  10. python3.7读取csv文件_Python3 读取csv文件
  11. 小米电视2+android,真实体验小米电视2方便安装第三方软件
  12. 2018北邮计算机考研分数线,2018年北京邮电大学软件学院考研复试分数线
  13. 学渣的c#复习手记 类 一
  14. linux下R及Rstudio及Rhadoop安装
  15. php spider 参数详解,利用phpspider爬取网站数据
  16. Guava 之 Splitter
  17. 面向对象方式爬取知乎鸡汤
  18. 什么是“系统空闲进程”,为什么使用那么多的CPU?
  19. 如何在PHP中使用Modulo运算符
  20. 【文本检测与识别-白皮书-3.1】第四节:算法模型 2

热门文章

  1. 千呼万唤始出来 Azure Stack终落地
  2. 基于pytorch的人脸识别脚本(python示例)
  3. vscode 安装TortoiseSVN
  4. mod_jk(Apache+mod_jk+tomcat)详细配置方法
  5. android虚拟设备 组成,2.1.2 Android虚拟设备和模拟器
  6. javascript断点调试
  7. 真实评测:全球卫星地图哪个最清晰?
  8. python批量打印excel 按照顺序_如何按要求的顺序批量打印多个Excel文件
  9. C++ 由月份判断季节
  10. SQL Server 数据库之事务