Linux相关知识的第七回合
Linux磁盘相关知识过招
破坏mbr表并修复
## 备份
# 将分区表导出,从/dev/sda中,跳过446字节备份64字节,skip跳过源文件446字节
dd if=/dev/sda of=/data/mbrbak.img bs=1 count=64 skip=446
# 查看备份文件
hexdump -C -v /data/mbrbak.img
# 备份到其他的服务器上
scp -rpP 10022 /data/mbrbak.img kfx@192.168.168.219:/home/kfx
## 破坏
# 破坏分区表并重启服务器,系统无法启动,seek跳过目标文件446字节
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
reboot
## 恢复
# CentOS8 用光盘启动,进入rescue mode模式,选第三项:skip to shell,设置IP地址,并将备份的文件恢复到服务器上
ifconfig eth0 192.168.168.211/24
scp -rpP 10022 kfx@192.168.168.219:/home/kfx/mbrbak.img ./
# 恢复分区表
dd if=mbrbak.img of=/dev/sda bs=1 count=64 seek=446
# 查看分区表
hexdump -C -n 512 -v /dev/sda
exit
总结RAID的各个级别及其组合方式和性能的不同
参考文献:
磁盘阵列RAID种类及对比
RAID 容量计算器
创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
使用WebVirtCloud
为虚拟机添加一块硬盘
# 查看磁盘状态
[hooper@magedu-demo ~] $ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
# 在vdb磁盘上创建一个2G分区
## 这个是交互式创建分区
[hooper@magedu-demo ~] $ sudo fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3bddf424 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-62914559,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
## 扩展:非交互式创建分区
echo -e "n\np\n1\n+2G\nw\n" | fdisk /dev/vdb
## 查看分区结果
[hooper@magedu-demo ~] $ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
└─vdb1 252:17 0 2G 0 part
# 创建文件系统
[hooper@magedu-demo ~] $ sudo mkfs.ext4 -b 2048 -m 1 -L TEST /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=TEST
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 1048576 blocks
10485 blocks (1.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=269484032
64 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# -b 指定块大小;-m 指定管理员专用预留空间百分比;
# 查看参数生效
[hooper@magedu-demo ~] $ sudo tune2fs -l /dev/vdb1 | \grep -e name -e 'Block size' -e 'Block count' -e 'Reserved block count'
Filesystem volume name: TEST
Block count: 1048576
Reserved block count: 10485
Block size: 2048
# 挂载目录
[hooper@magedu-demo ~] $ sudo mkdir /test
[hooper@magedu-demo ~] $ sudo mount /dev/vdb1 /test
[hooper@magedu-demo ~] $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
└─vdb1 252:17 0 2G 0 part /test
[hooper@magedu-demo ~] $ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos_magedu--demo-root 50G 3.1G 47G 7% /
/dev/vda1 1014M 189M 826M 19% /boot
/dev/mapper/centos_magedu--demo-data 200G 7.6G 193G 4% /data
/dev/mapper/centos_magedu--demo-home 41G 468M 41G 2% /home
tmpfs 379M 0 379M 0% /run/user/1000
/dev/vdb1 2.0G 9.1M 1.9G 1% /test
# 添加开机自动挂载
[hooper@magedu-demo ~] $ sudo cp -rp /etc/fstab{,.`datebak`}
[hooper@magedu-demo ~] $ sudo vim /etc/fstab
######################################################################
/dev/vdb1 /test ext4 acl 0 0
######################################################################
# 重启系统
[hooper@magedu-demo ~] $ uptime
15:51:59 up 0 min, 1 user, load average: 0.58, 0.16, 0.05
[hooper@magedu-demo ~] $ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos_magedu--demo-root 50G 3.1G 47G 7% /
/dev/vda1 1014M 189M 826M 19% /boot
/dev/vdb1 2.0G 9.1M 1.9G 1% /test
/dev/mapper/centos_magedu--demo-data 200G 7.6G 193G 4% /data
/dev/mapper/centos_magedu--demo-home 41G 468M 41G 2% /home
tmpfs 379M 0 379M 0% /run/user/1000
创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
# 在/dev/vdb磁盘上创建20G分区
[hooper@magedu-demo ~] $ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
└─vdb1 252:17 0 2G 0 part /test
[hooper@magedu-demo ~] $ sudo fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (4196352-62914559,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-62914559,默认为 62914559):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3bddf424
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 4196351 2097152 83 Linux
/dev/vdb2 4196352 46139391 20971520 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
# 重新读取分区表
[hooper@magedu-demo ~] $ sudo partprobe
[hooper@magedu-demo ~] $ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
├─vdb1 252:17 0 2G 0 part /test
└─vdb2 252:18 0 20G 0 part
# 创建lvm物理卷
[hooper@magedu-demo ~] $ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos_magedu-demo lvm2 a-- <299.00g 4.00m
[hooper@magedu-demo ~] $ sudo pvcreate /dev/vdb2
Physical volume "/dev/vdb2" successfully created.
[hooper@magedu-demo ~] $ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos_magedu-demo lvm2 a-- <299.00g 4.00m
/dev/vdb2 lvm2 --- 20.00g 20.00g
[hooper@magedu-demo ~] $ sudo pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name centos_magedu-demo
PV Size <299.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 76543
Free PE 1
Allocated PE 76542
PV UUID Dj2PaB-D2KP-ckbn-8Zru-oUYG-jLdu-gGO8XX
"/dev/vdb2" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb2
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID U5UqKW-gWv9-42LP-Xe5y-Ibbs-lQoY-qpLBiH
[hooper@magedu-demo ~] $ sudo vgcreate -s 16M testvg /dev/vdb2
Volume group "testvg" successfully created
# 如果是多个分区的话,后面添加多个分区
[hooper@magedu-demo ~] $ sudo vgdisplay
--- Volume group ---
VG Name centos_magedu-demo
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 4
Open LV 4
Max PV 0
Cur PV 1
Act PV 1
VG Size <299.00 GiB
PE Size 4.00 MiB
Total PE 76543
Alloc PE / Size 76542 / 298.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID u2Gw9g-P5dQ-9eOB-G0Pc-Pg2O-D2vr-tsa6bn
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.98 GiB
PE Size 16.00 MiB
Total PE 1279
Alloc PE / Size 0 / 0
Free PE / Size 1279 / 19.98 GiB
VG UUID k2mR1I-CMyY-kQeO-OGe9-tvMr-EnGT-MenXTM
# 创建逻辑卷,大小为5G
[hooper@magedu-demo ~] $ sudo lvcreate -n testlv -L 5G testvg
Logical volume "testlv" created.
[hooper@magedu-demo ~] $ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data centos_magedu-demo -wi-ao---- 200.00g
home centos_magedu-demo -wi-ao---- <41.00g
root centos_magedu-demo -wi-ao---- 50.00g
swap centos_magedu-demo -wi-ao---- <8.00g
testlv testvg -wi-a----- 5.00g
[hooper@magedu-demo ~] $ sudo lvdisplay
--- Logical volume ---
LV Path /dev/centos_magedu-demo/root
LV Name root
VG Name centos_magedu-demo
LV UUID HSkZ23-owVw-9IJG-CLdE-yBEk-U5ak-i3L3Xm
LV Write Access read/write
LV Creation host, time magedu-demo, 2021-03-09 10:19:31 +0800
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/centos_magedu-demo/home
LV Name home
VG Name centos_magedu-demo
LV UUID fefm7T-ufNd-gzRl-dRL2-onQK-X23R-Wogc7I
LV Write Access read/write
LV Creation host, time magedu-demo, 2021-03-09 10:19:31 +0800
LV Status available
# open 1
LV Size <41.00 GiB
Current LE 10495
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/centos_magedu-demo/swap
LV Name swap
VG Name centos_magedu-demo
LV UUID LwVlA1-Ex08-JMaH-yP1K-fLSo-dEXS-5jKGA6
LV Write Access read/write
LV Creation host, time magedu-demo, 2021-03-09 10:19:32 +0800
LV Status available
# open 2
LV Size <8.00 GiB
Current LE 2047
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos_magedu-demo/data
LV Name data
VG Name centos_magedu-demo
LV UUID TEvf0T-DO14-0VIJ-Nki2-cXs5-nSUp-qu1BXM
LV Write Access read/write
LV Creation host, time magedu-demo, 2021-03-09 10:19:32 +0800
LV Status available
# open 1
LV Size 200.00 GiB
Current LE 51200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID OdEcxT-ay7L-1Vul-N2To-1VIt-1bdT-9HOYdf
LV Write Access read/write
LV Creation host, time magedu-demo, 2021-04-20 16:25:35 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 320
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
[hooper@magedu-demo ~] $ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 300G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 299G 0 part
├─centos_magedu--demo-root 253:0 0 50G 0 lvm /
├─centos_magedu--demo-swap 253:1 0 8G 0 lvm [SWAP]
├─centos_magedu--demo-home 253:2 0 41G 0 lvm /home
└─centos_magedu--demo-data 253:3 0 200G 0 lvm /data
vdb 252:16 0 30G 0 disk
├─vdb1 252:17 0 2G 0 part /test
└─vdb2 252:18 0 20G 0 part
└─testvg-testlv 253:4 0 5G 0 lvm
# 格式化
[hooper@magedu-demo ~] $ sudo mkfs.xfs /dev/testvg/testlv
meta-data=/dev/testvg/testlv isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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
[hooper@magedu-demo ~] $ sudo mkdir /users
[hooper@magedu-demo ~] $ sudo mount /dev/testvg/testlv /users
[hooper@magedu-demo ~] $ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos_magedu--demo-root 50G 3.1G 47G 7% /
/dev/vda1 1014M 189M 826M 19% /boot
/dev/vdb1 2.0G 9.1M 1.9G 1% /test
/dev/mapper/centos_magedu--demo-data 200G 7.6G 193G 4% /data
/dev/mapper/centos_magedu--demo-home 41G 468M 41G 2% /home
tmpfs 379M 0 379M 0% /run/user/1000
/dev/mapper/testvg-testlv 5.0G 33M 5.0G 1% /users