一、parted和fdisk的区别
Linux中的parted和fdisk是两个用于管理硬盘分区的工具,它们之间存在一些明显的区别,主要体现在以下几个方面:
- 执行风险:
- parted:在执行分区命令时,每个命令都是实时执行的,即一旦执行,就会立即对磁盘进行分区操作。因此,使用parted进行分区操作时需要特别谨慎,避免在生产环境中进行不必要的实验性操作。
- fdisk:在分区时,所有的修改都是在内存中进行的,并不会立即写入磁盘。只有在执行w命令后,才会将所做的修改写入磁盘。这种设计使得fdisk在分区过程中具有更高的灵活性,但也增加了误操作的风险。
- 分区大小限制:
- fdisk:只能处理小于2TB的磁盘分区。对于大于2TB的磁盘,fdisk无法创建大于2TB的分区。
- parted:没有这种大小限制,可以处理大于2TB的磁盘分区。这使得parted在处理大容量磁盘时具有更大的优势。
- 分区表格式支持:
- fdisk:主要支持DOS类型的分区表(MBR)以及BSD或SUN类型的磁盘列表。
- parted:支持多种分区表格式,包括GUID分区表(GPT)、MS-DOS(MBR)等。这使得parted在处理不同类型的磁盘和分区时具有更大的灵活性。
- 兼容性:
- fdisk:与parted不完全兼容。在某些情况下,使用fdisk无法看到parted创建的分区。
- parted:可以识别和处理fdisk创建的分区。但是,由于执行风险较高,建议在使用parted之前备份重要数据。
存储解决方案:
-
存储设备
- 分区
- 逻辑卷
- 高级卷管理
- ceph GlusterFS Clusterfs (构建存储集群)
- nas nfs samba
- san 存储网络 iSCSI
-
文件系统
- XFS //支持热扩容,文件系统支持体积较大文件的存储,同时支持海量文件的存储
stratis 配置过程
- 安装并启动服务
- 创建存储池
- 创建文件系统
- 挂载
[root@user ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 10G 0 part
├─sda2 8:2 0 5G 0 part
└─sda3 8:3 0 1G 0 part /mnt/sda3
sdb 8:16 0 20G 0 disk
sdc 8:32 0 50G 0 disk
sdd 8:48 0 50G 0 disk
sr0 11:0 1 7.9G 0 rom /mnt/cdrom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 300M 0 part /boot
├─nvme0n1p2 259:2 0 2G 0 part [SWAP]
└─nvme0n1p3 259:3 0 47.7G 0 part /
[root@user ~]#
[root@user ~]# yum -y install stratis-cli stratisd #下载stratis
[root@user ~]# systemctl enable --now stratisd #开启stratisd服务
[root@user ~]# systemctl status stratisd #查看statisd服务
[root@user ~]# stratis pool create pool1 /dev/sdb /dev/sdc /dev/sdd
#将三个磁盘/dev/sdb /dev/sdc /dev/sdd 添加到pool1的存储池中
[root@user ~]# stratis pool list #列出系统上所有已创建的 Stratis 存储池
Name Total Physical
pool1 120 GiB / 55.27 MiB / 119.95 GiB
[root@user ~]# stratis pool list
Name Total Physical
pool1 120 GiB / 55.27 MiB / 119.95 GiB
[root@user ~]# stratis blockdev list #列出指定 Stratis 存储池中的所有块设备。
Pool Name Device Node Physical Size Tier
pool1 /dev/sdb 20 GiB Data
pool1 /dev/sdc 50 GiB Data
pool1 /dev/sdd 50 GiB Data
[root@user ~]# stratis filesystem create pool1 fs1
#告诉 Stratis 存储管理工具在名为 pool1 的 Stratis 存储池中创建一个新的文件系统,并将其命名为 fs1。
[root@user ~]# ll /dev/std
stderr stdin stdout
[root@user ~]# ll /stratis
total 0
drwxr-xr-x. 2 root root 17 May 13 09:50 pool1
[root@user ~]# ll /stratis/ -d #-d 选项来仅显示目录本身的属性
drwxr-xr-x. 3 root root 19 May 13 09:50 /stratis/
[root@user ~]# ll /stratis/
total 0
drwxr-xr-x. 2 root root 17 May 13 09:50 pool1
[root@user ~]# ll /stratis/pool1/
total 0
lrwxrwxrwx. 1 root root 9 May 13 09:50 fs1 -> /dev/dm-5
[root@user ~]# mkdir /mnt/stratis1
[root@user ~]# mount /stratis/pool1/fs1 /mnt/stratis1/
[root@user ~]# df -hT | grep stratis
/dev/mapper/stratis-1-98453552c35b44ce8e5cf07dc1c436b4-thin-fs-58ae65971a2b4075a194d6ba0045dc93 xfs 1.0T 7.2G 1017G 1% /mnt/stratis1
[root@user ~]# stratis pool list
Name Total Physical
pool1 120 GiB / 601.29 MiB / 119.41 GiB
[root@user ~]# lsblk --output=UUID /stratis/pool1/fs1
UUID
58ae6597-1a2b-4075-a194-d6ba0045dc93
[root@user ~]# vim /etc/fstab #设置自动挂载
[root@user ~]# dd if=/dev/zero of=/mnt/stratis1/test bs=1MB count=100
- if=/dev/zero: 指定输入文件(input file)为 /dev/zero。/dev/zero 是一个特殊的文件,它提供无限的空字符(NULL 字符,即值为 0 的字节)。读取 /dev/zero 会得到无限多的零字节。
- of=/mnt/stratis1/test: 指定输出文件(output file)为 /mnt/stratis1/test。这个命令将会在这个位置创建一个文件(如果它不存在的话)或者覆盖一个已存在的文件。
- bs=1MB: 设置块大小(block size)为 1MB。这意味着 dd 将会以 1MB 的块为单位从输入文件读取并写入到输出文件。
- count=100: 指定要复制的块的数量为 100。由于块大小是 1MB,所以总共会写入 100MB 的数据。
综上所述,这个命令将会从 /dev/zero 读取 100MB 的零字节数据,并将这些数据写入到 /mnt/stratis1/test 文件中。这个文件最终的大小将会是 100MB,并且文件中将只包含零字节。
100+0 records in
100+0 records out
100000000 bytes (100 MB, 95 MiB) copied, 0.0748237 s, 1.3 GB/s
[root@user ~]# ll /mnt/stratis1/test -h
-rw-r--r--. 1 root root 96M May 13 10:01 /mnt/stratis1/test
[root@user ~]# df -hT | grep stratis
/dev/mapper/stratis-1-98453552c35b44ce8e5cf07dc1c436b4-thin-fs-58ae65971a2b4075a194d6ba0045dc93 xfs 1.0T 7.3G 1017G 1% /mnt/stratis1
[root@user ~]# stratis pool list
Name Total Physical
pool1 120 GiB / 697.29 MiB / 119.32 GiB