linux第九节 磁盘管理:
磁盘管理常用命令:
作用 | 命令 | 使用格式 | |
1 |
列出文件系统的整体磁盘使用量 |
df |
df -参数 目录/文件名 |
2 |
查看文件或目录占用硬盘容量 |
du |
du -参数 目录/文件名 |
3 |
列出系统的所有磁盘列表 |
lsblk |
lsblk -参数 设备文件名 |
4 |
显示设备的UUID值和文件系统名称 |
blkid |
bilid 设备名 |
5 |
显示硬盘的分区表与分区格式 |
parted |
parted 设备名 print |
6 |
fdisk命令针对MBR分区格式进行分区 |
fdisk |
fdisk 设备名 |
7 |
gdisk针对GPT的分区格式 |
gdisk |
gdisk 设备名 |
8 |
对分区进行xfs文件系统格式进行格式化 |
mkfs.xfs |
mkfs.xfs -参数 设备名 |
9 |
将设备挂载在指定目录上(挂载点) |
mount |
mount [参数 文件系统] 设备名 挂载目录 |
10 |
卸载已挂载的设备 |
umount |
umount -参数 设备名称/挂载点 |
11 |
制作大文件 |
dd |
dd if=/dev/zero of=/loopdev count=1 bs=1G |
硬盘结构:
概念:硬盘是有一片或多篇带有磁性的铝合金的盘片构成,是一种大容量,永久性的外部存储结构
组成:
磁头
盘片
马达驱动
缓存
控制电路板
接口(SATA)
逻辑结构:
磁道:由内到外的同心圆,并进行编号,最外侧磁道0号
扇区:半径组成的扇形磁道存储区
柱面:多个磁盘上的同一磁道
分区结构:
主分区:引导分区
扩展分区:逻辑上的一种概念,无法格式化
逻辑分区:在扩展分区基础上可划分多个逻辑分区
分区结构:
MBR分区结构:
MBR:main boot record 主引导及录区
位置:硬盘的0磁道0柱面1扇区
作用:包含硬盘一系列参数和一段引导程序,硬盘引导程序的主要作用是检查分区表是否正确并且在系统完成自检后引导具有标志性的分区操作系统,并将控制权交给启动程序
MRB内容构成:
MBR所在扇区总容量512B
MBR=446B
DPT()
MBR分区要求:
主分区(p)不能超过4个,扩展分区(E)只能有一个(可没有),及P+E小于4
扩展分区可划分多个逻辑分区,扩展分区无法格式化
运维人员一般会采用3个主分区+1个扩展分区(PPP+E)
扩展分区中能够创建无限个逻辑分区
GPT(guid partition table)磁盘分区表
产生原因:MBR分区表中最高支持容量为2.2TB
MBR分区表中,没有备份机制,分区表被删除后则磁盘全部清空
MBR中存储开机管理程序的容量只有446B,无法存储较多内容
GPT分区表构成
使用LBA(Logical Block Address)逻辑区块地址来记录磁盘引导、分区的相关信息
构成:LAB区块大小(512B-4KB),默认为512B,LAB区块共68个,前34个记录分区信息,后34个进行备份
区块作用:
LBA0:与MBR功能相似,分割为2段
第一段:存储MBR的相关信息
第二段:GPT标志,若系统不支持GPT则,则磁盘无法读取,以便保护磁盘数据
LBA1:存储GPT表头信息,存储分区位置及大小,存储备份的34个分区位置大小信息,以及校验码信息(CRC32)
LBA2-33:记录分区信息,从LBA2开始,每个区块记录4个分区信息, 共记录4*32->128个分区信息,在每一个LBA块中单独提供 64b来表示磁盘的开始/结束扇区号,则在GPT分区表中单个 分区的最大容量为:2^64*512B->8ZB(1ZB=2^30TB)
注意:GPT分区表中不在有主分区的概念,所有分区都是主分区,理论 上共128个主分区
文件系统:
格式化:若硬盘空间为一张白纸,分区为对其裁剪,对这个白纸进行方格绘制则称为格式化
常见文件系统(EXT2)
组成:
超级块:super block
索引块:inode block
数据块:block
超级块:又称为硬盘地图,记录文件系统的整体信息,如:inode /block块的总量,使用量,空闲块量,文件系统格式等相关信息
索引块inode block:
内容:记录文件的属性,一个文件占用一个inode block,并且记录文件的数据所在block块编号,默认为128B大小
内容细节:
文件访问权限
文件所有者和所属组
文件大小
创建时间或修改内容时间
最后一次访问时间
特殊权限
真实数据地址
数据块block:存储真实文件数据,在EXT2文件系统中分为1kb,2kb,4kb容量,文件太大时,会占用多个数据块
inode block和block的关系:
inode大小均为128B
每个文件只占用一个inode块
文件系统创建的文件容量与inode的数量有关
读取过程:首先找到对应的inode块,读取其信息,并分析其记录的权限与用户是否相等,若符合则可以读取block块的数据
一个inode中记录一个block块需要4B
对于大文件inode中会分12个直接,一个间接,一个双间接,一个三间接的记录区
结论:
block大小 |
1KB |
2KB |
4KB |
最大单一文件限制 |
16GB |
256GB |
2TB |
最大文件系统总容量 |
2TB |
8TB |
16TB |
日志文件系统(Journaling Filesytem)
产生原因:
文件再写入文件系统时,因不知名原因导致系统断电(如:突然断电,系统核心发生错误等)
写入的数据仅有inode table及data block而已,最后一个同步更新中介数据的步骤并没有做完,此时就会发生数据不一致的情况
EXT2文件系统中,若发生此问题,系统在重启时,会由Super block当中记录的valid bit(是否有挂载)与filesytem state 等状态来判断是否强制进行数据一致性的检查
文件数据一致性检查费时较长
解决办法:
在文件系统中重新规划一个日志区块,专用于记录文件修改时间的信息,简化文件一致性检查
过程:
第一步:写入数据时,在日志区块中先记录需写入的数据
第二步:写入实际数据,更新中介数据
第三步:在日志区块中完成该文件记录
结论:若文件出现问题时,只需查询该文件对应的日志区块记录,只需修改部分文件,常见日志文件系统:EXT3,EXT4
XFS文件系统:
Centos7版本以后将EXT4文件系统变更为XFS文件系统(默认)
EXT系列文件系统缺陷:支持度最广,格式化超慢
XFS也是一个日志文件系统,用于存储高容量磁盘及性能性文件系统
XFS文件系统组成:
数据区:与EXT2相同,包含inode与data block,但block块大小为512~64KB,受到内核影响inode,默认256B
文件系统活动登陆区:
运行区:……该区容量4K~1G,需在格式化时指定大小
磁盘的常用命令:
df命令:
作用:列出文件系统的整体磁盘使用量
格式:df -参数 目录/文件名
参数:
-a:列出全部文件系统
-h:以容量理解的方式列出信息(GB MB KB)
例如: df -h
分析显示内容:
Filesystem:文件系统在那个分区
Size:容量大小
Used:已使用的大小
Avail:磁盘剩余容量大小,注意(根/)所在记录,其剩余为0,要小心,磁盘容量不足了
Use%:磁盘使用量百分比,注意不要超过90%
Mounted:挂载点
du命令:
作用:查看文件或目录占用硬盘容量
格式:du -参数 目录/文件名
参数:
-a:列出所有文件与目录信息
-h:以容易理解的方式列出信息
-s:列出总容量
例如:
du -h 文件名
du -sh 文件名
VFS虚拟文件系统:
Linux支持的文件系统:
传统文件:ext2/minix/MS-DOS/FAT/iso9660(光盘)等
日志文件:ext3/ext4/ReiserFS/Windows'NTFS/IBM's JFS/SGI's XFS/ZFS
网络文件系统:NFS/SMBFS
VFS的作用:linux识别文件系统通过VFS在进行管理,用户不需要知道每个分区上是哪一种文件系统,其会主动进行读取操作,简化操作,使用户感觉:“文件都是一样的”
文件系统与目录树的关系:挂载
挂载:
添加新硬件设备:
硬件设备的命名规则:
硬盘:
IDE:/dev/hd[a-d]
SCSI/STAT/U盘:/dev/sd[a-p]
光盘:/dev/cdrom
打印机:/dev/lp[0-15]
鼠标:/dev/mouse
硬盘名称分析:
系统用a-p来代表16块不同的硬盘(默认从a开始)
主分区编号:1 2 3 4(也可以指定分配数字)
逻辑分区编号:从5开始(也可指定分配数字)
例如:
/dev/sda5:第一块SATA硬盘的第一个逻辑分区
lsblk命令:
作用:列出系统的所有磁盘列表
格式:lsblk -参数 设备文件名
参数:
-d:列出硬盘本身信息,不显示分区信息
-f:列出磁盘内的文件系统名称
-i:使用ASCII码格式输出信息
-t:显示磁盘详细信息
-p:显示设备完整名称
显示内容分析:
NAME:设备名称,默认省略前导/dev 目录名
MAJ:MIN:主要:次要 设备代码
RM:是否可以卸载
SIZE:容量
RO:是否为只读
TYPE:设备属性
MOUNTPOINT:挂载点
blkid命令:
作用:显示设备的UUID值和文件系统名称
格式:bilid 设备名
UUID:全局单一标识符,Linux系统会给所有设备分配一个唯一的UUID值,以方便挂载
例如:
blkid
显示内容:设备名 UUID值 文件系统类型(TYPE)
添加新硬盘:
关闭虚拟机
编辑虚拟机设置
点击下方”添加“
选择硬盘
选择”SCSI“选项
创建新虚拟硬盘
最大磁盘大小:20G,将虚拟磁盘存储为单个文件
磁盘文件(默认)
点击 完成
硬盘分区,格式化
分区:
parted命令
显示硬盘的分区表与分区格式
格式:parted 设备名 print
例如: parted /dev/sda print
注意:ms-dos表是MBR分区格式
fdisk分区命令:
注意:fdisk命令针对MBR分区格式进行分区
格式:fdisk 设备名
例如:fdisk /dev/sdb
注意:sdb后不能加数字
例如:对sdc进行分区: p+p+p+e (l+l+l)
fdisk /dev/sdc
输入n ,进行新建分区
输入p,新建主分区(可直接回车)默认为p
输入1,设置分区编号(可直接回车)
起始扇区:直接回车
终止扇区:输入容量 +容量G
//第一个分区建立成功 第二个,第三个主分区重复上述内容(容量不同)
输入n,进行新建分区
输入e,新建扩展分区
起始扇区,终止扇区,回车,全部分配
输入n,新建逻辑分区(由于主+扩展超过4个,则再次新建分区默认为逻辑分区,若不超过4个,需输入l)
起始扇区:回车
终止扇区:+2G,第一个逻辑分区建立成功
……
输入p查看分区表,输入w保存并推出
注意:最后一个分区的终止扇区应直接回车,自动检测剩余空间并全部分配
gdisk命令:
注意:gdisk针对GPT的分区格式
格式:gdisk 设备名
注意事项:gdisk命令只能在root用户权限下执行,设备名称中不能加数字分区号
切记:不要在MBR分区上进行gdisk命令,否则该硬盘数据全部丢失
注意分区时应保留一些自由空间,以备将来分区空间不足时,可以进行临时扩容
分区格式化:
意义:对分区建立文件系统
技巧:查看支持的文件格式:输入mkf后双击tab进行命令补全,在查看支持的文件系统
注意:Centos7默认使用xfs文件
mkfs.xfs命令:
作用:对分区进行xfs文件系统格式进行格式化
格式: mkfs.xfs -参数 设备名
参数:
-f:强制格式化,已有文件系统需要使用此参数
-b:后跟block容量,范围512B-64kb,注意,linux限制为4kb
-d:后跟data section 的相关参数值,如agcount=数值:设定需要几个储存群组的意思(AG),通常与CPU有关,即设置cpu核心数
file:格式化的是一个文件
例如:对/dev/sdb1进行格式化
mkfs.xfs /dev/sdb1
例如:格式化/dev/sdb2,并使用inter的cpu多线程技术进行多数据流读写系统
grep 'processor' /proc/cpuinfo 查看支持的cpu核心个数
例如:使用mkfs.ext4进行传统文件格式化
mkfs.ext4 /dev/sdb6
设备挂载与卸除:
挂载点:mount point是一个目录,该目录是进入磁盘分区(文件系统)的入口
注意事项:
单一文件系统不应该被重复挂载在不同挂载点(目录)中
单一目录不应该重复挂载多个文件系统
作为挂载点的目录,应为空目录,否则原有数据会隐藏
mount命令:
注意:将设备挂载在指定目录上(挂载点)
格式:mount [参数 文件系统] 设备名 挂载目录
参数:
-a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来(测试)
-t:指定文件系统类型
例如:将sdb1挂载到指定目录
mkdir -p /data/sdbxfs
mount /dev/sdb1 /data/sdbxfs
lsblk (查看)
例如:使用UUID进行sdb2的挂载
mkdir -p /data1/sdbuu
mount UUID=”uuid值“ /data/sdbuu
lsblk (查看)
例如:挂载光盘
mkdir -p /media/cdrom
mount /dev/sr0 /media/cdrom
(注意:会以只读的方式挂载)
umount命令:
作用:卸载已挂载的设备
格式:umount -参数 设备名称/挂载点
参数:
-f:强制卸载
-l:立刻卸载文件系统,比-f还强
-n:不更新/etc/mtab情况下卸载
例如:
umount /dev/sdb1
umount /data1/sdbuu (挂载点卸载)
umount /dev/sr0 (卸载光盘)
注意:卸载时,当前目录不能为挂载点目录,必须退出后才能卸载
开机自动挂载:
原因:由于手动挂载为临时挂载,系统重启后,会自动卸载
开机自动挂载必须修改配置文件
文件:/etc/fstab
根目录(/)是必须挂载的,且要先于其他mount point被挂载
……
如若进行卸载,你必须先将工作目录移到mount point(及其子目录)之外
/etc/fstab分析
设备/uuid值:
挂载点:挂载点目录
文件系统参数:default
dump:是否备份 ,0
fsck:开机是否用fsck进行扇区检查,但xfs文件系统不支持则为0
例如:将/dev/sdb1,/sdb2设置为开机挂载
mkdir /datasdb1
mkdir /datasdb2
vim /etc/fstab
点击i键,在已有内容后回车添加新行,输入
/dev/sdb1 /datasdb1 xfs defaults 0 0
/dev/sdb2 /datasdb2 xfs defaults 0 0
点击esc shift+: 输入wq 保存并退出
mount -a 测试
lsblk 查看
reboot 重启
lsblk 查看
挂载大文件当作分区使用:
作用:当硬盘无自由空间且需要增加新分区时,可将已有分区的剩余空间划出为一个大文件,挂载该文件后当作一个新分区来使用
制作大文件:
dd if=/dev/zero of=/loopdev count=1 bs=1G
格式化大文件
mkfs.xfs -f /loopdev
查看该文件属性:df -h /loopdev
建立挂载点:mkdir /loopdevdir
挂载文件:mount -o loop /loopdev /loopdevdir (挂载文件时 需增加参数 -o loop)
df 查看
增加swap交换分区空间
swap空间类似于windows中的虚拟内存,容量为物理内存的1-2倍
新建swap空间
新建分区:4G
格式化该分区
启动swap分区
查看系统信息
例如:使用fdisk分出4G空间
mkswap /dev/sdb7
swapon /dev/sdb7
free -h 查看swap空间容量
写入/etc/fstab 中实现开机挂载 (挂载位置为swap 类型为swap)(开机挂载必须测试)
vim程序编辑器
1