Linux学习笔记(三):磁盘和文件系统管理

网络知识 2023-02-09 13:14www.1681989.comseo网站推广

管理磁盘和文件系统

介绍了基本的文件和目录管理之后,接下来就是磁盘和文件系统的管理。如何分区磁盘和创建文件系统呢?

添加磁盘并进行分区、创建并挂载文件系统

1、确认系统中的磁盘命令——fdisk

fdisk  -l  [磁盘设备]


复制代码

代码如下:

[root@localhost ~]# fdisk -l ==>查看目前系统内的所有分区 (这里显示的结果与在交互模式下P命令是相同的,后面讲)</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes ==>磁盘的文件名与容量
heads, 63 sectors/track, 2610 cylders ==>磁头、扇区与柱面大小
Units = cylders of 16065 512 = 8225280 bytes ==>每个柱面的大小</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux
/dev/hda3 1289 1925 5116702+ 83 Lux
/dev/hda4 1926 2610 5502262+ 5 Extended
/dev/hda5 1926 1989 514048+ 82 Lux swap / Solaris

上述各字段的含义

Device分区的设备文件名称    Boot:是否是引导分区,即开机区,若是,则用“”标识

Start 开始柱面,即该分区在硬盘中的起始位置    End 结束柱面,即该分区在硬盘中的结束位置

Blocks分区的大小,以Blocks(块)为单位,默认的块大小为1024字节,即1KB

Id分区类型的ID标记号,对于EXT3分区为83,LVM分区为8e      System分区类型,即磁盘分区内的系统

2、规划硬盘中的分区——fdisk

fdisk [磁盘设备]

使用此命令可进入交互操纵,您可以在下面的交互操纵里面胡作非为,切记离开时必须按q命令,不能按w


复制代码

代码如下:

#找出系统中所在根目录所在磁盘,并查阅该硬盘内的相关信息
[root@localhost ~]# df / <==重点找出磁盘文件名而已
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/hda2 9920624 2968604 6439952 32% /
[root@localhost ~]# fdisk /dev/hda ==>进入交互操纵模式,注意这里不要写具体的数字</p> <p>The number of cylders for this disk is set to 2610.
There is nothg wrong with that, but this is larger than 1024,
and could certa setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) bootg and partitiong software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)</p> <p>Command (m for help): m <==等待输入,m是命令菜单
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos patibility flag
d delete a partition ==>删除一个分区
l list known partition types ==>创建逻辑分区
m prt this menu
n add a new partition ==>增加一个分区
o create a new empty DOS partition table
p prt the partition table ==>在屏幕上显示分区表
q quit without savg changes ==>不存储,直接离开fdisk程序
s create a new empty Sun disklabel
t change a partition's system id 变更分区类型
u change display/entry units
v verify the partition table
w write table to disk and exit ==>将刚才的操作写入分区表,慎重操作
x extra functionality (experts only)

常见操作有创建主分区、创建扩展分区(将硬盘的所有剩余空间作为扩展分区)、创建逻辑分区、改变分区的系统代码、保存分区表信息、用partprobe探测硬盘分区变化

下面举出几例做测试,离开时不保存


复制代码代码如下:
Command (m for help): p ==>查看磁盘分区表,和终端命令模式下的fdisk -l 作用相同</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylders
Units = cylders of 16065 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux
/dev/hda3 1289 1925 5116702+ 83 Lux
/dev/hda4 1926 2610 5502262+ 5 Extended
/dev/hda5 1926 1989 514048+ 82 Lux swap / Solaris</p> <p>Command (m for help): d
Partition number (1-5): 4 ==>删除第4个分区</p> <p>Command (m for help): d ==>删除第3个分区
Partition number (1-4): 3</p> <p>Command (m for help): p ==>显示时观察下面只显示了前两个分区,第5个没显示</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylders
Units = cylders of 16065 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux</p> <p>Command (m for help): n ==>创建一个分区
Command action
e extended
p primary partition (1-4)
p ==>选择创建的分区类型为主分区
Partition number (1-4): 4 ==>选择4号做主分区
First cylder (1289-2610, default 1289):
Usg default value 1289 ==>起始柱面若直接按enter键就是使用默认值
Last cylder or +size or +sizeM or +sizeK (1289-2610, default 2610): +512M</p> <p>Command (m for help): p ==>查看分区表,发现多了一个刚从建立的分区4</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylders
Units = cylders of 16065 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux
/dev/hda4 1289 1351 506047+ 83 Lux</p> <p>Command (m for help): n ==>再建一个分区
Command action
e extended
p primary partition (1-4)
e ==>建立扩展分区
Selected partition 3 ==>这个是系统主动选择的分区
First cylder (1352-2610, default 1352):
Usg default value 1352
Last cylder or +size or +sizeM or +sizeK (1352-2610, default 2610):
Usg default value 2610</p> <p>Command (m for help): p</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylders
Units = cylders of 16065 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux
/dev/hda3 1352 2610 10112917+ 5 Extended ==>看,刚新建的扩展分区
/dev/hda4 1289 1351 506047+ 83 Lux</p> <p>Partition table entries are not disk order</p> <p>Command (m for help): n ==>再多建几个分区玩玩,反正后面不保存就行了,,呵呵
First cylder (1352-2610, default 1352):
Usg default value 1352
Last cylder or +size or +sizeM or +sizeK (1352-2610, default 2610): +2084
Value out of range.
Last cylder or +size or +sizeM or +sizeK (1352-2610, default 2610): +2084M</p> <p>Command (m for help): n ==>有没有发现,建立2个分区的时候根本没有询问我们要建立是主分区还是扩展分区,为啥?因为分区已经超过4了,您别无选择,只能是扩展分区了。。。
First cylder (1606-2610, default 1606):
Usg default value 1606
Last cylder or +size or +sizeM or +sizeK (1606-2610, default 2610):
Usg default value 2610</p> <p>Command (m for help): p</p> <p>Disk /dev/hda: 21.4 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylders
Units = cylders of 16065 512 = 8225280 bytes</p> <p> Device Boot Start End Blocks Id System
/dev/hda1 1 13 104391 83 Lux
/dev/hda2 14 1288 10241437+ 83 Lux
/dev/hda3 1352 2610 10112917+ 5 Extended
/dev/hda4 1289 1351 506047+ 83 Lux
/dev/hda5 1352 1605 2040223+ 83 Lux ==>这是后面又新建的2个分区
/dev/hda6 1606 2610 8072631 83 Lux</p> <p>Partition table entries are not disk order</p> <p>Command (m for help): q ==>这里一定要按q啊,因为我刚才仅仅是演示操作,还破坏性的删除了2个分区,你要是真要分区,那就要按w保存了。</p> <p>[root@localhost ~]#

磁盘分好区后,要更新下内核,否则您使用fdisk -l 可能看不到分区后的变化,只有重启才可以。使用partprobe强制让内核重新找一次分区表就行了。


复制代码代码如下:
[root@localhost ~]# partprobe [/dev/hda ] <==强制让内核重新找一次分区表,则可以立刻看出分区的变化

 注意普通用户没有权限进行硬盘分区,只有root用户可以,但最好是在单用户模式下比较安全,,在进行分区的时候,若该硬盘某个分区正在使用当中,则很有可能系统内核会无法加载硬盘的分区表,解决的方法就是将该使用中的分区给卸载,然后再重新分区一次,重新写入分区表。

3、在分区中创建文件系统——mkfs,mkswap

(1)、mkfs

用途make filesystem,创建文件系统,即格式化

格式mkfs  -t  文件系统类型   分区设备  (-t选项表示可以接受的文件系统格式,如ext3,ext2,vfat等,通常情况下不需要加次选项,因为系统可自动判断使用的是什么文件系统)

上述由于设备/dev/hda3已经挂载了,所我无法再挂载,但可以卸载后再挂载,不做演示。

(2)、mkswap

用途make swap ,创建文件系统交换系统

格式mkswap   分区设备

1)在Lux系统中,SWAP分区的作用类似于Wdows系统中“虚拟内存”,可以在一定程度上缓解物理内存不足的情况
2)如果系统没有SWAP交换分区,或者现有交换分区的容量不够用,可以通过mkswap命令创建交换文件系统以增加虚拟内存
3)交换分区空间的启用、停用需要使用swapon、swapoff命令,free命令可以查看物理内存、交换空间的使用情况
4)“swapon -s”命令也可查看交换分区的使用情况


复制代码代码如下:
[root@localhost ~]# mkswap /dev/hda5 ==>格式化交换分区
Settg up swapspace version 1, size = 526381 kB
[root@localhost ~]# swapon /dev/hda5 ==>启用交换分区
[root@localhost ~]# free | grep -i swap ==>查看交换空间
Swap: 514040 0 514040
[root@localhost ~]# swapoff /dev/hda5 ==>停用交换空间
[root@localhost ~]# free | grep -i swap
Swap: 0 0 0
[root@localhost ~]#

将新硬盘分好区以后,还需要对分区进行格式化(即创建文件系统),并挂载到Lux系统中的指定目录下,然后才能用于存储文件、目录等数据。并且挂载点一定是目录,该目录为进入文件系统的入口。,并不是您有任何文件都能使用,必须要挂载到某个目录树的某个目录后,才能使用文件系统。

4、挂载、卸载文件系统——mount,umount

(1)mount

  用途挂载文件系统、ISO镜像到指定文件夹

  格式  mount  [ -t 类型 ]  存储设备  挂载点目录 (”-t 类型“的选项通常可以省略,大多数Lux系统能够自动识别对应的文件系统类型)

                mount  -o loop  ISO镜像文件  挂载点目录

(2)umount

    用途卸载已挂载的文件系统
   格式   umount  存储设备位置
              umount  挂载点目录

(3)查看已挂载分区的使用情况(df -hT) 


复制代码代码如下:
[root@localhost ~]# df -hT ==>查看现有已挂在分区使用情况
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/hda2 ext3 9.5G 2.9G 6.2G 32% /
/dev/hda3 ext3 4.8G 195M 4.3G 5% /home
/dev/hda1 ext3 99M 11M 83M 12% /boot
tmpfs tmpfs 506M 0 506M 0% /dev/shm
[root@localhost ~]# mount /dev/hda3 /home/jzhou ==>将设备/dev/hda3挂载到目录/home/jzhou下
[root@localhost ~]# df -hT ==>查看挂载情况
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/hda2 ext3 9.5G 2.9G 6.2G 32% /
/dev/hda3 ext3 4.8G 195M 4.3G 5% /home
/dev/hda1 ext3 99M 11M 83M 12% /boot
tmpfs tmpfs 506M 0 506M 0% /dev/shm
/dev/hda3 ext3 4.8G 195M 4.3G 5% /home/jzhou ==>看,这里多了一个挂载点
[root@localhost ~]# umount /dev/hda3 ==>卸载刚才的挂载
[root@localhost ~]# df -hT ==>查看没有了,已成功卸载
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/hda2 ext3 9.5G 2.9G 6.2G 32% /
/dev/hda3 ext3 4.8G 195M 4.3G 5% /home
/dev/hda1 ext3 99M 11M 83M 12% /boot
tmpfs tmpfs 506M 0 506M 0% /dev/shm
[root@localhost ~]#

光驱和镜像的挂载只是略有不同,语法其实是一样的,光盘设备一般是/dev/cdrom或者/dev/hdc,镜像嘛,很明显是iso格式的压缩包,挂载镜像时要加 -o loop选项,具体用法网上很多。

5、设置文件系统自动挂载——修改配置文件

系统中的“/etc/fstab”文件可以视为mount命令的配置文件,它包含了需要开机后自动挂载的文件系统目录。

查看一下这个文件的内容如上,其中各个字段的含义如下(前三个字段很重要)

第一个字段设备位置

第二个字段挂载点目录

第三个字段文件系统类型

第四个字段挂载参数,即mount命令“-o”选项后面可使用的参数

第五个字段表示文件系统是否需要dump备份(dump是一个备份工具),一般设为1时表示需要,设为0时将被dump所忽略

第六字段该数字用于决定在系统启动时进行磁盘检查的顺序,0不进行检查,1优先,2。对于根分区应设为1,其它分区设为2

设置自动挂载示例即每次重新开机后,能自动完成挂载。

进入vim 编辑内容,将设备proc的挂载点由/proc改为/home/jzhou,并保存退出

则启动时,会自动挂载到相应目录,上述是演示,之后我又改回来了。

说明

(1)在/etc/fstab文件中正确设置了相应分区的自动挂载记录以后,手动挂载、卸载该分区时,仅需指定设备名、挂载点中的任意一个作为参数即可,例如,执行“mount /dev/sdb1”或者“umount /mailbox”都可以完成卸载
(2)mount命令不带任何选项、参数时,可以显示当前系统中已经挂载的文件系统信息
  

 LVM简单介绍

Logical Volume Manager,逻辑卷管理
屏蔽了底层磁盘布局,便于动态调整磁盘容量
(需要注意p /boot分区用于存放引导文件,不能应用LVM机制)
 
1、LVM机制的基本概念
  
(1)PV(Physical Volume,物理卷)
 整个硬盘,或使用fdisk等工具建立的普通分区
 包括许多默认4MB大小的PE(Physical Extent,基本单元)
(2)VG(Volume Group,卷组)
一个或多个物理卷组合而成的整体
(3)LV(Logical Volume,逻辑卷)
从卷组中分割出的一块空间,用于建立文件系统
 
它们的逻辑关系如下

我想您已经知道了为什么要存在这个LVM机制了,同大多数虚拟化的东西作用相似,最核心的还是PV,即真实的物理卷,将,多个物理卷组成一个卷组,之后是对这些卷组划分卷,这时与PV完全无关了,这能很好的利用容量和空间,而且当有新的物理卷加入时,只需将其加入逻辑卷就行了。这个机制很像网络里面划分VLAN呢。
 
LVM的管理命令主要有以下

功能

物理卷管理

卷组管理

逻辑卷管理

Scan       扫描

pvscan

vgscan

lvscan

Create    建立

pvcreate

vgcreate

lvcreate

Display   显示

pvdisplay

vgdisplay

lvdisplay

Remove  删除

pvremove

vgremove

lvremove

Extend   扩展

 

vgextend

lvextend

主要命令的用法

pvcreate  设备名
vgcreate  卷组名  物理卷名1 物理卷名2
lvcreate   -L  大小  -n  逻辑卷名  卷组名
lvextend  -L  +大小  /dev/卷组名/逻辑卷名
 
创建逻辑卷的基本步骤PV->VG->LV->格式化->挂载使用文件系统
具体步骤(我的虚拟机不能演示,bash中没有这个pvcreate命令,简单作下理论说明)

(1)、转换物理卷

1)使用fdisk命令规划两个分区   fdisk -l /dev/hda /dev/hdb | grep "LVM"
2)使用pvcreate命令转换上述分区为物理卷

复制代码代码如下:
    pvcreate /dev/hda1 pvcreate /dev/hdb1

(2)、创建卷组


复制代码代码如下:
vgcreate vg_test /hda1 /dev/hdb1

(3)、创建逻辑卷

1)使用lvcreate命令创建逻辑卷lv_test,从卷组vg_test上划出10G空间

复制代码代码如下:
    lvcreate -L 10G -n lv_test vg_test

2)使用mkfs命令创建ext3文件系统

复制代码代码如下:
     mkfs -t ext3 /dev/vg_test/lv_test

(4)、格式化为ext3文件系统,并挂载到目录/dirtest

复制代码代码如下:
mount /dev/vg_test/lv_test /dirtest

(5)、还可以为逻辑卷扩容

1)使用lvextend命令为逻辑卷lv_test扩充容量,从卷组vg_test上再划出10G给逻辑卷lv_test

复制代码代码如下:lvextend -L +10G /dev/vg_test/lv_test
2)使用resize2fs命令更新系统识别的文件系统大小

复制代码代码如下:resize2fs /dev/vg_test/lv_test
  
 
如有错误,请指正,3Q~
 

上一篇:Linux学习笔记(三):权限管理(文件目录权限、 下一篇:Linux find命令中-exec参数的作用介绍

Copyright © 2016-2025 www.1681989.com 推火网 版权所有 Power by