文件系统管理
回顾分区和文件系统
- 分区类型
- 主分区:总共最多只能分四个
- 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
- 逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘 Linux最多支持11个逻辑分区
- 文件系统
- ext2:是ext文件系统的升级版本,RedHat
Linux7.2版本以前的系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件 - ext3:ext3文件系统是ext2文件系统的级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件
- ext4:它是ext3文件系统的升级版.ext4在性能、伸缩性和可靠性方面进行了大量改进.EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用
barrier等。是 CentOS6.3的默认文件系统
- ext2:是ext文件系统的升级版本,RedHat
文件系统常用命令
df命令、du命令、fsck命令和dump2fs命令
文件系统查看命令df
Disk Free
df统计系统的文件占用情况
1 | df [选项] [挂载点] |
选项:
- -a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
- -h 使用习惯单位显示容量,如KB,MB或GB等
- -T 显示文件系统类型
- -m 以MB为单位显示容量
- -k 以KB为单位显示容量。默认就是以KB为单位
1 | df |
du统计目录或文件大小
show disk usage
1 | du [选项] [目录或文件名] |
选项:
- -a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
- -h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
- -s 统计总占用量,而不列出子目录和子文件的占用量
1 | cd / |
为什么etc目录只有4K?
因为之后检查etc目录下所有一级子目录和一级子文件的大小,而不会检查他们的数据占了多大
du命令和df命令的区别
- df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
- du命令是面向文件的,只会计算文件或目录占用的空间
简单来说 , fd = du + 命令执行时占用的资源
文件系统修复命令fsck
1 | fsck [选项] 分区设备文件名 |
选项:
- -a:不用显示用户提示,自动修复文件系统
- -y:自动修复。和-a作用一致,不过有些文件系统只支持-y
此命令是系统自动运行 , 一般不需要我们执行
显示磁盘状态命令 dumpe2fs
1 | dumpe2fs 分区设备文件名 |
1 | dumpe2fs /dev/sda |
挂载命令
查询与自动挂载
1 | mount [-l] |
挂载命令格式
1 | mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点 |
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso960等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载(给分区取个名字)
-o 特殊选项:可以指定挂载的额外选项
最常用:- remount : 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
- exec/noexec : 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec
示例:
1
2mount -o remount,noexec /home
# 重新挂载boot分区,并使用 noexec 权限
挂载光盘与U盘
挂载/卸载光盘
光盘的设备文件名是固定的,/dev/cdrom
或者 /dev/sr0
. cdrom是sr0的软连接
1 | mkdir /mnt/cdrom |
卸载
1 | umount 设备文件名或挂载点 |
示例 :
1 | umount /mnt/cdrom |
注意 : 要卸载的时候,必须cd到其他目录下
挂载/卸载U盘
- 不同于光盘 , U盘的设备文件名不是固定的 , 需要先查看U盘设备文件名
- U盘的文件系统为vfat
1 | fdisk -l |
注意:Linux默认是不支持NIFS文件系统的
卸载
1 | umount /dev/sdb1 |
支持NTFS文件系统
使用NTFS-3G插件
http://www.tuxera.com/community/ntfs-3g-download/
1 | tar zxvf ntfs-3g_ntisprogs-2013.1.13.tgz |
使用 :
1 | mount -t ntfs-3g 分区设备文件名 挂载点 |
fdik分区
fdisk命令分区过程
添加新硬盘
查看新硬盘
1
fdisk -l
使用fdisk命令分区
1
fdisk /dev/sdb
新建分区:
1
n
保存退出:
1
w
重新读取分区表信息:
1
partprobe
格式化分区
1
mkfs -t ext4 /dev/sdb1
建立挂载点并挂载
1
2
3
4# 建立挂载点
mkdir /disk1
# 挂载
mount /dev/sdb1 /disk1/
分区自动挂载
我们上面创建的分区在每次开机的时候都要重新挂载 , 现在学习自动挂载分区
自动挂载本质就是修改
/etc/fstab
文件1
2
3
4
5
6
7
8
9
10
11
12
13more /etc/fstab
## /etc/fstab
## Created by anaconda on Wed Mar 1 20:16:06 2017
##
## Accessible filesystems, by reference, are maintained under '/dev/disk'
## See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
# /dev/sda / ext4 defaults 1 1
# /dev/sdb swap swap defaults 0 0
# tmpfs /dev/shm tmpfs defaults 0 0
# devpts /dev/pts devpts gid=5,mode=620 0 0
# sysfs /sys sysfs defaults 0 0
# proc /proc proc defaults 0 0字段:
- 第一字段:分区设备文件名或UUID(
硬盘通用唯一识别码
) - 第二字段:挂载点
- 第三字段:文件系统名称
- 第四字段:挂载参数
- 第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
- 第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高
- 第一字段:分区设备文件名或UUID(
挂载分区只要模仿上面的格式写入/etc/fstab就行了
1
/dev/sdb1 /disk1 ext4 defaults 1 2
```bash
mount -a依据/etc/fstab配置文件的内容 , 自动挂载
1
2
3
4
5
6
7
8
9
10
11
12
13
所以,我们就可以使用这个命令来检查我们有没有写错
- `/etc/fstab`是系统的重要文件 , 如果写错了,文件就可以崩了,就需要手动修复此文件
### /etc/fstab文件修复
1. 执行
```bash
mount -o remount,rw /命令作用:
- 分区在挂载失败后没有挂载成
读写
权限 , 而是挂成只读
权限 - 该命令的作用就是将此分区重新挂载成
读写
权限 , 方便后续修改/etc/fstab文件
- 分区在挂载失败后没有挂载成
修改/etc/fstab文件:
1
vim /etc/fstab
重启:
1
reboot