Linux系统存储管理

####磁盘:
总512byte,446bytes主引导记录,64bytes记录引导分区(16bytes记录一个分区),2bytes分区的标识
MBR的分区方式最多16个分区

设备的查看

(1)发现系统中的设备

 fdisk -l                                                ###查看系统中真实存在的设备
 cat /proc/partitions                                    ###查看系统中被系统识别设备

(2)系统发现的,被系统利用的,有id信息

 blkid                                                    ###查看设备的id信息,能用的设备(格式化后的)

(3)发现并且挂载的设备

 df -h                                                     ###2的n次方(1024)
 df -H                                                     ###10的n次方(1000)

挂载:

 mount /dev/vdb
 mount -o remount,ro /dev/vdb                              ###改变挂载参数
 mount -o noatime /dev/vdb                                 ###不改变访问时间(access)stat+file查看

不能取消挂载(设备忙):

1.关闭进程

(1)进程发现的方式

 fuser -vm /dev/sdb1
 lsof /dev/sdb1

(2)进程终止的方式

 kill -9 pid
 fuser -kv /dev/sdb1

2.强制卸载

 umount -lf

分区划分

fdisk /dev/vdb                                                                ###小于2T,分区信息保存后才生效
elcome 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                                                       ###帮助
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
   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):                                                           ###默认位主分区
Using default response p
Partition number (1-4, default 1): 1                                          ###主分区id
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): 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: 0x193488c3

   Device Boot      Start         End      Blocks   Id  System
 /dev/vdb1            2048      206847      102400   83  Linux

 Command (m for help): wq                                                   ###保存推出,如果安q表示放弃更改退出
partprobe                                                                   ###同步分区表
cat /proc/partitions                                                        ###查看系统识别的分区信息
 mkfs.xfs  /dev/vdb1                                                        ##格式化
mount /dev/vdb5  /mnt                                                       ##临时挂载

vim /etc/fstab                                                              ##永久挂载
devic   mountpoint  ftype   defaults(mountpoint)    0 0
/dev/vdb1   /mnt       xfs    defaults              0     0
   设备       挂载点   系统格式    参数         不备份  不检查磁盘
 mount -a                                                                   ###使/etc/fstab中记录的挂载策略生效

parted改变分区方式

我们以gpt为例:gpt格式分区最多128个,大小18个eb,1eb=1024t

 [root@dream ~]# parted /dev/vdb
 GNU Parted 3.1
 Using /dev/vdb
 Welcome to GNU Parted! Type 'help' to view a list of  commands.
 (parted)  mklabel                                                          
 New disk label type?  gpt                                                  
 Warning: The existing disk label on /dev/vdb will be  destroyed and all data on this disk will be lost. Do you
 want to continue?
 Yes/No?  y                                                                 
 (parted) quit 

swap分区

交换分区,当内存不够时,会把多于的数据暂时放在此分区,一般取内存的1.5-2倍,内存大于8g,给8G或16G就好。

swap分区不够应急处理:

 dd if=/dev/zero of=/swap bs=1M count=4000
 mkswap /swap                                                              ###格式化swap分区                  
 swapon /swap                                                              ###打开swap分区

swap的建立方法

分区

 fdisk /dev/vdb ###分区
 fdisk 中修改swap分区标识

建立与查看

 mkswap /dev/vdbn                                                       ###格式化swap分区
 swapon -a /dev/vdbn                                                    ###打开分区,并读取/etc/fstab文件
 vim /etc/fstab
 /dev/vdbn  swap    swap    defaults    0 0
 swapoff /dev/vdbn                                                      ###关闭swap分区
 swapon -s                                                              ###查看已挂载的swap分区

磁盘加密

 fdisk  /dev/vdb                                                        ###创建新的分区

我们建立一个vdb1分区大小为1G

Linux系统存储管理_第1张图片

加密vdb1

[root@dream ~]# 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@dream ~]# cryptsetup open /dev/vdb1 dream                        ###打开分区,dream为自我取的名字可自定义
   Enter passphrase for /dev/vdb1:                                       ###输入刚设置的密码

格式化分区为xfs

 [root@dream ~]# mkfs.xfs /dev/mapper/dream 
 meta-data=/dev/mapper/dream      isize=256    agcount=4,  agsize=65408 blks
          =                       sectsz=512   attr=2,  projid32bit=1
          =                       crc=0
 data     =                       bsize=4096    blocks=261632, imaxpct=25
          =                       sunit=0      swidth=0  blks
 naming   =version 2              bsize=4096   ascii-ci=0  ftype=0
 log      =internal log           bsize=4096    blocks=853, version=2
          =                       sectsz=512   sunit=0  blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0,  rtextents=0

挂载到/mnt下

通过挂载我们就能正常访问加密分区

 [root@dream ~]# mount /dev/mapper/dream /mnt/
 [root@dream ~]# df -h
 Filesystem         Size  Used Avail Use% Mounted on
 /dev/vda1           10G  3.0G  7.1G  30% /
 devtmpfs           459M     0  459M   0% /dev
 tmpfs              474M   80K  474M   1% /dev/shm
 tmpfs              474M   13M  462M   3% /run
 tmpfs              474M     0  474M   0% /sys/fs/cgroup
 /dev/mapper/dream 1019M   33M  987M   4% /mnt

关闭访问:即卸载掉挂载并关闭

  [root@dream ~]# umount /mnt/                                               ###卸载挂载
  [root@dream ~]# df -h
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/vda1        10G  3.0G  7.1G  30% /
  devtmpfs        459M     0  459M   0% /dev
  tmpfs           474M   80K  474M   1% /dev/shm
  tmpfs           474M   13M  462M   3% /run
  tmpfs           474M     0  474M   0% /sys/fs/cgroup
  [root@dream ~]# cryptsetup close dream                                    ###关闭(再次打开需要密码)

加密磁盘的永久挂载

配置文件的修改与建立

 [root@dream ~]# vim /etc/crypttab
 解密后设备管理文件             设备       加密字符存放文件
    dream                  /dev/vdb1     /root/luks_passwd
 [root@dream ~]# vim /root/luks_passwd                                     ###写入你刚设置的密码 
 [root@dream ~]# chmod 600 /root/luks_passwd                               ###降低密码文件的权限,不允许查看与修改

建立关系并自动挂载

 [root@dream ~]# cryptsetup luksAddKey /dev/vdb1  /root/luks_passwd        ###建立关系,关联设备和密码文件
 Enter any passphrase:                                                     ###输入之前设置密码  
 /dev/mapper/westos /mnt    xfs defaults    0 0
  mount -a        检测/etc/fstab自动挂载            

加密分区的清除

  [root@dream ~]# vim /etc/fstab                                           ###进入删除自动挂载
  [root@dream ~]# > /etc/crypttab                                          ###清空文件
  [root@dream ~]# rm -fr /root/luks_passwd                                 ###删除文件
  [root@dream ~]# umount /mnt/                                             ###卸载
  [root@dream ~]# cryptsetup close dream                                   ###关闭
  [root@dream ~]# mkfs.xfs /dev/vdb1 -f                                    ###强制格式化
  meta-data=/dev/vdb1              isize=256    agcount=4, agsize=65536 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=0
 data     =                       bsize=4096   blocks=262144, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0

磁盘阵列(RAID)

分区

 fdisk  /dev/vdb                                                           ###创建三个分区大小分别为1G,分区标示为raid
    Device Boot      Start         End      Blocks   Id  System
 /dev/vdb1            2048     2099199     1048576   fd  Linux raid autodetect
 /dev/vdb2         2099200     4196351     1048576   fd  Linux raid autodetect
 /dev/vdb3         4196352     6293503     1048576   fd  Linux raid autodetect

我们以RAID 1为例:

 [root@dream ~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}    ###制作双磁盘一个闲置   -C:create -a:add -l:RAID几 -n:数量 -x闲置数
 mdadm: Note: this array has metadata at the start and
     may not be suitable as a boot device.  If you plan to
     store '/boot' on this device please ensure that
     your boot-loader understands md/v1.x metadata, or use
     --metadata=0.90
 Continue creating array? y
 mdadm: Defaulting to version 1.2 metadata
 mdadm: array /dev/md0 started.
 [root@dream ~]# mkfs.xfs /dev/md0                                         ###格式化
 meta-data=/dev/md0               isize=256    agcount=4, agsize=65500 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=0
 data     =                       bsize=4096   blocks=262000, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
 log      =internal log           bsize=4096   blocks=853, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 [root@dream ~]# mount /dev/md0 /mnt                                       ###挂载
 [root@dream ~]# df -h                                                     ###查看挂载
 Filesystem      Size  Used Avail Use% Mounted on
 /dev/vda1        10G  3.0G  7.1G  30% /
 devtmpfs        459M     0  459M   0% /dev
 tmpfs           474M   80K  474M   1% /dev/shm
 tmpfs           474M   13M  462M   3% /run
 tmpfs           474M     0  474M   0% /sys/fs/cgroup
 /dev/md0       1021M   33M  988M   4% /mnt

这样RAID1就做好了,可以用命令查看工作状态:可以发现2块工作1快闲置

    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

删除RAID

 [root@dream ~]# umount /mnt                
 [root@dream ~]# mdadm -S /dev/md0
 mdadm: stopped /dev/md0
 [root@dream dev]# fdisk /dev/vdb                                           ###删除建立的分区

mdadm的常用命令

 mdadm -f /dev/md0  /dev/vdb1                                               ###失效指定硬盘
 mdadm -D /dev/md0                                                          ###查看raid状态
 mdadm -r /dev/md0  /dev/vdb1                                               ###删除指定硬盘
 mdadm -a /dev/md0 /dev/vdb1                                                ###添加指定硬盘
 umount /mnt/                                                               ###取消挂载
 mdadm  -S /dev/md0                                                         ###停止使用

配额

让用户只能使用固定的空间大小和建立的文件个数有限,极大地保证服务器的稳定性
 [root@dream dev]# mount -o usrquota,grpquota /dev/vdb1 /mnt/                ###挂载
 [root@dream dev]#chmod 777 /mnt                                             ###给权限rwx
 [root@dream dev]# df -h
 Filesystem      Size  Used Avail Use% Mounted on
 /dev/vda1        10G  3.0G  7.1G  30% /
 devtmpfs        459M     0  459M   0% /dev
 tmpfs           474M   80K  474M   1% /dev/shm
 tmpfs           474M   13M  462M   3% /run
 tmpfs           474M     0  474M   0% /sys/fs/cgroup
 /dev/vdb1      1014M   33M  982M   4% /mnt
 [root@dream dev]# useradd dream                                            ###新建一个用户dream
 [root@dream dev]# echo "123456" |passwd --stdin dream                      ###把密码设置为123456 
 注意:如果为ext格式则需要:  quotacheck -u  /dev/vdb1:扫描配额文件   quotaon -uv /dev/vdb1:打开文件配额 
 [root@dream dev]# edquota -u dream                                         ###打开配额文件
 Disk quotas for user dream (uid 1001):
     设备           已存在文件    软额度     最大额度 存在文件数量           文件最多个数
  Filesystem                   blocks       soft       hard     inodes        soft     hard
  /dev/vdb1                       0           0       102400      1             0        2

在dream用户测试

我们可以发现只能建立2个文件,并且容量只能为100M

 [dream@dream /]$ cd /mnt
 [dream@dream mnt]$ touch file{1..3}           
 touch: cannot touch ‘file3’: Disk quota exceeded
 [dream@dream mnt]$ touch file{1..2}
 [dream@dream mnt]$ ls
 file1  file2
 [dream@dream mnt]$ rm -rf *                                                 ###删除之前建立的文件
 [dream@dream mnt]$ dd if=/dev/zero of=/mnt/file bs=1M count=100             ###生成100M文件
 100+0 records in
 100+0 records out
 104857600 bytes (105 MB) copied, 0.159126 s, 659 MB/s
 [dream@dream mnt]$ ls
 file
 [dream@dream mnt]$ du -sh file                                              ###查看文件的大小
 100M    file
 [dream@dream mnt]$ dd if=/dev/zero of=/mnt/file bs=1M  count=101            ###生成101M文件
 dd: error writing ‘/mnt/file’: Disk quota exceeded
 101+0 records in
 100+0 records out
 104857600 bytes (105 MB) copied, 0.115352 s, 909 MB/s
 [dream@dream mnt]$ du -sh file                                              ###发现大于100M时保存的还是100M
 100M    file

你可能感兴趣的:(运维)