linux磁盘管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux磁盘管理相关的知识,希望对你有一定的参考价值。
1.磁盘分区知识
磁盘分区知识的重点:
(1)给磁盘分区的实质就是针对硬盘的0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号、扇区号和柱面号。
(2)给磁盘分区的工具是fdisk(适合给小于2T的磁盘分区),parted(擅长给大于2T的磁盘分区,也可以给小于2T的磁盘分区),首选fdisk,只有大于2T时才会去选parted
(3)一块磁盘的分区表仅有64个bytes大小,每个分区表要占用16个字节,因此一块磁盘支持四个分区表信息,即主分区+扩展分区的总量不超过4个。
(4)磁盘分区是按柱面进行划分的。
(5)扩展分区不能直接使用,还需要在扩展分区的基础上创建逻辑分区才行。
(6)扩展分区有自己的分区表因此扩展分区下面的逻辑分区有多个。
1.1磁盘分区注意事项要点
一块硬盘的分区方式如下组合之一
(1)任意多个主分区,但要求1<=主分区数量<=4
例如:一块硬盘可以分为4个主分区3个主分区2个主分区或者1个主分区
(2)扩展分区可以和主分区组合,但要求2<=(主分区+扩展分区)数量<=4
例如:3个主分区+1个扩展分区或者2个主分区+1个扩展分区或1个主分区+1个扩展分区。当总分区的数量大于4个的时候,必须提前分一个扩展分区。
(3)如果要分成四个磁盘分区的话,那最多可以有两种:
P+P+P+P
P+P+P+E
其中的P为主分区Primary,E为扩展分区Extended
1.2有关逻辑分区的几个问题范例
范例1:如果要将一块大硬盘暂时分成四个分区,同时,还希望有其他的空间可以让我在未来需要的时候再进行分区,那么该如何分区?
3P+1E剩下的空间保留
2P+1E剩下的空间保留
1P+1E剩下的空间保留
范例2:一台机器6块600g硬盘,raid5后总大小3T,此时无法装系统为什么?
系统盘大于2T是不能装系统的
解决办法:
方法1:做raid5后,不要重启装系统,而是在raid 界面,继续分一个小的虚拟磁盘vd 200G,用这个200G的虚拟磁
盘装系统,装完系统后再把剩下的2.8T通过parted分区。
方法2:先拿一块盘raid0,剩下5块做raid5,在raid0装系统。
方法3:装系统时通过gpt分区格式,即可安装系统。
范例3:假如有一块SAS硬盘,要想把磁盘分成6个可以使用的磁盘分区,那么每个磁盘分区再linux系统下的数字编号是多少?
说明:
由于硬盘在Primary+Extended最多可以有四个,因此在linux系统下,会默认将1~4的分区编号保留下来给主分区和扩展分区使用,逻辑分区不可以占用1-4分区编号。
所以由于要求的分区总数为6个,必须有一个扩展分区,主分区可以有1-3个,但是无论分几个主分区逻辑分区的编号都会从5开始计算。
如果是1P+1E,则分区编号为:/dev/sda1,/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8,/dev/sda9
如果是2P+1E,则分区编号为:/dev/sda1,/dev/sda2,/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8
如果是3P+1E,则分区编号为:/dev/sda1,/dev/sda2,/dev/sda3,/dev/sda5,/dev/sda6,/dev/sda7
1.3磁盘分区的设备名
IDE硬盘:IDE接口的硬盘称为/dev/hda
SATA,SAS硬盘:SCSI接口的硬盘称为/dev/sda
在linux系统中,是通过设备名来访问设备的,访问名存放在“/dev”目录中。
设备名称的定义规则如下,其他的分区可以以此类推:
系统的第一块IDE接口硬盘称为/dev/hda
系统的第二块IDE接口硬盘称为/dev/hdb
系统的第一块SCSI接口硬盘称为/dev/sda
系统的第二块SCSI接口硬盘称为/dev/sdb
每个分区则使用磁盘名称对应的编号表示,如:
系统的第一块IDE接口硬盘的第1个分区称为/dev/hda1
系统的第二块IDE接口硬盘的第1个分区称为/dev/hdb1
系统的第一块SCSI接口硬盘的第1个分区称为/dev/sda1
系统的第二块SCSI接口硬盘的第一个分区称为/dev/sdb1
注意:
1、分区数字编号1~4留给主分区和扩展分区,逻辑分区编号只能从5开始。
2、IDE硬盘设备名称均以/dev/hd开头不同硬盘编号以此是/dev/had、/dev/hdb。
3、SCSI/SAS/SATA/USB接口硬盘的设备名均以/dev/sd开头,不同硬盘编号依次是/dev/sda,
/dev/sdb,/dev/sdc…
1.4linux系统对分区的要求
1、最少要有“/”根分区和swap分区。
2、swap(交换分区)的作用:虚拟内存,swap分区的大小=1.5*物理内存容量,如果内存大于8-16G作为swap即可。
3、建议设置独立的/boot分区。
linux引导分区,存放系统引导文件,如linux内核等,所有文件大小只有几十M,因此该分区设置100-200M,一般服务器的分区方式:“/boot”,“swap”“/”三个分区。
2.raid阵列卡
基本作用:网站数据量很大的时候,单块盘装单个盘存放不下了,购买多块盘,又不想单个盘存放数据,就需要工具把所有的硬盘整合成一个大磁盘,再在这个大磁盘上分区(虚拟磁盘)存放数据。
它的另外一个功能就是多块盘放在一起可以冗余(备份)。
1byte=8bit 1K=1024byte 1M=1024K
1G=1024M 1T=1024G 1PB=1024T
RAID有多种整合方式,RAID 0 1 5 10
有RAID卡后,一般磁盘就会插到RAID卡上,而不是直接插到主板上了。
互联网公司服务器会自带RAID卡(自带主板,独立RAID卡),RAID卡上也有缓存。
冗余从好到坏:raid1 raid10 raid5 raid0
性能从好到坏:raid0 raid10 raid5 raid1
成本从低到高:raid0 raid5 raid1 raid10
互联网公司:
单台服务器,很重要但是盘不多,系统盘就用raid1。
数据库服务器,主库raid10,从库raid5/raid0(为了维护成本,raid10)。
Web服务器,如果没有太多数据的话,raid5,raid0(单盘)。
2.1 raid级别
2.2 RAID 0 1 5 10的区别?
RAID 0(条带):写入RAID阵列的数据被分成了“组块”各种组块在构成阵列的驱动器均匀分布。
RAID 1(镜像模式):如同“镜像”这一名称暗示的一样,在镜像中,写入一个磁盘的数据被复制到了第二块磁盘上(被称为“镜像磁盘”)。
RAID 4(带校验的条带):linux内核支持的这种配置试图集中前两个RAID级别的优势:通过平行写入数据获取速度,而又能对损坏有着很强的可靠性。把一个额外的磁盘作为“校验盘”,可以获得这种可靠性。
RAID 5(条带+分布校验):RAID 5 在功能上与RAID 4 完全一样,但是解决了校验盘上的瓶颈问题。RAID 5 不是专门把一块磁盘用于校验,而是让校验信息均匀地分布在所有组成磁盘中。
RAID 10:最少四块硬盘,将四块硬盘分成两组,每两组做RAID 1,然后两组RAID 1做RAID 0。
2.3 什么是LVM?
LVM全称(Logic Volume Management)逻辑卷管理,它的最大用途是可以灵活的管理磁盘的容量,让磁盘分区可以随意放大和缩小,便于更好的应用磁盘的剩余空间,如果强调性能和备份那么还是应该使用raid功能,而不是LVM。
用RAID最直接的好处是:
(1)提升数据安全性。
(2)提升数据的读写性能。
(3)提供更大的单一逻辑磁盘数据容量存储。
3.fdisk磁盘分区命令实战
3.1 fdisk交互式分区
添加一块100M的硬盘
(1)先用fdisk –l查看
[[email protected] ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00045e4d
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 261046 8192000 83 Linux
/dev/sda310461237 1536000 82 Linux swap / Solaris
/dev/sda41237261111037696 83 Linux
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
(2)fdisk分区
fdisk 接磁盘设备
[[email protected] ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x78ca99bb.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
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):
这个地方提示:要用fdisk –cu命令
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‘).
警告:与dos兼容模式已被弃用。
这是强烈推荐
关闭模式(命令‘c‘)并将显示单元更改为
部门(命令“u”)。
(3)fdisk –cu方式分区
[[email protected] ~]# fdisk -cu /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x90d74776.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help):
在这个地方输入m(menu),m是菜单的意思
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition 《==添加一个分区
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
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)
按n创建分区
按e创建扩展分区:分区方式错误演示
输入p查看分区
这就不能创建扩展分区了因为没有e,要先创建主分区,扩展分区最多不能超过3个。
(3)创建分区先创建主分区再创建扩展分区
创建主分区
[[email protected] ~]# fdisk -cu /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xc6e370f5.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition《==删除一个分区
l list known partition types 《==查看分区类型及对应的id
m print this menu 《==打印菜单
n add a new partition 《=创建分区
o create a new empty DOS partition table
p print the partition table 《=打印分区表信息
q quit without saving changes《==退出不保存
s create a new empty Sun disklabel
t change a partition‘s system id《==改变分区系统的ID创建swap分区
u change display/entry units
v verify the partition table
w write table to disk and exit《==保存并退出,没有动数据,动的是64位字节分区表
x extra functionality (experts only)
Command (m for help): n
Command action
e extended
p primary partition (1-4)这里按p创建主分区
p
Partition number (1-4):
输入1,会看到第一分区的起始位置默认设计从2048开始的,直接敲回车默认创建的分区从2048开始。
Partition number (1-4): 1
First sector (2048-208895, default 2048):
然后可以给结束的扇区也可以用“+”加号,这里我们加10M
接着用上面的方法创建一个编号为2的主分区,大小为10兆
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First sector (22528-208895, default 22528):
Using default value 22528
Last sector, +sectors or +size{K,M,G} (22528-208895, default 208895): +10M
Command (m for help): P
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc6e370f5
Device Boot Start End Blocks Id System
/dev/sdb12048 22527 10240 83 Linux
/dev/sdb2 22528 43007 10240 83 Linux
好下来我们创建2个10M的主分区,共创建四个主分区,再接着创建分区会怎么样?会提示您必须删除一些分区,并首先添加一个扩展分区。“You must delete some partition and add an extended partition first” 因为扩展可以分多个,主分区只能分四个这是受分区表控制的。
删除分区用d
好上面已经分了三个主分区了,把剩下的分区都给扩展分区,输入n,按e直接按回车
创建逻辑分区,分区编号从5开始
3.2 创建LVM分区
如果想用LVM就要查看分区类型了,默认的linux分区是83,而LVM的分区类型是8e
建立LVM(逻辑卷)类型的分区就要改变分区系统类型的ID了,如下所示创建LVM类型分区
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3202f5e9
Device Boot Start End Blocks Id System
/dev/sdb12048 22527 10240 83 Linux
/dev/sdb2 22528 43007 10240 83 Linux
/dev/sdb3 43008 63487 10240 83 Linux
/dev/sdb4 63488 208895 727045 Extended
/dev/sdb5 65536 86015 10240 8e Linux LVM
保存按w写入分区表
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3202f5e9
Device Boot Start End Blocks Id System
/dev/sdb12048 22527 10240 83 Linux
/dev/sdb2 22528 43007 10240 83 Linux
/dev/sdb3 43008 63487 10240 83 Linux
/dev/sdb4 63488 208895 727045 Extended
/dev/sdb5 65536 86015 10240 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
用partprobe命令通知系统内核分区已经改变
3.3 fdisk非交互式分区
[[email protected] ~]# cat fdisk.txt
n
p
1
+10M
w
q
[[email protected] ~]# fdisk /dev/sdb<fdisk.txt
3.4 fdisk分区工具介绍
a.linux下最常用的分区工具,一般是装完系统后进行分区,装系统之前的分区都用系统ISO里面的工具分,或者raid里的分小磁盘。
b.fdisk只能root权限用户使用。
c.fdisk适合于对装系统后的剩余空间进行分区,例如:安装系统时没有全部分区,或者安装系统后添加分区。
d.不能对于大于2T的文件系统进行分区
e.fdisk分区的实质是修改0磁头0磁道1扇区的前446字节之后的64字节的分区表信息,不破坏数据。可以使用fdisk分区的磁盘大小必须小于2T,如果大于2T或者小于2T的,分区要用parted
3.5 查看分区
查看分区用fdisk –l
[[email protected] ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00045e4d
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 261046 8192000 83 Linux
/dev/sda310461237 1536000 82 Linux swap / Solaris
/dev/sda41237261111037696 83 Linux
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3202f5e9
Device Boot Start End Blocks Id System
/dev/sdb1 2 11 10240 83 Linux
/dev/sdb2 12 21 10240 83 Linux
/dev/sdb3 22 31 10240 83 Linux
/dev/sdb4 32 102 727045 Extended
/dev/sdb5 33 42 10240 8e Linux LVM
也可以查看/proc/partitions文件
[[email protected] ~]# cat /proc/partitions
major minor #blocks name
80 20971520 sda
81 204800 sda1
828192000 sda2
831536000 sda3
84 11037696 sda4
8 16 104448 sdb
8 17 10240 sdb1
8 18 10240 sdb2
8 19 10240 sdb3
8 20 1 sdb4
8 21 10240 sdb5
4.parted分区工具的使用
传统的MBR分区方式,有一个局限:
无法使用超过2T的硬盘的分区(或单个分区超过2T),如果大于2T就要用GPT分区的理念。
parted的操作都是实时的也就是说执行了一个分区命令,他就实实在在的分区了,而不像是fdisk那样按w才创建分区。
4.1 parted分区实践
实验:准备一块100M的盘
(1)交互式分区
[[email protected] ~]# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted)
输入help看相关的命令
Welcome to GNU Parted! Type ‘help‘ to view a list of commands.
(parted) help
align-check TYPE Ncheck partition N for TYPE(min|opt)
alignment
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] print general help, or help on
COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition
table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on
partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
move NUMBER START ENDmove partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table,
available devices, free space, all found partitions, or a particular
partition
quit exit program
rescue START END rescue a lost partition near START
and END
resize NUMBER START END resize partition NUMBER and its file
system
rm NUMBERdelete partition NUMBER
select DEVICEchoose the device to edit
set NUMBER FLAG STATEchange the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
NUMBER
unit UNITset the default unit to UNIT
version display the version number and
copyright information of GNU Parted
先调一下分区的类型改成gpt,修改分区类型用mklabel命令
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes
创建一个10M主分区
(parted) mkpart primary 0 10
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
`(parted)`
分一个10M交换分区swap
(parted) mkpart primary linux-swap 11 21
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 11.0MB 21.0MB 10.0MB primary
分一个10M的逻辑分区(这个地方比较特殊不用创建扩展分区)
(parted) mkpart logical ext4 22 32
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 11.0MB 21.0MB 10.0MB primary
3 22.0MB 32.0MB 10.0MB logical
删除分区,用rm
提示:我们只关注mkpart命令和rm删除分区命令即可
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 11.0MB 21.0MB 10.0MB primary
3 22.0MB 32.0MB 10.0MB logical
(parted) rm 3
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 11.0MB 21.0MB 10.0MB primary
(2)非交互式创建分区
parted /dev/sdb mklabel gpt yes
parted /dev/sdb mkpart primary 0 10 Ignore
parted /dev/sdb mkpart primary linux-swap 11 12 Ignore
parted /dev/sdb mkpart logical ext4 22 32 Ignore
parted /dev/sdb p
演示:
[[email protected] ~]# parted /dev/sdb mklabel gpt yes
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Information: You may need to update /etc/fstab.
[[email protected] ~]# parted /dev/sdb mkpart primary 0 10 Ignore
Warning: The resulting partition is not properly aligned for best performance.
Information: You may need to update /etc/fstab.
[[email protected] ~]# parted /dev/sdb mkpart primary linux-swap 11 12 Ignore
Warning: The resulting partition is not properly aligned for best performance.
Information: You may need to update /etc/fstab.
[[email protected] ~]# parted /dev/sdb mkpart logical ext4 22 32 Ignore
Warning: The resulting partition is not properly aligned for best performance.
Information: You may need to update /etc/fstab.
[[email protected] ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End SizeFile system Name Flags
1 17.4kB 10.0MB 9983kB primary
2 11.0MB 12.0MB 1000kB primary
3 22.0MB 32.0MB 10.0MB logical
5.交换内存空间swap分区的构建(了解)
5.1 使用物理分区创建swap
可以使用一个分区构建swap,也可以使用dd创建一个swap
[[email protected] ~]# fdisk -cu /dev/sdb 分成一个区/dev/sdb1
用mkswap格式化分区命令,把普通分区/dev/sdb1格式化成swap分区
查看一下内存
添加swap分区
关掉swap分区
swapoff /dev/sdb1
5.2 使用文件创建swap
dd的只是一个特殊文件,它占用磁盘的分区
[[email protected] ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 1.8708 s, 71.7 MB/s
[[email protected] ~]# ls -lh /tmp/swap
-rw-r--r--. 1 root root 128M Jul 19 20:30 /tmp/swap
格式化分区
添加swap分区
[[email protected] ~]# swapon /tmp/swap
5.3 企业案例
企业案例场景:
swap在工作中,特别是java环境,程序写的有问题,会发生内存泄露,swap分区可能会被占用。
解决办法:
让开发改程序,运维临时加大swap分区,就是用上面的方法。不用重启系统可以先用swapoff,再用swapon。
6.文件系统知识
6.1 文件系统知识回顾
inode是当磁盘备份区格式化的时候诞生的,格式化分区的实质是创建文件系统,对于ext1、2、3、4文件系统格式化之后就会生成一定数量的inode和block。
6.2 文件系统知识准备
(1)分区与文件系统的关系
通过fdisk命令对一个磁盘进行分区后,并不能直接挂在目录存放数据实体,还需要进行格式化操作,才能进行挂载并存放数据。
为什么需要格式化呢?这是因为磁盘分区在没有格式化之前,操作系统是无法识别系统上磁盘分区格式的,也就无法存取文件目录属性和权限等内容。分区就相当于给房子打隔断并不破坏数据,文件系统就是装修。
(2)ext2的文件系统细节
操作系统中的数据分为文件内容和文件属性两部分,文件系统内容就是文件的实体数据(block里面),而文件属性就是文件类型、权限、属主、修改信息等,还包括一个指针。
文件系统会将文件的属性内容存放到磁盘系统的inode中。操作系统还会记录文件系统的整体信息与superblock(存放文件系统的元数据信息)中,这个superblock包括整个文件系统的inode和block的总的数量。
(3)什么是文件系统
文件系统就是一种存储和组织计算机数据文件的机制或方法,它使得对计算机文件系统内数据的访问和查找变得更容易、简单,如ext2、ext3、ext4、xfs(Centos 7.x)、zfs和nfs都是文件系统。
6.3 ext2文件系统的组成
这些内容都可以用dumpe2fs来查看
[[email protected] ~]# dumpe2fs /dev/sdb1|less
超级组块记录的信息:
超级块:记录文件系统的控制和管理信息
block和inode的个数和大小,及其已用和未用数量
文件系统的载入时间、最近一次写入数据的时间、最近一次执行fsck进行磁盘检查的时间等。
有效位:为0已载入,为1未载入
组描述:记录本块组从何处开始
块位示图:使用位示图记录inode的使用情况。
inode区:各inode组成的区域,每个inode都有一个唯一编号
数据块区:各block组成的区域,用于存放文件数据
6.4 文件系统选型简单介绍
SAS/STAT硬盘文件系统选择:
a.xfs有关门户的数据库mysql的业务
b.ext4 视频,流媒体。数据库,小文件业务也可以,可以用默认的
c.ext2 没有日志,蓝汛的cache业务,CDN网站加速服务的
常规应用:
对于Centos5.x系列,常规应用就选默认的ext3文件系统即可。
对于Centos6.x系列,常规应用就选默认的ext3文件系统即可。
对于Centos7.x系列,常规应用就选默认的xfs文件系统即可。
查看支持的文件系统的格式
[[email protected] ~]# ls /lib/modules/`uname -r`/kernel/fs
autofs4 configfs exportfs fat jbdmbcache.ko nls xfs
btrfs cramfsext2 fscache jbd2 nfs squashfs
cachefiles dlm ext3 fuse jffs2 nfs_common ubifs
cifsecryptfs ext4 gfs2 lockd nfsdudf
操作系统支持不代表文件系统软件已经安装了,格式化不支持mkfs;那就需要安装文件系统软件
[[email protected] ~]# mkfs
mkfs mkfs.ext2 mkfs.ext4 mkfs.msdos
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.vfat
6.5 linux磁盘格式化和挂载命令
格式化命令mkfs参数:
-b 指定块设备大小默认是4096
-i 指定inode大小默认是256
-t 指定文件系统相当于mkfs.ext4(2或3)
[[email protected] ~]# mkfs
mkfs mkfs.ext2 mkfs.ext4 mkfs.msdos
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.vfat
格式化完成之后会出现下面内容,执行下面命令
tune2fs –c -1 /dev/…
挂载:mount
参数:
-t 指定文件系统类型
7.磁盘管理命令复习总结
磁盘与目录的容量:df du
df:列出文件系统的整个磁盘使用量
du:评估文件系统的磁盘使用量(常用于评估目录所占容量)
(1)将挂载后容量结果以易读的容量格式显示出来查看的是block:df –h
(2)将挂载后的各个分区中可用的inode数量列出:df –ih
(3)df –hT,查看挂载情况,显示文件系统类型
(4)查看/proc/mounts文件也可以查看挂载情况
(5)查看分区查看/proc/partitions文件
(6)查看文件系统的内部细节 dumpe2fs /dev/sdb1
(7)磁盘检查用fsck(ext2文件系统用e2fsck),当磁盘出现故障了可当做磁盘检查,但是注意:没坏的磁盘一定不要用,一般是机器起不来了,磁盘有坏道。fsck –C –f ext3 /dev/sdb1
(8)tune2fs 列出/dev/sdb1的super block内容。tune2fs –l(小写的L) /dev/sdb1
(9)查看磁盘设备的UID 和文件系统类型,blkid /dev/sdb1
(10)megacli查看raid的信息,监控raid会用到
(11)ipmitools 查看硬件信息的工具,监控硬件的时候会用到
(12)resize2fs调整文件系统的大小(LVM,drbd扩容)
8.设置开机挂载
将/dev/sdb1每次开机自动挂载/tmp/sdb1
编辑/etc/fstab
[[email protected] ~]# tail -1 /etc/fstab
UUID=d9e7daa8-34f0-4b9a-825b-e2aa49a03921 /tmp/sdb1 ext4 defaults 0 0
写入:/dev/sdb1(挂载的设备也可以是UID,用blkid查看) /tmp/sdb1(挂载点) ext4(文件系统类型) dufaults(挂载的参数选项) 0(是否备份,设置成 1或2备份) 0(是否开机检查,相当于fsck)
以上是关于linux磁盘管理的主要内容,如果未能解决你的问题,请参考以下文章