Linux 磁盘管理与文件系统
一、磁盘基础
1、磁盘结构
1.1、物理结构
盘片:硬盘有多个盘片,每个盘片都是有两面的
磁头:每个面都有一个磁头
1.2、数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,为硬盘的最小存储单位
磁道:同一个盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
柱面:不同盘片相同半径构成的圆柱面,是由同一半径圆的多个磁道组成
2、接口类型
接口 | 类型 |
---|---|
IDE | 并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA 所取代 |
SATA | 抗干扰性强,支持热插拔等功能,速度快,纠错能力强 |
SCSI | 小型机系统接口,scsI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等 |
SAS | 是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s |
二、MBR与磁盘分区
1、MBR主引导记录(MBR: Master Boot Record)
1、MBR位于硬盘第一个物理扇区处
2、MBR中包含硬盘的主引导程序和硬盘分区表
3、分区表有4个分区记录区,每个分区记录区占16个字节
4、Linux中将硬盘、分区等设备均表示为文件
5、最大卷为2.2TB,每个磁盘最多4个主分区或者3个主分区、1个扩展分区和扩展分区里面分多个逻辑分区
2、磁盘分区结构
硬盘中的主分区数目只有4个
主分区和扩展分区的序号限制在1~4
扩展分区再分为逻辑分区
逻辑分区的序号将始终从5开始
主启动记录(MBR)磁盘分区支持最大卷为2.2TB,大于2.2T会用到patede;每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区)。
三、df
[root@www ~]# df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
范例一:将系统内所有的 filesystem 列出来!
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc2 9920624 3823112 5585444 41% /
/dev/hdc3 4956316 141376 4559108 4% /home
/dev/hdc1 101086 11126 84741 12% /boot
tmpfs 371332 0 371332 0% /dev/shm
在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的
(不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
至于那个 /dev/shm 是与内存有关的挂载,先不要理他!
范例二:将容量结果以易读的容量格式显示出来
[root@www ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /
/dev/hdc3 4.8G 139M 4.4G 4% /home
/dev/hdc1 99M 11M 83M 12% /boot
tmpfs 363M 0 363M 0% /dev/shm
不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看啦!
范例三:将系统内的所有特殊文件格式及名称都列出来
[root@www ~]# df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/hdc2 ext3 9920624 3823112 5585444 41% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/hdc3 ext3 4956316 141376 4559108 4% /home
/dev/hdc1 ext3 101086 11126 84741 12% /boot
tmpfs tmpfs 371332 0 371332 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
系统里面其实还有很多特殊的文件系统存在的。那些比较特殊的文件系统几乎
都是在内存当中,例如 /proc 这个挂载点。因此,这些特殊的文件系统
都不会占据硬盘空间喔!
范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[root@www ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /
这个范例比较有趣一点啦,在 df 后面加上目录或者是文件时, df
会自动的分析该目录或文件所在的 partition ,并将该 partition 的容量显示出来,
所以,您就可以知道某个目录底下还有多少容量可以使用了!
范例五:将目前各个 partition 当中可用的 inode 数量列出
[root@www ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/hdc2 2.5M 147K 2.3M 6% /
/dev/hdc3 1.3M 46 1.3M 1% /home
/dev/hdc1 26K 34 26K 1% /boot
tmpfs 91K 1 91K 1% /dev/shm
这个范例则主要列出可用的 inode 剩余量与总容量。分析一下与范例一的关系,
你可以清楚的发现到,通常 inode 的数量剩余都比 block 还要多呢
四、交互模式中的常用指令
fdisk /dev/sdb
m:获取帮助菜单
p:查看分区情况
n:新建分区
d:删除分区
t:变更分区的类型
w:保存分区操作并退出
q:不保存分区操作并退出
l:查看分区类型
五 、常用的命令
mkfs.xfs 分区名称 :格式化/dev/sdb1:xfs文件类型格式化
blkid:查看系统所有分区及是否格式化
blkid 分区名称:查看指定的分区是否格式化
mkfs -t ext4 /dev/sdb2:指定类型格式化
mount 挂载的分区 挂载点(目标目录):挂载(临时挂载,重启即卸载挂载)
umount 卸载分区/挂载点:卸载挂载 (2种方式)
mount -a :立即生效挂载/激活
reboot:延迟生效
mkswap /dev/sdb5
blkid:查询是否格式化
free -m:以m的单位显示查看内存;还可以查看当前的
free -k:以k的单位显示查看内存;还可以查看当前的
free -g:以g的单位显示查看内存;还可以查看当前的
cat /proc/meminfo:查看交换分区的大小
卸载挂载swap
swapoff /dev/sdb5
创建/home/upan目录,作为挂载点
mkdir -p /home/upan
查看内存free
free -m