在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode区以及数据区等。

一、分区类型

主分区:总共最多只能分四个

扩展分区:只能有一个,也算主分区的一种,也就是说主分区加扩展分区最多有四个,但是扩展分区不能存储数据和格式化,必须再分层逻辑分区才能使用。

逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,如果是SCSI硬盘linux最多支持11个逻辑分区

分区分完了进行格式化,格式化的作用是写入文件系统

 

二、文件系统

ext2:是ext文件系统的升级版,RedHat Linux 7.2版本以前的系统默认都是ext2文件系统,1993年发布,最大支持18TB的分区和最大2TB的文件

ext3ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,已在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。

ext4:是ext3文件系统的升级版,ext4在性能、伸缩性和可靠性方面进行了大量改进,wxt4的变化可以说是翻天覆地的,比如向下兼容ext3最大1EB文件系统和16TB文件、无线数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。

 

 

文件系统常用命令

df    统计文件系统的占用情况

df【选项】【挂载点】

-a 显示所有的文件系统信息,包括特殊文件系统,如/proc/sysfs

-h 使用习惯单位显示容量,如KB,MBGB

-T 显示文件系统类型

-m MB为单位显示容量

-k KB为单位显示容量,默认使用就是已KB为单位

 

du  统计目录或文件大小

du【选项】【目录或文件名】

-a 显示每个子文件的磁盘占有量,默认只统计子目录的磁盘占有量

-h 使用习惯单位显示容量,如KB,MBGB

-s 统计总占有量,而不列出子目录和子文件的占有量

du命令和df命令的的差别

df命令是从文件系统考虑的,不光要考虑文件占有的空间,还要统计被命令或程序占有的空间(最常见的就是文件已经删除,但是程序并没有释放空间)

 

du命令是面向文件的,只会计算文件或目录占用的空间

 

 

fsck  文件系统修复

fsck 【选项】分区设备文件名

-a 不用显示用户提示,自动修复文件系统

-y 自动修复。和-a的作用一致,不过有些文件系统只支持-y

 

 

dumpe2fs  显示磁盘状态

dumpe2fs 分区设备文件名

 

 

 

三、挂载

挂载:将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。

挂载的真正意义:把设备文件名和挂载点连起来

 

mount【选项】

-l 查询系统中已经挂载的设备,-l会显示卷标名称

-a 依据配置文件/etc/fstab的内容,自动挂载

 

 

挂载命令格式

mount-t 文件系统】【-L 卷标名】【-o 特殊选项】 设备文件名 挂载点

-t文件系统  加入文件系统类型来指定挂载的类型,可以ext3ext4iso9600等文件系统,(通常不必指定。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内核中,已经把常见的硬件驱动包含在内核中,在我们安装的时候,系统会自动的为我们的硬件选择驱动,这一点linuxwindows方便,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

显示一个文件系统。82linux swap分区,83linux分区

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中写入错误,重启看到报错,ctrld重启或者输入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自动挂载