Linux学习笔记(一)-磁盘划分

磁盘设备

磁盘设备文件命名

IDE: /dev/hd[a-d]

SCSI, SATA, SAS, USB: /dev/sd[a-p]

软驱:/dev/fd[0-1]

打印机:/dev/lp[0-15]

光驱:/dev/cdrom

鼠标:/dev/mouse

同一设备上的不同分区:1,2, ...(/dev/sda1, /dev/sda5)

Linux文件系统管理

Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap

swap: 交换分区

光盘:iso9660

Windows:fat32, ntfs

Unix: FFS, UFS, JFS2

网络文件系统:NFS, CIFS

集群文件系统:GFS2, OCFS2

分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre

根据其是否支持"journal"功能:日志型文件系统: ext3, ext4, xfs, ...;非日志型文件系统: ext2, vfat

文件系统的组成部分:内核中的模块:ext4, xfs, vfat;用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

Linux的虚拟文件系统:VFS

创建文件系统

mkfs:该命令用来在一个设备上构建Linux支持的相关文件系统,也可称之为格式化工具,这里的设备通常是指标硬盘分区。在Linux上通过fdisk等工具进行完分区后,还需要对分区进行处理,使之支持相应的文件系统,这时候就需要用到mkfs这个工具,建立文件系统过程的实质是在磁盘空间上面建立文件系统所需的结构,根据文件系统设计在磁盘空间上写入关于文件系统的数据(称之为文件系统元数据),基于这些数据实现对文件系统的管理和进行相关的操作。实际上,mkfs是一个linux下不同文件系统构建器(mkfs.fstype)的简化前端工具。

语法:mkfs.文件类型名称 硬盘分区名称

mke2fs:ext系列文件系统专用管理工具,被用于创建磁盘分区上的“etc2/etc3”文件系统。

    选项:
        -t {ext2|ext3|ext4}
        -b 指定区块大小,单位为字节
        -L 设置文件系统的标签名称
       -j: 相当于 -t ext3
            mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
        -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;
        -N #:为数据空间创建个多少个inode;
        -m #: 为管理人员预留的空间占据的百分比;预设为5%;
        -O FEATURE[,...]:启用指定特性
            -O ^FEATURE:关闭指定特性

mkswap:创建交换分区

语法:
    mkswap [选项] [设备名称]
选项:
    -c:建立交换区前,先检查是否有损坏的区块; 
    -f:在SPARC电脑上建立交换区时,要加上此参数; 
    -v0:建立旧式交换区,此为预设值; 
    -v1:建立新式交换区。

前提:调整其分区的ID为82;

分区管理工具

分区管理工具有三种:fdisk, parted, sfdisk

fdisk

对于一块硬盘来讲,最多只能管理15分区;

# fdisk -l [-u] [device...]
# fdisk device
    子命令:管理功能
        p: print, 显示已有分区;
        n: new, 添加新的分区
        d: delete, 删除某个分区
        w: write, 写入磁盘并退出
        q: quit, 放弃更新并退出
        m: 获取帮助
        l: 列出所有分区的类型
        t: 改变某个分区的类型

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

通知内核重新读取硬盘分区表:
    partx -a /dev/DEVICE
        -n M:N

    kpartx -a /dev/DEVICE
        -f: force

    CentOS 5: 使用partprobe
        partprobe [/dev/DEVICE]

实战操作一下fstab命令:
我们现在给Linux系统添加一块硬盘进行分区、格式化并挂载到/TESTnew目录下。添加硬盘的操作就不再演示;添加好硬盘后重启一下系统。

第一步:使用fdisk命令对sdb硬盘进行分区:

#使用fdisk命令对sdb硬盘进行分区:
[root@xwq ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x85f5b4ec.
#敲击p查看分区表信息
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x85f5b4ec

   Device Boot      Start         End      Blocks   Id  System
#敲击n创建新的分区信息
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
#敲击数字1代表分区编号为1:
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
#磁盘的起始扇区,直接回车即可:
Using default value 2048
#键入+2G,代表该分区的大小为2G
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
#再次查看分区信息
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x85f5b4ec

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
#敲击w保存退出
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

第二步:格式化为xfs文件系统:

Linux用于格式化的命名是mkfs,它支持的文件类型有:cramfs,ext2, ext3, ext4, xfs, msdos,btrfs,minix,vfat

使用方法:mkfs.文件类型名称 硬盘分区名称

[root@xwq ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

第三步:将硬盘设备挂载到/TESTnew目录:

[root@xwq ~]# mkdir /TESTnew
[root@xwq ~]# mount /dev/sdb1 /TESTnew/

第四步:设置系统启动后自动挂载该硬盘设备:

在/etc/fstab末行插入:/dev/sdb1 /TESTnew xfs defaults 0 0

第五步:查看文件系统的使用情况

df命令用于查看挂载点信息与磁盘使用量,格式为:“df [选项] [文件]”(详细用法下面介绍~~~)

[root@xwq ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   45G  3.0G   42G   7% /
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G  164K  1.9G   1% /dev/shm
tmpfs                  1.9G  9.0M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-home   22G   36M   22G   1% /home
/dev/sda1              497M  119M  379M  24% /boot
/dev/sr0               3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
/dev/sdb1              2.0G   33M  2.0G   2% /TESTnew

其它常用工具

blkid:块设备属性信息查看

blkid [OPTION]... [DEVICE]
    -U UUID: 根据指定的UUID来查找对应的设备
    -L LABEL:根据指定的LABEL来查找对应的设备
    -h 显示帮助信息
    o 指定输出格式 
    -s 显示指定信息,默认显示所有信息
    -v 显示版本信息
实例:
1、列出当前系统中所有已挂载文件系统的类型: # blkid 
2、显示指定设备 UUID: # blkid -s UUID /dev/sda5 
3、显示所有设备 UUID: # blkid -s UUID 
4、显示指定设备 LABEL: # blkid -s LABEL /dev/sda5 
5、显示所有设备 LABEL: # blkid -s LABEL 
6、显示所有设备文件系统: # blkid -s TYPE 
7、显示所有设备: # blkid -o device 
8、以列表方式查看详细信息: # blkid -o list

e2label:管理ext系列文件系统的LABEL(不常用)

    # e2label DEVICE [LABEL]

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

命令作用:Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。

选项:
    -l:查看指定文件系统超级块信息;super block
    -L 'LABEL':修改卷标
    -m #:修预留给管理员的空间百分比
    -j: 将ext2升级为ext3
    -O: 文件系统属性启用或禁用
    -o: 调整文件系统的默认挂载选项
    -U UUID: 修改UUID号

实例:
    tune2fs -c 30 /dev/hda1 设置强制检查前文件系统可以挂载的次数 
    tune2fs -c -l /dev/hda1 关闭强制检查挂载次数限制。 
    tune2fs -i 10 /dev/hda1 10天后检查 
    tune2fs -i 1d /dev/hda1 1天后检查 
    tune2fs -i 3w /dev/hda1 3周后检查 
    tune2fs -i 6m /dev/hda1 半年后检查 
    tune2fs -i 0 /dev/hda1 禁用时间检查 
    tune2fs -j /dev/hda1 添加日志功能,将ext2转换成ext3文件系统 
    tune2fs -r 40000 /dev/hda1 调整/dev/hda1分区的保留空间为40000个磁盘块         tune2fs -o acl,user_xattr /dev/hda1 设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性

dumpe2fs:用于打印“EXT2 / ext3的”文件系统的超级块和快组信息。

选项:
    -h:查看超级块信息
    -b:打印文件系统中预留的块信息
    -i:从指定的文件系统映像文件中读取文件系统信息 
    -x:以16进制格式打印信息块成员

文件系统检测

fsck: 命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复

语法:fsck [参数] [设备名称]
选项:
    -a:自动修复文件系统,不询问任何问题; 
    -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; 
    -N:不执行指令,仅列出实际执行会进行的动作; 
    -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统; 
    -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; 
    -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; 
    -s:依序执行检查作业,而非同时执行; 
    -t<文件系统类型>:指定要检查的文件系统类型; 
    -T:执行fsck指令时,不显示标题信息; 
    -V:显示指令执行过程。

实例:
    linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它: 
    # fsck -y /dev/hda2 
    结束后使用reboot命令重启系统这样就好了! 
    如果不知道时哪个地方出了问题,可以直接: 
    # fsck 
    在随后的多个确认对话框中输入:y 
    结束后同样使用reboot命令重启系统这样就好了!

e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes;
-f:强制修复;

磁盘挂载与卸载

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;解除此关联关系的过程称之为卸载;

把设备关联挂载点:Mount Point

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

注意:挂载点下原有文件在挂载完成后会被临时隐藏

磁盘挂载

挂载方法:mount DEVICE MOUNT_POINT

mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
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:挂载点事先存在;建议使用空目录;进程正在使用中的设备无法被卸载;

选项:
    -t vsftype:指定要挂载的设备上的文件系统类型;
    -r: readonly,只读挂载;
    -w: read and write, 读写挂载;
    -n: 不更新/etc/mtab; 
    -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
        -L 'LABEL': 以卷标指定挂载设备;
        -U 'UUID': 以UUID指定要挂载的设备;
        -B, --bind: 绑定目录到另一个目录上;

注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts

-o options:(挂载文件系统的选项)
async:异步模式;
sync:同步模式;
atime/noatime:包含目录和文件;
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载
exec/noexec:是否支持将文件系统上应用程序运行为进程
dev/nodev:是否支持在此文件系统上使用设备文件;
suid/nosuid:
remount:重新挂载
    ro:
    rw:
user/nouser:是否允许普通用户挂载此设备
acl:启用此文件系统上的acl功能

注意:上述选项可多个同时使用,彼此使用逗号分隔;默认挂载选项:defaults
rw, suid, dev, exec, auto, nouser, and async

卸载命令

语法:

umount DEVICE

umount MOUNT_POINT

查看正在访问指定文件系统的进程:# fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:# fuser -km MOUNT_POINT

系统磁盘查看

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

-a:显示出所有的文件系统(包括虚拟的)
-h: 更易读的容量格式如:1K,235M,2G使用信息
-i:展示出inode的信息(默认是磁盘)
-P: 以Posix兼容的格式输出
-total:展示出总体使用量
-T:显示出文件系统的类型

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

语法:"du [选项] [文件]"

查看根目录中各文件夹所占空间:du -sh /

查看当前目录下文件夹所占空间:du -sh *
选项:

-h: 更易读的容量格式如:1K,235M,2G使用信息
-s: 仅显示占用量总和
-a:评估每个文件而非目录的整体占用量
-c:评估每个文件并计算出总占用量总和

文件挂载的配置文件:/etc/fstab

使用mount命令执行挂载操作后立即就可以使用该文件系统了,但是重启后则会失效。如果想让重启依然生效,我们就必须将挂载信息按照指定的格式写入/etc/fstab文件中。/etc/fstab文件只有root用户才有权限编辑!

填写格式如下:设备文件或伪为文件系统 挂载目录 格式类型 权限选项 自检次序 优先级

设备系统或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs),一般格式为:路径+名称,也可以写成UUID值等
挂载目录:指定要挂载到的目录,需挂载前创建好
格式类型:指定文件系统的格式,比如有ext3/ext4/xfs/iso9660/swap等
权限选项:默认为defaults(rw,suid,dev,exec,auto,nouser,async),可指定acl或quota等
自检次序:
    0:不自检
    1:首先自检;一般只有rootfs才用1;       
优先级:若“自检”为1,则可对多块硬盘进行优先级设置

磁盘冗余阵列

RAID

RAID0:将多块物理硬盘设备通过硬件或软件的方式串联在一起,成为一个大的卷组,将数据依次分别写入到各个物理硬盘中,这样最理想的状态会使得读写性能提升数倍,但若任意一块硬盘故障则会让整个系统的数据都受到破坏。通俗来说RAID0硬盘组技术至少需要两块物理硬盘设备,能够有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。

RAID1:将两块以上的存储设备进行绑定,目的是让数据被多块硬盘同时写入,类似于把数据再制作出多份备份的镜像,当有某一块硬盘损坏后一般可以立即通过热交换方式来恢复数据的正常使用,RAID1硬盘组技术虽然十分注重数据的安全性,但因为是将多块硬盘中写入相同的数据,也就是说理论上硬盘空间的真实可用率只有50%,因此会明显的提高硬盘组整体的成本,同时因为需要将数据同时写入到两块以上的硬盘设备中,这无疑也会增加一定系统计算功能的负载。

RAID5:需要至少三块硬盘,兼顾存储性能、数据安全和存储成本,数据以奇偶校验信息互相保存到硬盘设备中。RAID5硬盘组阵列有两项技术特色,第一,数据的奇偶校验信息并不是单独保存到某一块硬盘设备中的,而是分别互相存储到其它每一块硬盘设备上,这样的好处就是当其中任何一设备损坏后不至于出现致命缺陷。第二,parity部分示例的就是保存数据的奇偶校验信息,换句话说就是RAID5硬盘组并不是备份真真正正的硬盘实际数据信息,而是当设备出现问题后通过奇偶校验信息来尝试重建损坏的数据,这样的技术特性“妥协”的兼顾了存储设备性能、数据安全性与存储成本问题。由于RAID5硬盘组技术是因为成本问题对存储读写速度和安全性能而有了一定的妥协,但绝大部分情况下企业相比硬盘的价格,一定更加在乎数据的价值,生产环境中主要则是使用的RAID10硬盘组技术,顾名思义,这样技术就是对RAID1+RAID0硬盘组技术的一个“组合体”。

RAID10:需要至少4块硬盘来组建,兼顾速度和安全,但是成本很高。RAID10先分别两两制作成RAID1硬盘组,保证数据的安全性,然后再对两个RAID1硬盘组实施RAID0技术,进一步的提高存储设备的读写速度,这样理论上只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据,因此RAID10硬盘组技术继承了RAID0更高的读写速度和RAID1更安全的数据保障,在不考虑成本的情况下RAID10在读写速度和数据保障性方面都超过了RAID5,是较为广泛使用的存储技术。

mdadm

mdadm命令用于管理系统软件RAID硬盘阵列,语法格式为:“mdadm [模式] <RAID设备名称>[选项] [成员设备名称]”。

选项:

-a:检测设备名称
-n:指定设备数量
-l:指定raid级别
-C:创建
-v:显示过程
-f:模拟设备损坏
-r:移除设备
-Q:查看摘要信息
-D:查看详细信息
-S:停止阵列

实战操练

添加交换分区

第一步:添加硬盘(过程略)

第二步:将新添加的硬盘进行分区

#对新添加的硬盘设备进行分区:
[root@xwq ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x762796b6.

#创建新的分区信息:
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended

#类型为主分区:
Select (default p): p
#分区号为1:
Partition number (1-4, default 1): 1
#回车默认为2048即可
First sector (2048-41943039, default 2048):
Using default value 2048
#结束扇区部分输入+5G,设置分区大小为5G:
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set

#修改分区的类型:
Command (m for help): t
Selected partition 1
#输入82代表swap分区:
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'

#再次查看分区表信息:
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x762796b6

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   82  Linux swap / Solaris

#保存分区表的设置:
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#让内核同步分区信息(此步骤仅在没有找到分区设备的情况下需要执行,非必要动作)
[root@xwq ~]# partprobe
#将sdb1分区设备格式化为swap类型:
[root@xwq ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=fdccb458-6c89-4b10-a67f-a7896ec16bd5
#查看当前的内存使用情况,swap大小为:3983
[root@xwq ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3778       1346       2432         10          2        368
-/+ buffers/cache:        975       2802
Swap:         3983          0       3983
#将sdb1的swap分区启用:
[root@xwq ~]# swapon /dev/sdb1
#再次查看内存使用情况,现在swap为9103
[root@xwq ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3778       1352       2425         10          2        368
-/+ buffers/cache:        982       2796
Swap:         9103          0       9103
#设置为开机自动挂载swap分区设备:
[root@xwq ~]# vim /etc/fstab
/dev/sdb1 swap swap defaults 0 0

部署磁盘阵列组

第1步:为虚拟机中添加4块硬盘设备来制作一个RAID10磁盘阵列组,
注意在虚拟机中添加硬盘的操作一定要记得关闭系统之后再做,

输入如下命令:
*解释一下:
-C参数代表创建一个RAID阵列卡,-v参数来显示出创建的过程,同时就在后面追加一个设备名称,这样以后/dev/md0就是我们创建出RAID磁盘阵列组的名称,-a yes参数代表自动创建设备文件,-n 4参数代表使用4块硬盘来制作这个RAID磁盘阵列组,而-l 10参数则代表RAID10方案,最后面追加上4块硬盘设备的名称。

[root@xwq ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

第2步:将制作好的RAID磁盘阵列组格式化为ext4格式

[root@xwq ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 1605632, 2654208, 
    4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

第3步:创建挂载点然后将存储设备进行挂载操作,挂载成功后可看到可用空间为40G

[root@xwq ~]# mkdir /RAID
[root@xwq ~]# mount /dev/md0 /RAID
[root@xwq ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   45G  3.0G   42G   7% /
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G  176K  1.9G   1% /dev/shm
tmpfs                  1.9G  8.9M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-home   22G   38M   22G   1% /home
/dev/sda1              497M  119M  379M  24% /boot
/dev/sr0               3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
/dev/md0                40G   49M   38G   1% /RAID

第4步:查看/dev/md0磁盘阵列设备组详细信息,并将挂载信息写入到配置文件中永久生效

[root@xwq ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May 11 21:28:16 2017
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu May 11 21:30:13 2017
          State : active, resyncing 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

  Resync Status : 61% complete

           Name : xwq:0  (local to host xwq)
           UUID : f206f922:e890b142:577355ad:d80ead01
         Events : 10

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@xwq ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

第5步:模拟损坏磁盘阵列及修复
首先确认有一块物理硬盘设备出现损坏不能再继续正常使用后,应该使用mdadm命令来予以移除之后查看下RAID磁盘阵列组的状态已经被改变

[root@xwq ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@xwq ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May 11 21:28:16 2017
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu May 11 21:31:45 2017
          State : active, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : xwq:0  (local to host xwq)
           UUID : f206f922:e890b142:577355ad:d80ead01
         Events : 22

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde

       0       8       16        -      faulty   /dev/sdb

因为RAID10级别的磁盘阵列组允许一组RAID1硬盘组中存在一个故障盘而不影响使用,所以此时可以尝试下在/RAID目录中正常的创建或删除文件都是不受影响的。当购买了新的硬盘存储设备后再使用mdadm命令来予以恢复即可,但因为虚拟机模拟硬盘的原因需要重启后才把新的硬盘添加到RAID磁盘阵列组中。

[root@xwq ~]# umount /RAID
umount: /RAID: not mounted
[root@xwq ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: Cannot open /dev/sdb: Device or resource busy
[root@xwq ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May 11 21:28:16 2017
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu May 11 21:37:47 2017
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : xwq:0  (local to host xwq)
           UUID : f206f922:e890b142:577355ad:d80ead01
         Events : 46

    Number   Major   Minor   RaidDevice State
       4       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde

磁盘阵列组+备份盘

此次演示使用RAID5,RAID5磁盘阵列组技术至少需要3块盘来做,加上1块备份盘,总共是需要向虚拟机中模拟4块硬盘设备。

第1步:创建一个RAID5磁盘阵列组+备份盘
-n 3参数代表创建这个RAID5所需的硬盘个数,-l 5参数代表RAID磁盘阵列的级别,-x 1参数则代表有1块备份盘,当我们查看/dev/md0磁盘阵列组的时候就能看到有一块备份盘在等待中了

[root@xwq ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@xwq ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May 11 22:00:16 2017
     Raid Level : raid5
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu May 11 22:00:56 2017
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 43% complete

           Name : xwq:0  (local to host xwq)
           UUID : 08d84f3b:fce199ba:7594d094:12391c7e
         Events : 7

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      spare rebuilding   /dev/sdd

       3       8       64        -      spare   /dev/sde

第2步:把这块制作的RAID5磁盘阵列组格式化为ext4文件格式后挂载到目录上

[root@xwq ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 1605632, 2654208, 
    4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@xwq ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@xwq ~]# mkdir /RAID
[root@xwq ~]# mount -a

第3步:将硬盘设备/dev/sdb移出磁盘阵列组,再次看下/dev/md0磁盘阵列组的状态就会发现备份盘已经被自动顶替上去了,在RAID磁盘阵列组数据安全保证的基础上进一步提高数据可靠性,

[root@xwq ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@xwq ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May 11 22:00:16 2017
     Raid Level : raid5
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu May 11 22:03:07 2017
          State : active, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0% complete

           Name : xwq:0  (local to host xwq)
           UUID : 08d84f3b:fce199ba:7594d094:12391c7e
         Events : 101

    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb
|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/17
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
Linux学习笔记(一)-磁盘划分
磁盘设备 磁盘设备文件命名 IDE: /dev/hd[a-d] SCSI, SATA, SAS, USB: /dev/sd[a-p] 软驱:/dev/fd[0-1] 打印机:/dev/lp[0-15] 光驱:/dev/cdrom 鼠标:/dev/……
<<上一篇
下一篇>>
文章目录
关闭
目 录