磁盘管理

文章目录

  • 磁盘管理1
    • 基本分区
      • 磁盘简介
        • 区分
        • 尺寸接口
        • 术语
        • 命名
        • 分区方式
            • MBR
            • GPT
      • 管理磁盘
        • 添加磁盘
        • 查看磁盘信息
        • 创建分区
        • 创建文件系统
        • 挂载mount
    • 逻辑卷LVM
      • 创建LVM
        • PV
        • VG
        • LV
        • 创建文件系统并挂载
            • 写入多于卷轴空间的文件
      • VG管理
      • LV扩容
      • 删除逻辑卷
    • 交换分区管理Swap
      • 简介
      • 增加swap
  • 磁盘管理2
    • 文件系统详解
      • EXT3/4文件系统
        • 类型
        • 系统限制
        • 名词
          • inode
          • block
          • superblock
    • 文件链接
      • 符号链接
      • 硬链接
    • RAID
      • RAID0
      • RAID1
      • RAID5
    • 实验

磁盘管理1

基本分区

磁盘简介

磁盘/硬盘/disk是一样的,不同于内存的是容量比较大

区分

  1. 机械硬盘
    机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成
  2. 固态硬盘
    固态驱动器,俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘

尺寸接口

尺寸 1.8、 2.5、 3.5 英寸
接口 早期IDE——现在SATA接口
转速 5400、 7200、 10000、 15000rpm
厂商 西部数据、 希捷、 三星/日立/金士顿

术语

盘片、柱面、扇区、磁道
扇区:将一个盘面分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区

命名

kernel对不同接口的硬盘命名方式 : RHEL7/centos7
IDE(并口)
/dev/hda古老
SATA(串口)
/dev/sda

  • /dev 设备文件目录
  • sda 一个文件
  • s sata是串口
  • d 磁盘
  • a 第一块

分区方式

MBR

主引导记录,是位于磁盘最前端的一段引导
MBR支持最大的磁盘容量是2TB。设计时分配4个分区
如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区
扩展分区是不能放东西的,需要划分逻辑分区才能放东西
只有主分区才能装系统
一般是三个主分区,一个扩展分区(N个逻辑分区)。而不是一个主分区,一个扩展分区。主分区不用省。

GPT

全局唯一标识分区表
支持大于2T的硬盘,支持128个分区

管理磁盘

添加磁盘

修改虚拟机设置直接添加,磁盘越大格式化越慢,记得要关机
分区(MBR/GPT)->格式化/文件系统Filesystem->挂载mount
分别对应:隔间->放家具/打造柜子->加个门/目录

查看磁盘信息

//b代表block,块,意思之前的计算机很大块
[root@192 ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 122 23:36 /dev/sda
brw-rw----. 1 root disk 8,  1 122 23:36 /dev/sda1
brw-rw----. 1 root disk 8,  2 122 23:36 /dev/sda2
brw-rw----. 1 root disk 8, 16 122 23:36 /dev/sdb
brw-rw----. 1 root disk 8, 32 122 23:36 /dev/sdc
brw-rw----. 1 root disk 8, 48 122 23:36 /dev/sdd
brw-rw----. 1 root disk 8, 64 122 23:36 /dev/sde
brw-rw----. 1 root disk 8, 80 122 23:36 /dev/sdf
brw-rw----. 1 root disk 8, 96 122 23:36 /dev/sdg
[root@192 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
sdc               8:32   0    5G  0 disk 
sdd               8:48   0    5G  0 disk 
sde               8:64   0    5G  0 disk 
sdf               8:80   0    5G  0 disk 
sdg               8:96   0    5G  0 disk 
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64

创建分区

MBR:把房子分为卧室和客厅

[root@192 ~]# fdisk /dev/sdb
//启动分区工具,进入会话模式
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xd7b84c9f 创建新的 DOS 磁盘标签。
//欢迎界面
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
//选择主分区或者扩展分区
分区号 (1-4,默认 1)1
//选择分区号
起始 扇区 (2048-10485759,默认为 2048)//选择磁盘开始的扇区,0-2048是个小账本(mbr)
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759)+2G
//选择磁盘分区结束的扇区,即分区大小
//实际环境根据磁盘划分,如4T磁盘,可以500G一个分区
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):w
//输入w(write)保存分区信息,自动退出分区工具
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@192 ~]# partprobe /dev/sdb
//刷新分区表
[root@192 ~]# fdisk -l /dev/sdb
//查看分区结果
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理)512 字节 / 512 字节
I/O 大小(最小/最佳)512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd7b84c9f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
help 命令操作(用n进入)
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
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
u change display/entry units
v verify the partition table
w write table to disk and exit 保存退出
x extra functionality (experts only)

创建文件系统

mkfs.ext4 /dev/sdb1mkfs -t ext4 /dev/sdb2
extend4扩展文件系统第四代。是文件系统的类型
/dev/sdb1第二块串口硬盘的第一个分区。
准备格式化了

[root@192 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)//一个格子的大小block 4k
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

挂载mount

临时挂载随便放,永久挂载要放到/etc/fstab
手动挂载

[root@192 ~]# mkdir /mnt/disk1
//创建挂载点,一个分区一个挂载点(可以放在任意位置)
[root@192 ~]# mount -t ext4 /dev/sdb1 /mnt/disk1
[root@192 ~]# df -hT
//h是人性化显示单位
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  974M     0  974M    0% /dev
tmpfs                   tmpfs     991M     0  991M    0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M    2% /run
tmpfs                   tmpfs     991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  4.7G   13G   28% /
/dev/sda1               xfs      1014M  211M  804M   21% /boot
tmpfs                   tmpfs     199M   52K  198M    1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /mnt/disk1

挂载之后写入挂载点(相当于上文中的/mnt/disk1)的文件就相当于写入了sdb1。
挂载相当于一个入口,用umount取消挂载后,文件还在硬盘里面,再次挂载就可以读取。

逻辑卷LVM

目的:管理磁盘的一种方式,性质与基本磁盘无异
特点:随意扩张大小

创建LVM

PV

物理卷(Physical Volume):将物理磁盘,转换成物理卷-PV

[root@192 ~]# pvcreate /dev/sdf
  Physical volume "/dev/sdf" successfully created.

VG

卷组 (Volume Group):创建卷组-VG

[root@192 ~]# vgcreate vg1 /dev/sdf
  Volume group "vg1" successfully created

LV

逻辑卷(Logical Volume)

//指定大小,单位M,G
//创建逻辑卷 -L 大小 -n 卷名 vg1 组名(lv1是卷名)
[root@192 ~]# lvcreate -L 4G -n lv1 vg1
  Logical volume "lv1" created.

创建文件系统并挂载

mkfs.ext4 /dev/vg1/lv1相当于初始化,其中/dev/卷族名/逻辑卷名
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1

写入多于卷轴空间的文件

命令:dd if=/dev/zero of=/mnt/lv1/1.txt bs=1M count=5000可以写入一堆文件

VG管理

扩大VG vgextend
环境:/dev/vg1容量由5G扩容到10G

[root@192 ~]# pvcreate /dev/sdg
  Physical volume "/dev/sdg" successfully created.
[root@192 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree   
  /dev/sda2  centos lvm2 a--  <19.00g       0 
  /dev/sdf   vg1    lvm2 a--   <5.00g 1020.00m
  /dev/sdg          lvm2 ---    5.00g    5.00g
[root@192 ~]# vgextend vg1 /dev/sdg
  Volume group "vg1" successfully extended

LV扩容

[root@192 ~]# vgs//查看VG空间
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
  vg1      2   1   0 wz--n-   9.99g 5.99g
[root@192 ~]# lvextend -L +4G /dev/vg1/lv1//扩容LV
  Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 8.00 GiB (2048 extents).
  Logical volume vg1/lv1 successfully resized.
[root@192 ~]# df -hT | tail -1
/dev/mapper/vg1-lv1     ext4      3.9G   16M  3.6G    1% /mnt/lv1
[root@192 ~]# resize2fs /dev/vg1/lv1//fs扩容
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg1/lv1 is now 2097152 blocks long.

[root@192 ~]# df -hT | tail -1
/dev/mapper/vg1-lv1     ext4      7.8G   18M  7.4G    1% /mnt/lv1

删除逻辑卷

[root@192 ~]# umount /dev/vg1/lv1
[root@192 ~]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
  Logical volume "lv1" successfully removed                                                  
[root@192 ~]# vgremove /dev/vg1
  Volume group "vg1" successfully removed
[root@192 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdd          lvm2 ---    5.00g 5.00g
  /dev/sde          lvm2 ---    5.00g 5.00g
[root@192 ~]# pvremove /dev/sdd /dev/sde
  Labels on physical volume "/dev/sdd" successfully wiped.
  Labels on physical volume "/dev/sde" successfully wiped.
[root@192 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
[root@192 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
[root@192 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g   

交换分区管理Swap

简介

作用:"提升"内存的容量,防止OOM(Out Of Memory)
swap大小
推荐为内存的2倍
4-16G:最小4G交换空间
16-64G:最小8G交换空间
64-256G:最小16G交换空间

增加swap

[root@192 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         884         281          24         814         900
Swap:          2047           0        2047
[root@192 ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759)+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
//此处省略磁盘信息

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4196351     2097152   83  Linux swap / Solaris

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码)82
//82是Linux的swap交换,原来的83也可以,但是最好用82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):p
//此处省略磁盘信息

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4196351     2097152   82  Linux swap / Solaris

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# partprobe /dev/sdc
[root@192 ~]# ll /dev/sdc*
brw-rw----. 1 root disk 8, 32 124 16:52 /dev/sdc
brw-rw----. 1 root disk 8, 33 124 16:52 /dev/sdc1
[root@192 ~]# mkswap /dev/sdc1
mkswap: /dev/sdc1: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=ac39f991-7bd6-4049-aaff-5b81b7c91cde
[root@192 ~]# swapon /dev/sdc1
[root@192 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         886         278          24         815         898
Swap:          4095           0        4095
//交换内存变大了2G
[root@192 ~]# swapoff /dev/sdc1
[root@192 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         884         279          24         816         900
Swap:          2047           0        2047

磁盘管理2

文件系统详解

文件系统类型 Windows:FAT16 FAT32 NTFS
Linux:EXT3 EXT4 XFS
索引:目录,字典的前十几页

EXT3/4文件系统

类型

索引(index)文件系统

系统限制

EXT3:文件系统最大16TB
EXT4:文件系统最大16TB
XFS:文件系统最大100TB

名词

inode

记录文件的属性(文件的元数据metadata)
元数据:文件的属性,大小,权限,属主,属组,连接数,块数量,块编号
一个文件占用一个inode,同时记录此文件数据所在的block number.
inode大小为128bytes。
inode决定了文件系统中文件的数量

block

存储文件的实际数据
实际存储文件的内容,若文件较大,会占用多个block
block大小:默认为4k

superblock
  1. block与inode的总量
  2. 未使用和已使用的inode/block数量
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
[root@192 disk1]# df -i | tail -1
/dev/sdb1                 65536      12   65524       1% /mnt/disk1

文件链接

符号链接

语法:ln -s /file1 /root/桌面/file11

[root@192 disk1]# ll /root/桌面/file11
lrwxrwxrwx. 1 root root 6 125 20:07 /root/桌面/file11 -> /file1
//可以看出链接数是1,软链接只能是1

总结:

  • 软链接快捷方式,可以对文件和目录做软链接
  • 软链接记录的只是源文件的绝对路径
  • 软链接失去源文件不可用,在原位置创建一个就又可以用了

硬链接

  1. 创建同分区硬链接成功,创建不同分区硬链接失败
  2. 硬链接的inode号相同,但并不占用block。使用df -k观察硬链接数量无变化
  3. 不允许将硬链接指向目录
[root@192 disk1]# echo 22 > /file2
[root@192 disk1]# ln /file2 /file2-h1
[root@192 disk1]# ls -l /file2 /file2-h1
-rw-r--r--. 2 root root 3 125 20:19 /file2
-rw-r--r--. 2 root root 3 125 20:19 /file2-h1
//链接数是几代表了硬链接了几个
[root@192 disk1]# rm -rf /file2
[root@192 disk1]# cat /file2-h1
22
//不依赖于源文件

总结

  • 硬链接只能针对文件做
  • 硬链接只能在同分区做(分区就是sdb1和sdb2的区别)

RAID

廉价磁盘冗余阵列(Redundant Array of Independent Disks)
作用:容错、提升读写速率
类型 RAID0 RAID1 RAID5

RAID0

条带集 2块硬盘以上,读写速率快100%*N,但不容错

RAID1

镜像集 2块磁盘,容量50%,读写速率一般,容错

RAID5

带奇偶校验条带集 3块硬盘以上,利用率(n-1)/n读写速率快,容错

实验

  1. 准备4块硬盘
  2. 创建RAID
    mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{c,d,e,f}
    -C创建 /dev/md0第一个RAID设备 RAID5 RAID成员数量 热备盘数量
  3. 格式化,挂载
    mkdir /mnt/raid5
    mount /dev/md0 /mnt/raid5
    文件系统 类型 容量 已用 可用 已用% 挂载点
    /dev/md0 ext4 9.8G 37M 9.2G 1% /mnt/raid5
    有一块校验盘一块热备盘所以容量只有9.8G
  4. 查看RAID信息
    mdadm -D /dev/md0//-D查看详细信息

你可能感兴趣的:(虚拟机)