第四单元 磁盘分区
一、概念
1.磁盘分区是为了方便管理,分区的信息记录在硬件中。
2.磁盘:由探头、磁道、扇区构成。默认操作系统管理磁盘,若无操作系统或操作系统未开启时,默认将从磁盘的零磁道1扇区mbr开始读取。
3.零磁道1扇区mbr记录启动程序的位置,共446字节大小,记录引导程序位置。其所在大小为512的空间剩余2+64字节,2字节的内容由主机板识别,存放硬盘标示符;64字节空间是分区表mpt,记录分区位置。
4.磁盘分区分三类:主分区--最多可以有4个主分区,但会造成磁盘空间的浪费;
扩展分区--将除主分区外的剩余空间划分至一个“容器”中,该容器的位置信息记录在分区表中;
逻辑分区--逻辑分区的位置信息记录在扩展分区中。
所以,磁盘若无mbr或mpt,将不能启动
二、磁盘分区
(一)
1.fdisk -l #查看系统识别的设备
2.fdisk /dev/vdb #对/dev/vdb进行分区
Command (m for help): m #查看命令帮助
Command action
a toggle a bootable flag
b editbsd disklabel
c toggle the dos compatibilityflag
d delete a partition #删除分区
g create a new empty GPTpartition table
G create an IRIX (SGI) partitiontable
l list known partitiontypes #列出分区类型
m print this menu
n adda new partition #新建分区
o create a new empty DOSpartition table
p print the partition table #查看分区表
q quit without savingchanges #退出不保存
s create a new empty Sundisklabel
t change a partition's systemid #更改分区类型/id
u change display/entry units
v verify the partition table
w write table to disk andexit #退出并保存
x extra functionality (expertsonly)
##主分区的建立
Command (m for help): n #新建分区
Partition type: #分区类型
p primary (0 primary, 0extended, 4 free) #主分区
e extended #扩展分区
Select (default p): p #选择建立主分区
Partition number (1-4, default 1): 1 #建立主分1
First sector (2048-20971519, default 2048):[enter]#默认起始地址
Using default value 2048
Last sector, +sectors or +size{K,M,G}(2048-20971519, default 20971519): +100M #分区大小为100M
Partition 1 of type Linux and of size 1 GiBis set
#扩展分区的建立
Command (m for help): n
Partition type:
p primary (3 primary, 0extended, 1 free)
e extended
Select (default e): e #建立扩展分区
Selected partition 4 #第四块分区
First sector (1230848-20971519, default1230848): [enter]默认起始地址
Using default value 1230848
Last sector, +sectors or +size{K,M,G}(1230848-20971519, default 20971519): [enter] #默认剩余空间均划分至扩展分区
Using default value 20971519
Partition 4 of type Extended and of size9.4 GiB is set
Command (m for help): p #查看分区表
Disk /dev/vdb: 10.7 GB, 10737418240 bytes,20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk label type: dos
Disk identifier: 0x98ecea5f
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
/dev/vdb2 206848 616447 204800 83 Linux
/dev/vdb3 616448 1230847 307200 83 Linux
/dev/vdb4 1230848 20971519 9870336 5 Extended
Command (m for help):wq #退出报存
3.分区表改变,又系统只读取一次分区表,需要使用下面命令来进行同步
partprobe #实现硬盘与系统的分区同步,使系统识别系统中新增的分区信息
4.cat /proc/partitons #若出现新分区。则划分成功
二、磁盘格式化
由命令fdisk/dev/vdb 划分得到的分区暂时还不能使用,可以使用blkid来查看,
所以必须对分区进行格式化后才可以使用。windos可识别ntfs,fat格式的分区;linux可识别vfat(链式读取,最大分区大小=32TB),ext,xfs(分布式读取。读取速度最快,磁盘分区空间大小可达18eB)(1eB=1024TB)。下面介绍xfs格式化
mkfs.格式名 磁盘分区
1.mkfs.xfs /dev/vdb1 #将/dev/vdb1格式化为xfs格式
blkid #查看可以使用的设备
2.挂载
(1)一次性挂载
mount /dev/vdb1 /mnt #测试挂载
(2)永久挂载
vim/etc/fstab
设备名称 挂载点 设备格式 defaults(默认参数) 是否备份(0表否;1表是) 是否检测(0表否;1表是)
如:/dev/vdb1/mnt xfs defaults 0 0 #将xfs格式的/dev/vdb设备挂载在/mnt下,且不备份不检测
:wq
mount -a #使/etc/fstab中新建的命令立即识别,即实现挂载
注:/etc/rc.d/rc.local也可以实现永久挂载,但是该脚本内容是在系统启动最后才被读取的,因此不宜采用此命令来实现永久挂载。
三、swap分区:在系统的物理内存不够用时,把硬盘空间中的一部分空间释放出来, 放入swap分区中。swap分区默认为4GB。
1.swap分区的建立:新建磁盘分区作为swap分区
Command (m for help): n
Partition type:
p primary (1 primary, 0extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (206848-20971519, default206848):
Using default value 206848
Last sector, +sectors or +size{K,M,G}(206848-20971519, default 20971519): +1G
Partition 2 of type Linux and of size 1 GiBis set
###更改/dev/vdb2分区为swap交换分区
Command (m for help): l #列出系统分区编号
Command (m for help): t #更改分区编号,即更改分区类型
Partition number (1,2, default 2): 2 #更改第二块主分区
Hex code (type L to list all codes):82 #更改为swap分区
Changed type of partition 'Linux' to 'Linuxswap / Solaris'
Command (m for help): p ##查看划分的分区
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
/dev/vdb2 206848 2303999 1048576 82 Linux swap / Solaris ##/dev/vdb2是系统中的swap分区
Command (m for help):wq
2.同样需要进行格式化,使用命令mkswap,如下:
mkswap /dev/vdb2 ##将设备/dev/vdb2格式化为swap分区
3.swapon -a /dev/vdb2 ##激活swap分区
4.swapon -s ##查看正在使用的swap分区信息,包含优先级信息
5.优先级:只能在swap分区激活时同时设定,之后不能通过命令更改
swapon -a /dev/vdb2 -p 优先级别 ##以某优先级激活swap分区
6.swapoff /dev/vb2 ##停止swap分区
注:修改优先级时,一定要先关闭swap分区,再使用第5条命令
7.自动挂载
(1)先关闭swap分区:swapoff /dev/vdb2
(2)vim /etc/fstab
/dev/vdb2 swap swap defaults 0 0 ##不需要设置挂载点,以默认参数进行挂载,此时优先级时默认值-1
/dev/vdb2 swap swap defaults,pri=1 0 0 ##设定优先级为1
(3)swapon -a ##自动激活swap分区
(4)删除交换分区:swapoff /dev/vdb2 #先关闭交换分区
删除/etc/fstab中自动挂载命令行
fdisk /dev/vdb ##输入d进行删除swap分区
partprobe ##硬件与系统同步
注:若使用过mkswap命令,此后的格式化命令必须加 -f,如下
mkfs.xfs /dev/vdb1 -f
四、用户的磁盘额度:分配额度--针对设备
新建设备,并挂载至/pub,
1.fdisk /dev/vdb
mkdir /pub
mkfs.xfs /dev/vdb3
mount /dev/vdb3 /pub ##检测挂载
chmod 777 /pub
umount /pub
2.mount -o usrquota,grpquota /dev/vdb3/pub ##将已格式化的设备/dev/vdb3以一定的用户配额、组配额挂载到/pub下
ls-ld /pub #查看/pub内容
df #查看是否挂载成功
3.quotaon -ugv /dev/vdb3 ##激活
4.edquota -u 用户名 ##查看用户配额,可以设定该用户的额度,内容显示如下
Filesystem blocks soft hard inodes soft hard
/dev/vdb3 0 0 0 0 0 0
blocks:当前用户在该设备上已存在的数据大小,不可更改,当删除文件时才会改变
soft:软件大小
hard:硬件大小,用户可往设备中写入的最大的文件大小,单位为kB
inode:用户在设备中的文件个数
5.检测用户配额
su - 用户名
ddif=/dev/zero of=/pub/file bs=1MB count=200 ##从/dev/zero截取100块大小1MB的内存即200MB放入/pub/file,若超过200MB将会出错
6.删除
(1)umount /pub
(2)fdisk /dev/vdb #输入d 删除分区
(3)partprobe #硬件与系统同步
五、硬盘的读写速度:会受硬盘转速的影响
(一)定义
1.磁盘阵列:可以加快读写速度,至少需要三块磁盘。两块盘一起转可以加快读速度;两块盘一起写数据时,每个盘只写一半数据,因此可以加快写速度。
2.软件模拟raid:0--每个盘各写一半,可以加快写速度;
1--每个盘写入完整数据,可以加快读取速度;
5--三个零+两个1,但比较浪费磁盘
(二)操作
1.建立三块设备,并将设备更改为raid分区,可用l命令查看raid分区对应的id为fd.
fdisk /dev/vdb
注:raid设备在使用时是两块盘一起读写,所以真正可以使用的空间大小与空间最小的设备相同,因此在创建设备时尽量将每块设备的大小设定一致。
2.系统同步
3.创建raid设备
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
##在系统中创建出/dev/md0设备,其中共有三块分区
C:创建
-ayes:创建出设备
-l1:level 1
-n2:用两块设备来建立level1
-x1:闲置一块
可以用watch 命令进行监控
watch -n 1 cat /proc/mdstat
watch -n 1 'cat /proc/mdstat;echo====;df -h'
4.格式化/dev/md0
mxfs.xfs /dev/md0
5.挂载
mount /dev/md0 /mnt
df-h ##可以查看设备大小,取决于最小的设备
6.mdadm -D /dev/md0 #查看设备状态,内容如下:
##Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
(正在实行同步)
2 253 19 - spare(闲置) /dev/vdb3
mdadm -f /dev/md0 /dev/vdb2 #使某设备停止工作,但/dev/md0不会停止工作,此时闲置的盘/dev/vd3将开始同步,恢复数据
mdadm -r /dev/md0 /dev/vdb2 #删除坏掉的或未使用的盘
mdadm -a /dev/md0 /dev/vdb2 #添加/dev/vdb2,并且一定尽可能保证两块盘正常运行
7.删除raid设备
umount /mnt #先卸载
mdadm-D /dev/md0 #查看设备状态,是否正在运行
mdadm -S /dev/md0 #使设备停止工作
fdisk /dev/vdb #进行删除设备,或者更改设备类型
六、磁盘扩容
(一)定义
磁盘扩容:fdisk划分出物理分区由于Lvm软件的作用形成pv逻辑卷,pv逻辑卷捆绑形成vg,从vg中取出整数倍个PE得到Lvm。得到的Lvm可以无限大。
(二)LVM的形成
1.划分出LVM格式的设备
fdisk /dev/vdb
输入l 查看LVM格式的id=8e
输入t 更改格式
2.partprobe #系统同步
3.对设备进行初始化但不挂载
4.pvcreate /dev/vdb1 #建立pv
vgcreate vg0 /dev/vdb1 #建立vg0,包含pv信息
lvcreate -L 300M -n lv0 vg0 #从vg0中划分300M内容给lv0
使用watch监控,如下
watch -n 1'echo==vmessage==;pvs;echo==vgmessage==;vgs;etho==lvmessage==;lvs'
注:若在linux7.2中使用过raid设备,在创建lvm时应该使用mdadm -S /dev/md0命令使/dev/md0处于停止工作状态。
5.mkfs.xfs /dev/vg0/lv0 #初始化
6.mkdir /data
mount /dev/vg0/lv0 /data #将/dev/vg0/lv0挂载至/data目录下
使用watch监控,如下
watch -n 1'echo==vmessage==;pvs;echo==vgmessage==;vgs;etho==lvmessage==;lvs;echo===;df -h/data',内容显示如下:
图片
##Vsize:表示vg0大小
##VFree:表示vg0剩余空间,LFree同理
(三)设备拉伸
(A)拉伸设备,也可以缩减
1.扩容
lvextend -L 500M /dev/vg0/lv0 #将/dev/vg0/lv0扩大到500M;-L 500M表示扩容后的设备大小(500<720M)
此时扩容后文件系统的大小不变
xfs_growfs /dev/vg0/lv0 ##文件系统大小改变,会变大
2.增加设备
当lv0的扩容量超过/dev/vg0剩余空间时,可以通过添加pv设备来扩容
pvcreate /dev/vdb2 #添加pv设备
vgextend vg0 /dev/vdb2 #将新添加的pv加入到vg0中,扩大vg0
lvextend -L 1500M /dev/vg0/lv0 #再次扩容
(B)缩减设备
1.xfs不支持文件系统缩减,所以先转换成可以缩减文件的格式
umount /data #先卸载
mkfs.ext4 /dev/vg0/lv0 ##将lv0设备格式化为ext4格式
mount /dev/vg0/lv0 /data #再挂载
2.先缩减文件
umount /data
e2fsck -f /dev/vg0/lv0 ##检测文件大小,防止文件被缩减过小
resize2fs /dev/vg0/lv0 500M ##缩减文件至500M大小
mount /dev/vg0/lv0 /data
df-h /data #挂载后再查看文件大小
3.缩减设备
lvreduce -L 500M /dev/vg0/lv0 ##缩减设备
pvmove /dev/vdb1 /dev/vdb2 ##将/dev/vdb1中数据移至/dev/vdb2中,中途不能停止或取消命令,否则会造成数据的丢失
vgreduce vg0 /dev/vdb1 ##从vg0中取出/dev/vdb1
pvremove /dev/vdb1 ##从pv中移出/dev/vdb1使之成为物理分区
fdisk /dev/vdb #可以删除/dev/vdb1分区
(四)、设备快照
1.umount /data
2.lvcreate -L 50M -n 新设备名称 -s /dev/vg0/lv0 #对/dev/vg0/lv0快照生成新设备,并改变数据大小为50M,如:
lvcreate -L 50M -n newfs -s /dev/vg0/lv0 #新设备/dev/vg0/newfs
3.mount /dev/vg0/新设备 /data #挂载
4.umount /data
lvremove /dev/vg0/新设备 #删除快照
图片
(五)删除LVM
1.umount /dev/vg0/lv0
2.lvremove /dev/vg0/lv0
3.vgremov vg0
4.pvremove /dev/vdb2
七、文件系统加密
文件系统底层加密:对整个分区加密,若前行破解,会造成文件内容的丢失。
1.划分设备并且不格始化不挂载,原始设备不能挂载
fdisk /dev/vdb
2.建立文件系统
cryptsetup luksFormat /dev/vdb1 #对未格始化的设备加密
YES [enter](输入大写YES,表示确定加密)
输入密码[enter]
3.打开加密设备
cryptsetup open /dev/vdb1 新名称 #加密设备打开后的新名称
输入密码 [enter]
加密设备打开后的状态是:/dev/mapper/新名称
如:cryptsetupopen /dev/vdb1 westos
打开后的状态是:/dev/mapper/westos
4.格式化并挂载打开后的设备
mkfs.xfs /dev/mapper/westos
mount /dev/mapper/westos /mnt
可以进行查看,卸载后将不能查看。可以重复操作4步骤
5.关闭设备
先卸载
cryptsetup close westos
可以查看是westos设备是否还存在
ll/dev/mapper/
(B)自动挂载
1.vim /etc/crypttab
新名称 设备 文件 ##建立文件存放密码,使系统开机后给设备自动加密
2.chmod 600 /文件名 ##设定密码文件的权限为r--
3.cryptsetup luksAddKey /dev/vdb1 /文件名 ##将密码记入文件中
4.vim /etc/fstab
/dev/mapper/新名称 /mnt xfs defaults 0 0 #自动挂载命令,挂载打开后的设备