文件系统管理
磁盘分区与文件系统挂载
磁盘表示方法
- IDE接口的硬盘:hda1、hda2…hdb1、hdb2…
- SATA接口硬盘:sdb1、sdb2…sdb1、sdb2…
MBR 分区表
- 最多可以分为四个主分区(含扩展分区:只能有一个,将剩余的所有空间包含在内)。
- 主分区和扩展分区的编号:1-4为主分区和扩展分区的编号。
- 扩展分区不能直接使用,必须在扩展分区上建立逻辑分区并格式化后才能使用。
- 逻辑分区编号从5开始。
fdisk 分区
磁盘分区命令
fdisk /dev/sdb
# 对磁盘进行分区操作
m
# 查看帮助
帮助说明:
命令 | 说明 |
---|---|
a | toggle a bootable flag |
b | edit bsd disklabel |
c | toggle the dos compatibility flag |
d | delete a partition 删除分区 |
g | create a new empty GPT partition table |
G | create an IRIX (SGI) partition table |
l | list known partition types 显示所有分区类型 |
m | print this menu |
n | add a new partition 新建分区 |
o | create a new empty DOS partition table |
p | print the partition table 显示分区表 |
q | quit without saving changes |
s | create a new empty Sun disklabel |
t | change a partition’s system id 修改分区类型 |
u | change display/entry units |
v | verify the partition table |
w | write table to disk and exit 保存并出退出 |
x | extra functionality (experts only) |
parted 命令分区
为了解决fdisk只能划分小于2T的磁盘的限制。
分区流程:
parted /dev/sdb
mklabel gpt
# 修改分区表
mkpart
# 建立分区
disk1
# 分区名称(卷标,不是实际名,具体名可以到/dev下查看)
ext4
# 类型
1M
# 起始点
4G
# 结束点
pring
# 查看信息
quit
# 退出
mkfs -t ext4 /dev/sdb1
# 格式化分区
mkdir /mnt/sdb1
# 新建文件夹
mount -t ext4 /dev/sdb1 /mnt/sdb1
# 将新建的分区挂载到创建的文件夹
# -t是分区类型(包括iso9660可不写,会自动识别)
mount
# 查看所有挂载情况
分配swap分区
fdisk /dev/sdb
t
# 修改分区的系统 ID
1
# 选择需要修改的分区
82
# 改为 swap 的ID
w
# 保存退出
mkswap /dev/sdb1
# 格式化swap分区
swapon /dev/sdb1
vim /etc/fstab
# 追加
/dev/sdb1 swap swap defaults 0 0
# 让 swap 分区开机之后自动挂载
mount [选项] [设备名] [挂载点]
选项 | 功能说明 |
---|---|
-t fstype | 指定要挂载的文件系统的类型,如果不清楚,可以使用-t auto 让系统自己选择最合适的文件系统类型挂载。 |
-r | 以只读的方式挂载文件系统 |
-w | 以读写的方式挂载文件系统,默认选项 |
-o | 设置挂载属性 |
-a | 挂载/etc/fstab 文件中记录的设备 |
自动挂载(永久挂载)
vim /etc/fstab
# 修改对应字段
/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0
# 第1字段:需要挂载的设备文件名。
# 第2字段:挂载点,必须是一个目录,而且必须用绝对路径。对于交换分区,这个字段定义为swap。
# 第3字段:文件系统的类型。如果是ext3文件系统,则写成ext3;如果是FAT32文件系统,则写成vfat;如果是光盘,可以写成auto由系统自动检测或iso9660。
# 第4字段:挂载选项。一般都是采用“defaults”。
# 第5字段:文件系统是否需要dump备份,1表示需要,0表示忽略。
# 第6字段:在系统启动时是否检查这个文件系统以及检查的顺序,0表示不检查,1表示优先检查,2表示其次检查。
第四字段补充:
参数 | 说明 |
---|---|
async/sync | 是否同步运行,默认为async(异步) |
auto/noauto | 执行mount -o 时,此文件是否被自动挂载。默认auto |
rw/ro | 是否以只读(ro)或(rw)模式挂载 |
exec/noexec | 此文件系统是否能够进行”执行”操作 |
user/nouser | 是否允许用户使用mount 命令挂载 |
suid/nosuid | 是否允许suid存在 |
usrquota | 启动文件系统支持磁盘配额 |
grpquota | 启动文件系统对群组磁盘配额模式的支持 |
defaults | 同时具有rw,suid,exec,auto,nouser,async 等默认设置 |
分区与挂载完整流程
fdisk 举例:
fdisk -l
# 查看硬盘
fdisk /dev/sdb
# 对磁盘进行分区
n
# 新建分区
# 最多四个主分区,若要更多分区需要建立一个扩展分区,在扩展分区上建立子逻辑分区
p
# 主分区(编号为1-4)
e
# 扩展分区(扩展分区一定为磁盘剩余空间,且只能有一个),建立扩展分区后新建分区才有l选项(建立逻辑分区)。
1(选择主分区的情况)
# 分区起始扇区不为0,要留部分空间作为保留分区信息
+1G
# 选择分区大小
l
# 建立逻辑分区
...
w
# 保存退出
mkfs -t ext4 /dev/sdb1
# 格式化分区
mkdir /mnt/sdb1
# 新建文件夹
mount -t ext4 /dev/sdb1 /mnt/sdb1
# 将新建的分区挂载到创建的文件夹
# -t是分区类型(包括iso9660可不写,会自动识别)
umount /mnt/sdb1
umount /dev/sdb1
# 取消挂载目录/分区
mount
# 查看所有挂载情况
umount 文件卸载
umount /dev/sdb1
如果文件提示不可卸载时,使用fuser命令查看正在使用该文件系统的用户信息:
fuser [options] 文件系统名或者文件名
选项 | 功能 |
---|---|
-a | 显示所有在命令行中指定的文件系统信息。默认情况下,至少被一个进程访问的文件才会被显示 |
-k | 杀死访问文件的进程 |
-i | 在杀死使用文件的用户进程之前,提示确认 |
-u | 显示使用文件系统的进程的所有者信息 |
-v | 按进程查看命令ps的显示模式,显示文件的使用者信息,包括PID、USER、COMMAND等。 |
硬盘管理命令
df 空间大小
统计空间大小,统计的剩余空间是准确的。
df –ahT
参数 | 功能 |
---|---|
-a | 显示特殊文件系统,这些文件系统几乎都是保存在内存中的。如/proc,因为是挂载在内存中,所以占用量都是 0 |
-h | 单位不再只用 KB,而是换算成习惯单位 |
-T | 多出了文件系统类型一列 |
du 文件大小
统计文件大小,统计的文件大小是准确的。
du [选项] [目录或文件名]
选项 | 功能 |
---|---|
-a | 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量 |
-h | 使用习惯单位显示磁盘占用量,如 KB,MB 或 GB 等 |
-s | 统计总占用量,而不列出子目录和子文件的占用量 |
fsck 文件系统修复
fsck –y /dev/sdb1
# 自动修复
dumpe2fs 显示磁盘状态
dumpe2fs /dev/sda3