在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode区以及数据区等。
一、分区类型
主分区:总共最多只能分四个
扩展分区:只能有一个,也算主分区的一种,也就是说主分区加扩展分区最多有四个,但是扩展分区不能存储数据和格式化,必须再分层逻辑分区才能使用。
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,如果是SCSI硬盘linux最多支持11个逻辑分区
分区分完了进行格式化,格式化的作用是写入文件系统
二、文件系统
ext2:是ext文件系统的升级版,RedHat Linux 7.2版本以前的系统默认都是ext2文件系统,1993年发布,最大支持18TB的分区和最大2TB的文件
ext3:ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,已在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。
ext4:是ext3文件系统的升级版,ext4在性能、伸缩性和可靠性方面进行了大量改进,wxt4的变化可以说是翻天覆地的,比如向下兼容ext3最大1EB文件系统和16TB文件、无线数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。
文件系统常用命令
df 统计文件系统的占用情况
df【选项】【挂载点】
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量,如KB,MB或GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 已KB为单位显示容量,默认使用就是已KB为单位
du 统计目录或文件大小
du【选项】【目录或文件名】
-a 显示每个子文件的磁盘占有量,默认只统计子目录的磁盘占有量
-h 使用习惯单位显示容量,如KB,MB或GB等
-s 统计总占有量,而不列出子目录和子文件的占有量
du命令和df命令的的差别
df命令是从文件系统考虑的,不光要考虑文件占有的空间,还要统计被命令或程序占有的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
du命令是面向文件的,只会计算文件或目录占用的空间
fsck 文件系统修复
fsck 【选项】分区设备文件名
-a 不用显示用户提示,自动修复文件系统
-y 自动修复。和-a的作用一致,不过有些文件系统只支持-y
dumpe2fs 显示磁盘状态
dumpe2fs 分区设备文件名
三、挂载
挂载:将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。
挂载的真正意义:把设备文件名和挂载点连起来
mount【选项】
-l 查询系统中已经挂载的设备,-l会显示卷标名称
-a 依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式
mount【-t 文件系统】【-L 卷标名】【-o 特殊选项】 设备文件名 挂载点
-t文件系统 加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9600等文件系统,(通常不必指定。mount 会自动选择正确的类型)
-L卷标名 挂载指定卷标的分区,而不是安装设备文件名挂载(相当于起个别名)
-o特殊选项 可以指定挂载的额外选项
常见的见表格,没有特殊情况,就不用修改了
loop | 用来把一个文件当成硬盘分区挂接上系统 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
async/sync | 同步/异步,默认为异步 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
exec/noexec | 执行/不执行,设定是否允许在文件系统共中执行可执行文件,默认是exec允许 |
挂载光盘
mkdir /mnt/cdrom/ 建立挂载点 (只要是空目录都可以作为挂载点)
mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘 (cdrom实际上是sr0的软链接,光盘的文件系统默认的就是iso9660,所以也可以省略mount /dev/cdrom/mnt/cdrom
)
卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
挂载U盘
对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
fdisk -l 查看U盘设备文件名
mount /mnt/usb 创建挂载点
mount /dev/sdb1 /mnt/usb (本应使用-t vfat选项,但linux会自动识别,可省略,但linux默认是不支持NTFS文件系统的)
如何让linux支持NTFS文件系统?
在linux内核中,已经把常见的硬件驱动包含在内核中,在我们安装的时候,系统会自动的为我们的硬件选择驱动,这一点linux把windows方便,windows必须手动安装驱动,但内核中没有的驱动,就需手动安装驱动加载进来
1.重新编译内核,把NTFS加载进来
2.利用第三方的软件,下载NTFS-3G插件
下载NTFS-3G,解压
进入解压目录
./configure 编辑器准备,没有指定安装目录,安装到默认位置中
make编译
make install 编译安装
3.使用
mount -t ntfs-3g 分区设备文件名 挂载点
umount 挂载点 卸载
四、fdisk分区
1.在练习中,可以使用虚拟机添加新硬盘
2.fdisk -l 查看新硬盘
3.使用fdisk命令分区
fdisk /dev/sdb
确认之后,m可以查看帮助
fdisk交互指令说明 | |
命令 | 说明 |
a | 设置可引导标记 |
b | 编辑bsd磁盘标签 |
c | 设置DOS操作系统兼容标记 |
d | 删除一个分区 |
l | 显示一个文件系统。82为linux swap分区,83为linux分区 |
m | 显示帮助菜单 |
n | 新加分区 |
o | 建立空白DOS分区表 |
p | 显示分区列表 |
q | 不保存退出 |
s | 新建空白SUN磁盘标签 |
t | 改变一个分区的系统ID |
u | 改变显示记录单位 |
v | 验证分区表 |
w | 保存退出 |
x | 附加功能(仅专家) |
分一个主分区
分一个扩展分区
分完扩展分区,就有分逻辑分区的选项,直接从5开始
然后可以用p查看下,无误w保存
如果磁盘被占用,需重新启动才可分区,也可使用partprobe命令重新读取分区表信息,避免了重启
4.分区完成后,进行格式化
mkfs -t ext4 /dev/sdb1 ,但需注意的是,逻辑分区是无法格式化的。
5.建立挂载点并挂载
mkdir /disk1
mount /dev/sdb1 /disk1/
对于每次都要使用的挂载,可以写入/etc/fstab文件自动挂载(写错的话有可能造成系统崩溃)
/etc/fstab文件
第一字段:分区设备文件名或UUID(硬件通用唯一标识码)
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,数字越小优先级越高
6.添加自动挂载
然后使用mount -a命令将自动挂载点再挂载一遍,看是否有报错,避免开机系统崩溃
故意将/etc/fstab中写入错误,重启看到报错,ctrl加d重启或者输入root密码,
进入/etc/fstab发现是个只读文件,是因为报错之后它将挂载为读权限,没有挂载读写权限,只要重新挂载为读写权限即可
然后就可以修改/etc/fstab文件了,将它修改为正确的格式,并重启,就设置成了自动挂载了
但是这个修复值用在/etc/fstab错误的情况下,根分区错误情况下,刚刚那个提示输入密码都不会出现。所以修改这个配置文件的时候一定要注意。
五、分配swap交换分区
在linux中,swap分区必须存在,在使用交换分区的时候,发现不够大,如何加入空间?先查看下有多少的交换空间
1.free 查看内存与swap分区使用状况
-m 用兆的单位显示
cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程。
buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。
2.新建分区并加id该为82
3.格式化
mkswap /dev/sdb6
之前是1999M,现在是3027M
4.自动挂载
每次开机都需手动加入swap分区才可以,当然也可以使用/etc/fstab自动挂载