Linux磁盘管理

目录

一、建立磁盘分区

Ⅰ.查看磁盘信息

Ⅱ.扫盘操作

Ⅲ.选择磁盘设备进行操作

Ⅳ.格式化文件系统并挂载

二、LVM 

Ⅰ、逻辑卷的创建过程

(1)PV(Physical Volume,物理卷)

(2)VG(Volume Group,卷组)

(3)LV(Logical Volume,逻辑卷) 

PE(Physical Extend,物理拓展)

Ⅱ、操作命令

三、磁盘配额

Ⅰ、设置磁盘配额

Ⅱ、报错

Ⅲ、磁盘配额

四、磁盘设置不当导致的开机报错


一、建立磁盘分区

Ⅰ.查看磁盘信息

在linux中,我们使用fdisk -l 命令对磁盘及分区信息进行查看 

Linux磁盘管理_第1张图片

在vmware中,我们给linux系统增加一块硬盘,这里我已经添加好了(硬盘2)

Linux磁盘管理_第2张图片

Ⅱ.扫盘操作

ls /sys/class/scsi_host/
#查看host个数
echo "- - -" > /sys/class/scsi_host/host编号/scan
#扫盘操作

Ⅲ.选择磁盘设备进行操作

进入系统,使用命令fdisk /dev/sdb 来进入我们新建的硬盘进行设置

Linux磁盘管理_第3张图片

 设置如下

命令(输入 m 获取帮助):n
Partition type:                                     #新建磁盘分区的种类,p 主分区 ,e 扩展分区
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):                               #分区号设置
起始 扇区 (20973568-41943039,默认为 20973568):     #设置分区起始,一般默认
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
#设置分区的容量或结束+**K,M,G
将使用默认值 41943039
分区 3 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w                              #保存磁盘分区设置

Ⅳ.格式化文件系统并挂载

mkfs.xfs /dev/sdb3     命令格式化分区为xfs文件系统

进入/etc/fstab 来进行永久挂载(不会因系统重启而丧失配置)

Linux磁盘管理_第4张图片

使用

#/etc/fstab
/dev/sdb2     /data/sdb2      xfs       defaults          0    0
   (挂载设备)     (挂载点)    (文件系统) (挂载选项)*(是否dump进行备份)(是否fsck检查分区)
                  



或者磁盘分区uuid的形式进行配置,使用ls -l /dev/disk/by-uuid 查看目标磁盘的uuid,复制过来

#/etc/fstab
UUID=e3402bb4-3071-4dbb-88dd-43955afd90d1  /data/sdb2     xfs        defaults   0   0
(挂载设备的uuid)                           (挂载点)   (文件系统)  (挂载选项)   同上


mount -a 刷新挂载设置


*:0表示不备份,1表示优先备份,2标识备份   0表示不检查,1表示优先检查,2表示检查

创建一个挂载点,与/etc/fstab里的一致

mkdir /data/sdb2 -p

进行挂载

mount  /dev/sdb2  /data/sdb2
挂载    挂载设备    挂载点

最后使用df -hT查看已挂载磁盘信息

Linux磁盘管理_第5张图片

-s 对每个Names参数只给出占用的数据块总数
-a 递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定一s,也不指定一a,则只显示0Mames中的每-个目录及其中的各子目录所占的磁盘块数
-k 以1024字节为单位列出磁盘空间使用情况
-l 计算所有的文件大小,对硬链接文件则计算多次
-h 以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB
-p 使用POSIX输出格式
-T 显示文件系统
-x 跳过在不同文件系统上的目录不予统计
-i 显示inode信息而非块使用量

二、LVM 

LVM(Logical Volume Manager)逻辑卷管理的,是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。

Ⅰ、逻辑卷的创建过程

把物理磁盘或者分区初始化称为物理卷(PV),然后把若干个PV加入VG(卷组),最后在VG上划分逻辑的分区(LVM),LVM可以当做普通的分区进行格式化和挂载。

(1)PV(Physical Volume,物理卷)

物理磁盘或分区。


(2)VG(Volume Group,卷组)

多个物理卷合起来就组成了卷组;组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区;我们可以把卷组想象为一块逻辑硬盘。


(3)LV(Logical Volume,逻辑卷) 

卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷;逻辑卷可以被格式化和写入数据;我们可以把逻辑卷想象为分区。


PE(Physical Extend,物理拓展)

PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的;PE 的大小是可以配置的,默认是 4MB。
 

Ⅱ、操作命令

功能/命令      物理卷管理      卷组管理       逻辑卷管理

扫描               pvscan           vgscan            lvscan

建立               pvcreate         vgcreate         lvcreate

显示               pvdisplay        vgdisplay       lvdisplay

删除               pvremove       vgremove      lvremove

扩展                     —             vgextend        lvextend

缩小                     —             vgreduce        lvreduce
 

注意,如果要对磁盘分区进行操作,该磁盘分区必须要退出挂载(使用umount)

pvcreate   /dev/sdb1   /dev/sdb2            #创建物理卷

pvs  或者  pvdisplay                         #查看物理卷


 WARNING: Device for PV 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5 not found or rejected by a filter.
  Couldn't find device with uuid 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5.
  PV         VG      Fmt  Attr PSize   PFree  
  /dev/sda2  centos  lvm2 a--  <19.51g      0 
  /dev/sdb1  vg_test lvm2 a--   <5.00g      0 
  /dev/sdb2  vg_test lvm2 a--   <5.00g   4.99g
  [unknown]  centos  lvm2 a-m  <20.00g <20.00g


vgcreate  vg_name   /dev/sdb1   /dev/sdb2   #创建卷组

vgs  或者  vgdisplay                        #查看卷组


WARNING: Device for PV 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5 not found or rejected by a filter.
  Couldn't find device with uuid 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5.
  VG      #PV #LV #SN Attr   VSize  VFree  
  centos    2   2   0 wz-pn- 39.50g <20.00g
  vg_test   2   1   0 wz--n-  9.99g   4.99g


lvcreate -L 5G -n lv_name vg_name           #创建逻辑卷-L设置大小-n设置名称,要操作的物理卷组

lvs   或者     lvdisplay                    #查看逻辑卷


  WARNING: Device for PV 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5 not found or rejected by a filter.
  Couldn't find device with uuid 67Fxpu-S9ou-yycO-21og-NoIc-W3Il-mcNib5.
  LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    centos  -wi-ao---- <18.73g                                                    
  swap    centos  -wi-ao---- 800.00m                                                    
  lv_test vg_test -wi-ao----   5.00g 


mkdir /data/lvtest                          #创建挂载点
mkfs.xfs  /dev/vgname/lvname                #格式化逻辑卷以进行挂载
进入/etc/fstab设置挂载
mount  /data/vgname/lvname  /data/lvtets    #将/dev/vgname/lvname 挂载到/data/lvtest下
df  -hT                                     #查看挂载情况


/dev/mapper/vg_test-lv_test xfs       5.0G   33M  5.0G    1% /data/lvtest

在对磁盘分区进行操作需要卸载挂载时,如果操作的目录位置处于后台进程运行中时,会出现卸载失败报错的情况,这时我们可以使用  lsof  命令配合  grep   过滤出我们需要查看的进程信息,再使用   kill  命令加上目标进程的PID,"杀死“目标进程,这时我们再次尝试卸载磁盘分区就没有问题了。

lsof | grep ***
kill -9 ********
umonut ****

三、磁盘配额

什么是磁盘配额:

磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可以给不同用户或组在某个特定文件系统中使用一定额度的空间的限制,以妥善分配系统资源,防止个别用户占用大量磁盘空间的恶意行为。

Ⅰ、设置磁盘配额

我们从建立磁盘分区开始

fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):

格式化文件系统ext4(注意:只有ext文件类型才支持文件配额)

mkfs.ext4 /dev/sdb1
*sdb1需要处于非mount状态

Ⅱ、报错

如果该磁盘分区之前进行过其他操作,可能会报错

[root@lnx1 ~]# mkfs.ext4 /dev/sde1
mke2fs 1.42.9 (28-Dec-2013)
/dev/sde1 is apparently in use by the system; will not make a 文件系统 here!

解决方法

通过dm解决问题,查看dm状态,显示dm设备信息

[root@lnx1 ~]# dmsetup status
centos-swap: 0 1638400 linear 
centos-root: 0 39272448 linear 
3600508e00000000017cd3aa6870c460a: 0 1952448512 multipath 2 0 0 0 1 1 A 0 1 0 8:16 A 0 

删除dm信息,并再次查看dm状态信息

[root@ljp ~]# dmsetup remove_all
[root@ljp-host ~]# dmsetup status
No devices found

再次进行格式化,格式化成功

[root@lnx1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 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: 完成 

进入/etc/fstab进行设置

/dev/sdb1               /data                  xfs           defaults   0 0
 
mount -a

 挂载成功

sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    3G  0 part /data

Ⅲ、磁盘配额

接下来我们进行磁盘配额的操作,首先检查系统内有无quota工具,yum install -y quota

root@lnx1 /]# yum install -y quota
已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Loading mirror speeds from cached hostfile
ali                                                                                                                                                                                | 3.6 kB  00:00:00
epel                                                                                                                                                                               | 2.9 kB  00:00:00
update                                                                                                                                                                             | 2.9 kB  00:00:00
软件包 1:quota-4.01-19.el7.x86_64 已安装并且是最新版本
无须任何处理
做磁盘配额,首先执行“setenforce 0” 关闭selinux


建立磁盘配额的配置文件

[root@ljp ~]# quotacheck [选项] [分区名]

选项:

-a:扫描/etc/mtab 文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面就不需要加入分区名了

-c:不管原有的配置文件,重新扫描并建立新的配置文件

-u:建立用户配额的配置文件,也就是生成 aquota.user 文件

-g:建立组配额的配置文件,会生成 aquota.group 文件

-v:显示扫描过程

-m:强制以读写的方式扫描文件系统,和-M 类似。一般扫描根分区时使用。

-f:强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用

[root@ljp ~]# quotacheck -avug

对分区以支持配额的方式挂载,使用带“-o usrquota,grpquota”选项remount挂载后使用mount命令查看

/dev/sdb1 on /data/B type xfs (rw,relatime,usrquota,grpquota)

使用quotaon开启磁盘配额

quotaon /data/B

命令quotaon -p 分区 可以查看指定分区的磁盘配额功能是否开启

[root@lnx1 B]# quotaon -p /data/B
group quota on /data/B (/dev/sdb1) is on
user quota on /data/B (/dev/sdb1) is on

使用edquota -u 用户名  命令对用户进行配额限制  |  edquota -g 组名 对用户组进行配额限制 

-t: 设定宽限时间  -p: 复制配额限制。如果已经设定好某个用户的配额限制,其他用户的配额限

[root@lnx1 B]# edquota -u jack
Disk quotas for user jack (uid 1002):
  Filesystem      blocks       soft       hard     inodes     soft     hard
  /dev/sdb1            0       5120      10240          0        1        2
~                                                                                                    
~                             容量大小    容量大小             文件个数  文件个数                           
~                             软限制      硬限制               软限制    硬限制                                  
~                                                                                               
~                                                                                                    
~                                                                                                    
~                                                                                                    
~                                                                                                    
"/tmp//EdP.aTH2nIW" 3L, 216C

 使用dd转换工具验证是否生效,切换到jack用户,jack用户最多能写入10M,最多可以创建2个文件,与磁盘配额相符

[root@lnx1 data]# su jack
[jack@lnx1 data]$ dd if=/dev/zero of=/data/B/2.txt bs=10M count=5
dd: 写入"/data/B/2.txt" 出错: 超出磁盘限额
记录了2+0 的读入
记录了1+0 的写出
10485760字节(10 MB)已复制,0.00976465 秒,1.1 GB/秒

[jack@lnx1 B]$ touch {1..3}.txt
touch: 无法创建"3.txt": 超出磁盘限额
[jack@lnx1 B]$ ls
1.txt  2.txt

需要注意的是,当同时配置了用户限额和组限额时,限制最大的那个生效,用户的附加组设置配额是不生效的

可以执行“quota”和“quota -g”分别查看自己的配额与组配额的使用情况

Disk quotas for user jack (uid 1002): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1   10240*   5120   10240   6days       2*      1       2   6days
[jack@lnx1 B]$ quota -g
Disk quotas for group jack (gid 1002): none

关闭磁盘配额 

[root@ljp ~]# quotaoff [选项] [分区名]

-a:依据/etc/mtab 文件关闭所有的配额分区。如果不加-a,后面就一定要指定分区名

-u:关闭用户配额

-g:关闭组配额

[root@ljp ~]# quotaoff –a

#依据/etc/mtab 文件关闭配额分区

四、磁盘设置不当导致的开机报错

我们可以在/etc/fstab设置开启挂载,不过如果在/etc/fstab定义了挂载信息可是实际并不存在此分区,开机进行分区挂载时就会产生错误,导致我们不能进入操作系统,这是只需要进入急救模式,对/etc/fstab文件进行修改,将不存在的设备信息进行删除,保存退出后进行重启就可以了。

你可能感兴趣的:(linux基础,大数据)