13-linux基础-磁盘管理 本文共有18229个字,关键词: 磁盘管理: 对于主机来说并不是CPU越多越好,因为CPU之间的协调是需要消耗资源的,且内存是CPU数量多时极容易产生问题的地方,CPU需要锁定整个内存,对内存进行操作。 •服务器的IO设备: 硬盘提供持久存储 网络接口:设备 •外部存储是一种额外设备 •CPU控制器只是负责收发指令 •CPU运算器负责运算 •内核管理协调硬件工作,并将底层硬件功能以系统调用的形式向上层提供,为了开发者方便调用这些系统调用,一些组织再一次将系统调用的功能整合,以库调用(API应用程序接口)的形式提供给开发人员使用。 •在早期,输入设备是通过批处理的方式检测触发,浪费大量的CPU运算能力,称为忙等待。 •每一个硬件设备在主机启动后在硬件层都有一个IO端口的概念,IO端口是靠16进制的二进制数字进行定义,65536个每一个硬件设备对应某个或某些个端口,CPU上某个空间中保存了硬件设备的注册端口,当某个硬件设备上有数据产生时,硬件尝试触发CPU,发生一个IO请求,有内核判断 •每一个设备会在CPU上注册中断信号(可编程终端控制器),可编程终端控制器上的每一个针脚可供一个设备抢占使用,针脚不够就需要复用(线路复用) •I/O ports:I/O设备地址,是在硬件层次上实现的。 •linux下一切皆文件,所有的设别都识别为文件,大大方便了设备的操作,对文件来说,主要有open(),read(),write(),close()操作,整个流程会简洁许多。 •设备文件:关联至一个设备的驱程序,进而能够跟与之对应的硬件设备通信。 •设备号码: 主设备号:major number标识设备类型 次设备号:minor number标识同一类型的不同设备 •设备文件中只有元数据,没有数据。 •区分不同的驱动程序是依靠硬盘内置的工作电气特性实现的 •不同的设备之间需要完成数据的交换,我们需要将二者的传输信息统一为一种标准,线缆就是用于不同设备之间的数据交换的,由控制器(内置)进行数据转换。 •插在插槽上、接口上的称为适配器 •整合在主板上(内置的)称为控制器 硬盘在系统中的识别: IDE接口:hd[a-z] SATA|USB|SCSI等接口:sd[a-z] 磁盘的常见接口: SATA 6Gbps 500MB/s SCSI 320MB/s SAS 500MB/s PEI-e 1GB/s 光纤通道接口为外部设备接口,并非是直接接在硬盘上 3.5英寸、2.5英寸为硬盘厚度的斜角 •西数的产品依靠颜色分类,根据服务器的需求购买 •硬盘连接线的规格会影响硬盘的性能 •缓存是硬盘控制器的内存芯片,内部存储和接口的缓存,缓存越大效率越高。 扇区是磁盘上最小的存储单位:512bytes 寻道时间:磁头读取数据时从一个地方移动到另一个地方花费的时间,也是物理磁盘的瓶颈。 •通过动态的调整马达的转速使内外磁道上读取的数据时间一致(线速度相同)。 •磁盘的主控芯片中存放了磁盘的物理结构信息 •硬盘厂商生产硬盘的时候,会为每一块硬盘设置磁道、扇区(低级格式化) 分区: •分区是为了方便管理,对磁盘进行分区,以创建多个不同文件系统。 •格式化:写入文件系统(高级格式化),附带清空数据 将分区中的扇区整合为Block,再将block划分到组中,一个分区中有多少个块组。 块组中有:super block、GDT、inode bitmap,block bitmap、inode table、data block •硬盘上的第0个分区不属于任何操作系统,不属于任何分区,叫MBR(主引导记录) 446 bytes boot loader 引导加载器,写入引导程序,用于引导操作系统 64 bytes 分区表(partition table) 每16bytes标记一个分区,因此最多只能有4个(主分区+扩展分区) 扩展分区最多只能有一个 2 bytes MBR的有效标记符,5A或者55AAH,用于表示前500字节有效 MBR无法识别2.1T以上的硬盘 所有的硬盘都是兼容MBR的GPT上游MBR只是没有启用 •文件系统结构 表示层:文件 逻辑层:文件系统(ext2、ext3、ext4....) 物理层:Block •硬盘的系统结构 表示层:文件系统的类型(块、块组) 逻辑层:分区 物理层:扇区 UEFI:用于操作系统自动从预启动的操作环境加载到另一种操作系统上,比传统的Legacy更优秀 GPT:一种基于EFI(可扩展固件接口)使用的磁盘分区架构,比MBR更优秀。 •/dev/disk/byuuid/UUID指向硬件设备的连接 MBR分区表管理命令:fdisk fdisk:对于硬件来说,最多只能管理15个分区 Tips:不要对正在使用的磁盘进行操作!! ~]#fdisk -l #列出主机上的所有磁盘分区信息 ~]#fdisk -l /dev/[sh]d[a-z]# #列出指定磁盘的分区信息 •boot列为"*"表示为可引导设备 ~]#fdisk /dev/[sh]d[a-z]# #进入交互式分取界面 p print显示已有分区 n new创建新分区 d delete 删除分区 w write 保存并退出 q quit 放弃更新并退出 m 获取帮助 l 列出所有分区ID t 调整指定分区ID •新创建分区其实位置默认即可,default 1 表示默认从第一个可用的扇区开始 当我们分区完成并保存后fdisk -l可以看已经划好的分区是否识别 ~]#cat /proc/partition #查看是否被内核识别,内核未识别时不能进一步操作。 •通知内核重新读取磁盘分区表 ~]#partx -a /dev/[sh]d[a-z] #通知内容读取指定设备的分区表信息 ~]#partx -n M:N /dev/[sh]d[a-z] #通知内核读取指定设备的M-N分区编号的分区表信息 ~]#kpartx -a /dev/[sh]d[a-z] #从硬盘分区表重读信息 -f (force)强制 •内核一旦识别分区,就能够在分区上创建文件系统了,创建好文件系统便能够实现挂载 •分区时,正处于挂载的设备不能立即写入磁盘上的MBR分区表 先卸载设备:umount device/mount_point ~]#partprobe DEVICE #将分区表信息强制写入磁盘 重启也可使分区表信息写入磁盘 格式化: ~]#mkfs -t FILETYPE DEVICE(partiton) ~]#mkfs.*(*为文件系统类型) DEVICE(分区) ~}#mke2fs -t [ext2,3,4] -b[1024/2048/4096] -I [128/256] Device -t 文件系统类型 -b 指定block大小 -I 指定inode大小 -i 指定为每多少字节创建一个inode 挂载:需要有空目录作为挂载点,挂载点的命令应当见名知意,要有标志性 mount -t FilesystemType Device Mount_Point 文件系统查看: ~]#df -ahTP #显示已挂载的文件系统信息 -a 显示所有文件系统(包含特殊文件系统) -h 以常见单位显示 -T 显示文件系统类型 -P 将内容放到一行显示,避免grep等文本处理工具切取出错,无法正确匹配 ~]#fsck -y Partition #自动修复出现问题的文件系统(分区上的文件系统) ~]#dumpe2fs -h Partition #查看指定分区的文件系统的详细信息 显示:卷标,挂载点,UUID,挂载参数,文件系统状态 inode总量/空闲,block总量/空闲,单个block大小等等 GPT分区表parted、sfdisk LBA逻辑区块(和扇区概念一样) 逻辑区块从第0个开始 •MBR 扇区1 扇区2 扇区3 •GPT LBA(逻辑区块)0 LBA1 LBA2 •GPT是从MBR后面开始的,GPT是为了突破MBR的存储容量限制,但占用了比MBR大的磁盘空间 •GPT又叫GUID,最大识别18EB扇区,9.4ZB •GPT每个分区所需要记录大小和范围需要128byte进行记录 ~]#parted -l #查看gpt分区信息 ~]#parted Device #gpt格式分区交互命令 mklabel gpt #将硬盘分区格式转换为GPT mklabel msdos #修改分区表为MBR print #打印分区列表 mkpart #分区命令 分区名 文件系统类型 起始点 第一次分区为第一个可用的LBA 结束点 给分区划分的容量大小 •第N个分区的起始点为上一个分区的结束点(容量) •结束点为之前分区的总和加上当前分区的容量 rm 分区号 删除指定分区(立即生效) (分区号在划分分区时由系统自定义的) rescue 误操作分区时对磁盘进行恢复 quit 退出 •GPT分区是即时生效的,mkpart分区时需要人为指定在哪个位置结束 •gpt分区的格式化同mbr分区 swap交换分区: fdisk 创建分区,并将类型设备82(ID) ~]#mkswap Device #格式化指定的设备 ~]#swapon Device #挂载指定设备 ~]#swapoff Device #卸载指定设备 ~]#swapon -a #激活所有swap分区 ~]#swapon -p NUM Device #指定swap的优先级,在不同硬盘上穿件交换分区,性能较好的指定较高的优先级 •永久挂载需要写入配置文件:/etc/fstab 查看内存的使用状态 ~]#free -m #以M为单位查看内存的使用状态 buffers 缓冲 cache 缓存 •缓冲和缓存是为了协调组建之间的差异使用的 LVM2 Logical Volume Manager,Version2 lvm2是linux环境下对磁盘分区管理的一种机制 目的:实现动态调整分区的大小 dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块 LV 可动态扩展不损坏数据 对于LV来讲LE为单元大小,逻辑盘区 VG PE:phsical extent 物理盘区,VG的存储单元,默认大小为4MB VG(卷组):能够将底层提供的存储能力整合起来,PE是在VG上定义的,新加入的PV的PE无法指定,跟随VG的设定 PV 底层的硬件设备 设备文件: /dev/mapper/VG_NAME-LV_NAME /dev/VG_NAME/LV_NAME •被软链接到/dev/dm# pv管理工具: ~]#pvcreate 创建pv ~]#pvs 查看pv信息 ~]#pvscan 查看pv信息 ~]#pvdisplay 查看pv详细信息 ~]#pvremove 移除pv(物理卷) vg(卷组管理工具) ~]#vgs 查看pv信息 ~]#vgscan 查看pv信息 ~]#vgdisplay 查看pv信息 ~]#vgcreate -s # VG_NAME pv(物理卷,使用多个物理卷用空格隔开) -s 指定PE的大小,默认为4M VG_NAME为卷组名,可以自定义,一般应做到见名知意 ~]#vgextent VG_NAME PV_Device #将pv加入已存在的VG中 ~]#vgreduce VG_NAME PV_Device #将指定的PV从VG中移除 •pv移除时一定要先将pv中的数据移动到其他PV上,且其他pv能够容纳转移的数据 ~]pvmove pv_device #将pv上的数据迁移到其它正在使用的pv上 ~]#vgreduce -a #移除卷组中的空pv ~]#vgremove VG_NAME #删除卷组 ~]#vgrename OldName NewName #修改VG的名称 lv(逻辑卷管理工具) ~]#lvcreate -L 10G -n LV_NAME VGNAME #在指定的VG上创建PV -l(小) 100%free #使用整个VG创建LV •逻辑卷的大小需在卷组的大小范围内 •我们所指定的空间大小是否精确,取决于所指定的大小是否能够被PE整除 ~]#lvs #查看逻辑卷信息 ~]#lvscan #查看逻辑卷的详细信息 ~]#lvdisplay #查看逻辑卷的详细信息 ~]#lvrename OldName NewName #修改LV的名称 逻辑卷扩容:支持在线扩展 ~]#lvextent -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #扩展指定的逻辑卷 -L +# 增加多少 -L # 增加至多少 -l(小) +100%free 扩展余下的所有空间 •逻辑卷支持在线扩展,但是扩展的只是逻辑边界,文件系统并没有扩展 ext系列文件系统扩展 ~]#resize2fs /dev/VG_NAME/LV_NAME # 不指定大小则使用分区上的所有空间 •逻辑卷属于软件层面,如果损坏,数据很难恢复 缩减逻辑卷:缩减不允许联机进行,并且需要对数据进行备份 备份逻辑卷上的数据 卸载逻辑卷 强制检测文件系统 ~]#e2fskc -f /dev/VG_NAME/LV_NAME #强制检测文件系统 ~]#resize2fs /dev/VG_NAME/LV_NAME NewSize #缩减文件系统,注意数据的大小 ~]#lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #缩减逻辑卷边界,比文件系统略大 -L -# 减少# -L # 减少到# •缩减完成后重新挂载即可,不建议对文件系统进行缩减操作 快照:snapshot,保存某一刻的数据 快照是通过快照卷来实现的,刚创建时没有任何数据 快照其实就是指向源卷的另一个路径,保存的是源卷某一个时刻的数据状态,当某一数据发生改变的那一刻,快照卷才将被修改前的数据复制到快照卷中,没有发生改变的数据依然指向源卷 因此,快照卷的体积很小,比直接备份磁盘快得多,且数据为同一时刻数据,快照卷的大小取决于我们要将快照存放的时间。我们通过这个接口去备份就保证了数据同一时刻。需要配合增量备份使用,差异备份等,备份结束后删除快照。 •快照卷一定是现有某个卷的快照,不能够跨分区,快照卷通常是只读的,如果能够修改则失去了快照卷的意义。 ~]#lvcreate -L #[mMgGtT] -p r -s -n Snapshot_Name /dev/VG_NAME/LV_NAME #创建快照卷 -L 指定大小 -p 指定权限 -s 指明创建快照卷 -n 指定快照卷的名称 •对原卷创建快照卷,且为只读 •挂载到指定位置就可以进行备份了(快照卷是否需要格式化) •当备份完成后卸载并移除快照卷 ~]#umount Mount_point #卸载指定的快照卷 ~]#lvremove /dev/VG_NAME/SnapShot_name #删除指定的逻辑卷 btrfs文件系统,GPL授权 b-tree filesystem支持写时复制的功能 用于取代ext3/4文件系统但是在CentOS7上采用了xfs ext3/4是实际使用中的标准。 b-tree文件系统直接支持快照,还可以对快照进行快照,相当于增量备份 b-tree内置RAID功能,即在文件系统底层直接支持RAID 核心特性: 1. 多物理卷支持,一个文件系统由多个物理卷组成,支持RAID,联机添加、删除、修改 2. 写时复制(COW):复制时更新替换指针(指向磁盘块的地址) copy on write:对文件进行写入操作时,现将文件复制一份,并将原指针指向新的数据块位置,这样就算是修改错误也可以回滚操作。 3. 数据与元数据校验码,checksum,极大的保证了数据的可靠性 4. 支持子卷:subvolume(btrfs可直接挂载使用,也可在其上创建子卷) 5. 快照:支持快照的快照(增量备份) 6. 透明压缩机制,数据保存时压缩保存,读取是自动解压缩,但是会消耗CPU时钟周期 btrfs: mkfs.btrfs [option] DEVICE #将指定的设备格式化为btrfs格式的文件系统 -L "LABLE" 指定标签 -d 指定数据存储的类型:RAID{0,1,5,6,10,single} -m 指定元数据类型:RAID{0,1,5,6,10,single(只保单份)},dup复制 -O 指定在格式化时就要启动的文件系统特性 -O list all 列出所有支持的feature(根据发行版的不同选择) ~]#btrfs filesystem show Device(可以为多个设备) #当这个磁盘属于btrfs时会显示对应的btrfs的全局信息 show 显示信息 sync 同步数据 df 查看btrfs的使用情况 defragment 磁盘碎片整理,消除磁盘碎片 lable 指定或显示卷标 •创建好btrfs文件系统后,挂载时指定任一设备都可以 ~]#mount -t btrfs Device Mount_Point #挂载指定的btrfs文件系统 btrfs文件系统中,文件被压缩存放,用户是意识不到的 ~]#btrfs filesystem resize [+|-]#[MGT] btrfs_name(需要已挂载) #单位:M、G、T +# 扩展文件系统 -# 缩减文件系统 max 更改逻辑边界至最大物理边界 ~]#btrfs device add|delete|scan Device [Mount_Point] •当加入新的磁盘至btrfs时,硬盘上此前的数据是不会加入进来的,新加入的磁盘只能分担其他硬盘的存储压力 •btrfs 移除硬盘时会自动将数据迁移到其他设备 ~]#btrfs device delete Device Mount_Point #从挂载点中移除指定的设备 ~]#btrfs balance start Mount_Point #均衡存储,使用很少,会消耗大量的资源 start 开始 pause 暂停 resume 继续 status 状态 •在数据量很大的情况下不建议做均衡存储,会占用大量的资源 修改对应数据RAID级别机制,在文件系统运行过程中可以修改 Tips:修改对应级别的RAID需要底层硬盘数量的支持 ~]#btrfs balance start -mconvert=raid[0,1,5,10..] Mount_Point #修改对应元数据raid级别 ~]#btrfs balance start -dconvert=raid[0,1,5,10...] Mount_Point #修改对应数据raid级别 raid0 至少两块磁盘 raid1 至少两块磁盘 raid5 至少三块磁盘 raid10 至少四块磁盘 single 至少一块磁盘(?猜测) btrfs文件系统上传建子卷 子卷挂载时需要单独挂载的话,需要指明subvol子卷名称,或以subvol id的方式挂载 ~]#btrfs subvolume list Mount_Point #列出指定btrfs挂载点上的所有子卷 ~]#btrfs subvolume create /btrfs_name/new_subvol #创建子卷 ~]#btrfs subvolume show #显示子卷信息 •在挂载时,如果挂载的是顶级卷(父卷),所有的子卷会自动挂载,子卷单独挂载时,父卷是不可以访问的,安装操作系统时,可以单独挂载子卷 ~]#btrfs subvolume delete /Mount_Point/subvalu_name #删除指定btrfs的子卷 ~]#btrfs subvolume snapshot /Mount_Point/subvalu_name /Mount_Point/shot_name 对子卷创建快照,快照必须要与原卷在同一个父卷中 •对文件进行快照 cp --reflink filename file.snap #对文件创建快照 将ext4转换成btrfs 卸载exit文件系统 ~]#fsck -f Device #强制检查文件系统 ~]#btrfs-convert Device #将exit文件系统无损转成btrfs ~]#btrfs filesystem show #显示btrfs文件系统 从btrfs回滚到ext4文 ~]#btrfs-convert -r Device #从btrfs文件系统回滚到ext4文件系统 软RAID,生产环境中一定是采用硬件RAID Redundant Array of Independent Disks 独立冗余磁盘阵列 RAID技术是将磁盘按照一定的形式组织起来当做一块硬盘使用的技术 •提高I/O能力 •提高耐用性 RAID的实现方式 •外接式磁盘控制器 •内接式RAID,主板集成 •软件形式实现 RAID有不同的组织形式,在此称之为级别,每一级别表示其硬盘的组织形式不同 硬件RAID的配置接口在BIOS中实现 RAID控制器上有内存时,需要检查该RAID是否有供电配置,防止断电数据尚未完全写入磁盘导致数据丢失 RAID0:条带存储 在控制器的指挥下,先将数据切割成chunk,平均分配到组成RAID0的磁盘上 控制器的能力是有限的,分割、组合数据需要时间,因此不能够无线扩展 •读写性能提高 •空间利用率100% •磁盘的大小需要一致(至少两块磁盘) •无冗余能力(即损坏会造成数据丢失) RAID1:镜像存储 •读性能提升 •写性能略有下降 •磁盘利用率为50% •磁盘的大小需要一致 •有冗余能力(允许损坏整个对称区域的磁盘,但不能两边同时损坏) •至少需要两块磁盘,添加硬盘时需要成对的添加 RAID5:带校验位的条带存储 每块磁盘轮流作为校验盘的机制,使得每块磁盘都均衡的分担读写,提高了可用性。 •读写性能提升 •磁盘的利用率为(n-1)/n •拥有冗余能力,允许损坏一块磁盘 •至少需要三块磁盘,需要大小一致 RAID10:组合式存储 先组建RAID1,再使用RAID组建RAID0 •读写性能提升 •磁盘的利用率为50% •拥有冗余能力,允许每组RAID1阵列中损坏整个镜像区域 •至少需要四块硬盘 RAID6:在RAID5的形式上再加一次校验,允许损坏两块磁盘 RAID7:私有技术,读写性能很好,价格很高。 JBOD(Just a Bunch of disks) 将多个硬盘的空间合并成一个大的连续空间使用 •常用的级别:RAID0、RAID1、RAID5、RAID10、JBOD、RAID50(损坏几率更大) CentOS6上使用软件RAID的形式实现RAID过程: 首先软RAID是没有什么使用价值的,占用了CPU的消耗 mdadm模式化工具语法格式: ~]#mdadm [mode] Raid_Device options Component_Device [mode] 模式 -C 创建模式 -n # 指定使用几块设备来创建此RAID -l # 指明要创建目标RAID的级别(磁盘的不同组织形式) -a [yes|no] 是否自动创建目标RAID设备的设备文件 -c # 指明chunk size的大小 -x # 指明空闲盘的个数(热备) -A 装配 -F 监控 -f,-r,-a 管理 Raid_Device: 指定md设备文件名:/dev/md#...开机后可能会发生变化,但可以使用其他方式进行固化 Component_Device: 指定组建RAID的设备,可以是任何一个块设备(磁盘或分区) ~]#mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sd{2,3,4,5} #指定设备创建RAID ~]#mdadm -D /dev/md0 #查看指定RAID的详细信息 ~]#mdadm /dev/md0 -f /dev/sdb #将sdb磁盘标记为损坏,查看热备磁盘是否接替工作 ~]#watch $(cat /proc/mdstat) #以指定的时间刷新查看文件内容 ~]#watch -n 1 $(cat /proc/mdstat) #动态查看文件的变化,每一秒刷新一次 -n 1 指定为每一秒刷新一次 管理模式: ~]#mdadm /dev/md0 -r /dev/sdb #将sdb从md0中移除 -a 添加磁盘 -f 标记磁盘为损坏 停止md设备: ~]#mdadm -S /dev/md# •RAID不能够代替备份,防止人为的损坏(删除) 该有的策略一个都不能少 md设备的启动 ~]#mdadm -E Device #查看指定的设备上是否有RAID整列信息 ~]#mdadm -A /dev/md# Device1 Device2..... #重新组建RAID,名称可自己指定 •删除mdadm设备需要先卸载mdadm设备 •停止mdadm设备 •~]#mdadm --zero-superblock Device1 Device2.... #删除mdadm设备 linux上的文件系统管理 文件系统实现按名存取 linux上的文件系统:ext2/ext3/etx4/xfs/btrfs/reiserfs/jfs/swap.... btrfs文件系统支持LVM功能,在CentOS7上实现,自身就能实现快照,比LVM更底层,性能优于LVM swap对于数据库应用来讲,放到硬盘上性能会急剧下降,因此数据库服务器应当将swap设小一些,对于hadoop科学计算批处理系统系统来讲,内存的使用率不高,性能要求不高,因此交换分区可以大一些,但是在linux操作系统上,内存空间使用完毕才会使用swap交换分区。 •光盘文件系统:iso9660 •windows:fat32/ntfs/ fat32为vfat类型 •unix:FFS/UFS/JFS2 •网络文件系统:NFS、CIFS(windows网上令居共享,只能共享目录) •集群文件系统:红帽的GFS2、Oracle的OCFS2 •分布式文件系统:ceph moosefs、mogilefs、Glusterfs(?) 根据是否支持journal(日志)功能分类 日志型:ext3、ext4、xfs、btrfs 非日志型:ext2、fat32 •日志型文件系统会有额外的I/O操作 在磁盘上单独的区域(日志区)写入时,先将inode信息写入日志区,数据存放结束后再将inode信息放入数据区,这对于大量小文件的场景占用大量I/O •当分区完成后需要对分区写入文件系统:高级格式化 文件系统的组成部分: 内核中的模块:ext4/xfs/btrfs/fat.... 用户空间的管理工具:mkfs.ext4/mkfs.xfs/mkfs.vfat.... •linux的虚拟文件系统:VFS,显示噶很难过提供统一的文件系统接口,抹除底层的差异,统一标准。 创建文件系统的前提: 1. 内核上有文件系统模块 2. 用户空间由磁盘管理工具 ~]#cat /proc/filesystems #查看内核支持的文件系统类型 ~]#lsmod #查看内核已经加载的所有模块 •文件系统的位数很重要,它决定了单个文件的支持上限,xfs、btrfs了理论上没有上限 ~]#blkid DevicePartition #显示一个分区的属性信息 UUID全局唯一 标识符,防止重启后硬盘的识别顺序发生变化 ~]#blkid -U UUID #查看指定UUID对应的设备、分区 ~]#bllkid -L "LABEL" #使用卷标调用分区 ~]#mkfs -t FS_TYPE -L "LABLE" Device #格式化指定分区、设备,并赋予卷标,可用卷标调用分区 -f 强制 ext系列专用管理工具: ~]#mke2fs [option] Device #格式化指定设备、分区 -L "LABEL" #指定标签 -i NUM #指定元数据区和数据区的比例,为数据空间中每多少字节创建一个inode,不应小于block块大小,否则一定有浪费 -N NUM #指定为数据空间创建多少个inode -m NUM #为管理员预留的空间占用百分比,默认为5%,用于磁盘占满操作文件 -O [feature特性] #启用指定特性 -O [^feature] #关闭文件系统特性 ~]#e2lable Device #查看指定分区、设备的label ~]#e2lable Device LABLE #给指定ext系列文件系统设定卷标 重新设定ext系列文件系统的可调参数值 ~]#tune2fs [option] Device #调整ext系列文件系统的可调参数 -l(小) 查看指定文件系统的超级块信息(super block) •为了方便管理,在写入文件系统的时候,将磁盘分区划分成N个大小一样的组(block group),每一个块组中拥有相同的磁盘块,超级块存放的是磁盘的全局信息 -L "LABLE" 修改卷标 -m NUM 修改预留给管理员管理空间的百分比,默认为5% -j NUM 将ext2升级为ext3 -O [feature特性] 文件系统特性的启用或禁用"^",特性与是否挂载无关 -o 调整文件系统的默认挂载选项,^为取消 文件系统检测: ~]#fsck.FS_TYPE DEVICE #检查指定分区上的指定文件系统 -f 强制检查 •一个文件系统的 访问必须从根开始,kernel是内核上装载的第一个程序,这只是一个通用的管理程序,并不能完成具体的工作,需要调用程序来实现功能,内核回去装载根文件系统所在的分区(rootfs),rootfs中应当包含的目录 /etc、/bin、/sbin、/lib、/lib64、/proc、/sys、/dev kernel启动的第一步就是去识别rootfs(根分区),rootfs和kernel看可以不在一个分区,kernel应当能够识别rootfs,一旦rootfs拂去成功,就能够立即装载init程序,有init来完成所有和用户相关的程序启动,完成系统的初始化。 ~]#pstree #进程树查看到的所有进程都是init进程的子进程 文件系统的挂载: 挂载:将文件系统与根文件系统下的空目录关联起来,进而使得此目录作为文件系统的入口的行为成为挂载。 卸载:将文件系统与根文件系统下的空目录接触联系关系,指明挂载点或设备均可 •如果挂载点下有文件,挂载文件系统后原目录下文件无法被访问,需卸载后才能恢复访问。 ~]#mount #显示当前系统上所有已挂载的设备 ~]#mount [option] Device Mount_Point #挂载指定设备至指定的挂载点(空目录) -t vfstype #指明挂载设备上的文件类型,不指明会调用blkid查看 -r #(read only)只读挂载 -w #(read & write)读写挂载 -a #读取/etc/fstab文件,并将其中未挂载的条目挂载 -n #挂载时不更新/etc/mtab文件,/etc/mtab文件最终系统上所有的挂载和卸载 -L "LABLE" #以卷标的形式挂载 -U "UUID" #以UUID挂载设备 -B #挂载目录至另一个目录,即绑定到另一个目录上 ~]#mount [-o option] #-o选项的子选项 -o #指明挂载文件系统的选项,指定文件系统挂载时的特性 async 异步模式,大多数磁盘采用此种模式,采用了copy on write(写时复制)的机制,一段被多人使用的程序,在修改前调用CPU复制一份,只对复制的这份进行操作(于内存中完成),应及时回存硬盘 sync 同步模式,只要有写操作就回存硬盘,性能很差,但是数据可靠性高 atime 每一次访问文件时,访问时间修改(默认),对目录和文件都生效 noatime 访问文件时不修改访问时间,以减少磁盘的I/O,对目录和文件都生效 •对于访问量非常大的文件系统来说,关闭访问时间的记录可以提高效率 diratime 访问目录是修改目录的访时间戳,只对目录有效 nodiratime 访问目录是不修改目录的访问时间, auto 支持自动挂载 noauto 不支持自动挂载 exec 允许指定文件系统上的应用程序运行为进程 noexec 不允许指定文件系统上的应用程序运行为进程 dev 支持在此文件系统上使用设备文件 nodev 不支持在此文件系统上使用设备文件 suid 允许特殊权限 nosuid 不允许特殊权限 remount 重新挂载 ro 只读挂载 rw 读写挂载 user 允许普通用户挂载,默认只有管理员才能挂载设备,设备管理是特权 nouser 不允许普通用户挂载设备 acl 是否启用文件系统上的ACL功能,访问控制列表 •CentOS6默认不开启acl •CentOS7默认启动ACL •多个选项之间使用逗号分隔 ~]#mount -o default,rw,suid,dev,exec,auto,nouser,asnyc,nodiratime...... 卸载命令: ~]#umount Device #卸载时指定设备文件 ~]#umount Mount_Point #卸载时指定挂载点 •当有进程在使用设备时,设备时无法卸载的,一定要确认是谁在使用设备干什么 ~]#cat /proc/mounts #查看内核中已挂载的设备 ~]#fuser -v(小) Mount_Point #查谁在访问挂载点 ~]#fuser -km Mount_Point #将正在访问指定挂载点的进程结束,只有管理员才有权限 /etc/fstab文件使用方法: ①需要挂载的设备或者伪文件系统,可以使用LACLE、UUID、centos7中使用UUID=''挂载 ②挂载点,swap的挂载点为swap,文件系统类型为swap ③文件系统的类型:filesystem,ext2,ext3,ext4... ④挂载选项,default或跟上其他选项(default中包含auto自动挂载) ⑤转储频率(备份频率),0:不做转储,1:每天转储,2:每隔一天转储(一般为0,不开启) ⑥自检次序:开机后文件系统的自检顺序,0:不自检,1:先自检(一般只有rootfs才开启1) ext文件系统结构: superblock、GPT、inode table、block bitmap、inode bitmap、dateblock ~]#dumpe2fs Partition #显示文件系统超级块中的信息和组描述信息 ~]#tune2fs -l Partition #显示超级块信息 •checksum为校验和,用于检测数据完整性,checksum与数据比对不一致时认为数据不可靠。 •inode(index node) 索引节点 •inode number(inode号) •地址指针决定了单个文件的大小 直接指针 间接指针 三级指针 •位图索引(二级索引),每一位对应一个inode或block inode bitmap #对位标识的inode是否使用 block bitmap #对位标识的block是否使用 位图索引、superblock、GPT等存在于每个块组中。每个块组中分为数据区和元数据区 •如果使用dumpe2fs DEVICE看到块组中的block块段落过多(不连续的块),就是出现磁盘碎片了。 •目录是路径的映射,只是一张表,目录中存放的是目录中直接能够找到的文件名和与其对应的inode number •将经常访问的目录缓存起来,这就是buffer和cache的意义 磁盘配额: •限制用户的磁盘使用期限,空间使用量,inode使用量。当用户超过软限制,并且磁盘配额设置了警告,则会进入倒计时,只有在剩余时间内能够使用剩余空间,倒计时结束后,不论软限制外的空间有没有剩余空间,都无法使用,并且软限制变成硬限制。 •目的:为了限制每一个用户在指定分区上的空间使用量,和inode的使用量。 当限制组的时候,是限制组内的成员一共能够使用多少空间 •磁盘配额的限制级别: 1. 软限制(警告限制):可以突破此限制。 2. 硬限制(绝对限制):不能够突破此限制。 3. 宽限天数,突破软限制后进入倒计时,如果有硬限制,则在倒计时内可以使用硬限制前的空间,倒计时结束,软限制称为硬限制。 •磁盘配额是针对分区的,需要磁盘分区能够支持。 1. 查看内核是否支持 ~]#grep "CONFIG_QUOTA" /boot/config #查看内核是否支持 2.查看是否安装了磁盘配额相关命令 ~]# rpm -q quota #查看是否安装了磁盘管理相关命令 3. 开启磁盘配额 ~]#mount #查看分区上挂载项有无(usrquota、grpquota)有则为开启 •磁盘配额默认是不开启的,需重新挂载,此处直接写入配置文件 ~]#vim /etc/fstab #编辑自动挂载配置文件 default,usrquota,grpquota #开启磁盘配额 ~]#mount -o remount Device #重新挂载设备 4. 为磁盘配额生成配置文件 ~]#quotacheck -avug #自动为开启磁盘配额的分区创建配置文件 -a 自动扫描/etc/mtab文件,记录了mount信息 -v 显示过程 -u 为用户创建配置文件 -g 为用户组创建配置文件 •必须关闭selinux才会生成,否则没有权限 5. 对用户或者组进行磁盘配额 ~]#edquota -u 用户名 #编辑指定用户的配额信息,单位为K/M/G,默认为K -g 组名 -t 宽限天数 -p 模板用户 -u 目标用户 #复制已设置好的磁盘配额给另一个用户 6. 启动磁盘配额 ~]#quotaon -avug #按照配置文件开启配额 ~]#quotaoff -avug #关闭磁盘配额 7. 查看已设置的磁盘配额 ~]#quota -gvs USERNAME #查看指定组的磁盘配额信息 ~]#quota -uvs GROUPNAME #查看指定用户的磁盘配额信息 -s 以常见单位显示 ~]#requota -ugvs Partition(开启磁盘配额的分区) #查看制定分区上限制的用户和组。 RAID,生产环境中使用硬件RAID,区分品牌和型号 RAID0 条带存储,并行写入,并行读取,没有冗余,利用率为100% RAID1 镜像存储,两个磁盘互为镜像,利用率为50%,具有冗余能力 RAID5 分布式奇偶校验的独立磁盘结构,磁盘的利用率为(n-1)/n RAID10 先组建RAID1,再将RAID组建成RAID0,磁盘利用率为50% 热备磁盘:备用磁盘,用于替换故障盘 全局热备:对所有的RAID整列生效,谁先损坏替换谁 局部热备:对某一指定的RAID阵列生效 硬盘测速: 写:~]#dd if=/dev/zero of=/tmp/a.txt bs=4096 count=25000 读:~]#dd if=/tmp/a.txt of=/dev/null bs=4096 ~]#dd if=数据来源地址 of=数据目标地址 bs=大小 count=数量 •伪设备文件 /dev/zero 吐零机,可生成无限的0 /dev/null 数据黑洞 /dev/urandom 随机字符串 ~]#cat /dev/urandom |head -5 #查看随机字符串的头部,没有尾,即无限多 •dd命令以前也用于磁盘对拷 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 基础笔记综合整理 2018-10-08 评论 1671 次浏览