linux磁盘管理

一、磁盘管理

硬盘可分为主引导扇区,主分区,扩展分区。
磁盘分区表DPT(disk partition table)共64字节,平均分成4份,每份16字节,保存分区起始位置,最多可以创建4个主分区。
但是有时4个不够用,所以一般将第四块分区设置为扩展分区,扩展分区最多有一个,可以划分成多个逻辑分区。
它是一个指向下一个分区的指针,这种指针结构形成一个单向列表。通过这个分区的指针,可以找到所有的逻辑分区。
每个主分区只能分成一个驱动器,每个主分区都有各自独立的引导块(PBR),可以用fdisk设定为启动区
扩展分区上可以划分出多个逻辑驱动器,这些逻辑驱动器没有独立的引导块,不能用fdisk设定为启动区。

1、fdisk命令

fdisk -l #查看当前磁盘信息
Disk /dev/sda: 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 / 512 bytes
Disk label type: dos
Disk identifier: 0x000a4d9c
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    20971519     9972736   8e  Linux LVM

sda1 #a表示第一块磁盘,磁盘数用字母表示,1表示第一个分区,分区数用数字表示

fdisk /dev/sda #表示对第一块磁盘分区
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m #m查看各种命令
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition   #删除分区
   g   create a new empty GPT partition table #GPT(GUID partition table)全局唯一标识分区表
   G   create an IRIX (SGI) partition table
   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   ##修改分区功能类型,l可查看所有选项
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit #保存更改到分区表中
   x   extra functionality (experts only)

创建分区

Command (m for help): n
Partition type: 
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): #p表示主分区,e表示扩展分区,默认是主分区
Using default response p
Partition number (1-4, default 3): #主分区id,因为已经有两个主分区,所以默认为3
First sector (2048-20971519, default 2048): #设置分区起始位置 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M #分区大小
Partition 1 of type Linux and of size 100 MiB is set
Command (m for help): wq #wq保存并退出

新建分区之后,同步分区表

[root@localhost mnt]# partprobe #同步分区表
[root@localhost Desktop]# cat /proc/partitions #查看系统识别的分区信息
major minor  #blocks  name
   2        0          4 fd0
   8        0   10485760 sda
   8        1     512000 sda1
   8        2    9972736 sda2
  11        0    3655680 sr0
 253        0    8921088 dm-0
 253        1    1048576 dm-1

新创建的分区必须得设置一种文件系统才能使用,就是用某种文件系统格式化分区
linux系统用ext文件格式

[root@localhost Desktop]# mkfs.ext4 /dev/sdb3 
mkfs         mkfs.ext2    mkfs.fat     mkfs.vfat
mkfs.btrfs   mkfs.ext3    mkfs.minix   mkfs.xfs
mkfs.cramfs  mkfs.ext4    mkfs.msdos   

格式化之后,挂载到某个目录下,对那个目录操作,就相当于对这个分区操作

mount /dev/vdb3  /mnt #临时挂载
或者写入fstab中,开机挂载
vim /etc/fstab
/dev/vdb3   /mnt    ext4    defaults    0 0
mount -a #挂载fstab中的所有设置 

2、swap分区

Swap空间是当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
那些被释放的空间来自一 些长时间没有使用的程序,这些程序被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

fdisk /dev/vdb 
Command (m for help): t #修改分区功能
Partition number (1,2, default 2):  #选择分区
Hex code (type L to list all codes): 82 #l列出选项,swap类型编号是82
设置完成后记得保存
Command (m for help): wq 

将有swap标识的分区格式化为swap空间

mkswap /dev/vdb2 

开启、关闭swap空间

swapon -a /dev/vdb2 #-a 表示开启全部的swap空间
永久挂载
vim /etc/fstab
/dev/vdb2   swap    swap    defaults    0 0
swapon -s #查看所有开启的swap空间

swapoff /dev/vdb2

3、磁盘加密

磁盘加密是在设置文件系统之前进行加密,使密码不能被强制破解
先用fdisk 创建一个分区/dev/sdb1
然后对sdb1加密

[root@localhost ~]#cryptsetup luksFormat /dev/vdb1 
WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.
Are you sure? (Type uppercase yes): YES     ##必须是大写
Enter passphrase:  #输入密码
Verify passphrase:

解锁与挂载

[root@localhost ~]#cryptsetup open /dev/vdb1 redhat #将sdb1解锁为redhat
Enter passphrase foR /dev/vdb1: #输入密码
mkfs.xfs /dev/mapper/redhat #格式化解锁后的分区redhat,而不是/dev/sdb1
mount /dev/mapper/redhat /mnt #挂载分区

2.加密磁盘的永久挂载

vim /etc/crypttab #确定磁盘解密后的名字
redhat          /dev/vdb1   /root/passwd
解密后设备管理文件   磁盘分区        加密磁盘密码存放文件

vim /root/passwd #只存放加密磁盘的密码
保存退出后,修改这个文件的权限为600
chmod 600 /root/passwd

cryptsetup luksAddKey /dev/vdb1  /root/passwd #关联设备和密码

最后在开机挂载列表里写入
vim /etc/fstab 
/dev/mapper/redhat  /mnt    xfs defaults    0 0

解除开机挂载

> /etc/crypttab #清空这个文件
rm -fr /root/passwd #删除存放密码的文件
vim /etc/fstab #在文件中删除相关数据

关闭加密分区,注意操作对象是redhat,而不是vdb1

umount /dev/mapper/redhat #卸载分区
cryptsetup close/dev/mapper/redhat #关闭分区

清除加密

mkfs.ext4  /dev/vdb1 #格式化分区

4、lvm

LVM(Logical volume Manager)是逻辑卷管理的简称。
可以实现对磁盘的动态管理,也可以用不同磁盘的空间来共同创建逻辑分区
PV  (Physical Volume)  物理卷
VG  (Volume Group)  卷组
LV  (Logical Volume)  逻辑卷
PE  (Physical Extend)  物理拓展
PE是逻辑卷管理的基本单位,LVM磁盘管理中PE的默认大小是4M
步骤:
先将硬盘格式化为pv,意思就是将硬盘格式化成pe类型的一个个小块。
然后将pe组成一个vg,就是将许多pe合起来创建一个卷组vg。
最后在vg卷组中创建lv,lv大小伸缩取决于他所在的卷组的大小。
lv经过格式化之后就可以使用了,lv大小为pe的整数倍
lv的扩充缩减实际上就是增加或减少组成该lv的pe数量,不会丢失原始数据

创建逻辑卷

创建pv

pvcreate /dev/sdb2
pvs #查看创建的pv 

创建vg

[root@desktop1 ~]# vgcreate qagroup /dev/sdb2 
vgs #查看创建的vg

创建lv

[root@desktop1 ~]# lvcreate -n qa -L 2G qagroup
lvs #查看创建的lv

创建之后的设备信息存放在以下三个文件,后两个是第一个的链接文件

/dev/qagroup/qa
/dev/mapper/qagroup-qa
/dev/mapper/qagroup/qa

最后一步,格式化lv,挂载,使用

mkfs.ext3 /dev/qagroup/qa 
临时挂载
mkdir /mnt/qa
mount /dev/qagroup/qa /mnt/qa
永久挂载
vim /erc/fstab
mount /dev/mapper/qagroup-qa /mnt/qa ext3 defaults 0 0

删除逻辑卷

与创建逻辑卷步骤正好相反
卸载挂载的逻辑卷

umount /mnt/qa
或者
umount /dev/mapper/qagroup/qa

删除逻辑卷

lvremove /dev/qagroup/qa

删除卷组

vgremove /dev/qagroup

删除物理卷

pvremove /dev/sdb2

逻辑卷和卷组的扩展和缩小

注意逻辑卷大小改变时,文件系统的大小也要随着一起更改
逻辑卷拉伸时,文件系统是在其后扩展的

lvextend -L 3G /dev/qagroup/qa #或者+1G
resize2fs /dev/qagroup/qa #重新分配文件系统

逻辑卷缩小时,要先缩小文件系统

e2fsck -f /dev/qagroup/qa # 使用 e2fsck 命令检查我文件系统
resize2fs /dev/qagroup/qa 2G #使用 resize2fs 命令缩小文件系统为2G
lvreduce -L 2G /dev/qagroup/qa #或者-1G

卷组拉伸,先创建一个物理卷pv

pvcreate  /dev/vdb3
vgextend  qagroup  /dev/vdb3

卷组缩小,先将所要删除物理卷的文件移动到别的物理卷中,再删除物理卷

pvmove  /dev/vdb3 /dev/vdb2 #将vdb3中正在使用的空间内容移动到vdb2
vgreduce qagroup /dev/sdb3 
pvremove /dev/sdb3  #删除物理卷vdb3

二、计算机的启动过程

计算机启动的过程:
1. 通电后,内部电路加载BIOS(这一步有些是硬件自动完成的)
basic input output system 基本输入输出
它保存着计算机最重要的基本输入输出的程序 、开机后自检程序和系统自启动程序。
BIOS是一个写入到硬件上的一个软件程序,是开机的时候计算机系统会主动执行的第一个程序。

  1. BIOS完成计算机自检(检测并初始化硬件,将硬件置为已知状态),并尝试识别可引导设备(光盘、硬盘、U盘、网络等),通常是硬盘。
    BIOS只会把可引导设备的第一个扇区(512字节,称为主引导扇区)读入内存0x7c000的位置,并跳转(jmp)到0x7c000的位置开始执行其中的代码。
    这512字节分为3个部分:1、主引导记录MBR(446字节),2、磁盘分区表DPT(64字节),3、结束标志(2字节),值为AA55,存放时低位在前。
    ~MBR(Master Boot Record),即硬盘的主引导记录,是放置引导加载程序的地方,引导加载程序就是bootloader
    ~bootloader是在操作系统内核运行之前运行的一段小程序,作用就是加载os(operating system,操作系统)到内存中,并开始执行os的代码,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
    ~bootloader不只可以在磁盘的第一个扇区的MBR中,也可以在主分区的开始的地方,称为PBR(Partition Boot Record),占用扇区大小不定,所在扇区叫做当前分区的boot sector。

  2. 开始执行bootloader,rhel7.0是grup文件,选择操作系统以确定/boot启动分区的位置,然后加载内核,grup引导阶段结束,进入内核引导阶段。
    bootloader生命周期:
    (1)提供菜单:用户可以选择不同的启动选项,这也是多重引导的重要功能!选择不同的内核来启动。
    (2)加载内核文件:直接指向可启动的程序区段来开始操作系统。
    (3)转交其他loader:将引导装载功能转交给其他loader负责。可以加载其他boot sector内的boot loader。
    ~常见的boot loader有linux下的grub,windows的bootmgr,NTload等。
    grub 会对软硬件环境进行基本设置,将 CPU 从实模式切换到保护模式。
    实模式和保护模式参考(http://blog.csdn.net/sx154893743/article/details/12378053)。

  3. 内核引导阶段,内核继续设置分段、分页、初始化中断、内存管理,以及相关设备的驱动程序
    之后内核启动系统初始化进程(init进程),第一个用户级进程开始执行。
    init 进程启动后,会读取一系列脚本文件,来启动一系列服务程序(systemd),包括图形界面,最后执行 /bin/login,显示登陆界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值