Linux磁盘及文件系统管理
CPU, Memory(RAM), I/O
I/O: Disks, Ehtercard
Disks: 持久存储数据
1 磁盘管理
1.1 硬盘接口类型
IDE(ata):并口,133MB/s
SCSI:并口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
SATA:串口,6gbps
SAS:串口,6gbps
USB:串口,480MB/s
并口:同一线缆可以接多块设备;
IDE:两个,主,从
SCSI:
宽带:16-1
窄带:8-1
串口:同一线缆只可以接一个设备;
IOPS:io per second(IO每秒)
1.2 硬盘类型
硬盘:机械硬盘,固态硬盘;
1.2.1 机械硬盘
track:磁道
sector:扇区,512bytes
cylinder:柱面
分区划分基于柱面:
平均寻道时间:
5400rpm, 7200rpm, 10000rpm, 15000rpm
Linux的哲学思想:一切皆文件;
设备类型:
块(block):随机访问,数据交换单位是“块”;
字符(character):线性访问,数据交换单位是“字符”;
1.2.2 固态硬盘
1.3 设备文件:FHS
/dev
设备文件:关联至设备的驱动程序;设备的访问入口;
设备号:
major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;
minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口;
mknod命令:
make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE:创建后的设备文件的访问权限;
1.3.1 设备文件名:ICANN
磁盘命名方式:
IDE接口硬盘命令方式: /dev/hd[a-z]
例如:/dev/hda, /dev/hdb
SCSI, SATA, USB, SAS硬盘命令方式: /dev/sd[a-z]
磁盘分区命名方式:
/dev/sda#:
例如:/dev/sda1, ...
注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#
引用设备的方式:
设备文件名
卷标
UUID
1.4 磁盘分区
磁盘分区:MBR, GPT
1.4.1 MBR(Master Boot Record)
MBR(Master Boot Record):0 sector 主引导记录
MBR分为三部分:
446bytes:bootloader(引导装载程序),引导启动操作系统的程序;
64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区;
4主分区
3主1扩展:
n逻辑分区
2bytes:MBR区域的有效性标识;55AA为有效;
主分区和扩展分区的标识序号是:1-4
逻辑分区序号:5+,从5开始
1.4.2 GPT
GPT:(GUID Partition Table)全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点
支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted
向后兼容MBR
必须在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS)
必须使用64位系统
Mac、Linux系统都能支持GPT分区格式
Windows 7/8 64bit、Windows Server 2008 64bit支持GPT
1.5 fdisk 命令
1、查看磁盘的分区信息:
fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况;
2、管理分区
fdisk device
fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;
常用命令:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已经ID
w:保存并退出
q:不保存并退出
m:查看帮助信息
p:显示现有分区信息
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;
cat /proc/partitions,查看内核已识别的所有分区
通知内核强制重读磁盘分区表:
CentOS 5:partprobe [device]
CentOS 6,7:partx, kpartx
partx -a [device]
kpartx -af [device]
示例:
[root@CentOS7-171 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 512000 sda1
8 2 52428800 sda2
8 3 1048576 sda3
8 4 1 sda4
8 5 10485760 sda5
11 0 4228096 sr0
[root@CentOS7-171 ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-5
[root@CentOS7-171 ~]# partx -a /dev/sda
partx: /dev/sda: error adding partitions 1-7
[root@CentOS7-171 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 512000 sda1
8 2 52428800 sda2
8 3 1048576 sda3
8 4 1 sda4
8 5 10485760 sda5
8 6 10485760 sda6
8 7 2097152 sda7
11 0 4228096 sr0
分区创建工具:parted, sfdisk;
2 创建文件系统
格式化:
低级格式化(分区之前进行,划分磁道)
高级格式化(分区之后对分区进行,创建文件系统)
元数据区,数据区
元数据区:
文件元数据:inode(index node)
大小、权限、属主属组、时间戳、数据块指针
符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;
设备文件:存储数据指针的空间当中存储的是设备号(major, minor);
bitmap index:位图索引
2.1 VFS(Virtual File System)
Linux的文件系统: ext2(无日志功能), ext3, ext4, xfs, reiserfs, btrfs
光盘:iso9660
网络文件系统:nfs, cifs
集群文件系统:gfs2, ocfs2
内核级分布式文件系统:ceph
windows的文件系统:vfat, ntfs
伪文件系统:proc, sysfs, tmpfs, hugepagefs
Unix的文件系统:UFS, FFS, JFS
交换文件系统:swap
用户空间的分布式文件系统:mogilefs, moosefs, glusterfs
2.2 文件系统管理工具
2.2.1 创建文件系统的工具
mkfs
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...
2.2.1.1 ext系列文件系统的管理工具
mkfs.ext2, mkfs.ext3, mkfs.ext4
mkfs -t ext2 = mkfs.ext2
[root@Centos6.8-180 ~]# mkfs.ext2 /dev/sda3
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2620699 blocks
131034 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表: 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@Centos6.8-180 ~]# blkid /dev/sda3
/dev/sda3: UUID="f6bfa911-010c-4d39-83df-06bfce7cd572" TYPE="ext4"
2.2.1.2 ext系列文件系统专用管理工具
2.2.1.2.1 mke2fs命令
mke2fs [OPTIONS] device
-t {ext2|ext3|ext4}:指明要创建的文件系统类型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系统的块大小;
-L LABEL:指明卷标;
-j:创建有日志功能的文件系统ext3;
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode;
-N #:直接指明要给此文件系统创建的inode的数量;
-m #:指定预留的空间,百分比;
-O [^]FEATURE:以指定的特性创建目标文件系统;加[^]表示关闭此特性,不加则是开户此特性
2.2.2 检测及修复文件系统工具
ext系列文件系统的专用工具:
2.2.2.1 e2fsck命令
e2fsck : check a Linux ext2/ext3/ext4 file system
e2fsck [OPTIONS] device
-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;
2.2.2.2 fsck命令:
fsck:check and repair a Linux file system
用于实现文件系统检测的工具
因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行;
-t fstype:指明文件系统类型;
fsck -t ext4 = fsck.ext4
-a:无须交互而自动修复所有错误;
-r:交互式修复;
2.2.3 查看其属性的工具
2.2.3.1 dumpe2fs命令
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h] device
2.2.3.2 e2lable命令
e2label命令:卷标的查看与设定
查看:e2label device
设定:e2label device LABEL
[root@Centos6.8-180 ~]# e2label /dev/sda3
[root@Centos6.8-180 ~]# e2label /dev/sda3 MYDATA
[root@Centos6.8-180 ~]# e2label /dev/sda3
MYDATA
[root@Centos6.8-180 ~]# blkid /dev/sda3
/dev/sda3: UUID="98873684-812d-40ae-86ad-5065e17d205b" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA"
2.2.4 调整文件系统特性
tune2fs命令
tune2fs [OPTIONS] device
-l:查看超级块的内容;
修改指定文件系统的属性:
-j:ext2 --> ext3;
-L LABEL:修改卷标;
-m #:调整预留空间百分比;
-O [^]FEATHER:开启或关闭某种特性;
-o [^]mount_options:开启或关闭某种默认挂载选项
acl
^acl
tune2fs命令:查看或修改ext系列文件系统的某些属性
adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
注意:块大小创建后不可修改;
2.3 链接文件
链接文件:访问同一个文件不同路径;
2.3.1 硬链接
硬链接:指向同一个inode的多个文件路径;
特性:
(1)目录不支持硬链接;
(2)硬链接不能跨文件系统;
(3)创建硬链接会增加inode引用计数;
创建硬链接:
ln src link_file
[root@CentOS7-171 ~]# ln fstab.new fstab2
2.3.2 符号链接
符号链接:指向一个文件路径的另一个文件路径;
特性:
(1)符号链接与文件是两人个各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加引用计数;
(2)支持对目录创建符号链接,可以跨文件系统;
(3)删除符号链接文件不影响原文件;但删除原文件,符号指定的路径即不存在,此时会变成无效链接;
符号链接权限:lrwxrwxrwx
注意:符号链接文件的大小是其指定的文件的路径字符串的字节数;
创建符号链接:
ln -s src link_file
-v:verbose
[root@CentOS7-171 ~]# ln -s fstab fstab.link
磁盘和文件
内核级文件系统的组成部分:
文件系统驱动:由内核提供
文件系统理工具:由用户空间的应用程序提供
CentOS 6如何使用xfs文件系统:
# yum -y install xfsprogs
创建:mkfs.xfs
检测:fsck.xfs
[root@Centos6.8-180 ~]# mkfs.xfs -f /dev/sda3
meta-data=/dev/sda3 isize=256 agcount=4, agsize=655175 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=2620699, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@Centos6.8-180 Linux磁盘及文件系统管理标签:memory linux center 接口 style
原文地址:http://zhucke.blog.51cto.com/180229/1908220