磁盘
硬盘采用全密封结构,用以保护精细的盘头机构。从外观上来看,只能看到一个金属盒及裸露在外的
控制电路板及数据线接口、电源接口、跳线等部件。 被密封在净化腔体内的构造主要包括固定面板、电
机和盘头组件等。其中盘头组件是核心部分,主要由浮动磁头组件、磁头驱动定位机构(又称为机械
臂)、盘片和主轴组件组成。 所有的硬盘盘片都装配在一个同心轴上,组成硬盘的数据存储载体。盘片
的双面都能够记录数据,所以每面都设置有读写磁头(最上面一张盘片的上表面和最下面一张盘片的下表
面通常作为保护面使用,不设置读写磁头)。磁盘工作时,主轴电机启动,主轴带动盘片做高速旋转,磁
头驱动定位系统控制读写臂的伸缩,让磁头定位在要读写的数据存储位置,通过读写电路控制磁头的读
写操作,从而完成硬盘的定位和读写。
而磁道就是盘片上用于存储数据的一个个同心圆;由到多个同心圆组的叫柱面;扇区就是划分出来
的一个个存储区域,通常它的大小是512字节。磁盘的分区是按柱面分区的,磁盘中的第一个分区的第一
个磁道的第一个扇区叫作主引导记录MBR,用于寻找操作系统在哪个分区,方便开机时向内存加载操作
系统的数据(这是由引导加载器完成的)。MBR的存储规格:第一区域存储446字节,在boot下的
loader中,引导加载器;第二区域64字节,存放磁盘分区表,每16个字节记录一个分区。这种分区方法
只能使用在磁盘空间在2T一下的磁盘中。
我们都知道,当我们想把一个U盘里的东西全部删除重新写入东西的最快捷的方法就是把这个U盘给格式化了。那么什么是格式化,格式化这个动作具体做了些什么呢?
格式化是指对磁盘或磁盘中的分区进行初始化的一种操作,以便我们家能够按部就班地往磁盘上记录资料。就好比我们有一所大房子要用来存放书籍,我们不会搬来书籍之后往屋里的地上一扔就了事了,而是要事先在里面支起书架,表上类别,把书分门别类地放好。格式化分为低级格式化和高级格式化。
低级格式化又称底层格式化或物理格式化,主要用于对磁盘进行划分柱面、磁道、扇区的操作。
高级格式化又称逻辑格式化,它是指根据用户选定的文件系统(如:ext系列、xfs、swap、NFS等),在磁盘的特定区域写入特定的数据,以达到初始化磁盘或磁盘分区、清除原磁盘或磁盘分区中的所有文件。主要包括对主引导记录中分区表相应区域的重写、根据用户选定的文件系统,在分区中划分出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间,以便用户使用该分区管理文件。
对于Linux系统而言,每个分区都是一个可以独立访问的设备。在Linux磁盘设备文件对磁盘分区的访问标示的命名格式是:/dev/[s|h]d[a-z][1-~]。/dev是设备文件目录;[s|h]是磁盘设备的接口类型;[a-z]是磁盘的编号;[1-~]是磁盘分区的编号,其中1-4是主分区或扩展分区(占一个主分区空间,但指
向的是另一个实际存储的空间(该空间成为逻辑分区)),5-~为逻辑分区编号。
磁盘的接口类型、传输速率及存储格式
接口类型 |
传输速率 |
存储格式 |
IDE:并口 |
133MB/s |
/dev/hd |
SCSI:并口 |
640MB/s |
/dev/sd |
USB:串口 |
480MB/s |
/dev/sd |
SAS:串口 |
6Gbps |
/dev/sd |
设备类型:字符设备(以字符为单位,只能顺序访问的设备:键盘);
块设备(以块为单位,能够进行随机访问的设备:磁盘)
设备文件:关联至一个驱动程序,进而能够与与之对应的硬件设备交互。 设备文件无大小,只有元数据
没有数据。(设备文件是硬件设备的前端的体现)
设备命名具有主设备号和次设备号
主设备号:标示设备类型; 次设备号:同类设备不同块设备分类
磁盘分区(管理)命令:fdisk 使用命令:fdisk -l 设备名 ,可以显示指定设备的详细信息,不加设
备名显示系统上所有设备的信息。
命令:fdisk 设备名 ,可以进入交互式窗口,有很多子命令,这些子命令用于磁盘分区的管理。但
是所有编辑操作都是在内存中完成的,没有直接同步到硬盘上。进入交互式窗口命令:fdisk 设备名
(在此模式下想要删除要用Ctrl+Backspace快捷键)子命令:m 显示帮助信息;n 创建一个新分区;
d 删除分区;w 保存设置信息并退出;q 不保存退出;t 修改分区的system id(id是十六进制数
字);l 列出已知的所有分区类型;p 列出现有的分区信息。
练习题:添加一块10G的硬盘,分3个主分区,每个主分区大小为512M;分4个逻辑分区,每个逻辑分区
的大小为1G。
[root@localhost tmp]# fdisk -l /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux Command (m for help): d Selected partition 1 Command (m for help): w The partition table has been altered!
查看内核是否读取了分区表,可用命令:cat /proc/partations
[root@localhost tmp]# cat /proc/partitions major minor #blocks name 8 16 10485760 sdb 8 17 530113 sdb1 8 18 530145 sdb2 8 19 530145 sdb3 8 20 1 sdb4 8 21 1060258 sdb5 8 22 1060258 sdb6 8 23 1060258 sdb7 8 24 1060258 sdb8 8 0 125829120 sda 8 1 512000 sda1 8 2 125316096 sda2 253 0 52428800 dm-0 253 1 2031616 dm-1 253 2 70852608 dm-2
文件系统:管理存储空间中存储大量文件时实现按名存取的一种机制。
Linux中常见的文件系统类型:ext系列(ext2、ext3、ext4,centOS6默认使用的是ext4);xfs文件格
式(centOS7默认使用的是xfs);交换分区格式swap(将内存中的文件利用硬盘中的部分空间进行挪
移);网络文件格式NFS;集群文件格式gfs2(redhat研发);分布式文件格式mogilefs hdfs。
文件系统管理分两部分组成:文件系统内核模块和文件系统管理工具
文件系统的创建(叫格式化或者文件系统管理)
命令:mkfs -t 文件系统类型 分区名
专门用来格式化ext系列文件系统的工具(命令):mke2fs
格式:mke2fs [选项] 分区名
-t 指定文件系统类型ext2、3、4(centOS6已可自动识别类型)
-b 指定块大小[1024|2048|4096]
-L 卷标名 设定卷标名(类似于Windows中的磁盘名)
-i # 设定数据空间中每#个字节创建一个iNode
-N # 设定元数据区有多少个iNode
-m # 指定为管理员预留空间占总空间的百分比,百分之#的空间
iNode存在于元数据块中,是一种索引条目,存储数据的块地址。每个文件都有一个iNode,当iNode号用完之后就不能再创建文件。
查找分区的卷标名,命令:e2label 分区名
[root@localhost tmp]# e2label /dev/sdb5 jiuren
显示块设备的详细信息,命令:blkid [选项]
不跟选项 显示格式化后的所有设备的详细信息
-L 卷标名 显示使用这个卷标名的设备名
-U UUID 显示使用这个UUID的设备名
[root@localhost tmp]# blkid -L jiuren /dev/sdb5 [root@localhost tmp]# blkid -U 7b948207-8541-4144-809d-30c34a2f7f83 /dev/sdb5
文件系统的超级块信息查看工具:dumpe2fs
格式:dumpe2fs [选项] 分区名
不跟选项,显示所有超级块的所有信息
-h 只显示超级块的名字,不显示块组
[root@localhost tmp]# dumpe2fs /dev/sda1 dumpe2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: /boot Filesystem UUID: aeca7102-2bad-42bc-b4cc-dcac9a627b63 Group 0: (Blocks 1-8192) [ITABLE_ZEROED] Checksum 0x4e50, unused inodes 2015 Primary superblock at 1, Group descriptors at 2-3 Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED] Checksum 0x63a5, unused inodes 2032 Backup superblock at 8193, Group descriptors at 8194-8195 Reserved GDT blocks at 8196-8451
软硬链接文件的存储方式及特性:
文件硬链接:指向同一个iNode的不同的文件路径,指向同一组数据块
文件软连接(符号连接):有自己的iNode,但不指向数据块,而是指向文原件的访问路径(字符串)
硬链接特性:1、不能跨文件系统;2、不能对目录使用(不能对目录硬链接);3、创建硬链接会增加文
件的硬链接数
符号链接(软连接):1、可以跨问价系统;2、可以对目录使用(能对目录进行软连接);3、不会增加
硬链接数;4、删除原文件会损坏符号链接(导致符号链接无法访问)
创建连接文件:ln 格式:ln [选项] 源文件 目标文件
不加选项,默认创建硬链接文件
-s 创建软连接文件
-v 显示详细信息
[root@localhost tmp]# ln -s grub.conf mm [root@localhost tmp]# ls aa boot etc grub.conf jiuren3 mojlj rc.sysinit tmp yum.log bi CentOS-Media.repo functions jiuren mm mylinux testdir usr [root@localhost tmp]# ls -l mm lrwxrwxrwx 1 root mml 9 Apr 19 04:36 mm -> grub.conf [root@localhost tmp]# ls -l grub.conf -rw------- 1 root root 821 Apr 13 18:24 grub.conf [root@localhost tmp]# ln grub.conf bb [root@localhost tmp]# ls aa bi CentOS-Media.repo functions jiuren mm mylinux testdir usr bb boot etc grub.conf jiuren3 mojlj rc.sysinit tmp yum.log [root@localhost tmp]# ls -l grub.conf -rw------- 2 root root 821 Apr 13 18:24 grub.conf [root@localhost tmp]# ln -v grub.conf cc `cc' => `grub.conf'
重新设定ext系列文件系统中的可调参数,命令:tune2fs
格式:tune2fs 选项 分区名
-l 查看指定文件系统(分区)的超级块信息,不显示组名
-L 重新指定卷标名
-m 重新调整管理员预留空间的百分比
-u UUID 指定文件系统的UUID
[root@localhost tmp]# tune2fs -L mml /dev/sdb5 tune2fs 1.41.12 (17-May-2010) [root@localhost tmp]# blkid /dev/sdb5 /dev/sdb5: LABEL="mml" UUID="7b948207-8541-4144-809d-30c34a2f7f83" TYPE="ext2" [root@localhost tmp]# tune2fs -m 10 /dev/sdb5 tune2fs 1.41.12 (17-May-2010) Setting reserved blocks percentage to 10% (53012 blocks)
格式化交换分区,命令:mkswap
格式:mkswap 选项 分区名
-L 卷标名 改变卷标名
-U UUID 改变UUID
[root@localhost tmp]# mkswap -L cc /dev/sdb6 Setting up swapspace version 1, size = 1060252 KiB LABEL=cc, UUID=ce8732b1-c490-4209-a348-1a9be3e7b53c [root@localhost tmp]# blkid /dev/sdb6 /dev/sdb6: LABEL="cc" UUID="ce8732b1-c490-4209-a348-1a9be3e7b53c" TYPE="swap"
命令:free 显示内存的使用情况
其选项:-m 按M为单位
-g 按G为单位
[root@localhost tmp]# free -m total used free shared buffers cached Mem: 988 265 722 0 27 131 -/+ buffers/cache: 106 882 Swap: 1983 0 1983
挂载:将额外的文件系统与根文件系统建立关联关系,使得其作为此额外文件系统的访问入口的过程
(一个目录下只能有一个挂载点,若该目录下原有文件,挂载后会覆盖、隐藏)
挂载命令:mount
格式:mount 选项 设备 挂载点(目录)
-t 指定文件系统类型(centOS6已能识别文件的类型)
-w 读写挂载
-r 只读挂载
-a 挂载配置文件/etc/fstab中的所有条目
-n 挂载时不更新/etc/mtab
-B或--bind 源目录 目标目录 把目标目录关联到源目录,实际的操作是源目录
-o 选项参数(挂载属性)
选项“-o”的参数:async 使用异步模式,数据的修改先于内存中完成,然后根据某种策略定期同
步至磁盘,实现持久存储,减轻IO压力
sync 使用同步模式,实时保存数据,但是IO压力大
auto 支持mount -a命令实现自动挂载(默认)
noauto 不支持mount -a命令实现自动挂载
noexec 不允许此设备的任何二进制程序运行(默认)
exec 允许此设备的二进制程序运行
user 允许普通用户挂载设备
nouser 不允许普通用户挂载设备
一般都走的是默认,若想指定需要全部指定,要指定全面
取消挂载命令:umount 格式:umount [设备(设备名、卷名、UUID)|挂载点]
查看已挂载上的条目,命令:cat /etc/mtab;需要挂载的设备都在/etc/fstab文件中,主要用于系统启动时挂载设备;/proc/mounts内核中识别的所有挂载条目(最权威)。
挂载之后查看不到aa目录下的文件bb,
取消挂载之后又能看到
[root@localhost tmp]# mount -w /dev/sdb5 aa [root@localhost tmp]# cat /etc/mtab |tail -1 /dev/sdb5 /tmp/aa ext2 rw 0 0 [root@localhost tmp]# umount aa [root@localhost tmp]# mount -n /dev/sdb5 aa [root@localhost tmp]# cat /etc/mtab |tail -1 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
关联目录之后实际操作的是源目录
[root@localhost tmp]# mount -B bb aa [root@localhost tmp]# touch aa/bb [root@localhost tmp]# ls bb bb
系统启动时挂载的配置文件:/etc/fstab
devpts /dev/pts devpts gid=5,mode=620 0 0
设备 挂载点 文件系统类型 挂载选项 转存频率 自检次序(0是不自检)
命令:fuser 查看有哪些进程正在使用挂载点(只能使用挂载点)
格式:fuser -v 挂载点 查看有哪些进程正在使用挂载点
-km 挂载点 强行终止正在使用此挂载点的进程终端
[root@localhost tmp]# fuser -v aa USER PID ACCESS COMMAND aa: root 1747 ..c.. bash
注意:查看进程在占用就必须到目录下,占用之后才可以查看
[root@localhost tmp]# fuser -km aa aa: 1747c
之后就可以进行卸载挂点
命令:du 查看某目录占用空间的情况
格式:du 选项 目录 (不跟选项列出目录下所有文件)
-s 只列出目录的大小
-h 换单位,换成人类看的懂的大小
[root@localhost tmp]# du -h aa 16K aa/lost+found 18K aa [root@localhost tmp]# du -sh aa 18K aa
命令:df 查看文件系统空间(分区)的占用情况(因为是占用情况,所以该文件系统是已挂载的)
格式:df [选项] [分区名] 不跟显示出所有
-h 换单位,换成人类看的懂的大小
-i 显示分区iNode的使用率,而不是分区空间的使用率
[root@localhost tmp]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root 51475068 1874016 46979612 4% / tmpfs 506144 0 506144 0% /dev/shm /dev/sda1 487652 28383 433669 7% /boot /dev/mapper/VolGroup-lv_home 69608928 53140 66013160 1% /home /dev/sdb5 1043460 8212 929224 1% /tmp/aa [root@localhost tmp]# df -h /dev/sdb5 Filesystem Size Used Avail Use% Mounted on /dev/sdb5 1020M 8.1M 908M 1% /tmp/aa [root@localhost tmp]# df -i /dev/sdb5 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb5 66528 11 66517 1% /tmp/aa
命令:fsck 文件系统的修复工具
格式:fsck [选项] [文件系统] 什么都不跟修复的是“/”
-t 修复时指定文件系统类型
-a 自动修复错误
-r 交互式修复错误
命令:e2fsck 专用于ext系列文件系统的修复工具
格式:e2fsck 选项 文件系统(分区)
-y 所有提示默认为yes
-f 强制进行检测
挂载的文件系统不能够修复和检测。
[root@localhost tmp]# e2fsck -f /dev/sdb5 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 mml: 11/66528 files (0.0% non-contiguous), 12504/530128 blocks
bash编程:位置参数:$0:引用命令本身;$1:引用第一个参数;$2:引用第二参数,。。。
[root@localhost tmp]# vim file [root@localhost tmp]# bash file jiuren file jiuren [root@localhost tmp]# cat file #!/bin/bash echo $0 echo $1
特殊变量:$?:上一条命令的执行状态
$#: 位置参数变量的个数(不包含自身的)
$*或$@ 列出所有位置参数变量(不包含自身的)
[root@localhost tmp]# vim file [root@localhost tmp]# bash file jiuren file jiuren 1 [root@localhost tmp]# cat file #!/bin/bash echo $0 echo $1 echo $# [root@localhost tmp]# bash file jiuren file jiuren jiuren [root@localhost tmp]# cat file #!/bin/bash echo $0 echo $1 echo $*
练习:创建一个用户,用用户名通过传递参数获得
[root@localhost tmp]# vim user [root@localhost tmp]# bash user mml [root@localhost tmp]# id mml uid=505(mml) gid=65533(mml) groups=65533(mml) [root@localhost tmp]# cat user #!/bin/bash useradd $0
bash计算:运算表达式:$[ $变量(运算符)$变量 ] (注意中括号中间的空格)
[root@localhost tmp]# aa=3 [root@localhost tmp]# bb=4 [root@localhost tmp]# echo "$aa+$bb" 3+4 [root@localhost tmp]# echo "$[ $aa+$bb ]" 7
变量的引用:通过命令引用(把命令整体当做变量引用) echo `wc ` (反引号,数字1前面的符号)
[root@localhost tmp]# wc -l /etc/passwd | cut -d" " -f 1 35 [root@localhost tmp]# echo `wc -l /etc/passwd | cut -d" " -f 1` 35 [root@localhost tmp]# wc -l /etc/passwd 35 /etc/passwd
压缩和解压缩:(解压之后原文件没了)
压缩工具 | 解压缩工具 |
后缀名 |
gzip |
gunzip |
.gz |
bzip2 |
bunzip |
.bz2 |
zip |
unzip |
.zip |
使用格式:gzip [选项] 文件名
-# 指定压缩比(范围:1-9) 默认压缩比为:6 数字越大压缩越狠
-d 解压缩,引用gunzip
使用格式:bzip2 选项 文件名
-# 指定压缩比(范围:1-9) 默认压缩比为:6 数字越大压缩越狠
-d 解压缩,引用bunzip
-k 压缩后保留原文件
使用格式:zip 目标文件 原文件 (目标文件需要自己输入)(可以自己压缩归档)
解压缩 :unzip 压缩文件 (主要用于Windows)
归档工具:tar (归档只是把目录整合成一个文件,大小没有变化,之后可以压缩了)
格式:tar [选项] -f 归档后文件(以.tar结尾) 原目录
-c 创建归档
-x 展开归档
-C 目录 指定归档文件存放目录,不指定默认为当前
-t 无需展开归档文件即可查看归档文件的文件列表
[root@localhost tmp]# ls aa bi cc etc functions grub.conf jiuren3 mojlj rc.sysinit tmp usr bb boot CentOS-Media.repo file gd.tar jiuren mm mylinux testdir user [root@localhost tmp]# gzip gd.tar [root@localhost tmp]# ls aa bi cc etc functions grub.conf jiuren3 mojlj rc.sysinit tmp usr bb boot CentOS-Media.repo file gd.tar.gz jiuren mm mylinux testdir user
tar的归档压缩机制
-z 调用gzip .tar.gz
-j 调用bzip2 .tar.bz2
创建归档文件并压缩 tar -czf 目标文件名 原文件名
解压并展开归档 tar -xzf 文件名
[root@localhost tmp]# ls etc [root@localhost tmp]# tar -czf etc.tar.gz /etc tar: Removing leading `/' from member names [root@localhost tmp]# ls etc etc.tar.gz