Linux磁盘及文件系统管理
Disk(硬盘)接口类型:
IDE:并口,133MB/s
SCSI:并口,640MB/s
SATA:串口,6Gbps
SAS:串口,6Gbps
USB:串口,480MB/s
并口:同一线缆可以接多块设备:
IDE:
两个,主从
SCSI:
宽带:16-1个
窄带:8-1个
串口:同一线缆只可以接一个设备:
硬盘:机械硬盘,固态硬盘
机械硬盘:
head:磁头
track:磁道
cylinder:柱面
secotr:扇区,512bytes
平均寻道时间:5400rpm(每分钟5400转),7200,10000,15000rpm
Linux的哲学思想:一切皆文件
设备类型:
块设备:block,随机访问,存取单位“块”,磁盘
字符设备:char,线性访问,存取单位“字符”,键盘
设备文件:FHS
/dev:设备文件,关联至设备的驱动程序,设备的访问入口
设备号码:
主设备号:major number,标识设备类型
次设备号:minor number,标识同一类型下的不同设备
mknod命令:创建设备文件
mknod [OPTION]… NAME TYPE [MAJOR MINOR]
-m MODE:创建后的设备文件的访问权限
eg:# mknod /dev/test b 100 1
设备文件名:命名规则由ICANN指定
磁盘:
IDE: /dev/hd[a-z]
eg:/dev/hda ,/dev/hdb
SCSI, SATA, SAS, USB: /dev/sd[a-z] //用户26个后使用aa,ab,ac,…..az
eg:/dev/sda ,/dev/sdb, …
同一设备上的不同分区:1,2, …
eg:/dev/sda1 ,/dev/sda5
磁盘分区:
两种分区方式:MBR ,GPT
MBR: Master Boot Record ,1982年提出, 使用32位表示扇区数,分区不超过2T
如何分区:按柱面
0 磁道0扇区:512bytes
446bytes: boot loader
64bytes :分区表
16bytes: 标识一个分区
2bytes: 55AA
4个主分区;3 主分区+1 扩展(N个逻辑分区)
GPT:GUID patition table支持128个分区,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128位UUID表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI ( 统一扩展固件接口)硬件支持GPT
分区创建工具:parted,sfdisk和fdisk
fdisk命令:
1、查看磁盘的分区信息:
fdisk -l [device…] :列出全部[指定]磁盘设备上的分区情况
2、管理分区
fdisk device
fdisk命令提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能,索引的操作均在内存中完成,没有直接同步到磁盘,指定使用w命令保存至磁盘上
常用命令:
n:创建一个新的分区
d:删除一个分区
t:修改一个分区的分区类型
l:查看或列出所有分类对应的id表
w:保存退出
q:不保存退出
p:显示当前分区
m:查看帮助信息
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别,需要使用命令通知内核重新读此分区
查看:cat /proc/partations
通知内核强制重读磁盘分区表:
CentOS5,7:partprobe [device]
CentOS6,7:partx,kpartx
新增分区:# partx -a [device]
删除分区:# partx -d -n M[-N] /dev/DEVICE (M,N为分区的数字编号)
[root@CentOS6 boot]# lsblk //目前磁盘上只有一块磁盘sda,上面只有一个分区 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /testdir ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 3.9G 0 part [SWAP] └─sda6 8:6 0 1G 0 part /home [root@CentOS6 boot]# fdisk /dev/sda //进入到fdisk提供的交互式接口中,管理磁盘 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n //新建一个分区 First cylinder (9592-26109, default 9592): //起始柱面为默认柱面 Using default value 9592 Last cylinder, +cylinders or +size{K,M,G} (9592-26109, default 26109): +10G //直接指明空间为10G Command (m for help): p //显示sda磁盘在内存中的已存在分区(注意:此时修改还没有写入磁盘上,如若修改错误,可以直接使用q命令退出) 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: 0x0009f14f Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 6400 51200000 83 Linux /dev/sda3 6400 8950 20480000 83 Linux /dev/sda4 8950 26109 137829376 5 Extended /dev/sda5 8950 9460 4096000 82 Linux swap / Solaris /dev/sda6 9460 9591 1055804 83 Linux /dev/sda7 9592 10897 10490413+ 83 Linux //新建的磁盘,10G Command (m for help): w //保存退出,并写如磁盘 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. //提示磁盘分区情况和内存不同步,要使用命令手动同步 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@CentOS6 boot]# partx -a /dev/sda //手动同步系统磁盘情况 BLKPG: Device or resource busy error adding partition 1 .... error adding partition 6 [root@CentOS6 boot]# fdisk -l /dev/sda //查看sda磁盘的情况 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: 0x0009f14f Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 6400 51200000 83 Linux /dev/sda3 6400 8950 20480000 83 Linux /dev/sda4 8950 26109 137829376 5 Extended /dev/sda5 8950 9460 4096000 82 Linux swap / Solaris /dev/sda6 9460 9591 1055804 83 Linux /dev/sda7 9592 10897 10490413+ 83 Linux
创建文件系统:
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
格式化:低级格式化(分区之前进行,划分磁道),高级格式化(分区之后进行,创建文件系统)
VFS:Virtual File System
Linux 文件系统: ext2, ext3, ext4, xfs (SGI), btrfs(Oracle), reiserfs, jfs(AIX ), swap
swap:交换分区
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS (fast ), UFS (unix ), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2 (oracle)
内核级分布式文件系统:ceph
伪文件系统:proc, ysfs, tmpfs, hugepagefs
用户空间的分布式文件系统:moosefs, mogilefs, glusterfs
RAW :未经处理或者未经格式化产生的文件系统
根据其是否支持"journal"(日志)功能:
何为日志文件系统:加入了对文件系统更改的日志记录,减少文件被破坏的机率,访问磁盘时系统死机不会丢失文件
日志型文件系统: ext3, ext4, xfs, …
非日志型文件系统: ext2, vfat
查前支持的文件系统:# cat /proc/filesystems
磁盘和文件系统管理:
文件系统管理工具:
创建文件系统的工具:mkfs, mke2fs
检测及修复文件系统的工具:fsck, e2fsck
查看其属性的工具:dumpe2fs, tune2fs
调整文件系统特性:tune2fs
内核级文件系统的组成部分:
文件系统驱动:由内核提供
文件系统管理工具:由用户空间的应用程序提供
ext系列文件系统的管理工具:
mkfs:
常见的2中表现方式:
(1)mkfs.FS_TYPE /dev/DEVICE
FS_TYPE:
ext2 ,ext3 ,ext4 ,xfs ,btrfs ,vfat
(2)mkfs -t FS_TYPE /dev/DEVICE
选项:
-b:指定块大小
-L 'LABEL':设定卷标
ext系列文件系统专用管理工具: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 = mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3
-i #:为数据空间中每多少个字节创建一个inode ;此大小不应该小于block的大小
-N #:为数据空间创建个多少个inode
-I 一个inode记录大小128—4096
-m #:默认5%, 为管理人员预留空间占总空间的百分比
-O FEATURE[,…] :启用指定特性
-O ^FEATURE:关闭某指定特性
[root@CentOS6 boot]# mke2fs -t ext4 -L mydata -b 1024 /dev/sda7 //指明文件系统类型,指明卷标,指明了块大小 mke2fs 1.41.12 (17-May-2010) Filesystem label=mydata OS type: Linux Block size=1024 (log=0) //块大小 Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks ....
e2label命令:卷标的查看和设定
查看:# e2label device
设定:# e2label device LABEL
blkid :块设备属性信息查看
blkid [OPTION]… [DEVICE]
-U UUID:根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
[root@CentOS6 boot]# e2label /dev/sda7 //查看卷标 mydata [root@CentOS6 boot]# e2label /dev/sda7 mytest //修改卷标为mytest [root@CentOS6 boot]# blkid /dev/sda7 //查看设备信息,已经卷标是否被修改 /dev/sda7: LABEL="mytest" UUID="fda5fba0-cb96-4067-892c-377c42150ceb" TYPE="ext4"tune2fs命令:查看或修改ext系列文件系统的某些属性
注意:块大小创建后不可修改
tune2fs [OPTIONS] device
-l:查看指定文件系统超级块信息;super block
修改超级块的内容:
-L 'LABEL':修改卷标
-m #:修正预留给管理员的空间百分比
-j:将ext2无损升级为ext3
-O:文件系统属性启用或禁用, –O ^has_journal
-o:调整文件系统的默认挂载选项,–o ^acl
-U UUID:修改UUID号
[root@CentOS6 boot]# tune2fs -l /dev/sda7 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: mytest //卷标 Last mounted on: <not available> Filesystem UUID: fda5fba0-cb96-4067-892c-377c42150ceb Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr .... //文件特性,最重要的是has_journal特性(表示支持日志功能),使用-O选项可以关闭此特性,则文件系统类型退后到ext2 Filesystem flags: signed_directory_hash Default mount options: (none) ... Inode count: 655872 //inode个数 Block count: 10490412 //块个数 Reserved block count: 524520 //预留给管理员的空间块个数 Free blocks: 10286629 Free inodes: 655861 First block: 1 Block size: 1024 //块大小,为我们指明的1024 Fragment size: 1024 ...
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h] device:查看[超级块信息]所有分组块信息
用于实现文件系统检测的工具:
因进程意外中止或系统崩溃等原因导致当前操作非正常终止时,可能会造成文件损坏(挂载为文件系统标记为“dirty”);此时,应该检测并修复文件系统;建议离线进行
ext系列文件系统的专用工具:
e2fsck:- check a Linux ext2/ext3/ext4 file system
e2fsck [OPTIONS] device
-y:对所有问题自动回答为yes(不建议使用,比如有文件传输了99%,手动传1%就可以了)
-f:即使文件处于clean状态,也要强制进行检测
[root@CentOS6 boot]# e2fsck -f /dev/sda7 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information mytest: 11/655872 files (0.0% non-contiguous), 203783/10490412 blocksfsck:- check and repair a Linux file system
fsck [OPTIONS] device
-t fstype:指明文件系统
-a:无须交互自动修复所有错误
-r:交互式修复
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/40895