创建分区相关命令:
命令格式:fdisk +设备类型 最多只能创建15个分区
1 2 | #fdisk -l ------//可列出所有磁盘的相关分区信息 #fdisk -l /dev/sda----//查看sda磁盘的相关分区信息 |
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuATLCJDVzATMzIzLcdjM3AzMx8CXn1WasxWYvw1ckF2bsBXdvwVbvNmLuN2cvRnblNmL3d3dvw1LcpDc0RHaiojIsJye.png)
图1
1 2 3 4 5 6 | Linux: Sda[1-4] S(接口类型)da1:第一个主分区 Sda2:第二个主分区 Sda3:第三个主分区 Sda4:第四个主分区 |
Sda5:第一个逻辑分区,扩展分区一定是从5开始的,5是逻辑分区开始的标志。
命令格式:fdisk -l /dev/[sh]d[0-9]
图2
1 2 3 4 5 | d delete a partition——————//删除一个分区 n add a new partition—————//新建一个分区 p print the partition table————//显示当前分区信息 w write table to disk and exit————//保存退出 q quit without saving changes————//不保存退出 |
System ID————说明这是一个什么样的分区类型,与操作系统相关连。
打算把分区——格式化成什么样的文件系统,就一定要让它的分区ID号跟文件系统类型相匹配。
l list known partition types——各分区类型多对应的system ID————也就是文件系统类型。
83 ———— Linux
82 ———— Linux swap / So
8e ———— Linux LVM 逻辑卷
85 ———— Linux extended
fd ———— Linux raid auto软RAID Software Raid
1 2 | t change a partition's system id//修改某指定分区的system ID a toggle a bootable flag//设置可启动标记(设定此分区可以启动操作系统的分 |
区)——————一般很少用到,了解即可。
图3
确认无误保存退出
图4
再创建两个6G的分区:
图5
如图所示:主分区编号只有一个了,要再创建任意两个分区就只能,先建立扩展分区,在扩展分区里面新建逻辑分区。
所以接下来一定是先创建扩展分区
5一定是4下的5,所有的逻辑分区一定是在扩展分区之下创建的,这点很重要哦!这里的开始以及结束柱面可使用默认的,一定要把剩下的空间一并给扩展分区,因为,如果不给扩展分区的话就永远也用不上了。这点对新手尤为重要哦,呵呵!
图6
图7
如果中间写错了,想删除的话可按住ctrl键,再按tab即可轻松删除出错的命令了!
扩展分区是不能直接使用的,因此,必须要再new
一块硬盘只能有一个扩展分区哦!这点请大家一定要记得哦!
图8
再新增6G逻辑分区
图9
以上这两个分区整个都是在扩展分区内部创建的哦!看清楚了吗?
所以说,逻辑分区一定是在扩展分区内部创建的!
如果某个分区不想要了,可以使用dl来删除,在本案例中,可以直接删除4号分区吗?
图10
貌似,5、6号分区也都随着扩展分区的删除消失了!
所以,此操作一定要谨慎哦!
此时唯一的解救办法就是q-------不保存退出就可以了哦,呵呵~
因为我们的内核还没有做真正的分区格式化,也就是说在你没w之前的所有操作都是视为无效的哦!!!
所以,有时候一念之间就是这样的啦!!!!!
图11
分区创建好了以后就可以使用fdisk -l 来查看系统中所有的分区信息了
图12
fdisk能识别出来这么多分区,内核能识别吗?因为与硬件打交道的是内核啊 !!!!
如果内核识别不了的话说明是没有这个硬件设备的哦!
查看内核识别的分区信息:
1 | #cat /proc/partitons |
图13
软件能识别,内核竟然不能识别啊?该怎么办呢?
任何程序修改硬件必须要通过内核,必须要同步给正在运行的内核,让内核识别才行啊!问题是该怎样同步呢?
注:RHEL5.0和RHEL6.0同步的相关命令也是不一样的。
查看试验测试机版本相关信息:
1 2 3 4 | #cat /etc/issue #lsb_release -a #cat /proc/version #uname -a |
图13-1
RHEL5 让 内核重新读取硬盘分区表:
partprobe [Device]——重新探测
可指派探测某个指定的设备,不指定的话默认是探测所有的
图14
读取失败,重启之前是无效的。
没有被读取到
RHEl6使用另外一个命令
RHEL6让内核重新读取硬盘分区表:
1 2 3 4 5 6 | partx -a [partition] device #man partx -a add specified partitions or read disk and add all partitions.读取所有的 -l list partitions. Note that the all numbers are in 512-byte sectors. |
1 | #cat /proc/partitions 查看内核识别分区表情况 |
---只有此命令显示的有各个分区信息,内核才会分区格式化,否则都是无效分区哦!千万记得哦!!!
图18
手动一个一个添加似乎能被加上,但是仍然会报错!不知道是不是内核方面的问题。
OK,内核都识别了!
图19
OK,分区都已经创建好了,那么,如何实现,往分区里面存放文件,如何使用这个分区呢?接下来我们还需要进行哪些操作呢?
格式化分区,用于创建文件系统
没有文件系统就没有办法在里面创建文件呢!为什么呢?因为它是裸设备啊!呵呵1
Linux 创建分区命令:
两步实现:指定分区类型、指定分区对象
注:扩展分区是不能格式化的,一定记得哦!
将/dev/sda3格式化分区类型为ext4
图20
显示/dev/sda3分区的相关属性信息
图21
UUID———表示全局唯一号,是一列随机字符串将来硬盘数量很多的情况下,可以使用UUID来进行管理硬盘分区,所以每一个分区都给创建了一个全局唯一标识符
blkid:显示设备的UUID以及文件系统类型
注:扩展分区不能格式化
1 2 3 4 5 6 | #mkfs -t ext4 /dev/sda3=mke2fa -t ext4 /dev/sda3 #mkfs -t ext3=mkfs.ext3=mk2efs -j=mke2fs -t ext3 #mkfs -t ext4=mkfs.ext4 #mkfs -t ext2=mkfs.ext2=mke2fs #mke2fs -t {ext2|ext3|ext4} #blid /dev/sda3 blkid device显示设备的UUID及文件系统类型。 |
Uuid用来标识全局唯一ID号,是一连串随机数字,一台超级计算机上有成千上万个挂载分区,怎样去识别这上万个分区呢?使用sda、sdb很可能会冲突的。
所以每一个分区都创建了一个全局唯一随机标识ID。重复的可能性极小,类似哈雷彗星撞地球,呵呵。硬盘无论放到哪个主机上,重复的可能性几乎不存在。
#man mkfs
-t fstype
#mke2fs -t ext4 /dev/sda3
mke2fs - create an ext2/ext3/ext4 filesystem
mke2fs -b {1024字节、2048字节、4096字节默认}
图22
配置文件:vim /etc/mke2fs.conf用于设定默认特性及各文件系统的特有默认特性
1 | #mke2fs -t ext4 -b 2048 /dev/sda3 |
——————b指定块大小,默认为1kb,2kb.3kb
块大小指的是什么呢?
块大小取决于CPU对内存叶大小的支持,一般来说,X86默认页框是4K;默认是4096
查看磁盘分区相关属性信息
1 2 3 | #tune2fs - l devcie |grep “Block size” #tune2fs -l /dev/sda3 Block size: 4096 # tune2fs -l /dev/sda3 | grep "Block size" |
图23
注:a)一个block只能属于一个文件
b)块太大的话会导致磁盘空间的浪费
c)块大小的划分取决于将来要存储的文件
d)要更改块大小只能格式化磁盘分区
-L——〉 new-volume-label设定卷标
Set the volume label for the filesystem to new-vol-
ume-label. The maximum length of the volume label
is 16 bytes.
1 2 | #mke2fs -t ext3 -b 1024 -L mytest1/dev/sda3 注:块越小格式化的时间越长 |
要显示块大小
1 | #Tune2fs -l device | grep “Block size” |
图24
-L 指定卷标,设定卷标
使用卷标或者使用UUID是我们避免交叉引用的好方法之一!
卷标有可能也会重复,干脆使用UUID吧!
1 | #mke2fs -b 1024 -L mytest1 /dev/sda3 |
注:块越小所格式化的时间就越长!
图25
1 | #blkid /dev/sda3 还可以显示LABEL信息 |
图26
一块硬盘被填满了的话会发生什么情况?
# tune2fs -l /dev/sda3 | grep "Reserved" 查看磁盘默认预留空间
图27
1 | # echo $[577085/ 11541700] |
[[email protected] ~]# bc
577085/ 11541700
scale=2设定精度
577085/ 11541700*/
.05=5%保留的是整个磁盘空间的5%。 200G预留了5%就是10G
[ -m reserved-blocks-percentage ]预留给管理使用的块所占据总体块的比例。
1 2 | # mke2fs -t ext4 -b 2048 -m 3 -L mytest1 /dev/sda3 # tune2fs -l /dev/sda3 |grep "Reserverd" |
图28
图29
图30
随着块大小的改变,预留空间较之前有较大的变化。
mke2fs和tune2fs区别相当于useradd 和usermod,慢慢体会下是不是这样的?
修改分区相关属性
重新设定卷标:-L
1 2 3 | #blkid /dev/sda3 #tune2fs -L test2 /dev/sda3 #blkid /dev/sda3 |
图31
调整块大小:-m
1 2 | #tune2fs -m 5 /dev/sda3 #tune2fs -l /dev/sda3 |grep “Reserved” |
图32
1 2 | #tune2fs -m1 /dev/sda3 #tune2fs -l /dev/sda3 |grep “Reserved” |
图33
1 2 3 4 5 | -o:设定默认挂载选项 -O:设定文件系统默认特性 -r调整预留给管理使用的块个数 -E设定文件系统的扩展属性 -l显示文件系统超级块信息 |
e2label 显示设定卷标
1 2 3 | #e2label /dev/sda3 #e2label /dev/sda3 test3 #e2label /devsda3 |
下篇
挂载
概念:挂载其实就是关联关系的过程。
fileSystem:一个软件,在内核中实现的
格式:mount -t filesystem options device mount-point
mount选项:
1 2 3 4 5 6 7 8 9 10 | 1)-o:用于指定挂载选项 2)ro:只读挂载 3)-n挂载文件系统时不更新/etc/mtab文件 4)rw:读写,默认即为读写 5)noatime:关闭更新访问时间的功能 6)auto:是否能由“mout -a”挂载 7)-r相当于”-o ro”只读挂载 8)defaults:相当于rw,suid,dev,exec,nouser,auto,async,and realatime 9)sync同步写入,性能差,CPU到内存10NS,CPU到硬盘100NS 10)async异步写入,大部分使用的是异步,性能好 |
sync在内存中完成保存,文件被编辑先被读入内存,文件编辑都是在内存中操作的。
mount [-t filetype]系统会调用blkid自动识别文件类型,此项可省略 挂载设备 挂载点
1)新建空白目录
1 2 3 4 5 6 | #mkdir /test_m1 #cp /etc/inittab /test_m1 #cp /etc/fstab /test_m1 #cp /etc/rc.d/rc.sysinit /test_m1 #cp /etc/rc.d/init.d/functions /test_m1 #ls /test_m1 |
2)挂载,建立关联关系
1 2 | # mount -t ext4 /dev/sda3 /test_m1/ # ls /test_m1/ |
原来的文件不见了,思考下为什呢?
3)反挂载,也就是卸载了
卸载的时候只需要指定一项目即可,要么是挂载点、要么是分区名称
4)使用卷标挂载
1 2 | # e2label /dev/sda3 # mount LABEL="test2" /test_m1/ |
6使用卷标卸载 umount /test_m1/
LABEL=”卷标”
7)使用UUID挂载
UUID=“UUID”
1 2 | # blkid /dev/sda3 # mount UUID="a54233f0-51c0-4f30-9a0f-eea4c0999f49" /test_m1/ |
1 | #mount ——————>显示当前系统挂载的所有设备 |
/etc/fstab——————〉系统开机会自动挂载的文件系统
注:fdisk - l RHEL5上面不显示逻辑卷
fdisk - l RHEL 6上面是显示所有的磁盘分区的
fdisk -l /dev/[hs]d[a-z]
1 2 | mount://将某文件系统关联至根文件系统上来 mount://显示所有挂在的设备 |
1 2 | # cat /etc/mtab追踪当前系统上所有已挂载文件系统的文件,随时会更新。 # umount /dev/sda3 |
1 | # cat /etc/mtab |
1 2 | #//fuser用于显示正在访问某个文件的进程 # fuser /media/ -km强制终止正在访问此挂载点的进程,谨慎使用哦! |
定义内核中的磁盘清写策略,由内核自己维护。
1 2 3 4 5 6 7 8 9 10 | #remount:重新挂载 #mount #mount -o remount,ro /dev/sda3只要此前挂在过就无需重新指定挂载点 loop:本地回环设备,其实不是个设备,是个文件 mount -o remount,other_options device mount -o loop,other_options device mount point用于挂载回环设备 -n:挂载文件系统时不更新cat /etc/mtab文件 -r:相当于“-o,ro”只读挂载 fuser [mount_point]//查看正在访问挂载点的进程 fuser -km[mount_point]//强行杀死正在访问此挂载点的进程 |
1 | #/etc/fstab//使用空白字符分割的六个字段 |
1 2 3 4 5 6 7 8 9 10 11 | 1)挂载的设备: 设备文件、卷标、UUID(服务器上存储设备较多时可使用) 2)挂载点(一定要是空目录) 3)文件系统类型:ext2、ext3、ext4。。。。。 4)挂载选项:defaults表示使用默认选项,多个选项之间逗号分隔; 转储频率:也备份频率(就是多长时间做一次备份) 0:从不备份,默认此选项即可 1:每日备份 2、每隔一天备份 5)自检次序-做文件系统检测(文件系统不一致的情况下) 6)定义自检次序: |
ext3日志文件系统
0:不检测
1、:第一个检测:一般只有根文件系统被第一个检测,一般来讲只能是根为1
1 2 3 4 | 2-9逐个检测 #vim + //直接打开文件并定位至最后一行 #vim + /etc/fstab #按小写字母o,在当前光标所在行下行新建一行并转换为输入模式 |
1 2 | a)上面的操作只能保证下次开机启动时自动挂载哦! b)下面的操作是立即挂载到当前相关联的目录上,是随时都可以使用的啦! |
1 | #mount -a //挂载/etc/fstab所有支持auto挂载选择的文件系统 |
Linux 的交换分区:SWAP
1)创建交换分区
1 2 3 | mkfs -t [fstype] partition 1、文件系统必须被内核支持才能使用,即内核中有相应的内核模块或者已经编译进内核; 2、要有相应的文件系统创建工具,mkfs.fstype,于内核模块一一对应 |
启用交换分区
1 2 3 | #mkswap device//启用交换分区 #swapon device //启用指定交换分区 #swapoff -a //启用所有交换分区 |
禁用交换分区
1 2 3 | #swapoff device #swapopp -a #开机启动交换分区,可写入到/etc/fstab |
挂载时注意以下两点即可
1 2 | 1)挂载点填写swap 2)文件系统类型填写swap |
将分区信息写入内核
建立交换分区
设置开机自动挂载
完!