1.mbr,mpt,
512-446 = 64+ 2
mbr(主引导记录(找到启动分区)) mpt(记录分区信息) 55aa(有效性标识)
vda 表示第一个虚拟磁盘
vdb 表示第二个虚拟磁盘
dev/xdx 硬盘格式
dev/hd0 并口硬盘
dev/sda 串口硬盘
dev/cdrom 或/dev/sr0 光驱
/dev/mapper
fdisk -l #查看真实存在的设备
cat /proc/partitions #查看系统可以识别的设备
blkid #查看系统可以使用的设备
df #查看系统正在使用的设备
df -h 1G=1024K df -H 1G=1000K -h更准确
df<= blkid<= cat /proc/partitions<= fdisk
2.挂载
怎样取消正在使用中的设备的挂载
umount: /mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
lsof
fuser -vm
fuser -kvm
只读和读写挂载的选择
mount /dev/sdb /mnt #读写挂载
mount -o ro /dev/sdb /mnt #只读挂载
mount -o remount,rw /dev/sdb #将只读挂载转换为读写挂载
3.分区方式
fdisk /dev/vdb
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): #指定使用的分区表号
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: 0xc66e0181
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux #被划分出来的分区
/dev/vdb2 206848 411647 102400 83 Linux #被划分出来的分区
Command (m for help): wq #保存更改方式并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
partprobe 将磁盘分区表变化信息通知内核,请求操作系统重新加载分区
cat /proc/partitions 查看系统能识别的分区
3.如何使用新建立的分区
mkfs.xfs /dev/vdb1 格式化
blkid 查看系统可以使用的分区
4.如何修改分区格式
parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help #帮助
align-check TYPE N check partition N for TYPE(min|opt)
alignment
help [COMMAND] print general help, or help on
COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition
table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table,
available devices, free space, all found partitions, or a particular
partition
quit exit program
rescue START END rescue a lost partition near START
and END
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected
device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
NUMBER
unit UNIT set the default unit to UNIT
version display the version number and
copyright information of GNU Parted
(parted) mklabel
New disk label type?
aix amiga bsd dvh gpt loop mac msdos pc98 sun
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? yes
(parted) q #退出
Information: You may need to update /etc/fstab.
mkfs.xfs /dev/vdb1 -f #强制格式化
5.设备永久挂载
vim /etc/fstab 设备挂载策略文件
/dev/vdb1 /mnt/ xfs defaults 0 0
挂载设备 挂载点 挂载设备的分区类型 挂载选项用于设置挂载的参数 是否备份 磁盘检查设置是否检查
mount -a 挂载fstab下的所有选项
umount /mnt
6.swap分区的管理
创建swap分区
fdisk /dev/vdb
Command (m for help): t
Partition number (1,2, default 2): 1
Hex code (type L to list all codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 82
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
cat /proc/partitions
partprobe #将磁盘分区表变化信息通知内核,请求操作系统重新加载分区
cat /proc/partitions
mkswap /dev/vdb1 #把/dev/vdb1格式化成swap格式
swapon -a /dev/vdb1 #激活
swapon -s #查看系统中的swap分区
fdisk -l
vim /etc/fstab
/dev/vdb2 swap swap defaults 0 0 #将/dev/vdb2挂载到swap交换空间上,类型为swap,使用默认挂载选项,不备份文件系统不执行fsck检查
swapon -a #开启全部的交换空间
删除swap分区
vim /etc/fstab
删除/dev/vdb1 swap swap defaults 0 0
swapoff /dev/vdb1
fdisk /dev/vdb
删除vdb1分区
partprobe
7.分区加密
cryptsetup luksFormat /dev/vdb1 #给分区加密
WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.
Are you sure? (Type uppercase yes): YES #必须用大写
Enter passphrase:
Verify passphrase:
cryptsetup open /dev/vdb1 xixi
Enter passphrase for /dev/vdb1:
mkfs.xfs /dev/mapper/xixi #格式化
meta-data=/dev/mapper/xixi isize=256 agcount=4, agsize=6272 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=25088, 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
mount /dev/mapper/xixi /mnt
touch /mnt/file{1..3}
ls /mnt
umount /mnt
df
cryptsetup close xixi
8.自动挂载加密设备
vim /root/diskpass #系统自动读取密码记录文件
密码
chmod 600 /root/diskpass
cryptsetup luksAddKey /dev/vdb1 /root/diskpass #把密码记录文件与设备关联
Enter any passphrase:
vim /etc/crypttab #设定开机解密
westos /dev/vdb1 /root/diskpass
解密后名称 设备 密码文件
vim /etc/fstab #开机自动挂载加密设备
/dev/mapper/westos /mnt/ xfs defaults 0 0
df
reboot
df
vim /etc/fstab
rm -fr /root/diskpass
umount /mnt
cryptsetup close westos
mkfs.xfs /dev/vdb1 -f
9.raid 磁盘阵列
fdisk /dev/vdb
新建3个1G分区并修改分区id为fd
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
^ ^ ^ ^ ^
建立 md0如果不存在自动建立 级别1 用两块硬盘 闲置一块
cat /proc/mdstat #设备信息
mkfs.xfs /dev/md0
mount /dev/md0 /mnt
mdadm -D /dev/md0 #设备配置信息
mdadm /dev/md0 -f /dev/vdb2 #损坏设备2
mdadm /dev/md0 -r /dev/vdb2 #移除设备2
mdadm /dev/md0 -a /dev/vdb2 #恢复设备2
mdadm -S /dev/md0 #停止设备
fdisk /dev/vdb
partprobe
当一块设备损坏后另一块闲置设备将立刻顶替上去
10.磁盘配额
磁盘配额时限制用户向设备中写入数据的大小,或者个数,此这定针对与设备的
mount -o usrquota /dev/vdb1 /mnt #激活配额功能参数
mount #查看配额参数是否激活
edquota -u student #设定student的配额
nDisk quotas for user student (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vdb1 0 0 20480 0 0 0 (单位为k)
注:若为ext文件系统则还需要执行以下操作
quotacheck -u /dev/vdb1 (ext文件系统)
quotaon -u /dev/vdb1 (ext文件系统)
切换到student用户检查/dev/vdb1是否被限额
dd if=/dev/zero of=/mnt/studentfile bs=1M count=10 #当文件大小为10M时可以被写入
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.332077 s, 31.6 MB/s
dd if=/dev/zero of=/mnt/studentfile bs=1M count=30 #当文件大小为30M时超过配额则不能被写入
dd: error writing ‘/mnt/studentfile’: Disk quota exceeded
21+0 records in
20+0 records out
注:dd if=/dev/zero of=/mnt/studentfile bs=1M count=10
#截取 /dev/zero无限0字节里的数据 到/mnt/studentfile 大小是1M 数量10
if=inputfile of=outputfile
开机自动激活配额
编辑/etc/fstab文件 写入/dev/vdb1 /pub xfs defaults,usrquota 0 0
/dev/vdb1 /pub xfs defaults,usrquota 0 0
如图所示
**************************lvm**************************
1.lvm (逻辑卷,可以让设备自由伸缩的一个设备管理软件)
pv 物理卷
vg 物理卷组
pe 物理拓展,lvm最小的存储单元
lvm 逻辑卷,时最终我们使用的可以伸缩的设备
2.lvm的制作
首先划分lvm所用到的设备,这些设备的功能id必须时linux LVM(8e)
pvcreate /dev/vdb1 #把物理分区做成物理卷
vgcreate vg0 /dev/vdb1 #用制作好的/dev/vdb1这个物理卷制作一个物理卷组vvg0
lvcreate -L 200M -n lv0 vg0 #在vg0这个组中建立出lv0设备 -L 指定设备大小 -n 指定设备名字
mkfs.xfs 或 mkfs.ext4 #格式化为xfs文件系统或ext文件系统
mount /dev/vg0/lv0 /mnt
监控命令
watch -n 1 'pvs;vgs;lvs;df -h /mnt'
pvs或pvdisplay #查看物理卷
vgs或vgdisplay #查看物理卷组
lvs或lvdisplay #对逻辑卷设备进行查看
制作好的lvm如图所示
3.lvm设备的扩大和缩减
***针对xfs文件系统***
xfs文件系统只能扩大不能缩减
1)lvm扩大
lvextend —L 500M /dev/vg0/lv0 #扩大lvm设备到500M
xfs_growfs /dev/vg0/lv0 #扩大xfs文件系统到设备大小
2)若vg不够则先要扩大vg
pvcreate /dev/vdb2 #在pv中增加一块设备/dev/vdb2
vgextend vg0 /dev/vdb2 #把新建立的/dev/vdb2添加到vg0中
lvextend -L 1G /dev/vg0/lv0 #扩大lvm设备到1G
xfs_growfs /dev/vg0/lv0 #扩大xfs文件系统到设备大小
***针对ext文件系统***
ext文件系统可以扩大也可以缩减
1)lvm扩大
mkfs.ext4 #格式化为ext文件系统
lvextend —L 2G /dev/vg0/lv0 #扩大lvm设备到2G
resize2fs /dev/vg0/lv0 #设定文件系统大小和设备同步
2)vg扩大
pvcreate /dev/vdb3 #在pv中增加一块设备/dev/vdb3
vgextend vg0 /dev/vdb3 #把新建立的/dev/vdb3添加到vg0中
3)lvm缩减
umount /dev/vg0/lv0 #卸载设备,因为文件系统缩减不支持在线操作
e2fsck -f /dev/vg0/lv0 #检测文件系统,确定文件系统中已有数据大小防止过度缩减
resize2fs /dev/vg0/lv0 1000M #把文件系统缩减到1000M
lvreduce -L 1000M /dev/vg0/lv0 #设备缩减到1000M
4)vg缩减
在vg缩减时只能缩减没有被占用的设备
pvmove 设备1 设备2 #把设备1上的所有数据移动到设备2上
vgreduce vg0 /dev/vdb1 #把vg0中的/dev/vdb1删除
pvremove /dev/vdb1 #把/dev/vdb1上的lvm管理信息删除
4.lvm快照
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 #给/dev/vg0/lv0建立快照,-L 指定快照大小,-n指定快照名字 -s指定快照模板设备
mount /dev/vg0/lv0-backup /mnt
lvremove /dev/vg0/lv0backup #删除快照
当快照设备里的数据被更改,如果想还原,删除快照设备,在重新建立快照即可
例如:
在/dev/vg0/lv0中创建file{1..10}
创建快照
在快照中删除file{1..10}
删除快照再重新建立快照,则file{1..10}恢复
5.lvm删除
lvremove /dev/vg0/lv0backup
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb{1..2}
lvm删除的顺序为:
lvremove---->vgremove----->pvremove