磁盘管理
设备
设备文件
关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信(设备的访问入口) 一般存放在/dev/下
设备类型
块设备(block):以“块”为单位,随机访问 如硬盘
字符设备(char):以“字符”为单位,顺序访问 如键盘
设备号
主设备号(major number):标识设备类型
次设备号(minor number):标识同一类型的不同设备
硬盘
分类
机械硬盘(HDD,Hard Disk Drive):读写速度慢;数据易恢复
固态硬盘(SSD,Solid State Drive):读写速度快;数据不易恢复
接口类型
并行: IDE(133MB/s)、SCSI(640MB/s)
串行:SATA(6Gbps)、SAS(6Gbps)
硬盘存储术语
磁道:track
柱面:cylinder
磁头:head
扇区:sector(512bytes)
CHS和LBA
CHS
采用24bit位寻址
其中前10位表示cylinder,中间8位表示head,后6位表示sector
最大寻址8GB
LBA
采用48bit位寻址
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
最大寻址空间128PB
磁盘设备的设备文件名
Centos5及之前系统命名方式不同
IDE接口:
不同磁盘标识:a-z,aa,ab...
/dev/hda第一块硬盘,/dev/hdb第二块硬盘,...
同一设备上的不同分区:
/dev/hda1第一块硬盘的第一个分区,/dev/hda2第二块硬盘的第二个分区
SCSI和SATA接口:/dev/sda,/dev/sdb,...
/dev/sda1,/dev/sda2,...
Centos6
/dev/sda,/dev/sdb,...
/dev/sda1,/dev/sdb1,...
注意:新增的设备可能会使用sda,导致设备名称不稳定的事件发生
Centos7
/dev/sda,/dev/sdb,...
/dev/sda1,/dev/sdb1,...
虚拟磁盘:/dev/vd
分区
为什么分区
优化I/O性能;实现磁盘空间配额管理
提高修复速度;隔离系统和程序
安装多个OS;采用不同文件系统
分区方式:MBR和GPT
MBR(Master Boot Record) 1982年
使用32位表示扇区,分区不超过2T;按柱面分
0磁道0扇区:
446bytes:boot loader
64bytes:分区表
16bytes:标识一个分区(16bytesX4=64bytes有四个主分区的原因)
2bytes:55AA 标识位 下图为sda分区的前512bytes 55 aa为标识位
注意:55 aa标识位损坏会导致分区丢失(可删除分区)
MBR可以分
4个主分区;3主分区+1扩展分区(N个逻辑分区)
注意:MBR分区表非常重要,以二进制方式在磁盘上存放;一旦丢失或损坏会导致系统无法启动;建议备份分区表
GPT GUID(Globals Unique Identifiers) partition table
使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128位UUID(Universally Unique Identifier)表示磁盘和分区GPT分区表
自动备份在头和尾两份;UEFI(统一扩展固件接口)标准
最多分128个分区
管理分区
列出块设备
lsblk 列出所有块设备
lsblk /dev/DEVICE 列出指定块设备
分区高级操作
parted 支持交互式操作
parted /dev/DEVICE mklabel gpt | msdos 创建指定的分区表或修改分区表类型
注意:修改分区表类型会导致磁盘上的数据被清除
parted /dev/DEVICE mkpart primary 1 1000 创建分区默认以M为单位
注意:大小可能有误差;用不同的软件查看,不同的软件计算容量的算法有区别导致
parted /dev/DEVICE print 查看分区信息
parted /dev/DEVICE rm 1 删除指定的分区
parted -l 列出所有分区信息
管理MBR分区
fdisk 支持交互式操作
管理GPT分区
gdisk 支持交互式操作
查看分区表
lsblk 查看的是内存
cat /proc/partitions 查看的是内存
ll /dev/sd* 查看的是内存
fdisk -l 查看的是硬盘
同步(重读)分区表
centos5,7:partproble [/dev/DEVICE]
centos6:partx -a /dev/DEVICE 新增分区使用
partx -d --nr #-# /dev/DEVICE 删除分区使用
文件系统
格式化
低级格式化:硬件厂商
高级格式化:创建文件系统
文件系统概念
文件系统是操作系统用于明确存储设备或分区上的文件方法和数据结构;即在存储设备上组织文件的方法;操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。它负责为用户建立文件,存入,读出,修改,转储文件,控制文件存取,安全控制,日志,压缩,加密等
文件系统类型
Linux文件系统:ext(Extended file system)系列文件系统,xfs(SGI),btrfs(Oracle),reiserfs,jfs(AIX),swap
光盘:iso9660
Windows:NTFS,FAT,FAT32
Unix:FFS(fast),UFS(unix),JFS2
网络文件系统:NFS,CIFS
集群文件系统:GFS2,OCFS2(oracle)
分布式文件系统:fastdfs,ceph,moosefs,mogilefs,glusterfs,Lustre
RAW:未经处理或者未经格式化的文件系统
查看支持的文件系统
cat /lib/modules/`uname -r`/kernel/fs
cat /proc/filesystems
文件系统分类
根据其是否支持“journal”功能
日志型文件系统:ext3,ext4,xfs,...
非日志型文件系统:ext2,vfat
文件系统组成部分
内核中模块:ext4,xfs,vfat
用户空间管理工具:mkfs.ext4,mkfs.xfs,...
Linux的虚拟文件系统:VFS(Virtual File System)
buffer缓冲:当把数据往硬盘中写时会先写到内存的buffer中,过一会系统再写到硬盘上;为了提高写性能
cache缓存:当从硬盘上读数据时,先把数据读到内存的cache中,再由cache读到内存中;为了提高读性能
超级块和Inode table
块block:文件系统分配给文件的最小单位
指定块大小:大文件使用大块,小文件使用小块
文件系统以块组方式管理磁盘空间
超级块:记录块组;存放分区的属性信息
管理文件系统
创建文件系统
mkfs
mkfs.FS_TYPE /dev/DEVICE
mkfs -t TYPE /dev/DEVICE
-L 'LABEL':设定卷标
mke2fs ext系列文件系统专用管理工具
-t{ext2|ext3|ext4}:指定文件系统类型
-b{1024|2048|4096}:指定块大小
-L 'LABEL':设定卷标
-j:相当于-t ext3
mkfs.ext3 = mke2fs -j = mkfs -t ext3 = mke2fs -t ext3
-i #:为数据空间中每多少个字节创建一个Inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个Inode
-l:一个Inode记录占用的磁盘空间大小
-m #:指定预留给管理员的块数百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
-F:强制创建文件系统
修改文件系统
tune2fs 修改ext系列文件系统相关可调整参数
-l:查看指定文件系统超级块信息
-L 'LABEL':修改卷标
-U UUID:修改UUID
-j:将ext2升级为ext3
-m #:修改预留给管理员的空间百分比
-O:文件系统属性启用或禁用;-O ^has_journal
-o:调整文件系统默认挂载选项;-o ^acl
-C:指定挂载次数
-c:指定最大挂载次数
uuidgen /dev/DEVICE 生成唯一的UUID
e2label 管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
xfs_admin 修改xfs文件系统参数
-L LABEL:修改卷标
-U UUID:修改UUID
注意:修复时需事先取消挂载关系;建议卷标指定为挂载点名称,写配置文件用UUID标识设备来确保唯一性
查看文件系统
blkid 块设备信息查看
blkid[OPTION]... [DEVICE]
-U UUID:根据指定的UUID来查看对应的设备
-L LABEL:根据指定的LABEL来查看对应的设备
findfs 查找分区
finds [options] LABEL=<label> 根据指定的LABEL来查找对应的分区
finds [options] UUID=<uuid> 根据指定的UUID来查找对应的分区
dumpe2fs 查看块分组信息
-h:只显示超级块信息
检测修复文件系统
死机或非正常关机后,挂载文件系统标记为“not clean"时需修复
fsck
fsck.FS_TYPE | fsck -t FS_TYPE
-p:自动修复错误
-r:交互式修复错误
e2fsck ext系列文件系统专用检测修复工具
-y:自动回答为yes
-f:强制修复
xfs_repair xfs文件系统检测修复工具
注意:一定不要在挂载状态下修复
挂载
挂载
将额外文件系统与根文件系统某现存目录建立起关联关系,进而使得此目录做为其它文件系统的访问入口
mount 把设备关联至挂载点:mount Point
mount DEVICE MOUNT_POINT
DEVICE设备 MOUNT_POINT挂载点
设备文件:/dev/sd# 1、目录得事先存在,建议使用空目录
卷标:-L 'LABEL' 2、目录没有被其它进程使用
UUID:-U 'UUID' 3、如果目录中有文件会被暂时隐藏
伪文件系统:proc,sysfs,devtmpfs,configfs
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-t vsftype:指定要挂载设备上的文件系统类型
-r:readonly,只读挂载
-w:read and write,读写挂载
-n:不更新/etc/mtab,mount不可见;隐藏挂载
centos7上不隐藏 /etc/mtab-->/proc/self/mounts
-a:自动挂载所有支持自动挂载的设备(定义了在/etc/fstab中,且挂载选项中有auto功能)
-L 'LABEL':以卷标指定挂载设备
-U 'UUID':以UUID指定挂载设备
-B | --bind:挂载目录
-o options:
async 异步模式
sync 同步模式
auto/noauto 是否支持自动挂载
exec/noexec 挂载设备是否可以运行可执行程序
remount 重新挂载
ro 只读挂载
rw 读写挂载
acl 启用此文件系统上acl功能
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
dev/nodev 是否支持在此系统上使用设备文件
suid/nosuid 是否支持SUID和SGID权限
atime/noatime 包含目录和文件
diratime/nodiratime 目录访问时间戳
loop 使用loop设备,把一个文件挂载到目录上 centos7上不用加-o loop直接挂载
文件挂载到目录上:用文件来模拟分区使用
mount -o remount,options... /point 读取新的挂载选项
defaults 相当于:rw,suid,dev,exec,auto,nouser,async
取消挂载
umount DEVICE | MOUNT_POINT
查看
mount=cat /etc/mtab 显示当前已挂载的所有设备
cat /proc/mounts 查看内核追踪到的已挂载的所有设备
findmnt DEVICE | MOUNT_POINT 查看挂载情况
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有正在访问指定文件系统的进程
fuser -km MOUNT_POINT
挂载相关配置文件
/etc/mtab 记录当前设备的挂载情况(自动更新记录)
/etc/fstab 永久挂载的文件系统
格式
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序(开机时查检文件系统完整性)
设备文件 defaults 0:不做备份 0:不自检
LABEL:LABEL="" 1:每天转储 1:首先自检,一般只有rootfs使用
UUID:UUID="" 2:每隔一天转储
伪文件系统名称:proc,sysfs
特殊设备的fstab文件格式
/root/file /mnt/file ext4 loop 0 0
/dev/cdrom /mnt/cdrom iso9660 none 0 0
/dir /mnt/dirname none bind 0 0
/etc/fstab文件故障
1、要挂载的设备或伪文件系统故障;会导致系统无法启动
解决办法
修改/etc/fstab文件,把错误的设备修改为正确的;
或者把最后两项修改为0让系统正常启动后再修改设备名
注意:centos6上文件系统默认是ro挂载
需修改文件系统挂载选项为rw:mount -o rw,remount /
2、挂载点故障;设备无法挂载,但系统可以正常启动
挂载外围设备
光盘
自动挂载:图形界面/run/media/<user>/<label>
手工挂载:mount /dev/cdrom /mnt/
eject 卸载或弹出光盘 找机器 eject -t 弹入
光盘制作ISO镜像文件:
cp /dev/cdrom /data/centos7.iso
dd if=/dev/sr0 of=/data/centos7.iso
mkisofs -r -o etc.iso /etc/
centos6 cd1和cd2合并:
mkdir /centos6
cp -r /mnt/cdrom/* /centos6/
mkisofs -r -o /data/centos
没有引导功能,可以当yum源。不能作为启动光盘
制作光盘合集:wiki.centos.org制作完可以引导
使用格式:mkdvdiso.sh source /desdfds/DVD.iso
刻录光盘
wodim–v –eject centos.iso
USB
lsusb 查看USB设备是否识别
被内核探测为SCSI设备
/dev/sdaX、/dev/sdbX、或类似的设备文件
在图形环境中自动挂载
图标在[计算机]窗口中创建
挂载在/run/media/<user>/<label>
手动挂载:mount /dev/sdb1 /mnt
管理虚拟内存
swap交换分区:系统RAM的补充
当内存空间不足时,自动用硬盘空间模拟内存使用;临时解决内存不足情况
内存:swap=1:2
free 显示内存和swap信息;默认以k为单位
-m:以M为单位
-g:以G为单位,取整
-h:转换单位
swp分区有优先级:0-32767
值越大越优先;不指定优先级默认会从-1开始递减
内存增加需添加swap分区
一、增加物理硬盘来添加swap分区
1、分区
2、创建文件系统
3、挂载
二、用文件来创建swap分区
1、生成要创建swap分区的文件
2、创建swap文件系统
3、挂载
swap分区管理
mkswap DEVICE | swapfile 创建swap分区文件系统
swapon -a:启用所有交换分区
-s:查看所有交换分区信息
-p | /etc/pre=100: 指定优先级
swapoff [options] DEVICE 禁用交换分区