首页 > 代码库 > 磁盘分区及LVM

磁盘分区及LVM

###1.磁盘分区####
fdisk /dev/磁盘
fdisk /dev/vdb
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.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x18f0d755.

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):
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                      ##保存退出
partprobe                             ##同步分区表
fdisk -l                              ##显示系统中所有可以使用的设备信息
      -c                              ##禁用旧的DOS模式
      -u                              ##以扇区的格式显示输出
blkid                                 ##显示系统正在使用的设备id
cat /proc/partitions                  ##查看系统可识别的分区
####2.文件系统#####
现在常见的文件系统有 ext4 (Red Hat Enterprise Linux 6 的标准文件系统),ext2(Linux中较旧的文件系统),vfat (针对较旧的版本的 Microsoft Windows 开发,在大量的系统和设备上受支持),xfs (Red Hat Enterprise Linux 7 的标准文件系统).
mkfs -t xfs /dev/vdb1                  ##格式化
meta-data=http://www.mamicode.com/dev/vdb1 isize=256 agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, 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
mkfs.xfs /dev/vdb2                 ##格式化
meta-data=http://www.mamicode.com/dev/vdb2 isize=256 agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, 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

####3磁盘加密####
 cryptsetup luksFormat /dev/vdb3           ##加密

WARNING!
========
This will overwrite data on /dev/vdb3 irrevocably.

Are you sure? (Type uppercase yes): YES      ##必须是大写YES
Enter passphrase:
Verify passphrase:
cryptsetup open /dev/vdb3 westos              ##解密
mkfs.xfs /dev/mapper/westos                   ##格式化
mount /dev/mapper/westos /mnt                 ##挂载
df                                            ##查看挂载
umount /dev/mapper/westos /mnt                ##卸载
cryptsetup close westos                       ##关闭加密文件
####开机自动挂载磁盘加密#####
vim /etc/crypttab                             ##编辑配置文件
westos             /dev/vdb3/   /root/lukspsfile                   
解密后设备管理文件       设备         加密字符所在文件
vim /root/lukspsfile                          ##编辑加密文件
chmod 600 /root/lukspsfile                    ##设置权限只允许超级用户访问
cryptsetup luksAddKey /dev/vdb3 /root/lukspsfile  ##将vdb3和lukspsfile关联
vim /etc/fstab                                ##编辑开机启动脚本
/dev/vdb1          /mnt        xfs     defaults,usrquota   0 0
:wq
reboot
##重启后会自动激活挂载在/mnt下
####加密清除#####
vim /etc/fstab                          ##编辑配置文件清除之前添加的内容
> /etc/crypttab                         ##清空文件内容
umount /mnt                             ##卸载
cryptsetup close westos                 ##关闭加密
mkfs.xfs /dev/vdb3                      ##格式化

####4.磁盘阵列#####
fdisk /dev/vdb                          ##划分磁盘
partprobe                               ##同步分区表
cat /proc/partitions                    ##查看系统能识别的分区
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
mkfs.xfs /dev/md0                       ##格式化
mount /dev/md0 /mnt                     ##挂载
watch -n 1 cat /proc/mdstat             ##监控

mdadm -f /dev/md0 /dev/vdb1             ##破坏第一个分区
mdadm -r /dev/md0 /dev/vdb1             ##删除第一个分区
mdadm -a /dev/md0 /dev/vdb1             ##添加分区
mdadm -D /dev/md0                       ##删除
umount /mnt/                            ##卸载
mdadm -S /dev/md0                       ##关闭设备
fdisk /dev/vdb                          ##可以利用此命令删除分区
partprobe
#####5.配额#####
mkdir /pub                              ##创建目录
mount -o usrquota /dev/vdb1 /pub        ##
chmod 1777 /pub                         ##设置权限
quotaon -uv /dev/vdb1                   ##显示用户配额
edquota -u student                      ##编辑配额用户

Disk quotas for user student (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vdb1                     10240          0      10240          1        0        0
su - student
dd if=/dev/zero of=/pub/file bs=1M count=100
dd: error writing ‘/pub/file’: Disk quota exceeded   ##报错 count 过大
11+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00763009 s, 1.4 GB/s
dd if=/dev/zero of=/pub/file bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00670675 s, 1.6 GB/s


###lvm#####
#1.LVM建立
1.划分物理分区并将分区id修改为8e
watch -n 1 ‘echo "=== pvinfo ===";pvs; echo "=== vginfo ===";vgs; echo "=== lvinfo ===";lvs;‘                           ##监控pvs;vgs;lvs

pvcreate /dev/vdb1                       ##创建物理分区
vgcreate westos /dev/vdb1                ##创建名为westos的物理分区组
lvcreate -L 100M -n lv0 westos
mkfs.xfs /dev/westos/lv0
mount /dev/westos/lv0 /mnt

watch -n 1 ‘echo "=== pvinfo ===";pvs; echo "=== vginfo ===";vgs; echo "=== lvinfo ===";lvs; echo "===";df -h /mnt‘          ##监控命令
lvextend -L 200M /dev/westos/lv0              ##扩展lv到200M
xfs_growfs /dev/westos/lv0                     ##扩展文件系统
#当要扩展的内存大于
pvcreate /dev/vdb2                             ##创建pv
vgextend westos /dev/vdb2                     ##扩展vg
lvextend -L 600M /dev/westos/lv0              ##扩展lv到600
xfs_growfs /dev/westos/lv0                     ##扩展文件系统
#分区可以无限扩展,但文件系统不能
######缩减
umount /mnt                                   ##卸载
mkfs.ext4 /dev/westos/lv0                     ##以ext4格式化文件
e2fsck -f /dev/westos/lv0                     ##检测/dev/westos/lv0 
resize2fs /dev/westos/lv0 550                 ##缩减文件系统
lvreduce -L 550 /dev/westos/lv0               ##缩减lv
resize2fs /dev/westos/lv0 200M
lvreduce -L 200 /dev/westos/lv0
pvmove /dev/vdb1 /dev/vdb2                    ##将/dev/vdb1数据移动到/dev/vdb2
vgreduce westos /dev/vdb1                     ##
pvremove /dev/vdb1
#如果先缩减lv后缩减文件系统可以进行以下操作
lvreduce -L 150M /dev/westos/lv0               ##缩减lv到150M
resize2fs /dev/westos/lv0 150M                 ##缩减文件系统到150M
umount /mnt                                    ##卸载
mount /dev/mapper/westos-lv0 /mnt              ##挂载出错
mount: wrong fs type, bad option, bad superblock on /dev/mapper/westos-lv0,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
lvextend -L 200M /dev/westos/lv0               ##扩展lv到200M
#####快照######
umount /mnt
lvcreate -L 10M -n lv0-backup -s /dev/westos/lv0     ##给/dev/westos/lv0 创建一个快照名为 lv0-backup 大小为10M
mount /dev/mapper/westos-lv0--backup /mnt            ##挂载

#####删除设备#####
umount /mnt
lvremove /dev/westos/lv0                           ##删除/dev/westos/lv0中的lv
vgremove westos                                    ##删除 westos 组
pvremove /dev/vdb2                                 ##删除/dev/vdb2 物理分区
pvremove /dev/vdb1                                 ##删除/dev/vdb1 物理分区

###建立非交互式的分区脚本##
vim test.sh
#!/bin/bash
fdisk /dev/vdb << end
n


+1G
wq
end

sh test.sh                                        ##执行脚本命令
l


磁盘分区及LVM