Linux的磁盘管理

1.本地存储设备的识别

插上U盘看设备

fdisk -l			##真实存在的设备 (不一定是系统识别的)
cat /proc/partition		##系统时别的设备
blkid				##系统可使用的设备
  • loop设备介绍:在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件
  • 在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。
  • 上面说的文件格式,我们经常见到的是 CD 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像文件。通过这种 loop mount (回环mount)的方式,这些镜像文件就可以被 mount 到当前文件系统的一个目录下。
  • 至此,顺便可以再理解一下 loop 之含义:对于第一层文件系统,它直接安装在我们计算机的物理设备之上;而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再绕了一圈的文件系统,所以称为 loop
df		##系统正在挂载的设备
-h:--human-readable,以人们易读的GB、MB、KB等格式显示
-H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024
Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。
1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。
Used:已经使用的空间大小。
Available:剩余的空间大小。
Use%:磁盘使用率。如果使用率在90%以上时,就需要注意了,避免磁盘容量不足出现系统问题,尤其是对于文件内容增加较快的情况(如/home、/var/spool/mail等)。
Mounted on:磁盘挂载的目录,即该磁盘挂载到了哪个目录下面

linux下设备都是以文件的方式来管理的,设备文件的位置为"/dev/"下
硬盘应该类似于这样的/dev/hda1或/dev/sda1表示
文件名的前两位为设备类型如并口硬盘为hd,串口硬盘或SCSI硬盘为sd
文件名的第三位为该类型设备的顺序号为abc……,如IDE1口(并口硬盘)的主盘为hda,从盘为hdb;SATA(串口硬盘)第一个设备为sda,第二个设备为sdb,依次类推
文件名的第四位为该硬盘的分区号1~4,为主分区或扩展分区,从5以后为逻辑分区,如IDE1口的C:为hda1,D:(D盘为该磁盘的第一个逻辑分区)为hda5,依次类推

/dev/xd*                    ##设备名称

x=s   /dev/sd*              ##sata硬盘,或者iscsi网络存储

x=v   /dev/vd*              ##虚拟硬盘,一般出现在虚拟机里

x=h   /dev/hd*              ##ide硬盘,一般出现在老式电脑中

*=a~...                     ##/dev/vda,系统中第一块虚拟硬盘

/dev/sda1                   ##系统中第一块sata硬盘的第一个分区

/dev/cdrom,/dev/sr[0-...]   ##系统中的光驱

/dev/mapper/*               ##系统中的虚拟设备

mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了

2.设备的挂载和卸载

1.设备名称

/dev/xdx	##/dev/hd0 /dev/hd1 /dev/sda /dev/sdb  /dev/sda1 /dev/sda2 /dev/sdb1
/dev/sr0	##光驱
/dev/mapper/*	##虚拟设备(用软件模拟出的设备)

2.设备的挂载

mount  设备	挂载点
mount /dev/sdb1	 /mnt			##挂载sdb1到mnt
umount /mnt| /dev/sdb1			##卸载
mount -o ro /dev/sdb1	 /mnt		##只读挂载
mount 					##查看挂载信息
mount -o remount,rw /dev/sdb1 | /mnt	##重新读写挂载

3.解决设备正忙情况

[root@foundation51 ~]# umount /mnt/
umount: /mnt: target is busy.			##有程序在使用此设备
        (In some cases useful info about processes that 
         the device is found by lsof(8) or fuser(1))

解决方法1

fuser -vm /mnt	#查看/mnt谁在用
fuser -kvm /mnt	#查看并结束(开一个shell进入mnt,在另一个shell里结束)
umount /mnt

解决方法2

lsof /mnt
[root@foundation0 ~]# lsof /mnt/
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    27446 root  cwd    DIR   8,17     4096    2 /mnt

kill -9 27446
umount /mnt

3.磁盘分区

1.硬盘0磁道1扇区的512个字节中记录的信息如下

512=446     +              64      +        2
     ^		  	            ^		        ^	
mbr(主引导记录)	     mpt(主分区表)   55aa(硬盘的有效性标实)
  • 硬盘分区标
    64
    1个分区占用16个字节
    1块硬盘上最多可以划分4个主分区
 dd if=/dev/zero of=/dev/vda bs=446 count=1

恢复:
添加光驱,选择从光驱启动,进入trubleshooting,rescue

chroot /mnt/sysimage
grub2-install /dev/vda
exit * 2

=====================================
试验
证明只能有4个分区,新加一个硬盘vdb
dd if=/dev/vdb of=/mnt/mbr1 bs=512 count=1
然后新建一个分区
dd if=/dev/vdb of=/mnt/mbr2 bs=512 count=1
hexdump -C /mnt/mbr1

2.分区步骤

1.fdisk -l
2.fdisk /dev/vdb
m
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  ##修改分区id
   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 (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p		##主分区
Partition number (1-4, default 1): 	##id用默认
First sector (2048-20971519, default 2048):     ##分区起始
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +500M ##分区大小
Partition 1 of type Linux and of size 500 MiB 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 / 512 bytes
Disk label type: dos
Disk identifier: 0xb2cb6457

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     1026047      512000   83  Linux

Command (m for help): wq

当系统已经有三个主分区时

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e		##3个主分区出现要先划分扩展分区
Selected partition 4
First sector (3074048-20971519, default 3074048): 
Using default value 3074048
Last sector, +sectors or +size{K,M,G} (3074048-20971519, default 20971519): 
Using default value 20971519
Partition 4 of type Extended and of size 8.5 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 / 512 bytes
Disk label type: dos
Disk identifier: 0xb2cb6457

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     1026047      512000   83  Linux
/dev/vdb2         1026048     2050047      512000   83  Linux
/dev/vdb3         2050048     3074047      512000   83  Linux
/dev/vdb4         3074048    20971519     8948736    5  Extended	##把所有空间都给E

Linux的文件系统(补充)

4.给设备安装文件系统

ext3 rhel5及之前的版本 最多支持32TB的文件系统和2t文件,实际2tb文件系统,16G文件
ext4 rhel6 1EB 16TB
xfs rhel7 18EB 9eb 7G/s 4G/s
读取速度极限 写入速度极限
#硬件对硬件,软件对软件

mkfs.xfs	 /dev/vdb1	
mount /dev/vdb1	 /mnt	
man 5 fstab
vim /etc/fstab
设备		挂载点	文件系统	挂载参数	是否备份	是否检测
/dev/vdb1	/mnt	xfs		defaults	0		0

mount -a
#fstab比rc.local快,在硬件检测完,内核启动时就会挂载
#演示fstab写错怎么排错

5.swap分区管理

#partprobe同步分区表,在设备被使用的时候用(比如某个设备正在挂载)
设备正在使用时需用partprobe同步分区表
1)swap分区建立
划分分区并设定分区标签未82
mkswap /dev/vdb6
swapon -a /dev/vdb6
swapon -s
vim /etc/fstab
/dev/vdb6 swap swap defaults 0 0

2)swap分区删除
vim /etc/fstab

swapoff /dev/vdb6
swapon -s

6.配额

再分一个vdb7为100M,格式化xfs,建立/public,权限改为777
挂载vdb7到/public,权限变化(要先挂设备,再改权限,权限是记录在设备里的)

配额是针对与分区的。因为只有在vdb7中才会受到限制

mount -o usrquota /dev/vdb7 /public
chmod 777 /public
切换到student用户,dd if=/dev/zero of=/public/studentfile bs=1M count=20
30
如果多人用这个目录,没人限制他

edquota -u studnet
Disk quotas for user student (uid 1000): (硬限,最多写多少)单位为kb 1GB=1024MB,1MB=1024KB
Filesystem blocks soft hard inodes soft hard
/dev/vdb7 0 (软限,超过警告) 0 0 0 0 0
用户在设备上已经存在的数据大小
(事实)
inodes(文件个数)
##改的时候改硬限

vim /etc/fstab
/dev/vdb7 /public xfs defaults,usrquota 0 0

测试
[student@dns-server ~]$ dd if=/dev/zero of=/public/studentfile bs=1M count=200

7.磁盘加密

在锁之上放文件系统
luks加密

cryptsetup luksFormat /dev/vdb8
YES
cryptsetup open /dev/vdb8 westos
ll /dev/mapper/westos
mkfs.xfs /dev/mapper/westos
mount /dev/mapper/westos /mnt/
touch /mnt/file{1…10}
umount /mnt/
cryptsetup close westos 关闭之后/dev/mapper/westos文件消失
挂载原始设备/dev/vdb8也不行,是luks加密的

cryptsetup open /dev/vdb8 westos
mount /dev/mapper/westos  /mnt/
  • 执行命令 tail -f /var/log/syslog 便于观察U盘插拔挂载点的变化
    插上 u盘 (只读文件权限的u盘)
    执行命令 fdisk -l 查看U盘所在的文件系统,单系统的所在的文件系统一般为/dev/sdb1,双系统,挂载点一般是/dev/sdc1
    执行命令 df 查看U盘的挂载点,我的挂载点为/media/tonny/usb(其中tonny为我的用户名,usb为我的usb名)
    执行命令 umount /media/tonny/usb 卸载挂载点
    执行命令 sudo dosfsck -v -a /dev/sdc1 修复文件系统
    之后USB就可以读写了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值