Linux文件系统
冯诺依曼在1945年提出计算机的五大组成部分
运算器:CPU
控制器:CPU
存储器:内存和硬盘
输入设备:鼠标、硬盘
输出设备:显示器
一、硬盘结构
机械硬盘结构
- 扇区:硬盘的最小存储单位,大小为512字节
- 磁道:由扇区组成的园
- 柱面:多扇片下,所有盘片的同一磁道组成的
固态硬盘结构
固态硬盘的特点
固态硬盘,使用固态电子芯片阵列而制成的硬盘,由控制单元和存储单元组成
特点:读写快、噪音低、防震、轻薄,有写入次数限制,容量较小、价格高
在固态硬盘中,为了便于理解,有逻辑上的磁道、扇区的概念
二、Centos6 下的ext4文件系统
1.磁盘使用流程
对硬盘进行分区
格式化指定文件系统
挂载使用
分区:MBR与GPT
MBR分区方式
- 主引导记录 是位于磁盘最前边的一段引导代码
- 主引导程序 占用了446byte
- 分区表 占用了64byte,16标识一个分区
- 有效标识符占用了2byte,标记MBR是否有效
GPT分区方式
- 现存系统最大支持128个主分区
- 最大支持18EB分区
- 提供分区表的冗余
- 实现分区表备份与安全
2.使用虚拟机进行MBR分区
1.关机添加硬盘
2.查看是否添加成功 ls /dev/sda
3.使用fdisk+设备文件名进行分区
#进入分区界面
[root@localhost ~]# fdisk /dev/sda1
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd4897b23 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):
fdisk交互页面中可用选项有
m:寻求帮助 | d:删除分区 | l:显示分区类型 | n:新建分区 |
p:显示分区表信息 | q:不保存退出 | t:修改分区id,l可查看 | w:保存并退出 |
3.格式化与挂载
super block:超级块,记录每个分区的block的大小、数量
inode表:用来快速搜索磁盘上的索引节点
data block:数据块,保存真实数据的位置,block的大小和数量在格式化成文件系统已经固定,除非重新格式化,否则不能修改。
单个文件占用小于一个block的大小时,单独占用一个block,剩余空间不会被利用。
inode:i节点,记录inode号、权限、属主属组、时间戳、大小、占了那几个block。
3.1 查看使用的扇区
fdisk -l 设备文件
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b1fe4
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 41943039 20446208 8e Linux LVM
3.2 查看分区情况
fdisk -l 设备文件 查看分区情况
[root@localhost ~]# fdisk -l /dev/sdb1
磁盘 /dev/sdb1:3221 MB, 3221225472 字节,6291456 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
3.3 格式化:
命令格式:mkfs.文件系统类型 磁盘路径
[root@localhost ~]# mkfs.xfs /dev/sdb2
3.4 挂载
命令格式:mount -t 文件系统类型 路径 挂载点
补充:df -h 查看已挂载的磁盘空间使用情况
df -i 查看已挂载的inode号
3.5 永久挂载
blkid 查询UUID
选择需要挂载的分区,复制到/etc/fstab
[root@localhost ~]# blkid
/dev/sda1: UUID="c198eb8b-f5d7-4dd1-9083-dc4168a9588d" TYPE="xfs"
/dev/sda2: UUID="xCaOvp-L9To-Obc9-5BLe-d9ES-vncR-Iz9pqm" TYPE="LVM2_member"
/dev/sdb1: UUID="371168b5-8eaf-4ddc-b26a-9e283ea06181" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="333657ff-e432-4b66-bca9-9201ce9f726c"
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root / xfs defaults 0 0
UUID=c198eb8b-f5d7-4dd1-9083-dc4168a9588d /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID=371168b5-8eaf-4ddc-b26a-9e283ea06181 /root/disk1 xfs defaults 0 0
3.6 查看UUID
1.dumpe2fs -h 分区设备名
2.ls -l /dev/disk/by-uuid/
[root@localhost ~]# ls -l /dev/disk/by-uuid/
总用量 0
lrwxrwxrwx. 1 root root 10 5月 14 04:29 131eb8b0-a1b4-47d0-9d94-c2571c083711 -> ../../dm-1
3.查看分区文件系统:df -T
补充命令:
partprode:将磁盘分区变化信息通知内核,请求操作系统重新加载分区表
-s:显示磁盘分区汇总信息
-h:显示帮助信息
fack:文件系统修复
格式:fack -y 分区名
三、Centos 7下的XFS文件系统
XFS每个单个文件系统量最大支持8eb,单个文件可以支持16tb。
XFS是一个适合高容量磁盘与 巨型文件的文件系统
1.XFS组成部分
XFS文件系统在数据的分布上主要分为三部分:
数据区(data section)
文件系统活动登录区(log section)
实时运行区(realtime section)
2.XFS文件系统相关查询命令
df -t #查看已经挂载分区的文件系统类型
xfs_info 挂载点/设备文件名 #查看已挂载XFS文件系统元数据信息命令
blkid #列出设备的UUID等参数
lsblk #查看设备详细信息
[root@localhost ~]# lsblk /dev/sdb2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb2 8:18 0 2G 0 part [SWAP]
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 18.5G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part [SWAP]
└─sdb2 8:18 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
[root@localhost ~]#
3.磁盘分区
GPT分区表
命令格式:gdisk 设备文件完整路径
#分区完成后,可以通过查看/proc/partitions来确定分区是否修改成功
partprode -s #更新Linux内核的分区表信息
4.磁盘格式化
mkfs.xfs 创建xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/sdb1
5.文件系统挂载
挂载:mount
选项
-a:根据/etc/fstab文件,将所有磁盘进行挂载
-t:指定文件系统类型来进行挂载
-o:挂载特殊选项
6.开机自动挂载
开机自动挂载需要写入配置文件/etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=866208a7-b3a2-4998-b20a-4c8dc6ecd0dc /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
第一列:磁盘设备文件名或UUID
第二列:挂载点
第三列:磁盘分区的文件系统
第四列:文件系统参数
async/sync(异步、同步) | 设置磁盘是否以异步方式运行,默认异步(性能较佳) |
auto/noauto | 自动、手动,默认文件系统自动挂载 |
rw/ro | 读写、只读,设置磁盘以读写或者只读运行 |
exec/noexec | 执行、不执行。限制文件系统可执行操作 |
suid/nosuid | 该文件系统是否允许SUID权限存在 |
defaults | 同时拥有rw、suid、dev、exec、suto、async等功能 |
第五列:能否被dump备份(0:不备份,1:每天备份,5不定期备份)
第六列:是否以fsck检验扇区
补充命令
stat:文件名、文件大小、占用block数量、单个block大小、所在设备编号、inode号、硬链接数、权限、属主属组、访问时间、数据修改时间、状态修改时间
[root@localhost ~]# stat .cshrc
文件:".cshrc"
大小:100 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33942934 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2013-12-29 10:26:31.000000000 +0800
最近更改:2013-12-29 10:26:31.000000000 +0800
最近改动:2024-04-22 22:46:36.028008307 +0800
创建时间:-
cat:改变访问时间
vim:改变数据修改时间
chmod、chown:权限的变动改变状态修改时间
[root@localhost ~]#
命令格式:du 目录或分区挂载点
命令选项:
-a:列出目录下所有子文件和子目录占用空间大小(默认列出子目录)。
-h:以常见单位显示目录大小。
-s:递归式显示目录下所有子文件子目录占用总空间。
挂载的三种方式
临时挂载:mount
永久挂载:vim /etc/fstab
mount -a:重新挂载/etc/fstab
扩展swap分区
swap
指的是交换分区(swap space),它是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是两者的组合。
1.修改分区ID
[root@localhost ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-41943006, default = 8390656) or {+-}size{KMGTP}:
Last sector (8390656-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 68E53DD4-EB72-44D6-A891-EC8367BDD529
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 29360061 sectors (14.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8200 Linux swap
2 4196352 8390655 2.0 GiB 8200 Linux swap
3 8390656 12584959 2.0 GiB 8200 Linux swap
#8200是Centos7中的swap的默认systemID
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.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
2.mkswap /dev/sdb3 #swap格式化
3.swapon /dev/sdb3 #开启设备
swapoff /dev/sdb3 #关闭设备
4.free -k -m -g -h #查看swap情况
[root@localhost ~]# free -k #以kb显示swap大小
total used free shared buff/cache available
Mem: 995892 664036 68396 26972 263460 101380
Swap: 5242868 21768 5221100
[root@localhost ~]# free -g #以gb显示swap大小
total used free shared buff/cache available
Mem: 0 0 0 0 0 0
Swap: 4 0 4
[root@localhost ~]# free -m #以mb显示swap大小
total used free shared buff/cache available
Mem: 972 648 66 26 257 99
Swap: 5119 21 5098
[root@localhost ~]# free -h #以常见单位显示swap大小
total used free shared buff/cache available
Mem: 972M 648M 66M 26M 257M 99M
Swap: 5.0G 21M 5.0G
[root@localhost ~]#
ble
Mem: 972 648 66 26 257 99
Swap: 5119 21 5098
[root@localhost ~]# free -h #以常见单位显示swap大小
total used free shared buff/cache available
Mem: 972M 648M 66M 26M 257M 99M
Swap: 5.0G 21M 5.0G
[root@localhost ~]#
注:fdsik命令可以在centos6、7版本使用,gdisk在centos7可以使用,如果需要在centos6使用yum安装即可