Linux磁盘分区格式化挂载
原理
1)Linux无论有几个分区,分给哪一目录使用,归根结底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2)Linux中采用了一种叫 “载入” 的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3)原理图
简而言之,Linux 没有像Windows那样的C,D,E盘的概念,在Linux中都是文件目录
硬盘说明
1)Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上都是SCSI硬盘
2)对于IDE硬盘,驱动标识为“hdx~”,其中“hd”分区所在的设备类型,这里指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助盘,d为辅助从属盘),“~”代表分区,前4个分区用数字1~4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区
3)对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
4)对于virtio 硬盘则标识为“vdx~”,virtio 硬盘是用“vd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
---------------------
2,查看磁盘与挂载情况
lsblk(list block devices)能列出系统上所有的磁盘。
lsblk [-dfimpt] [device]
选项与参数:
-d :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f :同时列出该磁盘内的文件系统名称
-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
-m :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)
-p :列出该设备的完整文件名!而不是仅列出最后的名字而已。
-t :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等
可以看到 41G的vdb没有被挂载,挂载了一个vda
3,磁盘分区
fdisk 创建和维护分区表
fdisk [参数] 设备文件
参数:
-
-l
或--list
: 列出系统上所有的磁盘分区信息,包括磁盘的大小、类型和分区的起始扇区等。 -
-b <size>
或--sector-size=<size>
: 设置磁盘的扇区大小。默认情况下,fdisk
使用 512 字节的扇区大小。这个参数可以用来指定不同的扇区大小。 -
-c=<mode>
: 设置某些 BIOS 兼容性选项。在某些情况下,需要修改这些选项以使分区适应特定的硬件或 BIOS。 -
-u
或--sector-unit
: 使用扇区单位来显示分区信息。默认情况下,fdisk
以磁柱单位显示分区信息。 -
-s
或--getsz
: 显示磁盘分区的大小(以扇区为单位)。 -
-t <type>
或--type=<type>
: 更改分区的类型。可以指定分区类型的代码或名称。 -
-T <type>
或--types-list=<type>
: 显示分区类型列表。 -
-v
或--version
: 显示fdisk
的版本信息。 -
-h
或--help
: 显示帮助信息,列出命令的使用说明和参数列表。
这些是 fdisk
命令的常用参数及其含义。根据你的具体需求,你可以选
菜单操作说明
GPT:
M
: 进入保护/混合主引导记录(MBR)模式。GPT(GUID 分区表)是一种用于替代传统主引导记录的新型磁盘分区表。
Generic:
d
: 删除一个分区。F
: 列出未分区的空闲空间。l
: 列出已知的分区类型。n
: 添加一个新的分区。p
: 打印分区表。t
: 更改分区类型。v
: 验证分区表。i
: 打印有关分区的信息。
Misc:
m
: 打印此菜单。x
: 额外功能(仅供专家使用)。
Script:
I
: 从 sfdisk 脚本文件中加载磁盘布局。O
: 将磁盘布局转储到 sfdisk 脚本文件中。
Save & Exit:
w
: 将表写入磁盘并退出。q
: 不保存更改退出。
Create a new label:
g
: 创建一个新的空的 GPT 分区表。G
: 创建一个新的空的 SGI(IRIX)分区表。o
: 创建一个新的空的 DOS 分区表。s
: 创建一个新的空的 Sun 分区表
执行完成后查看分区
4,磁盘格式化
可以看到,新分区后的vdb1没有 文件系统类型,没有 UUID,还不能使用,需要格式化
磁盘格式化:mkfs.ext4 [-b 参数] [-L 参数] 设备名称
- -t 文件系统类型指定建立的文件系统类型
- -f:如果设备内已经有了文件系统,则需要使用-f强制格式化
- -c 建立文件系统之前检查有无坏道
- -l 文件名:从文件中读取坏道的情况
- -v 显示详细情况
mkfs.xfs -f /dev/sd1
再次查看
mountpoint表示挂载点,第一块硬盘 vda1挂载在根目录了,vdb1没有挂载所以为空
5,挂载/取消挂载
挂载Linux系统外的文件:mount/umount
语法:
- mount [-hV]
- mount -a [-fFnrsvw] [-t vfstype]
- mount [-fnrsvw] [-o options [,...]] device | dir
- mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
1)将 /dev/vdb1挂载的根目录data下:
执行 mount /dev/vdb1 /data 后执行 lsblk -f 显示 挂载点 为:/data,这种挂载是临时的,如果重启这种挂载关系就会消失了
2)取消挂载:
3)永久挂载
系统每次启动都会读取/etc/fstab中的配置内容,自动挂载该文件中被记录的设备和分区,我们可以通过编辑这个文件达到永久挂载的目的
vim /etc/fstab
/etc/fstab 每行定义一个要挂载的文件系统,表中共有6列分表代表
① 设备名称:要挂载的设备或伪文件系统,可包含:设备名称,LABEL,UUID,伪文件系统名称
② 挂载点:就是你要挂载到哪个目录下。
③ 文件系统类型(auto 寻找默认的),
普通设备挂载:ext#/xfs 等文件系统类型
交换分区 swap:swap
网络挂载地址 linux之间:nfs,windos挂载:cifs
光盘 iso9660,文件 cifs
④ 挂载选项:
- Async/sync:设置是否为同步方式运行,默认为async
- auto/noauto : 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
- rw/ro: 是否以以只读或者读写模式挂载
- exec/noexec:限制此文件系统内是否能够进行"执行"的操作
- user/nouser:是否允许用户使用mount命令挂载
- suid/nosuid:是否允许SUID的存在
- Usrquota:启动文件系统支持磁盘配额模式
- Grpquota:启动文件系统对群组磁盘配额模式的支持
- Defaults:同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
⑤ 备份(转储)频率: 0:不做备份 1:每天转储 2:每隔一天转储
⑥ 开机是否需要fsck文件系统检查。(0不扫描,1对应根目录,2对应其他文件系统)
图中第一行为我们添加的一个挂载点 将 /dev/vdb1挂载的根目录data下,最后要执行下列命令让挂载生效
mount -a
6,查看系统磁盘使用情况
df 命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计
语法:
df [选项]... [文件]...
参数:
-a, --all 包含所有的具有 0 Blocks 的文件系统
--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
-i, --inodes 列出 inode 资讯,不列出已使用 block
-k, --kilobytes 就像是 --block-size=1024
-l, --local 限制列出的文件结构
-m, --megabytes 就像 --block-size=1048576
--no-sync 取得资讯前不 sync (预设值)
-P, --portability 使用 POSIX 输出格式
--sync 在取得资讯前 sync
-t, --type=TYPE 限制列出文件系统的 TYPE
-T, --print-type 显示文件系统的形式
-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
-v (忽略)
--help 显示这个帮手并且离开
--version 输出版本资讯并且离开
7,blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。
-c cachefile 从指定的缓存文件中读取设备信息,而不是从默认的缓存文件/etc/blkid/blkid.tab中读取。如果你想从一个空的缓存开始,可以指定/dev/null。
-g 对缓存文件进行垃圾回收,删除不存在的设备信息。
-h 显示帮助信息并退出。
-i 显示I/O限制(也称为I/O拓扑)信息,这些信息描述了设备的物理布局和性能特征。这个选项会自动启用'export'输出格式。
-l 查找匹配使用-t选项指定的属性的一个设备。如果有多个设备匹配,那么返回优先级最高的设备,或者在同一优先级下返回第一个找到的设备。设备类型的优先级顺序是:Device Mapper、EVMS、LVM、MD和普通块设备。如果不使用这个选项,blkid命令会打印所有匹配的设备。
-L label 查找使用指定卷标的一个设备(等同于-l -o device -t LABEL=)。这个查找方法可以可靠地使用/dev/disk/by-label udev符号链接(取决于/etc/blkid.conf中的设置)。避免直接使用符号链接,因为它们不太可靠。-L选项可以在有无udev的系统中使用。
-o format 使用指定的格式来显示blkid命令的输出。支持的格式有:value、device、export、full和list。
-p 使用低级别的探测模式,而不是使用缓存模式。这个选项会忽略所有缓存文件,并直接读取设备的内容。
-s tag 只显示指定的属性(标签),而不是显示所有属性。可以使用多个-s选项来显示多个属性。
-t NAME=value 查找匹配指定的属性(NAME=value对)的设备。可以使用多个-t选项来指定多个属性。
-u list 限制探测功能到定义的(逗号分隔的)使用类型列表。支持的使用类型有:filesystem、raid、crypto和other。列表可以用'no'前缀来指定要忽略的使用类型。例如:blkid -p -u filesystem,other /dev/sda1会探测所有文件系统和其他(比如交换分区)格式,而blkid -p -u noraid /dev/sda1会探测所有支持的格式,除了RAID。这个选项只能和-p选项一起使用。
-U uuid 查找使用指定UUID的一个设备。更多细节请参考-L选项。
8,调整分区大小