七、Linux入门之磁盘存储和文件系统

在Linux系统上一切皆文件,所以各种存储设备在Linux也可以通过操作文件的方式对存储设备进行访问操作

设备文件

I/O Ports: I/O设备地址

一切皆文件:open(), read(), write(), close()

设备类型:

      块设备:block,存取单位“块”,磁盘

      字符设备:char,存取单位“字符”,键盘

设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:

      主设备号:major number, 标识设备类型

      次设备号:minor number, 标识同一类型下的不同设备

磁盘设备文件

磁盘设备的设备文件命名:/dev/DEV_FILE

SCSI, SATA, SAS, IDE,USB: /dev/sd

虚拟磁盘:/dev/vd 、/dev/xvd

不同磁盘标识:a-z,aa,ab…

       /dev/sda, /dev/sdb, ...

同一设备上的不同分区:1,2, ...

       /dev/sda1, /dev/sda5

硬盘存储术语:

       head:磁头

       track:磁道

       cylinder:柱面

       sector:扇区,512bytes

硬盘接口类型

并行:

       IDE:133MB/s

       SCSI:640MB/s

串口:

       SATA:6Gbps

       SAS:6Gbps

       USB:480MB/s

机械硬盘和固态硬盘

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤

七、Linux入门之磁盘存储和文件系统_第1张图片

七、Linux入门之磁盘存储和文件系统_第2张图片

                                                  七、Linux入门之磁盘存储和文件系统_第3张图片 七、Linux入门之磁盘存储和文件系统_第4张图片

   在上图中,左图为传统磁盘盘面划分结构,,从盘面中心点往外,磁道数量相同,因为每个扇区大小相同,所以造成盘面外圈的物理空间的浪费,所以现在一般采用右图的划分方法,即ZBR(Zoned Bit Recording),这样每个扇区面积相等,盘面外圈可以划分更多的扇区,同样大小的盘面就可以存储更多的数据。

从盘面外圈开始向内数,磁道号从0开始逐数增加。

每个磁道以512字节等分为多个弧段,这个弧段就是扇区,扇区是磁盘控制器的最小读写单元。通常情况下每个扇区大小为512字节,但不是绝对的。

将所有盘片相同磁道数的磁道划分为柱面,标记方式是由外向内从0开始逐数增加。之所以划分柱面,是因为所有磁盘同步旋转,所有磁头同步移动,所有的磁头在任意一个时刻总是会处在同一磁道同一扇区上。

读写数据时,任意一段数据总是按柱面来读写的,所以盘片越多,读写所扫的扇区数就越少,所需的时间相对就越少,性能就越好。

向磁盘写数据是从外圈柱面向内圈的,只有写完一个柱面才写下一个柱面。

磁盘容量大小由扇区数、磁道数、盘面数(每个盘面都有一个磁头,也可以是磁头数)决定

磁盘大小=磁头数(headers) X 每个磁道上的扇区数(sectors) X 柱面数(cylinders) X 512

磁盘大小=units X 柱面数据(cylinders)

 

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

相较于SSD,HDD在价格、容量占有绝对优势

硬盘有价,数据无价,目前SSD不能完全取代HHD

七、Linux入门之磁盘存储和文件系统_第5张图片

CHS与LBA

CHS

采用24bit位寻址

其中前10位表示cylinder,中间8位表示head,后面6位表示sector

最大寻址空间8GB

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式

LBA(logical block addressing)

LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址

ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes

在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

磁盘分区

为什么分区

       优化I/O性能

       实现磁盘空间配额限制

       提高修复速度

       隔离系统和程序

       安装多个OS

       采用不同文件系统

分区

       两种分区方式:MBR,GPT

     MBR分区

              MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

              如何分区:按柱面

              0磁道0扇区:512bytes

                     446bytes:boot loader

                     64bytes:分区表,其中每16bytes标识一个分区

                     2bytes:55AA,分区标识位,系统找不到标识位,将无法识别磁盘分区

              MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

              分区结构:

七、Linux入门之磁盘存储和文件系统_第6张图片

              硬盘主引导记录MBR由4个部分组成

                     主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序

                     出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节

                     分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4

                     结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA

七、Linux入门之磁盘存储和文件系统_第7张图片

              MBR中DPT结构

七、Linux入门之磁盘存储和文件系统_第8张图片

              备份/还原MBR的启动信息:(0磁道0扇区的前446个字节)

                      dd if=/dev/sda of=start.bak bs=1 count=446           备份

                      dd if=start.bak of=/dev/sda bs=1 count=446           还原

              备份/还原MBR的分区表信息:(0磁道0扇区的倒数66个字节)

                      dd if=/dev/sda of=dpt.bak bs=1 count=66 skip=446        备份

                      dd if=dpt.bak of=/dev/sda bs=1 count=66 seek=446       还原

                      注意:分区信息被损坏后,使用光盘启动后是找不到原来的磁盘分区信息,所以需要备份到其他主机上

              BIOS+MBR:

七、Linux入门之磁盘存储和文件系统_第9张图片

     GPT分区

              GPT:GUID(Globals Unique Identifiers)partition table支持128个分区,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)

              使用128位UUID(Universally Unique Identifier)表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

                     UUID的生成命令:uuidgen

              UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使操作系统启动

              GPT分区结构:

七、Linux入门之磁盘存储和文件系统_第10张图片

              UEFI+GPT:

七、Linux入门之磁盘存储和文件系统_第11张图片

 

     管理分区

              列出块设备:lsblk

              创建分区工具:

                     fdisk 创建MBR分区

                     gdisk 创建GPT分区

                     parted 高级分区操作

              重新设置内存中的内核分区表版本:partprobe [/dev/DEVICE](一般在CentOS 5、7使用)

              查看内核是否已经识别新的分区:cat /proc/partations

              parted命令

                     parted的操作都是实时生效的,小心使用

                     用法:parted [选项]... [设备 [命令 [参数]...]...]

                            parted /dev/sdb mklabel gpt|msdos

                            parted /dev/sdb print

                            parted /dev/sdb mkpart primary 1 200(默认M)

                            parted /dev/sdb rm 1

                            parted –l                 列出分区信息

              partx命令

                     一般在centos6中使用

                     添加分区

                            partx -a  /dev/DEVICE

                            kpartx -a /dev/DEVICE -f: force

                     删除分区用

                            partx -d --nr M-N /dev/DEVICE

              分区工具fdisk和gdisk

                     gdisk /dev/sdb 类fdisk 的GPT分区工具

                     fdisk -l [-u] [device...] 查看分区

                     fdisk /dev/sdb  管理分区

                     子命令:

                            p:分区列表

                            t:更改分区类型

                            n:创建新分区

                            d:删除分区

                            v:校验分区

                            u:转换单位

                            w:保存并退出

                            q:不保存并退出

文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等

支持的文件系统:/lib/modules/`uname –r`/kernel/fs

各种文件系统:https://en.wikipedia.org/wiki/Comparison_of_file_systems

文件系统类型

        Linux文件系统:

                ext2(Extended file system):适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区

                ext3:是ext2的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统

                ext4:是ext文件系统的最新版,提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升

                xfs:SGI,支持最大8EB的文件系统

                btrfs(Oracle)、reiserfs、jfs(AIX)、swap

        光盘:iso9660

        Windows:FAT32, exFAT,NTFS

        Unix: FFS(fast)、UFS(unix)、JFS2

        网络文件系统:NFS、CIFS

        集群文件系统:GFS2、OCFS2(oracle)

        分布式文件系统:fastdfs、ceph、moosefs、mogilefs、glusterfs、Lustre

        RAW:未经处理或者未经格式化产生的文件系统

        根据其是否支持"journal"功能:

                日志型文件系统: ext3、ext4、xfs、...

                非日志型文件系统: ext2、vfat

        文件系统的组成部分:

                内核中的模块:ext4、xfs、vfat

                用户空间的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat

        Linux的虚拟文件系统:VFS

        查前支持的文件系统:cat /proc/filesystems

        VFS

七、Linux入门之磁盘存储和文件系统_第12张图片

        文件系统选择

七、Linux入门之磁盘存储和文件系统_第13张图片

        创建文件系统

                mkfs命令:

                        1)、mkfs.FS_TYPE /dev/DEVICE

                                ext4

                                xfs

                                btrfs

                                vfat

                        2)、mkfs -t FS_TYPE /dev/DEVICE

                                -L 'LABEL'  设定卷标

        创建ext文件系统

                mke2fs:ext系列文件系统专用管理工具

                        -t {ext2|ext3|ext4}:指定文件系统类型

                        -b {1024|2048|4096}:指定块大小

                        -L ‘LABEL’:设置卷标

                        -j:相当于 -t ext3

                        mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

                        -i #:为数据空间中每多少个字节创建一个inode;不应该小于block大小

                        -N #:指定分区中创建多少个inode

                        -I:一个inode记录占用的磁盘空间大小,128---4096

                        -m #:默认5%,为管理人员预留空间占总空间的百分比

                        -O FEATURE[,...]:启用指定特性

                        -O ^FEATURE:关闭指定特性

        文件系统标签

                指向设备的另一种方法,与设备无关

                blkid:块设备属性信息查看

                        blkid [OPTION]... [DEVICE]

                        -U UUID  根据指定的UUID来查找对应的设备

                        -L LABEL  根据指定的LABEL来查找对应的设备

                e2label:管理ext系列文件系统的LABEL

                        e2label DEVICE [LABEL]

                findfs :查找分区

                        findfs [options] LABEL=

                        findfs [options] UUID=

                tune2fs:重新设定ext系列文件系统可调整参数的值

                        -l  查看指定文件系统超级块信息;super block

                        -L 'LABEL’  修改卷标

                        -m #  修预留给管理员的空间百分比

                        -j  将ext2升级为ext3

                        -O  文件系统属性启用或禁用, –O ^has_journal

                        -o  调整文件系统的默认挂载选项,–o ^acl

                        -U UUID  修改UUID号

                        dumpe2fs:显示ext文件系统信息,将磁盘块分组管理

                        -h:查看超级块信息,不显示分组信息

                        xfs_info:显示已挂载的 xfs 文件系统信息

                        xfs_info mountpoint

        文件系统检测和修复

                文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”

                注意:一定不要在挂载状态下执行下面命令修复

                fsck: File System Check

                        fsck.FS_TYPE

                        fsck -t FS_TYPE

                        注意:FS_TYPE 一定要与分区上已经文件类型相同

                        -a  自动修复

                        -r  交互式修复错误

                e2fsck:ext系列文件专用的检测修复工具

                        -y  自动回答为yes

                        -f  强制修复

                        -p  自动进行安全的修复文件系统问题

                xfs_repair:xfs文件系统专用检测修复工具

                        -f  修复文件,而设备

                       -n  只检查

                        -d  允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

设备挂载与卸载

mount挂载

        将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为

        命令格式:mount DEVICE MOUNT_POINT

                 mount:通过查看/etc/mtab文件显示当前已挂载的所有设备

                cat /proc/mounts :查看内核追踪到的已挂载的所有设备,与mount一样

                mount [-fnrsvw] [-t vfstype] [-o options] device dir

                        device:指明要挂载的设备;

                                (1) 设备文件:例如/dev/sda5

                                (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'

                                (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'

                                (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

                        dir:挂载点,事先存在,进程正在使用中的设备无法被卸载

                        注:挂载点下原有文件在挂载完成后会被临时隐藏,所以挂载点目录一般为空

        mount常用命令选项

                -t vsftype   指定要挂载的设备上的文件系统类型

                -r      readonly,只读挂载

                -w      read and write, 读写挂载

                -n      不更新/etc/mtab,mount不可见

                -a       自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)

                -L 'LABEL'   以卷标指定挂载设备

                -U 'UUID'   以UUID指定要挂载的设备

                -B, --bind   绑定目录到另一个目录上

                -o options:(挂载文件系统的选项),多个选项使用逗号分隔

                        async  异步模式   sync 同步模式,内存更改时,同时写磁盘

                        atime/noatime   包含目录和文件

                        diratime/nodiratime  目录的访问时间戳

                        auto/noauto    是否支持自动挂载,是否支持-a选项

                        exec/noexec    是否支持将文件系统上运行应用程序

                        dev/nodev    是否支持在此文件系统上使用设备文件

                        suid/nosuid    是否支持suid和sgid权限

                        remount    重新挂载

                        ro 只读     rw 读写

                        user/nouser    是否允许普通用户挂载此设备,/etc/fstab使用

                        acl      启用此文件系统上的acl功能

                        loop      使用loop设备

                        defaults:相当于rw, suid, dev, exec, auto, nouser, async

umount卸载

        为解除此关联关系的过程

        查看挂载情况:

                findmnt MOUNT_POINT|device

        查看正在访问指定文件系统的进程:

                lsof MOUNT_POINT

                fuser -v MOUNT_POINT

        终止所有在正访问指定的文件系统的进程

                fuser -km MOUNT_POINT

        卸载:可使用设备,也可以使用挂载点

                umount DEVICE

                umount MOUNT_POINT

挂载点和/etc/fstab

        配置文件系统体系

        被mount、fsck和其它程序使用

        系统重启时保留文件系统体系

        可以在设备栏使用文件系统卷标

        使用mount  -a 命令挂载/etc/fstab中的所有文件系统

文件挂载配置文件

        /etc/fstab每行定义一个要挂载的文件系统

                1、要挂载的设备或伪文件系统

                        设备文件

                        LABEL:LABEL=""

                        UUID:UUID=""

                        伪文件系统名称:proc、sysfs

                2、挂载点

                3、文件系统类型:ext4、xfs、iso9660、nfs、none

                4、挂载选项:defaults ,acl,bind

                5、转储频率:0-不做备份、1-每天转储、2-每隔一天转储

                6、fsck检查的文件系统的顺序:允许的数字是0、1、2

                        0:不自检

                        1:首先自检;一般只有rootfs才用

                        2:非rootfs使用

移动介质

挂载意味着使外来的文件系统看起来如同是主目录树的一部分

访问前,介质必须被挂载

摘除时,介质必须被卸载

按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)

挂载点通常在/media 或/mnt下

使用光盘

在图形环境下自动启动挂载/run/media/

否则就必须被手工挂载

        mount /dev/cdrom /mnt/

操作光盘:

        eject 弹出光盘

        eject -t 弹入光盘

创建ISO文件

        cp /dev/cdrom /root/centos.iso

        mkisofs -r -o /root/etc.iso /etc

刻录光盘

        wodim –v –eject centos.iso

挂载USB介质

查看USB设备是否识别:lsusb

被内核探测为SCSI设备

        /dev/sdaX、/dev/sdbX或类似的设备文件

在图形环境中自动挂载

        图标在[计算机]窗口中创建

        挂载在/run/media//

手动挂载

        mount /dev/sdb1 /mnt

swap交换分区

swap交换分区是系统RAM的补充,Swap分区支持虚拟内存,当没有足够的RAM 保存系统处理的数据时会将数据写入swap分区

当系统缺乏swap空间时,内核会因RAM内存耗尽而终止进程,然而配置过多swap空间会造成存储设备处于分配状态但闲置,造成浪费,过多swap空间还会掩盖内存泄露

基本设置包括:

        创建交换分区或者文件

        使用mkswap写入特殊签名

        在/etc/fstab文件中添加适当的条目

        使用swapon -a 激活交换空间

启用:swapon

        swapon [OPTION]... [DEVICE]

        -a:激活所有的交换分区

        -p PRIORITY:指定优先级

        /etc/fstab  在第4列中:pri=value

禁用:swapoff [OPTION]... [DEVICE]

推荐系统 swap 空间

七、Linux入门之磁盘存储和文件系统_第14张图片

SWAP的优先级

        可以指定swap分区0到32767的优先级,值越大优先级越高

        如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一

        先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)

        优化性能:分布存放,高性能磁盘存放

文件系统常见工具

df工具

       文件系统空间占用等信息的查看工具

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

              -H 以10为单位

              -T 文件系统类型

              -h human-readable

              -i   inodes instead of blocks

              -P  以Posix兼容的格式输出

du工具

       查看某目录总体空间占用状态

       du [OPTION]... DIR

       -h  human-readable

       -s   summary

       --max-depth=#   指定最大目录层级

dd工具

       dd 命令:convert and copy a file

       用法:

              dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=# count=#

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

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

                     ibs=size:一次读size个byte

                     obs=size:一次写size个byte

                     bs=size:block size, 指定块大小(既是是ibs也是obs)

                     cbs=size:一次转化size个byte

              ​​​​​​​       ​​​​​​​skip=blocks:从开头忽略blocks个ibs大小的块,作用于输入文件

              ​​​​​​​       ​​​​​​​seek=blocks:从开头忽略blocks个obs大小的块,作用于输出文件

              ​​​​​​​       ​​​​​​​count=n:复制n个bs

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

              ​​​​​​​       ​​​​​​​转换参数: 

              ​​​​​​​       ​​​​​​​       ascii 转换 EBCDIC 为 ASCII

              ​​​​​​​       ​​​​​​​       ​​​​​​​ebcdic 转换 ASCII 为 EBCDIC

              ​​​​​​​       ​​​​​​​       ​​​​​​​lcase 把大写字符转换为小写字符

              ​​​​​​​       ​​​​​​​       ​​​​​​​ucase 把小写字符转换为大写字符

              ​​​​​​​       ​​​​​​​       ​​​​​​​nocreat 不创建输出文件

              ​​​​​​​       ​​​​​​​       ​​​​​​​noerror 出错时不停止

              ​​​​​​​       ​​​​​​​       ​​​​​​​notrunc 不截短输出文件

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

              ​​​​​​​       ​​​​​​​       ​​​​​​​fdatasync  写完成前,物理写入输出文件

       示例:

              备份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

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

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

              备份:

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

                     dd if=/dev/sdx of=/path/to/image            将/dev/sdx全盘数据备份到指定路径的image文件

                     dd if=/dev/sdx | gzip >/path/to/image.gz                 备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径

              恢复:

                     dd if=/path/to/image of=/dev/sdx                             将备份文件恢复到指定盘

                     gzip -dc /path/to/image.gz | dd of=/dev/sdx           将压缩的备份文件恢复到指定盘

              拷贝内存资料到硬盘

                     dd if=/dev/mem of=/root/mem.bin bs=1024                     将内存里的数据拷贝到root目录下的mem.bin文件

              从光盘拷贝iso镜像

                     dd if=/dev/cdrom of=/root/cd.iso                                拷贝光盘数据到root文件夹下,并保存为cd.iso文件

              销毁磁盘数据

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

小练习:

1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

         答:

2、写一个脚本,完成如下功能:1)列出当前系统识别到的所有磁盘设备,2)如磁盘数量为1,则显示其空间使用信息,否则,则显示最后一个磁盘上的空间使用信息

         答:

3、将CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.10-x86_64-Everything.iso文件,并将其配置为yum源

答:

RAID

什么是RAID

       RAID:Redundant Arrays of Inexpensive(Independent) Disks

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

       多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

       作用:提高IO能力,磁盘并行读写;提高耐用性,磁盘冗余来实现

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

       RAID实现的方式

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

              内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置

              软件RAID:通过OS实现

RAID级别

       RAID-0:条带卷,strip

七、Linux入门之磁盘存储和文件系统_第15张图片

       RAID-1:镜像卷,mirror

七、Linux入门之磁盘存储和文件系统_第16张图片

       RAID-2

       

       RAID-5

七、Linux入门之磁盘存储和文件系统_第17张图片

       RAID-6

七、Linux入门之磁盘存储和文件系统_第18张图片

七、Linux入门之磁盘存储和文件系统_第19张图片

       RAID-10

七、Linux入门之磁盘存储和文件系统_第20张图片

七、Linux入门之磁盘存储和文件系统_第21张图片

七、Linux入门之磁盘存储和文件系统_第22张图片

七、Linux入门之磁盘存储和文件系统_第23张图片

RAID

       为空余磁盘添加冗余

       mdadm:模式化的工具

       结合内核中的md(multi devices)

       RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等

       命令的语法格式:mdadm [mode] [options]

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

              mode:

                     创建:-C

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

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

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

                            -c CHUNK_SIZE: 指明块大小,单位k

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

                     装配:-A

                     监控:-F

                     管理:-f, -r, -a

                            -f: 标记指定磁盘为损坏

                            -a: 添加磁盘

                            -r: 移除磁盘

                     -D:显示raid的详细信息

                            mdadm -D /dev/md#

              : /dev/md#

              : 任意块设备

       观察md的状态: cat /proc/mdstat

       示例:

              使用mdadm创建并定义RAID设备

                     mdadm -C  /dev/md0 -a yes -l 5 -n 3 -x 1  /dev/sd{b,c,d,e}1

              用文件系统对每个RAID设备进行格式化

                     mkfs.xfs /dev/md0

              使用mdadm检查RAID设备的状况

                     mdadm --detail|D  /dev/md0

              增加新的成员

                     mdadm –G /dev/md0 –n4  -a /dev/sdf1

软RAID测试和修复

       ​​​​​​​模拟磁盘故障:mdadm /dev/md0 -f /dev/sda1

       移除磁盘:mdadm /dev/md0 –r /dev/sda1

       从软件RAID磁盘修复磁盘故障

       替换出故障的磁盘然后开机

       在备用驱动器上重建分区

              mdadm  /dev/md0  -a  /dev/sda1

              mdadm、/proc/mdstat及系统日志信息

软RAID管理

       生成配置文件:mdadm –D –s  >> /etc/mdadm.conf

       停止设备:mdadm –S /dev/md0

       激活设备:mdadm –A –s /dev/md0 激活

       强制启动:mdadm –R /dev/md0

       删除raid信息:mdadm --zero-superblock /dev/sdb1

练习

       1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录

       2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录

逻辑分区

逻辑卷管理器(LVM)

       允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

       ​​​​​​​允许在多个物理设备间重新组织文件系统

              ​​​​​​​将设备指定为物理卷

              用一个或者多个物理卷来创建一个卷组

              物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的

              在物理卷上创建的逻辑卷,是由物理区域(PE)组成

              可以在逻辑卷上创建文件系统

七、Linux入门之磁盘存储和文件系统_第24张图片

LVM介绍

       LVM: Logical Volume Manager, Version 2

       dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

       设备名:/dev/dm-#

       软链接:

              /dev/mapper/VG_NAME-LV_NAME

                     如:/dev/mapper/vol0-root

              /dev/VG_NAME/LV_NAME

                     如:ev/vol0/root

       LVM更改文件系统的容量

              LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量

七、Linux入门之磁盘存储和文件系统_第25张图片

pv管理工具

       显示pv信息:

              pvs:简要pv信息显示

              pvdisplay:显示详细pv信息

       创建pv:pvcreate /dev/DEVICE

       删除pv:pvremove /dev/DEVICE

vg管理工具

       显示卷组:gs、vgdisplay

       创建卷组:

              vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName

              PhysicalDevicePath [PhysicalDevicePath...]

       管理卷组:

              vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]

              vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]

       ​​​​​​​删除卷组:先做pvmove,再做vgremove

lv管理工具

       显示逻辑卷:lvs、Lvdisplay

       创建逻辑卷:

              lvcreate -L #[mMgGtT] -n NAME VolumeGroup

              lvcreate -l 60%VG -n mylv testvg

              lvcreate -l 100%FREE -n yourlv testvg

       删除逻辑卷:lvremove /dev/VG_NAME/LV_NAME

       重设文件系统大小:

              fsadm [options] resize device [new_size[BKMGTEP]]

              resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

              xfs_growfs  /mountpoint

扩展和缩减逻辑卷

       扩展逻辑卷:

              lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

              resize2fs /dev/VG_NAME/LV_NAME

              lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

       缩减逻辑卷:

              umount /dev/VG_NAME/LV_NAME

              e2fsck -f /dev/VG_NAME/LV_NAME

              resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

              lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

              mount

创建逻辑卷示例

       创建物理卷:pvcreate dev/sda3

       为卷组分配物理卷:vgcreate g0 dev/sda3

       从卷组创建逻辑卷:

              lvcreate -L 256M -n data vg0

              mkfs.xfs   /dev/vg0/data

       挂载:mount /dev/vg0/data /mnt/data

跨主机迁移卷组

       源计算机上

              1、在旧系统中,umount所有卷组上的逻辑卷

              2、禁用卷组

                     vgchange –a n vg0

                     lvdisplay

              3、导出卷组

                     vgexport vg0

                     pvscan

                     vgdisplay

              4、拆下旧硬盘

       在目标计算机上

              5 在新系统中安装旧硬盘,并导入卷组:vgimport vg0

              6 vgchange –ay vg0  启用

              7 mount所有卷组上的逻辑卷

逻辑卷管理器快照

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

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

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

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

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

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

       建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照

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

七、Linux入门之磁盘存储和文件系统_第26张图片

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

       LVM快照示例:

              为现有逻辑卷创建快照

                     lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data

              挂载快照

                     mkdir -p /mnt/snap

                     mount -o ro /dev/vg0/data-snapshot /mnt/snap

              恢复快照

                     umount /dev/vg0/data-snapshot

                     umount /dev/vg0/data

                     lvconvert --merge /dev/vg0/data-snapshot

              删除快照

                     umount /mnt/databackup

                     lvremove /dev/vg0/databackup

小练习

       1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

       2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录

3、扩展testlv至7G,要求archlinux用户的文件不能丢失

4、收缩testlv至3G,要求archlinux用户的文件不能丢失

5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

 

你可能感兴趣的:(笔记)