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-13.查看分区文件系统: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.10Partition table scan:MBR: protectiveBSD: not presentAPM: not presentGPT: presentFound 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 Name1 2048 4196351 2.0 GiB 8200 Linux swap2 4196352 8390655 2.0 GiB 8200 Linux swap3 8390656 12584959 2.0 GiB 8200 Linux swap
#8200是Centos7中的swap的默认systemID
Command (? for help): wFinal 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安装即可