每个扇区的大小事固定的,为 512Byte。扇区也是磁盘的最小存贮单位。
硬盘的大小是使用“磁头数×柱面数×扇区数×每个扇区的大小”这样的公式来计算的。其中磁头数(Heads)表示硬盘总共有几个磁头,也可以理解成为硬盘有几个盘面,然后乘以二;柱面数(Cylinders)表示硬盘每一面盘片有几条磁道;扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般是 512Byte。
文件系统 | 描述 |
---|---|
ext | Linux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用 |
ext2 | 是 ext 文件系统的升级版本,Red Hat Linux 7.2 版本以前的系统默认都是 ext2 文件系统。于 1993 年发布,支持最大 16TB 的分区和最大 2TB 的文件(1TB=1024GB=1024×1024KB) |
ext3 | 是 ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件 |
ext4 | 是 ext3 文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。ext4的变化可以说是翻天覆地的,比如向下兼容 ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.x 的默认文件系统 |
xfs | XFS 最早针对 IRIX 操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个 64 位的文件系统,后来进行开源并且移植到了 Linux 操作系统中,目前 CentOS 7.x 将 XFS+LVM 作为默认的文件系统。据官方所称,XFS 对于大文件的读写性能较好。 |
swap | swap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2 倍,但是不要超过 2GB。它是 Linux 的必需分区 |
NFS | NFS 是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源 |
iso9660 | 光盘的标准文件系统。Linux 要想使用光盘,必须支持 iso9660 文件系统 |
fat | 就是 Windows 下的 fat16 文件系统,在 Linux 中识别为 fat |
vfat | 就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区和最大 4GB 的文件 |
NTFS | 就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如果需要识别,则需要重新编译内核才能支持。它比 fat32 文件系统更加安全,速度更快,支持最大 2TB 的分区和最大 64GB 的文件 |
ufs | Sun 公司的操作系统 Solaris 和 SunOS 所采用的文件系统 |
proc | Linux 中基于内存的虚拟文件系统,用来管理内存存储目录/proc |
sysfs | 和 proc 一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sysfs |
tmpfs | 也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区 |
[[email protected] ~]# df –ahT
#-a 显示特殊文件系统,这些文件系统几乎都是保存在内存中的。如/proc,因为是挂载在内存中,所以占用量都是 0
#-h 单位不再只用 KB,而是换算成习惯单位
#-T 多出了文件系统类型一列
[[email protected] ~]# du [选项] [目录或文件名] 选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如 KB,MB 或 GB 等
-s 统计总占用量,而不列出子目录和子文件的占用量
du 与 df 的区别:du 是用于统计文件大小的,统计的文件大小是准确的;df 是用于统计空间大小的,统计的剩余空是准确的。
[[email protected] ~]# fsck –y /dev/sdb1
#自动修复
[[email protected] ~]# dumpe2fs /dev/sda3
stat 文件名 查看文件的详细时间
例如
[[email protected] ~]# stat test.sh
查看系统所有硬盘及分区
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 | 附加功能(仅专家) |
n—p 主----1 分区号----1 起始柱面-----分区大小+100M-----w
n—e 扩展—2 分区号—124 起始柱面----1024 柱面(所有剩余空间都分配给扩展分区)
n—l 逻辑—不用指定分区号—124 起始柱面----+100M(指定大小)-----w
这不是分区必须命令,如果没有提示重启,可以不执行,也可以重启系统 (Warning: Unable to open /dev/hdc read-write (Read-only file system). /dev/hdc has been opened read-only.光盘只读挂载,不是错误,不用紧张)如果这个命令不存在请安装 parted-2.1-18.el6.i686 这个软件包.
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb5
mkfs 命令非常简单易用,不过是不能调整分区的默认参数的(比如块大小是 4096),这些默认参数除非特殊情况,否则不需要调整,如果想要调整就需要使用 mke2fs 命令进行重新格式化,命令格式如下:
[[email protected] ~]# mke2fs [选项] 分区设备文件名
选项:
-t 文件系统: 指定格式化成哪个文件系统,如 ext2,ext3,ext4
-b 字节: 指定 block 块的大小
-i 字节: 指定“字节/inode”的比例,也就是多少个字节分配一个 inode
-j: 建立带有 ext3 日志功能的文件系统
-L 卷标名: 给文件系统设置卷标名,就不使用 e2label 命令设定了
举个例子: [[email protected] ~]# mke2fs -t ext4 -b 2048 /dev/sdb6
#格式化分区,并指定 block 的大小为 2048
mkdir /disk1-----------------/dev/sdb1 把 sdb1 打算挂载到/disk1 目录中
mkdir /disk5----------------/dev/sdb5
mount /dev/sdb1 /disk1
mount /dev/sdb5 /disk5
mount 查看所有已经挂载的分区和光盘
fdisk -l 查看系统分区
df 查看分区占用百分比
修改分区自动挂载文件
vi /etc/fstab 注意:此文件直接参与系统启动,如果修改错误,系统启动报错
或 mount -a 重新挂载所有内容,用它进行测试
报错:
分析下原因提示是没有写权限,那么只要把/分区重新挂载下,挂载为读写权限不就可以修改了吗?
命令如下:
[[email protected] ~]# mount -o remount,rw /
再去修改/etc/fstab 文件,把它改回来就可以正常启动了啊。
我们 Linux 系统中有两种常见的分区表 MBR 分区表(主引导记录分区表)和 GPT 分区表(GUID 分区表),其中:
[[email protected] ~]# parted /dev/sdb
#打算继续划分/dev/sdb 硬盘
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) parted 的等待输入交互命令的位置
parted 交互命令 | 说 明 |
---|---|
check NUMBER | 做一次简单的文件系统检测 |
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER | 复制文件系统到另外一个分区 |
help [COMMAND] | 显示所有的命令帮助 |
mklabel,mktable LABEL-TYPE | 创建新的磁盘卷标(分区表) |
mkfs NUMBER FS-TYPE | 在分区上建立文件系统 |
mkpart PART-TYPE [FS-TYPE] START END | 创建一个分区 |
mkpartfs PART-TYPE FS-TYPE START END | 创建分区,并建立文件系统 |
move NUMBER START END | 移动分区 |
name NUMBER NAME | 给分区命名 |
print [devices | free |
quit | 退出 |
rescue START END | 修复丢失的分区 |
resize NUMBER START END | 修改分区大小 |
rm NUMBER 删除分区 | |
select DEVICE | 选择需要编辑的设备 |
set NUMBER FLAG STATE | 改变分区标记 |
toggle [NUMBER [FLAG]] | 切换分区表的状态 |
unit UNIT | 设置默认的单位 |
Version | 显示版本 |
(parted) print
#输入 print 指令
Model: VMware, VMware Virtual S (scsi) 硬盘参数,是虚拟机啊
Disk /dev/sdb: 21.5GB 硬盘大小
Sector size (logical/physical): 512B/512B 扇区大小
Partition Table: msdos 分区表类型,就是 MBR 分区表
Number Start End Size Type File system 标志
1 32.3kB 5379MB 5379MB primary
使用 print 可以查看分区表信息,包括硬盘参数,硬盘大小,扇区大小,分区表类型和分区信息。分区信息总共七列,分别是:
(parted) mklabel gpt
修改了分区表,如果这块硬盘已经有分区了,那么原有分区和分区中的数据都会消失,而且需要重启系统才会生效。
注意:一定要把/etc/fstab 文件中和原有分区的内容删除掉,才能重启动。要不系统启动 就一定会报错的
(parted) mkpart
#输入创建分区命令,后面不要参数,全部靠交互指定
分区名称? []? disk1 分区名称,我起名叫 disk1
文件系统类型? [ext2]? 文件系统类型,直接回车,使用默认 ext2
起始点? 1MB 分区从 1MB 开始
结束点? 5GB 分区到 5GB 结束
#分区完成
(parted) print 查看下吧
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB disk1 分区 1 已经出现
分区分完了,我们还需要格式化。不过我们已经知道如果使用 parted 交互命令格式化的话,只能格式化成 ext2 文件系统。我们这里是要演示下 parted 命令的格式化方法,所以就格式化成 ext2吧,命令如下:
(parted) mkfs
#格式化命令(很奇怪也是 mkfs,但是这只是 parted 的交互命令)
WARNING: you are attempting to use parted to operate on (mkfs) a file system.
parted’s file system manipulation code is not as robust as what you’ll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
警告: The existing file system will be destroyed and all data on the partition will be lost.
Do you want to continue?
是/Yes/否/No? yes 警告你格式化数据会丢失,没关系,已经丢失过了
分区编号? 1
文件系统类型? [ext2]? 指定文件系统类型,写别的也没有用,直接回车
(parted) print 格式化完成,查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 5000MB 4999MB ext2 disk1 拥有了文件系统
parted 命令还有一大优势,就是可以调整分区的大小(windows 中也可以实现,不过要不需要转换成动态磁盘,要不需要依赖第三方工具,如硬盘分区魔术师)。起始 Linux 中 LVM 和 RAID 是可以支持分区调整的,不过这两种方法也可以看成是动态磁盘方法,我们在下一个章节中介绍。使用 parted命令调整分区要更加简单.
(parted) resize
分区编号? 1 指定要修改的分区编号
起始点? [1049kB]? 1MB 分区起始位置
结束点? [5000MB]? 6GB 分区结束位置
(parted) print 查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 6000MB 5999MB ext2 disk1 分区大小改变
(parted) rm
#删除分区命令
分区编号? 1 指定分区号
(parted) print 查看下
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志 分区消失
parted 中所有的操作都是立即生效,没有保存生效的概念。这点和 fdisk 交互命令明显不同,所以所做的所有操作大家要倍加小心。
[[email protected] ~]# fdisk /dev/sdb
#拿/dev/sdb 分区
Command (m for help): t 修改分区的系统 ID
Selected partition 1 只有一个分区,所以不用选择分区了
Hex code (type L to list codes): 82 改为 swap 的 ID
Changed system type of partition 1 to 82 (Linux swap / Solaris)
[[email protected] ~]# mkswap /dev/sdb1
Setting up swapspace version 1,size = 522076 KiB
no label, UUID=c3351dc3-f403-419a-9666-c24615e170fb
[[email protected] ~]# swapon 分区设备文件名
例:
[[email protected] ~]# swapon /dev/sdb1
让 swap 分区开机之后自动挂载 /dev/sdb1 swap swap defaults 0 0 #加入新 swap 分区的相关内容,这里是直接使用的分区的设备文件名,大家当然也可以 #使用 UUID 号了。