一、磁盘的管理介绍
硬盘的格式:
硬盘分为两种格式MBR和GPT MBR:在硬盘的0磁道0扇区上,该扇区大小为512个字节,专门用来存储MBR引导信息。 MBR又分三部分: 446个字节:存储boot loader,引导加载器 64个字节:存储分区表,有多少个分区,每个分区从哪里开始再到哪里结束;其中每16个字节表示一个分区,因此,在MBR格式的硬盘上最多只能有四个主分区 2个字节:前面信息的有效标识,结束标志。用四个16进制数表示为55aa,表示前510个字节是有效的,也就是说代表着分区是有效的,如果这两个值为空那么即使建立了分区也是不生效的。 因为只有64个字节存放分区信息,所以MBR格式的硬盘上最多可分四个主分区,也可以划分三个主分区+一个扩展分区,扩展分区又可以划分多个逻辑分区; 需要注意的是MBR最多支持2T的分区,超过2T的MBR识别不了,就需要GPT来实现 GPT:兼容MBR,最多可创建128个主分区,因为主分区数量够多,不在需要扩展分区,同时GPT也打破了MBR的最多2T分区的概念
磁盘管理常用的工具
MBR管理工具:fdisk
GPT管理工具:gdisk
高级管理工具:parted
2.fdisk:创建磁盘分区管理工具,MBR格式文件系统管理工具,对GPT格式的磁盘兼容性不好
fdisk -l:查看分区信息 fdisk /dev/device_name:管理磁盘的分区 fdisk创建分区会开启一个交互式窗口,其中有很多子命令 m:查看可使用的命令有哪些 p:显示当前磁盘的分区信息 n:创建新分区 p:为主分区 e:为扩展分区 d:删除分区 w:保存分区信息并退出 q:不保存分区信息退出 t:修改分区的系统ID l:列出系统上所有的系统ID L:列出支持的所有分区类型或者是分区类型所代表的16进制的ID
3.gdisk:创建磁盘分区管理工具,GPT格式文件系统管理工具,和fdisk的操作基本相同
gdisk -l:查看分区信息 gdisk /dev/device_name gdisk创建分区会开启一个交互式窗口,其中很很多命令 ?:显示支持的命令列表 p:显示当前磁盘的分区信息 n:创建新分区 d:删除分区 w:保存分区信息并退出 q:不保存分区信息退出 l:列出系统上所有的系统ID也就是所有的分区类型
4.parted:综合管理
用法:parted [选项]... [设备 [命令 [参数]...]...] parted /dev/sdb mklabel gpt|msdos:指定分区的类型 parted /dev/sdb print:打印当前分区信息 parted /dev/sdb mkpart primary 1 200 (默认M):进行分区primary(主分区)extended(扩展分区),logical(逻辑分区) parted /dev/sdb rm 1:删除分区,这个删除是根据分区号进行删除的 parted –l 列出分区信息
正常我们在系统开机的情况下直接添加的硬盘,系统是不会识别的,使用下面的命令让系统重读硬盘信息
echo '- - -' > /sys/class/scsi_host/host0/scan:触发硬件重新识别硬盘
对于刚创建好的分区来说,系统并不会识别,需要手动识别也就是我们需要同步分区表
同步分区表 查看内核是否已经识别新的分区 cat /proc/partations centos6通知内核重新读取硬盘分区表 新增分区用 partx -a /dev/DEVICE:增加分区的选项,也就是对这个设备增加分区让增加的分区生效 kpartx -a /dev/DEVICE -f: force(强制) 删除分区用 partx -d --nr M-N(分区的序号) /dev/DEVICE:删除分区 CentOS 5,7: 使用partprobe:同步分区信息,将硬盘信息与内存中的分区信息 partprobe [/dev/DEVICE]:进行同步不加设备默认就是刷新所有设备的分区信息,添加设备只刷新指定设备的分区信息 注意:现在使用的硬盘分区必须是硬盘中一块连续的空间
5.常见的文件系统分类
常用的Linux文件系统: ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区 ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统 ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升(配合gpt使用) 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
6.创建文件系统的工具:
mkfs命令 第一种方式:直接使用以文件系统为后缀的命令mkfs.btrfs、mkfs.ext2、mkfs.ext4、mkfs.minix、mkfs.vfat、mkfs.cramfs、mkfs.ext3、mkfs.fat、mkfs.msdos、mkfs.xfs 第二种方式:-t:指定文件系统类型 -L:设定卷标,相当于注释 对于交换文件系统swap,有特定的工具,但是要将磁盘的系统ID改为8e mkswap /dev/device_name blkid:查看指定设备的属性信息 -U:根据UUID查找到对应的设备 -L:根据卷标查找到对应的设备 tune2fs:调整文件系统的相关属性 -l:查看超级块中的信息 -L:设定或修改卷标 -m:调整预留百分比 -r:指定预留块数 -o:设定默认挂在选项 -c #:指定挂载次数达到#次后进行自检,0或-1为关闭此功能 -i #:每次挂载多少天之后进行自检,0或-1为关闭此功能 dumpe2fs:显示文件系统属性信息 -h:只显示超级块中的信息 文件系统的检测: fsck:检查并修复Linux文件系统,修复完成后文件会变得不完整 -t:指定文件系统类型 -a:自动修复 -r:交互式修复 e2fsck:专用于修复ext 系列的文件系统 -y:对问题自定回复yes -f:强制检查 -p:自动修复
7.超级块
作用是存储文件系统的大小,有多少是空的和已经填满的占多少,以及他们各自的总数和其他信息,要是用一个分区来访问数据,第一个就访问的是超级块,所以超级块如果坏了,那磁盘就基本没救了 超级块占用第一号物理块,是文件系统的控制块。 超级块是用存放元数据的,也就是从几到几是属于一个块的文件系统,比如大小,空闲块的数目,空闲块的索引表,空闲的iNode节点数目,空闲的iNode索引表等等。 为了防止超级块损坏,就需要对超级块进行备份,以便损坏时可以修复。
8.文件系统的挂载和卸载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为 卸载:为解除此关联关系的过程 mount:挂载工具 格式:mount 设备 挂载点 根文件系统默认给定了临时挂载点:/mnt、/opt、/media 当然也可以挂载到别的目录,但是挂载目录必须事先存在,且最好为空目录,要不目录下文件将被隐藏; 常用的mount挂在选项: -t:指定文件系统类型 -r:只读挂载,目录下内容只可以读 -w:读写挂载,目录下内容可读可写,可修改 -L label:以卷标方式指定设备,mount -L label 挂载点,很少用 -U UUID:以UUID的方式指定设备,通常写在/etc/fstab文件中,常用 -a:自动挂载/etc/fstab文件中的所有设备,会自动扫描,没有挂载的就会挂载,已经挂载的忽略 -n:挂载时,不更新/etc/mtab文件 -B:绑定到一个目录上 -o option:mount的-o选项丰富多彩,定制很多可用的挂载选项; remount:重新挂载,在不卸载的情况下添加额外挂载选项 ro:只读挂载 rw:读写挂载 async:异步I/O,数据写操作先在内存完成,然后在整体同步到磁盘上 sync:同步I/O,数据一边写一边存到磁盘上 atime/noatime:是否修改文件的访问时间,追求性格时可关闭,因为修改访问时间也会有写磁盘操作 dirname/nodirname:是否修改目录的访问时间 auto/noauto:设备是否支持自动挂载,mount -a选项 dev/nodev:是否支持在此设备上使用设备文件 exec/noexec:是否允许执行此设备上的二进制程序 suid/nosuid:是否支持次设备上的文件拥有特殊权限 user/nouser:是否支持普通用户挂在此设备 acl:在此设备上是否支持使用ACL,centos7默认支持,之前的版本默认不支持 挂载时可同时使用多选项,使用逗号隔开即可 mount不加选项默认的挂载选项: rw,suid,dev,exec,auto,nouser,async 交换分区的挂载: swapon:启用swap分区 -a:使/etc/fstab中,所有标记了'sw'的交换设备生效 -s:显示系统上所有swap分区信息 -p #:可指定优先级 swapoff:禁用一个swap分区 -a:禁用所有 free:可查看内存和swap使用信息情况 -m:以MB为单位显示 -g:以GB为单位显示 卸载命令 查看挂载情况 findmnt MOUNT_POINT|device:确认是否是挂载点 查看正在访问指定文件系统的进程 lsof MOUNT_POINT fuser -v MOUNT_POINT 终止所有在正访问指定的文件系统的进程 fuser -km MOUNT_POINT:把使用此进程的所有目录全部关闭掉 卸载 umount DEVICE umount MOUNT_POINT
9.文件系统空间查看工具:df,du
df:列出文件系统的整体磁盘使用量 -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; -i :不用硬盘容量,而以 inode 的数量来显示 du:检查磁盘空间使用量 -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示; dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 参数: if=文件名:输入文件名,默认为标准输入。即指定源文件。 of=文件名:输出文件名,缺省为标准输出。即指定目的文件。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。 常用就是以上四个 例:dd if=/dev/zero of=/root/file1 bs=1 count=1G,会生成一个1G大小的文件 dd命令可以测试磁盘的IO速率,以上例子就可看出 ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。 skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 conv=conversion:用指定的参数转换文件。 ascii:转换ebcdic为ascii ebcdic:转换ascii为ebcdic ibm:转换ascii为alternate ebcdic block:把每一行转换为长度为cbs,不足部分用空格填充 unblock:使每一行的长度都为cbs,不足部分用空格填充 lcase:把大写字符转换为小写字符 ucase:把小写字符转换为大写字符 swab:交换输入的每对字节 noerror:出错时不停止 notrunc:不截短输出文件 sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补
10.实现开机自动挂载
以上是临时挂载,重启则失效,要开机自动挂载就需要写到文件中,其实Linux要想永久保存配置,就是写成文件方式 /etc/fstab:文件内记录的条目对应不同的设备,系统启动后会读此文件,自动挂载文件中记录的设备 文件的格式:每一行为一个设备的挂载信息。 一行中的信息有: /etc/fstab每行定义一个要挂载的文件系统 1、要挂载的设备或伪文件系统 设备文件 LABEL:LABEL="" UUID:UUID="" 伪文件系统名称:proc, sysfs 2、挂载点 3、文件系统类型:ext4,xfs,nfs,none 4、挂载选项:defaults ,acl,bind 5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储 6、fsck检查的文件系统的顺序:允许的数字是0, 1, 和2 0:不自检 1:首先自检;一般只有rootfs才用 2:非rootfs使用
二、软raid的介绍
1.什么是raid
RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年,由美国加州大学伯克利分校提出。简单地解释,就是将N台硬盘通过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。RAID的采用为存储系统(或者服务器的内置存储)带来巨大利益,其中提高传输速率和提供容错功能是最大的优点。
RAID磁盘阵列(Redundant Array of Independent Disks),其特色是N台硬盘同时读取速度加快及提供容错性Fault Tolerant,所以RAID主要是解决访问数据的存储速度问题(Storage)不是备份问题(Backup Solution)。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。根据磁盘陈列的不同组合方式,可以将RAID分为不同的级别。磁盘阵列中针对不同的应用使用的不同技术,称为RAID level,而每一level都代表着不同技术,目前业界公认的标准是RAID 0~RAID 5。
2.raid的特性:
扩大了存储能力 可由多个硬盘组成容量巨大的存储空间。
降低了单位容量的成本 市场上最大容量的硬盘每兆容量的价格要大大高于普及型硬盘,因此采用多个普及型硬盘组成的阵列其单位价格要低得多。
提高了存储速度 单个硬盘速度的提高均受到各个时期的技术条件限制,要更进一步往往是很困难的,而使用RAID,则可以让多个硬盘同时分摊数据的读或写操作,因此整体速度有成倍地提高。
可靠性 RAID系统可以使用两组硬盘同步完成镜像存储,这种安全措施对于网络服务器来说是最重要不过的了。
容错性 RAID控制器的一个关键功能就是容错处理。容错阵列中如有单块硬盘出错,不会影响到整体的继续使用,高级RAID控制器还具有拯救数据功能。
对于IDE RAID来说,目前还有一个功能就是支持ATA/66/100。
3.raid的实现方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现
4.raid的级别
raid级别: raid-0:分布式存储数据 读、写性能提升 无容错能力 最少磁盘数2,2+ 磁盘利用率100% raid-1:镜像式存储数据 读性能提升、写性能略有下降 有冗余能力 最少磁盘数2,2N 可用空间50% raid-5: 读、写性能提升 有冗余能力,允许最多一块磁盘损坏 最少磁盘数3,3+ 可用空间 :N-1 raid-6: 读、写性能提升 有容错能力,允许最多两块盘损坏 最少磁盘数4,4+ 可用空间 :N-2 raid-1 0 === raid-0 1 :先做1 在做0 或者 先做0 在做1 读、写性能提升 有容错能力。每组镜像最多只能坏一块 最少磁盘数4,4+ 可用空间100% raid-10用的多 实现软件radio mdadm工具:为软件raid提供管理 -V:版本信息 -v:创建时详细信息 -q:静默模式 创建选项:-C -l:指定raid级别 -n:设备的个数 -a:yes|no,是否自动创建设备文件 -c:指定chunk大小 -x:指定空闲盘个数 管理选项:--add -r:移除一个设备 -f:模拟一个设备故障
5.创建一个软raid
要求:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
创建raid1需要两块磁盘,这里选用sdb sdc做练习,空闲磁盘用sdd
首先使用fdisk工具将硬盘分区,id修改为raid
w保存分区信息sdc和sdd使用同样的操作创建分区因为时组织在一起使用,我们创建完raid之后再进行格式化,不需要单个磁盘格式化,创建raid并查看
写入文件系统
配置/etc/fstab文件实现开机自动挂载
6.清除软raid
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。