硬盘(Hard Disk Driver,简称HDD)是计算机常用的存储设备之一
硬盘存储容量=磁头数x磁道(柱面)数x每道扇区数x每扇区字节数
可以用柱面/磁头/扇区来唯一定位磁盘. 上每一个区域
磁盘接口类型
在Linux服务器中,当现有硬盘的分区规划不能满足要求(例如,根分区的剩余空间过少,无法继续安装新的系统程序)时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间实现上述操作需要用到fdisk磁盘及分区管理工具,fdisk是大多数Linux系统中自带的基本工具之一。分区对应的系统ID号中,83表示Linux中的EXT4分区,8e 表示LVM逻辑卷
在硬盘设备中创建,删除,更改分区等操作同样通过fdisk命令进行,主要使用硬盘的设备文件作为参数。
fdisk -l [磁盘设备]
或
fdisk [磁盘设备]
查看时,带有“*”标识的是引导分区
fdisk /dev/sdb 进入交互式的分区管理界面
常用指令
p 列出硬盘中的分区情况,信息显示的格式与执行"fdisk -l"命令相同
n 创建新分区
d 删除分区
t 变更分区类型,转换格式
w 保持配置
q 退出
l 查看分区对应的系统ID号
命令举例
[root@localhost ~]# fdisk /dev/sda1
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3556a5c2 创建新的 DOS 磁盘标签。
Command (m for help): m ##man手册帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
C toggle the dos compatibility flag
d delete a partition #常用删除分区
l list known partition types
m print this menu #常用列出手册
n add a new partition #常用添加分区
0 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)
使用“n”命令可以进行创建分区的操作,包括主分区和扩展分区
选择分区号时,主分区和扩展分区的序号只能为1-4,分区起始位置一般有fdisk默认识别即可,结束位置或大小可以使用’’+sizeM‘或“+sizeG”的形式。如“+20G”表示将该分区的容量设置为20GB
例如:创建分区/dev/sdb1
[root@hostname ~]# fdisk /dev/sdb '//先用fdisk命令工具进入交互式的分区管理界面'
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x227f39cd 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #开始创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): #直接回车,接受默认p:创建主分区
Using default response p
分区号 (1-4,默认 1): #直接回车,接受默认值1,主分区的编号为1
起始 扇区 (2048-41943039,默认为 2048): #直接回车,接受默认扇区大小2048
将使用默认值 2048
Last 扇区, +扇区 or +size [K,M,G] (2048-41943039,默认为 41943039): #直接回车,将所有空间分配给创建的分区
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t #设置分区对应的ID号:82代表设置为交换文件系统
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p #查看分区情况
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x227f39cd
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 82 Linux swap / Solaris
命令(输入 m 获取帮助):wq #保存退出
创建文件系统的过程也是格式化分区的过程,在Linux系统中使用mkfs(Make Filesystem,创建文件系统)命令格式可以格式化XFS , EXT4 ,FAT等不同类型的分区,而使用mkswap命令可以格式化Swap交换分区。
实际上 mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,这些程序位于/sbin/目录中,例如:支持XFS分区格式的mkfs.xfs程序等。
[root@hostname ~]# ls /sbin/mkfs*
/sbin/mkfs /sbin/mkfs.ext2 /sbin/mkfs.fat /sbin/mkfs.vfat
/sbin/mkfs.btrfs /sbin/mkfs.ext3 /sbin/mkfs.minix /sbin/mkfs.xfs
/sbin/mkfs.cramfs /sbin/mkfs.ext4 /sbin/mkfs.msdos
mkfs命令使用格式
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# mkfs.xfs /dev/卷组名/逻辑卷名
创建EXT4文件系统时,结合"-t ext4"选项指定类型,并指定要被格式化的分区设备即可
例如:将分区 /dev/sdb2 格式化为EXT4文件系统
[root@hostname ~]# mkfs -t ext4 /dev/sda2
一般来说,不建议在Linux系统中创建或使用Windows中的文件系统类型,包括FAT16 , FAT32等,一些特殊情况,如Windows系统不可用,U盘系统被饼图破坏等除外。
若要在Linux系统中创建FAT32文件系统,可结合’-t vfat’选项指定类型,并添加’-F 32’选项指定FAT的版本。
例如,将分区 /dev/sdb6 格式化为FAT32文件系统(先通过fdisk工具添加/dev/sdb6分区,并且将ID号设为6)
[root@hostname ~]# mkfs -t vfat -F 32 /dev/sdb6
或者
[root@hostname ~]# mkfs.vfat -F 32 /dev/sdb6
两个命令是一个意思
在Linux系统中,Swap分区的作用类似于Windows系统中的“虚拟内存”,可以在一定程度上缓解物理内存不足的情况。在当前Linux主机运行的服务较多,需要更多的交换空间支撑应用时,可以为其增加新的交换分区。
使用mkswap命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具将ID号设为82.
命令使用的格式
mkswap 分区设备
cat /proc/meminfo | grep "SwapTotal" #/查看总交换空间大小
swapon /dev/sdb1 #开启交换分区/dev/sdb1
swapoff /dev/sdb1 #关闭交换分区/dev/sdb1
例如:将分区/dev/sdb1创建为交换分区(先用fdisk命令工具将ID号设为82)
[root@hostname ~]# fdisk /dev/sdb #先用fdisk命令工具进入交互式的分区管理界面
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x227f39cd 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #开始创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): #直接回车,接受默认p:创建主分区
Using default response p
分区号 (1-4,默认 1): #直接回车,接受默认值1,主分区的编号为1
起始 扇区 (2048-41943039,默认为 2048): #直接回车,接受默认扇区大小2048
将使用默认值 2048
Last 扇区, +扇区 or +size[K,M,G] (2048-41943039,默认为 41943039): #直接回车,将所有空间分配给创建的分区
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t #设置分区对应的ID号:82代表设置为交换文件系统
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p #查看分区情况
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x227f39cd
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 82 Linux swap / Solaris
命令(输入 m 获取帮助):w #保存退出
[root@hostname ~]# mkswap /dev/sdb1 #将分区/dev/sdb1创建为交换分区
正在设置交换空间版本 1,大小 = 20970492 KiB
无标签,UUID=5736a379-3e6c-4e12-9a5c-78cb6a586cf7
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" #查看总交换空间的大小
SwapTotal: 4194300 kB #原本是4G多
[root@hostname ~]# swapon /dev/sdb1 #开启交换分区/dev/sdb1
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" #再次查看总交换空间的大小
SwapTotal: 25164792 kB #现在变成了25G
[root@hostname ~]# swapoff /dev/sdb1 #关闭交换分区 /dev/sdb1
[root@hostname ~]# cat /proc/meminfo | grep "SwapTotal" #再次查看总交换空间大小
SwapTotal: 4194300 kB #交换空间变成了原来的4G多
在Linux系统中,对各种存储设备中的资源访问(如读取,保存文件等)都是通过目录结构进行的,虽然系统核心能够通过“设备文件”的方式操纵各种设备,但是对于用户来说,还需要增加一个“挂载”的过程,才能像正常访问目录一样访问存储设备中的资源。
当然,在安装Linux操作系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载,如“/”分区,“boot”分区等。然而对于后来新增加的硬盘分区,光盘等设备,有时候还需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统。挂载一个分区时,必须为其制定一个目录作为挂靠点(或称为挂载点),用户通过这个目录访问设备中 的文件,目录数据。
mount 命令基本格式
mount 显示当前系统中已挂载的各个分区(文件系统)的相关信息,最近挂载的文件信息将显示在最后面
mount [-t 文件系统类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
mount -a 将现在所有能挂载的都挂载
例如,将光盘设备挂载到/media/cdrom目录
[root@hostname ~]#mount /dev/cdrom /media/cdrom
例如:将/dev/sdb1分区挂载到新建的/ccc目录下
[root@hostname ~]#mkdir /ccc
[root@hostname ~]#mount /dev/sdb1 /ccc
例如:将位于/dev/sdc1的U盘设备挂载到新建的/ccc/usbdisk目录下
[root@hostname ~]#mkdir /ccc/usbdisk
[root@hostname ~]#mount /dev/sdc1 /ccc/usbdisk
proc,sysfs,tmpfs等文件系统是Linux运行所需要的的临时文件系统,并没有实际的硬盘分区与其相对应,因此也成为了’伪文件系统’。
例如:proc文件系统实际上映射了内存及CPU寄存器中的部分数据
在实际工作中,可能会经常从互联网中下载一些软件或应用系统的ISO镜像文件,在无法刻录光盘的情况下,需要将其解压后才能浏览,使用其中的文件数据。若使用mount挂载命令,则无需解开文件包即可浏览,使用ISO镜像文件中的数据。
ISO镜像文件通常被视为一种特殊的“回环”文件系统,因此在挂载时需要添加“-o loop”选项
例如:将下载的CentOS系统的DVD光盘镜像文件“CentOS-7-x86_64-DVD-1611.iso”挂载到/media/mnt目录下。
[root@hostname ~]#mount -o loop CentOS-7-x86_64-DVD-1611.iso /media/mnt
卸载文件系统时,使用挂在单目录或对应设备的文件名作为卸载参数。
Linux系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载。
使用命令的基本格式
umount 存储设备位置
umount 挂载点目录
例如:通过umount命令卸载之前挂载的Linux分区,光盘设备
[root@hostname ~]#umount /ccc #通过挂载点目录卸载对应的分区
[root@hostname ~]#umount /dev/cdrom #通过设备文件卸载光盘
系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据,Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。
在/etc/fstab文件中,每一行记录对应一个分区或设备的挂载配置信息,从左到右包括六个字段,含义如下
字段 | 解释 |
---|---|
第一字段 | 分区/设备名/设备卷标名 |
第二字段 | 挂载点,文件系统的挂载点目录的位置 |
第三字段 | 文件系统类型,如xfs,Swap等 |
第四字段 | 挂载参数(包括权限和功能),即mount命令“-o”选项后可使用的参数。例如:default,rw,ro,noexec分别表示默认参数,可写,只读,禁用执行程序。 |
第五字段 | 表示文件系统是否需要dump备份(dump是一个备份工具),设为1时表示需要,设为0时将被dump忽略 |
第六字段 | 该字段用于决定系统启动时进行磁盘检查的顺序。0:不进行检查。1:优先检查。2:其次检查、对于根分区应设为1,其他分区设为2. |
例如,添加自动挂载分区/dev/sdb1的配置
[root@hostname ~]# vi /etc/fstab
...//省略部分内容
/dev/sdb1 /ccc xfs default 0 0
不带选项和参数的mount命令可以显示分区的挂载情况,若要了解系统中已经挂载各文件系统的磁盘使用情况(如剩余磁盘空间等),可以使用df命令。
例如:执行“df -hT”命令可以查看当前系统中挂载的各文件系统的磁盘使用情况
[root@hostname ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 20G 3.3G 17G 17% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0