目录
磁盘管理
一、基本概念
磁盘分区的作用
刚出厂的磁盘不能直接使用,必须分区
易于管理和使用
有利于数据安全
提高系统运行效率
Linux磁盘分区格式
主引导记录分区 MBR
主分区:最多只能有4个。
扩展分区:最多只能有一个。
主分区加扩展分区最多有4个。
不能写入数据,只能包含逻辑分区。
逻辑分区:用来写入数据。
全局唯一标识分区列表 GPT
分区数量几乎没有限制(Windows中最多支持128个)
分区大小几乎没有限制(64位整数)
支持2TB以上的大硬盘
在磁盘末端增加分区表备份
Linux磁盘分区类型
(1)主分区:也称为引导分区,用来启动操作系统。
(2)扩展分区:实际在硬盘中是看不到的,也无法直接使用扩展分区,而是用来划分逻辑分区。
(3)逻辑分区:相当于一块存储介质,在扩展分区上可以创建多个逻辑分区,用来存储数据。
二、磁盘分区管理
分区命名规则
常用命令
lsblk 命令
lsblk命令以树状结构显示系统中的所有磁盘及磁盘的分区
[an@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 14G 0 part
├─centos-root 253:0 0 12.5G 0 lvm /
└─centos-swap 253:1 0 1.5G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom /run/media/an/CentOS 7 x86_64
注意: 各字段的含义如下
设备名
设备代码(MAJ:MIN)
可卸载设备(RM:0表示不可卸载)
容量(SIZE)
只读设备(RO:0表示不是只读)
设备类型(TYPE:sr0表示只读存储)
挂载点(MOUNT POINT)
blkid 命令
功能:快速查询每个分区的全局唯一标识符(UUID)和文件系统类型
[an@localhost ~]$ blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
parted 命令
功能:查看磁盘分区表的类型及分区详细信息
[an@localhost ~]$ sudo parted /dev/sda print
[sudo] an 的密码:
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 16.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 16.1GB 15.0GB primary lvm
fdisk 新建分区
MBR分区表使用 fdisk 命令
gdisk 新建分区
GPT分区表使用 gdisk 命令
b 将GPT数据备份到一个文件
c 更改分区名称
d 删除一个分区
i 显示分区详细信息
l 列出已知分区类型。此处8200是Linux swap,8300是Linux filesystem(对应fdisk的82和83)。还有一个8e00是Linux LVM
n 增加一个新的分区
o 创建一个新的空白的GPT分区表
p 显示当前磁盘的分区表
q 退出gdisk程序,不保存任何修改
r 恢复和转换选项(仅限专家)
s 排序分区
t 改变分区的类型
v 验证磁盘分区表
w 将分区表写入裁判并退出(保存并退出)
x 额外功能(仅限专家)
? 显示帮助信息
[an@localhost ~]$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): n // 创建新分区
Partition number (1-128, default 1):
First sector (34-2097118, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-2097118, default = 2097118) or {+-}size{KMGTP}: +100M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-2097118, default = 206848) or {+-}size{KMGTP}:
Last sector (206848-2097118, default = 2097118) or {+-}size{KMGTP}: +200M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-2097118, default = 616448) or {+-}size{KMGTP}:
Last sector (616448-2097118, default = 2097118) or {+-}size{KMGTP}: +500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p // 打印查看
Disk /dev/sdb: 2097152 sectors, 1024.0 MiB
Logical sector size: 512 bytes
Disk identifier (GUID): ACD09380-A57F-4AF7-B3EF-26A1A34A5054
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 2097118
Partitions will be aligned on 2048-sector boundaries
Total free space is 458685 sectors (224.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB 8300 Linux filesystem
2 206848 616447 200.0 MiB 8300 Linux filesystem
3 616448 1640447 500.0 MiB 8300 Linux filesystem
Command (? for help): w // 保存分区
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y // 确认
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
mount 命令 分区挂载
分区前、挂载前:
[an@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 14G 0 part
├─centos-root 253:0 0 12.5G 0 lvm /
└─centos-swap 253:1 0 1.5G 0 lvm [SWAP]
分区后、挂载后:
[an@localhost program8]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 14G 0 part
├─centos-root 253:0 0 12.5G 0 lvm /
└─centos-swap 253:1 0 1.5G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
├─sdb1 8:17 0 100M 0 part /home/an/program8/aaa
├─sdb2 8:18 0 200M 0 part /home/an/program8/bbb
└─sdb3 8:19 0 500M 0 part /home/an/program8/ccc
sr0 11:0 1 4.3G 0 rom /run/media/an/CentOS 7 x86_64
注:
挂载失败,尝试格式化新分区mkfs.ext4 /dev/分区名
[an@localhost ~]$ sudo mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
看到realtime =none ,就代表已经好了,特殊情况需要加上-f,强制覆盖
umount 命令
当不再使用其挂载功能时,可以使用umount命令将目录与挂载到该目录下的文件系统(U盘)断开
关系,即卸载。
一旦关系断开,目录将只是一个单纯的目录。
[an@localhost program8]$ sudo umount /dev/sdb1
[sudo] an 的密码:
[an@localhost program8]$ sudo umount /dev/sdb2
[an@localhost program8]$ sudo umount /dev/sdb3
[an@localhost program8]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 14G 0 part
├─centos-root 253:0 0 12.5G 0 lvm /
└─centos-swap 253:1 0 1.5G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 200M 0 part
└─sdb3 8:19 0 500M 0 part
sr0 11:0 1 4.3G 0 rom /run/media/an/CentOS 7 x86_64
文件系统
一、文件系统基本概念
通常情况下,可以将文件系统简单地定义为对文件进行管理的一种机制
硬盘作为一个机械式的存储设备,并不知道该如何对存入的文件进行管理
因此,通过将可以对文件进行管理的文件系统移植到硬盘上来实现文件的存储十分重要,此时文件
则可以按照规则合理地存储在硬盘上
二、文件系统基本结构
数据块(block):保存文件的实际内容。如果文件太长,可能会占用多个数据块。
inode:一个文件对应一个inode,记录文件的属性信息及文件占用的数据块编号。
inode索引结构:
inode中记录区块编号的区域称为指针,每个指针占用4个字节
inode中有12个直接指针、1个一重指针,1个二重指针和1个三重指针
12个直接指针支持的最大文件是12KB
二重指针指向的区块保存的是一重指针,一个二重指针支持的最大文件是 216KB
三重指针指向的区块保存的是二重指针,一个三重指针支持的最大文件是 224KB
超级数据块:记录和文件系统有关的信息,如inode和数据块的数量、使用情况、文件系统的格式及其他信息。
区块位图:记录文件系统中所有区块的使用状态。
inode位图:inode位图记录每个inode的状态。
三、文件系统相关命令
df 命令
功能:从超级数据块中读取信息,显示整个文件系统的空间使用情况(空余硬盘)
选项 | 功能说明 |
-a | 显示所有文件系统,包括 /proc、/sysfs 等系统特有的文件系统 |
-m | 以 MB 为单位显示文件系统空间 |
-k | 以 KB 为单位显示文件系统空间 |
-h | 使用人们习惯的 KB、MB 或 GB 为单位显示文件系统空间 |
-H | 指定容量的换算以 1000 进位,即 1K=1000B,1M=1000K |
-T | 显示每个分区的文件系统类型 |
-i | 使用 inode 数量代替磁盘容量显示磁盘使用情况 |
-t fstype | 只显示特定类型的文件系统 |
[an@localhost ~]$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 13092864 5924168 7168696 46% /
devtmpfs 1913668 0 1913668 0% /dev
tmpfs 1930740 0 1930740 0% /dev/shm
tmpfs 1930740 12812 1917928 1% /run
tmpfs 1930740 0 1930740 0% /sys/fs/cgroup
/dev/sda1 1038336 182780 855556 18% /boot
tmpfs 386152 4 386148 1% /run/user/42
tmpfs 386152 36 386116 1% /run/user/1000
/dev/sr0 4480476 4480476 0 100% /run/media/an/CentOS 7 x86_64
注意: df 命令各列的含义如下
文件系统:文件系统所在的分区名称
1K-块:以1KB为单位的文件系统空间大小
已用:已使用的磁盘空间
可用:剩余的磁盘空间
已用%:磁盘空间使用率
挂载点:分区的挂载目录
df命令会自动分析目录或文件所在的分区,并显示分区信息
[an@localhost ~]$ df -h /home
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 13G 5.7G 6.9G 46% /
[an@localhost ~]$ df -h /bin
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 13G 5.7G 6.9G 46% /
du 命令
功能:计算目录或文件所占的磁盘空间大小
选项 | 功能说明 |
-a | 显示所有目录和文件的容量 |
-k | 以KB为单位显示容量 |
m | 以MB为单位显示容量 |
-h | 使用人们习惯的KB、MB或GB为单位显示容量 |
-s | 仅显示目录总容量,不显示子目录和子文件的磁盘占用量 |
-S | 显示目录容量,但不包括子目录的大小 |
[an@localhost ~]$ du //不加任何选项和参数时,du 会显示当前目录及其所有子目录的容量
.........
[an@localhost ~]$ du -s
8276 .
[an@localhost ~]$ du -S
0 ./.mozilla/extensions
0 ./.mozilla/plugins
0 ./.mozilla
0 ./.cache/gdm
8 ./.cache/imsettings
........
文件链接 ln 命令
选项 | 功能说明 |
-b | 删除,覆盖以前建立的链接 |
-f | 强制执行 |
-I | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号链接视为一般目录 |
-s | 软链接(符号链接) |
-v | 显示详细的处理过程 |
硬链接:
功能:创建一个链接文件指向原文件的 inode
链接文件和原文件共享同一个 inode,文件属性完全相同,通过“ls -l”的第二列中查看硬链接数目。
链接文件是原文件的“别名”
硬链接特征:
不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
不论删除源文件或是硬链接文件(只是删除这个文件和 inode 的对应关系),只要有一个文件存在,
文件都可以被访问。
硬链接不会建立新的inode信息,不能对目录文件做硬链接。
不能在不同的文件系统之间做硬链接,即链接文件和被链接文件必须处理同一文件系统中。
[an@localhost 2022]$ ls -li a1 // 使用-i选项显示文件inode编号
3924253 -rw-rw-r--. 1 an an 0 5月 5 20:57 a1
[an@localhost 2022]$ cat a1
i like game
[an@localhost 2022]$ ln a1 hardlink_a1 // ln命令默认建立硬链接
[an@localhost 2022]$ ls -li a1 hardlink_a1
3921841 -rw-rw-r--. 2 an an 12 5月 12 15:05 a1
3921841 -rw-rw-r--. 2 an an 12 5月 12 15:05 hardlink_a1
[an@localhost 2022]$ rm a1 // 删除原文件
[an@localhost 2022]$ ls -li hardlink_a1 // 硬链接文件仍在
3921841 -rw-rw-r--. 1 an an 12 5月 12 15:05 hardlink_a1
[an@localhost 2022]$ cat hardlink_a1
i like game // 内容不变
软链接:
软链接通过文件的路径名建立链接,也叫做符号链接。
软链接是一个独立的文件,有自己的 inode,类似于快捷方式。
软链接的数据块保存的是原文件的文件名
软链接特征:
不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
删除软链接文件,源文件不受影响;而删除源文件,链接文件找不到实际的数据,则会失效。
可以跨文件系统
[an@localhost 2022]$ ls -li a2 // 使用-i选项显示文件inode编号
3921846 -rw-rw-r--. 1 an an 16 5月 12 15:14 a2
[an@localhost 2022]$ ln -s a2 softlink_a2 // 使用-s选项建立软链接
[an@localhost 2022]$ ls -li a2 softlink_a2 // 两个文件的属性并不相同
3921846 -rw-rw-r--. 1 an an 16 5月 12 15:14 a2
3924229 lrwxrwxrwx. 1 an an 2 5月 12 15:14 softlink_a2 -> a2
[an@localhost 2022]$ rm a2
[an@localhost 2022]$ cat softlink_a2
cat: softlink_a2: 没有那个文件或目录