设备文件
I/O Ports: I/O设备地址
一切皆文件:open(), read(), write(), close()
设备类型:
块设备:block,存取单位“块”,磁盘
字符设备:char,存取单位“字符”,键盘设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备[root@Centos6app]#ll /dev/sda<br/>brw-rw----. 1 root disk 8, 0 12月 1 01:22 /dev/sda
---->8,0 8是主要编号(大的类别),0是次要编号(是这个类别下的第几个设备)
- 磁盘设备的设备文件命名:
/dev/DEV_FILE
- SCSI, SATA, SAS, IDE,USB:
/dev/sd
- 虚拟磁盘:
/dev/vd
- 不同磁盘标识:
a-z,aa,ab… /dev/sda, /dev/sdb, ...
- 同一设备上的不同分区:
1,2, ... /dev/sda1, /dev/sda5
-
硬盘存储术语
head:磁头
track:磁道
cylinder: 柱面
sector: 扇区,512bytes
磁盘单面一圈默认为0-63个扇区
磁盘单面默认有0-1023个磁道
数据越靠外圈读写速度更快 - CHS和LBA
CHS
采用24bit位寻址
其中前10位表示cylinder,中间8位表示head,后面6位表示sector。
最大寻址空间8GBLBA(logical block addressing)
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
LBA采用48个bit位寻址
最大寻址空间128PB由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式
- 为什么分区
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
- 如果硬盘不划分分区,磁盘没有文件系统,只能用二进制进行访问。
- 特定情况使用这种方法,这种叫做“裸设备”,性能更高,但极少采用。
图形界面查看硬盘情况
[root@Centos7~]#gnome-disks
分区种类
两种分区方式:MBR和GPT
MBR: Master Boot Record,1982年,使用32位表示扇区数
单个分区不能超过2T容量
如何分区:按柱面
0磁道0扇区(存储分区信息):共计512bytes (被破坏后,基本报废)446bytes: boot loader (存放关于计算机启动的相关信息,如果不是引导磁盘,此446字节为空)
64bytes:分区表
16bytes: 标识一个分区
2bytes: 55AA (16进制数)4个主分区;3主分区+1扩展(N个逻辑分区)
引导磁盘必须有一个主分区,用来引导系统
如果磁盘不适用于引导系统,可以没有主分区
扩展分区不能直接存储数据,必须建立逻辑分区进行存储数据
MBR分区结构
增加硬盘后,不用重新启动系统,输入下列命令进行启动新加的硬盘
[root@Centos6~]#echo '- - -' >/sys/class/scsi_host/host2/scan
- sda硬盘前512字节内容
[root@Centos6~]#hexdump /dev/sda -C -n 512 00000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.H..............| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 03 02 |.........|...t..| 00000040 80 00 00 80 a8 43 04 00 00 08 fa 90 90 f6 c2 80 |.....C..........| 00000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc |u....Y|..1......| 00000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 f6 c2 80 |. ..@|<.t...R...| 00000070 74 54 b4 41 bb aa 55 cd 13 5a 52 72 49 81 fb 55 |tT.A..U..ZRrI..U| 00000080 aa 75 43 a0 41 7c 84 c0 75 05 83 e1 01 74 37 66 |.uC.A|..u....t7f| 00000090 8b 4c 10 be 05 7c c6 44 ff 01 66 8b 1e 44 7c c7 |.L...|.D..f..D|.| 000000a0 04 10 00 c7 44 02 01 00 66 89 5c 08 c7 44 06 00 |....D...f.\..D..| 000000b0 70 66 31 c0 89 44 04 66 89 44 0c b4 42 cd 13 72 |pf1..D.f.D..B..r| 000000c0 05 bb 00 70 eb 7d b4 08 cd 13 73 0a f6 c2 80 0f |...p.}....s.....| 000000d0 84 f0 00 e9 8d 00 be 05 7c c6 44 ff 00 66 31 c0 |........|.D..f1.| 000000e0 88 f0 40 66 89 44 04 31 d2 88 ca c1 e2 02 88 e8 |..@f.D.1........| 000000f0 88 f4 40 89 44 08 31 c0 88 d0 c0 e8 02 66 89 04 |..@.D.1......f..| 00000100 66 a1 44 7c 66 31 d2 66 f7 34 88 54 0a 66 31 d2 |f.D|f1.f.4.T.f1.| 00000110 66 f7 74 04 88 54 0b 89 44 0c 3b 44 08 7d 3c 8a |f.t..T..D.;D.}<.| 00000120 54 0d c0 e2 06 8a 4c 0a fe c1 08 d1 8a 6c 0c 5a |T.....L......l.Z| 00000130 8a 74 0b bb 00 70 8e c3 31 db b8 01 02 cd 13 72 |.t...p..1......r| 00000140 2a 8c c3 8e 06 48 7c 60 1e b9 00 01 8e db 31 f6 |*....H|`......1.| 00000150 31 ff fc f3 a5 1f 61 ff 26 42 7c be 7f 7d e8 40 |1.....a.&B|..}.@| 00000160 00 eb 0e be 84 7d e8 38 00 eb 06 be 8e 7d e8 30 |.....}.8.....}.0| 00000170 00 be 93 7d e8 2a 00 eb fe 47 52 55 42 20 00 47 |...}.*...GRUB .G| 00000180 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 |eom.Hard Disk.Re| 00000190 61 64 00 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd |ad. Error.......| 000001a0 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 00 00 00 |..<.u...........| 000001b0 00 00 00 00 00 00 00 00 dc 63 01 00 00 00 80 20 |.........c..... | 000001c0 21 00 83 1b 02 99 00 08 00 00 00 80 25 00 00 1b |!...........%...| 000001d0 03 99 83 fe ff ff 00 88 25 00 00 00 59 06 00 fe |........%...Y...| 000001e0 ff ff 83 fe ff ff 00 88 7e 06 00 80 af 02 00 fe |........~.......| 000001f0 ff ff 05 fe ff ff 00 08 2e 09 00 f8 d1 0f 55 aa |..............U.| 00000200
- 备份磁盘0号扇区(备份后的文件必须放到其他硬盘或者其他机器上)
[root@Centos6~]#dd if=/dev/sda of=/app/mbr bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00214059 秒,239 kB/秒
[root@Centos6~]#ll /app/mbr
-rw-r--r--. 1 root root 512 12月 2 18:29 /app/mbr
- 破坏磁盘0号扇区分区表的64个字节
dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446
后果就是系统无法启动,因为分区表被破坏,找不到磁盘中的数据。
救援模式下,从其他系统考取备份的0号扇区文件,进行修复sda硬盘
dd if=mbr of=/dev/sda bs=1 count=64 skip=446 seek=446
- 用已有分区的硬盘分区表去覆盖没有分区的硬盘,需要复制后66位字节
- 没有最后的55aa,新硬盘分区表不会生效。
- 而且没办法复制逻辑分区(不要这么玩,不好玩的)
[root@Centos6~]#dd if=/app/mbr of=/dev/sdb bs=1 count=66 skip=446 seek=446
硬盘主引导记录MBR由4个部分组成
主引导程序(偏移地址0000H--0088H):它负责从活动分区中装载,并运行系统引导程序。
出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA
- GPT分区
没有扩展分区和逻辑分区,全部都是主分区
突破分区上限为2T的限制
GPT:GUID(Globals Unique Identifiers)partition table(全局唯一标识符分区表), 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) :通用唯一标识符(也可以叫做全局唯一标识符), 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位[root@Centos6~]#uuidgen
e996a486-f7c9-4962-bc35-f77ce010972a (16进制数,转换成2进制就为128位)UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
- EFI部分又可以分为4个区域:
EFI信息区(GPT头)
分区表
GPT分区
备份区域
见下图:
LBA0:保护性MBR
LBA1:主GUID分区头部
LBA2-LBA33:分区表
后续就是各分区及分区表等信息备份
BIOS+MBR与UEFI+GPT
传统BIOS运行流程
开机--->BIOS初始化--->BIOS自检--->引导操作系统--->进入系统
UEFI运行流程
开机--->UEFI初始化--->引导操作系统--->进入系统
- 查看分区信息的几种方式
[root@Centos6~]#ls /dev/sd* ------->来自内存信息 /dev/sda /dev/sda2 /dev/sda4 /dev/sdb /dev/sda1 /dev/sda3 /dev/sda5 /dev/sdc
[root@Centos6~]#cat /proc/partitions ------->来自内存信息 major minor #blocks name 8 0 209715200 sda 8 1 1228800 sda1 8 2 53248000 sda2 8 3 22528000 sda3 8 4 1 sda4 8 5 2097152 sda5 8 16 104857600 sdb 8 32 83886080 sdc
[root@Centos6~]#lsblk ------->来自内存信息 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /media/CentOS_6.9_Final sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1.2G 0 part /boot ├─sda2 8:2 0 50.8G 0 part / ├─sda3 8:3 0 21.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk
[root@Centos6~]#fdisk -l ------->来自硬盘信息 Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000163dc Device Boot Start End Blocks Id System /dev/sda1 * 1 154 1228800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 154 6783 53248000 83 Linux /dev/sda3 6783 9587 22528000 83 Linux /dev/sda4 9587 26109 132709376 5 Extended /dev/sda5 9588 9849 2097152 82 Linux swap / Solaris Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdc: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
管理分区命令
列出块设备命令 :lsblk
- 创建分区使用:
- fdisk 命令
创建MBR分区
fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
fdisk不擅长管理GUID分区表(GPT),它不适用于大型分区。特别情况使用更高级的GNU parted命令。
常用选项-b扇区化
-h打印帮助,然后退出。
-c关闭DOS兼容模式。 (推荐的)
-C cyl 指定磁盘的柱面数
-H 指定磁盘的磁头数量(当然不是物理编号,而是分区表使用的编号。)合理的值是255和16。
-S 指定磁盘每个磁道的扇区数。 (当然不是物理编号,而是用于分区表的编号)。合理的值是63。
-l列出指定设备的分区表,然后退出。如果没有给出设备,则使用/ proc /分区(如果存在)中提到的设备。
-u列出分区表时,请在扇区中给出大小而不是圆柱体。
-s分区分区大小(以块为单位)打印在标准输出上。
-v打印fdisk程序的版本号并退出。
- fdisk 命令
- gdisk 创建GPT分区
gdisk - Interactive GUID partition table (GPT) manipulator(交互式GUID分区表(GPT)操纵器)
gdisk [ -l ] device
交互模式选项(普通)b:将GPT数据备份到文件
c:更改分区的名称
d:删除一个分区
i:显示分区的详细信息
l:列出已知的分区类型
n:添加一个新的分区
o:创建一个新的空的GUID分区表(GPT)
p:打印分区表
q:退出而不保存更改
r:恢复和转换选项(仅限专家)
s:排序分区
t:更改分区的类型代码
v:验证磁盘
w:写表到磁盘并退出
x:额外功能(仅限专家)
?:打印这个菜单专家模式选项:
a:设置属性
c:更改分区GUID
d:显示扇区对齐值
e:将备份数据结构重新定位到磁盘的末尾
g:更改磁盘GUID
h:重新计算保护性/杂种MBR中的CHS值
i :显示分区的详细信息
l :设置扇区对齐值
m:返回主菜单
n:创建一个新的保护性MBR
o:打印保护性MBR数据
p:打印分区表
q:退出而不保存更改
r:恢复和转换选项(仅限专家)
s:调整分区表
t:转置两个分区表条目
u:在新设备上复制分区表
v:验证磁盘
w:写表格到磁盘并退出
z:销毁GPT数据结构并退出
?:打印这个菜单
[root@Centos6~]#gdisk /dev/sdb ----------> 用gdisk对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): ? --------> 输入?号查看选项
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-209715166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-209715166, default = 209715166) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L -----> 查看分区支持的编码
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot
4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS
7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved
8200 Linux swap 8300 Linux filesystem 8301 Linux reserved
8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM
a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap
a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID
a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap
a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum
a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS
a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted
a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+
af01 Apple RAID af02 Apple RAID offline af03 Apple label
af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot
bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
Press the <Enter> key to see more codes:
ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300): ----->直接选择默认值
Changed type of partition to '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.
[root@Centos6~]#parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 1075MB 1074MB Linux filesystem
- parted 高级分区操作 (操作都是实时生效的,小心使用)
parted是一个磁盘分区和分区大小调整程序。它允许你创建,销毁,调整大小,移动和复制ext2,linux-swap,FAT,FAT32和reiserfs分区。它可以创建,调整大小和移动Macintosh HFS分区,以及检测jfs,ntfs,ufs和xfs分区。这对于为新操作系统创建空间,重新组织磁盘使用以及将数据复制到新硬盘非常有用。
这个命令有两种用法,一种是直接命令使用,另外一种是交互式使用。
用法:parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt | msdos 对新硬盘直接创建gpt或mbr格式分区
命令直接使用方法[root@Centos6~]#parted /dev/sdb mklabel gpt ------>直接对sdb硬盘创建gpt分区 信息: You may need to update /etc/fstab. [root@Centos6~]#parted /dev/sdb print --------查看sdb硬盘分区信息 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name 标志 [root@Centos6~]#parted /dev/sdc mklabel msdos ------>直接对sdc硬盘创建mbr分区 信息: You may need to update /etc/fstab. [root@Centos6~]#parted /dev/sdc print --------查看sdc硬盘分区信息 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 85.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system 标志
-h, - 帮助 显示帮助信息
-l,--list 列出所有块设备上的分区布局
-m, - 机器 显示机器可解析的输出
-s,--script 从不提示用户干预
-v,--version 显示版本
-a 对齐类型, - 对齐类型- parted /dev/sdb mkpart primary(主分区) 1 200 (默认M) 直接对磁盘分区操作
[root@Centos6~]#parted /dev/sdb mkpart primay 1 1000 信息: You may need to update /etc/fstab. [root@Centos6~]#parted /dev/sdb print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name 标志 1 1049kB 1000MB 999MB primay [root@Centos6~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1.2G 0 part /boot ├─sda2 8:2 0 50.8G 0 part / ├─sda3 8:3 0 21.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk └─sdb1 8:17 0 953M 0 part sdc 8:32 0 80G 0 disk
- parted /dev/sdb mkpart primary(主分区) 1 200 (默认M) 直接对磁盘分区操作
- 同步硬盘配置信息
partprobe-重新设置内存中的内核分区表版本
注意,这个命令不可以在Centos6中使用,只能在其他版本使用
Centos6增加分区后,用partx -a /dev/DEVICE命令
或者用 kpartx -a /dev/DEVICE -f: force
如果是删除分区,用 partx -d --nr M-N /dev/DEVICE 命令[root@Centos6~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1.2G 0 part /boot ├─sda2 8:2 0 50.8G 0 part / ├─sda3 8:3 0 21.5G 0 part /app ├─sda4 8:4 0 31.5K 0 part ├─sda5 8:5 0 2G 0 part [SWAP] ├─sda6 8:6 0 1.7M 0 part └─sda7 8:7 0 1G 0 part sdb 8:16 0 100G 0 disk └─sdb1 8:17 0 1G 0 part sdc 8:32 0 80G 0 disk [root@Centos6~]#partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 BLKPG: Device or resource busy error adding partition 4 BLKPG: Device or resource busy error adding partition 5 [root@Centos6~]#partx -d --nr 6-7 /dev/sda [root@Centos6~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1.2G 0 part /boot ├─sda2 8:2 0 50.8G 0 part / ├─sda3 8:3 0 21.5G 0 part /app ├─sda4 8:4 0 31.5K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk └─sdb1 8:17 0 1G 0 part sdc 8:32 0 80G 0 disk
[root@Centos6~]#echo -e 'n\n\n\n+1G\n\nw\nY\n' |gdisk /dev/sdc
可以写到脚本中
文件系统
- 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统 。
- 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等 。
- 支持的文件系统(跟内核相关):/lib/modules/
uname –r
/kernel/fs[root@Centos6~]#ls /lib/modules/`uname -r `/kernel/fs autofs4 cramfs ext3 gfs2 mbcache.ko squashfs btrfs dlm ext4 jbd nfs ubifs cachefiles ecryptfs fat jbd2 nfs_common udf cifs exportfs fscache jffs2 nfsd xfs configfs ext2 fuse lockd nls [root@Centos7~]#ls /lib/modules/`uname -r `/kernel/fs binfmt_misc.ko.xz cachefiles cifs dlm ext4 fscache gfs2 jbd2 mbcache.ko.xz nfs_common nls pstore udf btrfs ceph cramfs exofs fat fuse isofs lockd nfs nfsd overlayfs squashfs xfs
文件系统类型
- Linux文件系统:
-
- ext2(Extended file system扩展的文件系统)
-
- ext3
-
- ext4
-
- xfs(SGI)
-
- btrfs(Oracle)
-
- reiserfs
-
- jfs(AIX)
-
- swap
- 光盘:iso9660
- Windows:FAT32, exFAT,NTFS
- Unix: FFS(fast), UFS(unix), JFS2
- 网络文件系统:NFS, CIFS ------> 会有自己本机硬盘的感觉
- 集群文件系统:GFS2, OCFS2(oracle)
- 分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
- RAW:未经处理或者未经格式化产生的文件系统 (裸xi'ton)
[root@Centos6~]#df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda2 ext4 52279876 3834652 45782824 8% / tmpfs tmpfs 602404 224 602180 1% /dev/shm /dev/sda3 ext4 22043164 44980 20871784 1% /app /dev/sda1 ext4 1176704 35460 1079804 4% /boot [root@Centos7~]#df -T 文件系统 类型 1K-块 已用 可用 已用% 挂载点 /dev/sda2 xfs 52403200 5567888 46835312 11% / devtmpfs devtmpfs 724776 0 724776 0% /dev tmpfs tmpfs 739476 0 739476 0% /dev/shm tmpfs tmpfs 739476 9204 730272 2% /run tmpfs tmpfs 739476 0 739476 0% /sys/fs/cgroup /dev/sda3 xfs 20961280 32944 20928336 1% /app /dev/sda1 xfs 1247232 161556 1085676 13% /boot tmpfs tmpfs 147896 8 147888 1% /run/user/0 /dev/sr0 iso9660 8490330 8490330 0 100% /run/media/root/CentOS 7 x86_64 /dev/sr1 iso9660 3878870 3878870 0 100% /var/ftp/pub/centos/6/os/x86_64 [root@Centos7~]#blkid /dev/sr0 /dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
文件系统分类
- 根据其是否支持"journal"功能: 日志型文件系统: ext3, ext4, xfs, ... 非日志型文件系统: ext2, vfat
- 文件系统的组成部分: 内核中的模块:ext4, xfs, vfat 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
- Linux的虚拟文件系统:VFS
- 查前支持的文件系统:cat /proc/filesystems
[root@Centos6~]# cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev binfmt_misc nodev debugfs nodev securityfs nodev sockfs nodev usbfs nodev pipefs nodev anon_inodefs nodev inotifyfs nodev devpts nodev ramfs nodev hugetlbfs iso9660 nodev pstore nodev mqueue nodev selinuxfs nodev drm ext4 nodev autofs nodev fuse fuseblk nodev fusectl
创建文件系统
- mkfs命令:
- (1) mkfs.FS_TYPE /dev/DEVICE
-
- ext4
-
- xfs
-
- btrfs
-
- vfat
- (2) mkfs -t FS_TYPE /dev/DEVICE
-
- -L 'LABEL': 设定卷标
[root@Centos6~]#mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: --------------->**超级块存放的位置 **
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
- mke2fs:ext系列文件系统专用管理工具
-
- -t {ext2|ext3|ext4}
-
- -b {1024|2048|4096} ------------>(指定块的大小,大小根据要存储的文件来判定,如果是大文件就选用4k,如果是小文件就选用1k)
-
- -L 'LABEL'
-
- -j: 相当于 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小 (就是设定inode和块的比例)
-N #:指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性[root@Centos6~]#blkid ----->查看是否创建成功 /dev/sdb1: UUID="4ef74306-f8c0-4733-84b0-8acdab41fa03" TYPE="ext4"
- -j: 相当于 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
- tune2fs:重新设定ext系列文件系统可调整参数的值 (只能管理ext系统)
-
- -l:查看指定文件系统超级块信息;super block
-
- -L 'LABEL':修改卷标 (卷标的命名最好就是后续挂载点的名字或者要使用的性能名字)
-
- -m #:修预留给管理员的空间百分比
-
- -j: 将ext2升级为ext3
-
- -O: 文件系统属性启用或禁用, –O ^has_journal
-
- -o: 调整文件系统的默认挂载选项,–o ^acl
-
- -U UUID: 修改UUID号
[root@Centos6~]#tune2fs -o acl /dev/sdb1 ----->Centos6安装系统后,手工分的ext文件系统是没有acl功能的,需要手工添加 tune2fs 1.41.12 (17-May-2010) [root@Centos6~]#tune2fs -l /dev/sdb1 tune2fs 1.41.12 (17-May-2010) Filesystem magic number: 0xEF53 ------->file命令通过魔术信息判断文件内容是什么格式的文件 Default mount options: (none) -------> 硬盘挂载信息 Filesystem state: clean -------->文件系统状态,clean代表正常,如果noclean代表数据可能被破坏 ....... Default mount options: user_xattr acl ------> 文件系统是否有 acl 权限 Filesystem features: **has_journal** ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize 有has journal 就代表有日志功能 [root@Centos6~]#mke2fs -j /dev/sdb2 ----->给ext2增加日志功能,就相当于变成ext3格式了 mke2fs 1.41.12 (17-May-2010) [root@Centos6~]#blkid /dev/sdb2: UUID="37a5c45f-6944-4c8b-a5bf-9e619349f7f8" SEC_TYPE="ext2" TYPE="ext3" [root@Centos6~]#tune2fs -O has_journal /dev/sdb2 -------->也可以用命令增加功能 tune2fs 1.41.12 (17-May-2010) Creating journal inode: 完成 This filesystem will be automatically checked every 25 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
xfs文件系统,如果分区已经有了文件系统,再次创建时候会有提示,如果选择覆盖,就会覆盖之前的系统。
xfs系统和ext系列是完全不同的系统,之间无法转换。
磁盘的路径名称及文件系统的卷标都可能会变,最好选择磁盘文件系统的UUID号,只有更换文件系统才会变更UUID号,不然不会改变
- -U UUID: 修改UUID号
[root@Centos6~]#mkfs.ext4 /dev/sdb2 -L /mnt/sdb2
mke2fs 1.41.12 (17-May-2010)
文件系统标签=/mnt/sdb2
........
[root@Centos6~]#blkid
/dev/sdb2: LABEL="/mnt/sdb2" UUID="352eae7e-722b-4b6c-a895-948decd43157" TYPE="ext4"
- 卷标
-
- 指向设备的另一种方法
-
- 与设备无关
- blkid 命令:块设备属性信息查看
-
- blkid [OPTION]... [DEVICE]
-
- -U UUID: 根据指定的UUID来查找对应的设备
-
- -L LABEL:根据指定的LABEL来查找对应的设备
- e2label:管理ext系列文件系统的LABEL
-
- e2label DEVICE [LABEL]
*findfs :查找分区
- e2label DEVICE [LABEL]
-
- findfs [options] LABEL=<label>
-
- findfs [options] UUID=<uuid>
- dumpe2fs:
- 块分组管理,32768块
-
- -h:查看超级块信息,不显示分组信息
*文件系统检测和修复
常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Checkfsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
[root@Centos7~]#dd if=/dev/zero of=/dev/sdb1 bs=1M count=10 --------->用0替换文件系统前10M数据
[root@Centos7~]#tune2fs -l /dev/sdb1 --------->导致查看不了文件系统信息
tune2fs 1.42.9 (28-Dec-2013)
找不到有效的文件系统超级块.
[root@Centos7~]#fsck /dev/sdb1 ---------> 用fack命令修复,但一定要提前取消挂载**虽然能修复,但有数据丢失风险极大**
fsck,来自 util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: 超级块无效, trying backup blocks...
超级块包含无效的 ext3 日志(inode 8).
清除<y>? 是
*** ext3 journal has been deleted - filesystem is now ext2 only ***
/dev/sdb1 was not cleanly unmounted, 强制检查.
Resize inode not valid. 重建<y>? 是
第一步: 检查inode,块,和大小
根inode不是一个目录. 清除<y>? 是
第二步: 检查目录结构
第3步: 检查目录连接性
根inode not allocated. 分配<y>? 是
/lost+found未找到.创建<y>? 是
Pass 4: Checking reference counts
第5步: 检查簇概要信息
块位图差异: +(0--9251) +(32768--33794) +(98304--99330) +(163840--164866) +(229376--230402) +(294912--295938) -(1081344--1114111)
处理<y>? 是
Free 块s count wrong for 簇 #0 (23509, counted=23514).
处理<y>? 是
Free 块s count wrong for 簇 #33 (0, counted=32768).
处理<y>? 是
Free 块s count wrong (2538301, counted=2571074).
处理<y>? 是
Inode位图差异: +1 +(3--10)
处理<y>? 是
Free inodes count wrong for 簇 #0 (8180, counted=8181).
处理<y>? 是
Directories count wrong for 簇 #0 (3, counted=2).
处理<y>? 是
Free inodes count wrong (655348, counted=655349).
处理<y>? 是
重建日志<y>? 是
Creating journal (32768 blocks): y完成.
*** journal has been re-created - filesystem is now ext3 again ***
/dev/sdb1: ***** 文件系统已修改 *****
/dev/sdb1: 11/655360 files (0.0% non-contiguous), 83134/2621440 blocks
[root@Centos7~]#tune2fs -l /dev/sdb1 --------->查看修复后的文件系统信息
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none> --------->文件系统卷标
Last mounted on: <not available> ---------> 挂载位置
Filesystem magic number: 0xEF53 --------->魔术信息
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem state: clean --------->文件系统状态
Inode count: 655360 --------->最多的inode数(如果是大文件,节点默认即可,如果是小文件,可以增加数量)
Block count: 2621440 --------->块的个数 (块数一定大于节点数)
Reserved block count: 131072 --------->给root预留的空间,只能root用,可以按照比例来设定
Block size: 4096 --------->块的大小,最大4k(大小的选择根据文件的情况来定夺,但后期无法修改)
.......
Mount count: 0 --------->挂载次数
Maximum mount count: -1 --------->挂载多少次后,开始系统检查
Inode size: 256 --------->单个inode的大小,不能太小,否则容易出问题
Last checked: Tue Dec 5 20:31:23 2017
xfs文件系统命令
[root@Centos7~]#xfs
xfs_admin xfs_db xfs_freeze xfs_info xfs_logprint xfs_mkfile xfs_repair(修复文件系统命令)
xfs_bmap xfsdump xfs_fsr xfsinvutil xfs_mdrestore xfs_ncheck xfsrestore
xfs_copy xfs_estimate xfs_growfs(文件系统扩展) xfs_io xfs_metadump xfs_quota xfs_rtcp
怎么取两个文件的交集?**
[root@Centos7~]#grep -f f1 f2
转载于:https://blog.51cto.com/exia00linux/2049497