例如,我有一个(GPT 分区的)磁盘/dev/sda
。
/dev/sda8
是该磁盘上的一个分区。我使用该cfdisk
实用程序在/dev/sda8
. 我希望这些分区可以通过类似/dev/sda8p1
. 但Linux并没有自动识别它们。
如何让 Linux 识别分区中的分区,并在可能的情况下实现自动化?
例如,我有一个(GPT 分区的)磁盘/dev/sda
。
/dev/sda8
是该磁盘上的一个分区。我使用该cfdisk
实用程序在/dev/sda8
. 我希望这些分区可以通过类似/dev/sda8p1
. 但Linux并没有自动识别它们。
如何让 Linux 识别分区中的分区,并在可能的情况下实现自动化?
我正在缩小 ext4 分区,但是花费的时间太长,所以我想我应该从头开始(创建一个新分区并擦除数据)。但是,在我取消调整大小(通过 gparted 完成)后,我无法在此驱动器上使用以前可用的命令:
sudo parted /dev/sdc
echo $?
1
parted 只是终止,gparted 也不显示驱动器。
lsblk 显示 0 大小的驱动器
lsblk | grep sdc
sdc 8:32 0 0B 0 disk
磁盘驱动器
sudo fdisk /dev/sdc
Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
fdisk: cannot open /dev/sdc: No such file or directory
我是否可能在执行此操作时损坏了驱动器本身?根据https://www.scosales.com/ta/kb/104521.html,这可能是硬件问题。
如果此错误出现在同一设备上,无论其位置在哪里,则很可能是设备硬件存在问题。查明此
设备上是否存在其他常见错误。如果有,则很可能是设备出现故障。
插入驱动器时 dmesg 会记录(通过 NVME -> USB 外部接口):
[Sun Jul 9 12:14:48 2023] usb 1-4: new high-speed USB device number 8 using xhci_hcd
[Sun Jul 9 12:14:48 2023] usb 1-4: New USB device found, idVendor=0bda, idProduct=9210, bcdDevice=20.01
[Sun Jul 9 12:14:48 2023] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Sun Jul 9 12:14:48 2023] usb 1-4: Product: Best USB Device
[Sun Jul 9 12:14:48 2023] usb 1-4: Manufacturer: ULT-Best
[Sun Jul 9 12:14:48 2023] usb 1-4: SerialNumber: 012938001753
[Sun Jul 9 12:14:48 2023] usb-storage 1-4:1.0: USB Mass Storage device detected
[Sun Jul 9 12:14:48 2023] scsi host6: usb-storage 1-4:1.0
[Sun Jul 9 12:14:49 2023] scsi 6:0:0:0: Direct-Access Realtek RTL9210 1.00 PQ: 0 ANSI: 6
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Read Capacity(10) failed: Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Sense Key : Illegal Request [current]
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Add. Sense: Invalid field in cdb
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] 0 512-byte logical blocks: (0 B/0 B)
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] 0-byte physical blocks
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Write Protect is off
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Mode Sense: 37 00 00 08
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Read Capacity(10) failed: Result: hostbyte=DID_OK driverbyte=DRIVER_OK
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Sense Key : Illegal Request [current]
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Add. Sense: Invalid field in cdb
[Sun Jul 9 12:14:49 2023] sd 6:0:0:0: [sdc] Attached SCSI disk
我看过一些磁盘格式化/分区讨论,其中提到将销毁现有 GPT/MBR 数据结构作为第一步:
sgdisk --zap-all /dev/nvme0n1
我以前没有意识到这一点,当我设置磁盘时,我通常使用:
parted --script --align optimal \
/dev/nvme0n1 -- \
mklabel gpt \
mkpart ESP fat32 1MiB 512MiB \
set 1 boot on \
name 1 boot \
mkpart primary 512MiB 100% \
set 2 lvm on \
name 2 primary
我应该先把东西清理掉(例如sgdisk --zap-all
)吗?不这样做的缺点是什么?
我的磁盘是 sda,我有这些大小的文件:
/sys/dev/block/8:0/size
/sys/class/block/sda/size
/sys/block/sda/size
我应该使用哪一个?第一个被使用lsblk
。有什么不同吗?
我使用 dd 将较小的磁盘克隆到较大的磁盘上,但是现在启动时出现以下 dmesg 错误:
[Fri Sep 30 11:48:43 2022] GPT:Primary header thinks Alt. header is not at the end of the disk.
[Fri Sep 30 11:48:43 2022] GPT:1953525167 != 3907029167
[Fri Sep 30 11:48:43 2022] GPT:Alternate GPT header not at the end of the disk.
[Fri Sep 30 11:48:43 2022] GPT:1953525167 != 3907029167
[Fri Sep 30 11:48:43 2022] GPT: Use GNU Parted to correct GPT errors.
我该如何解决这个问题?该错误表明使用parted,但我不确定要运行哪些命令?
我在笔记本电脑上使用的是 Windows 11,但我想在旁边安装一个 Linux 发行版。因此,我缩小了 30GB 的 OS 磁盘并安装了 Pop_Os。在安装过程中,我创建了 EFI 和根分区。
我现在想扩展 ext4 分区。我能够进一步缩小原始 OS 磁盘,但是使用 gParted 时未分配的空间显示在左侧,我无法调整根分区的大小。
在 gparted 屏幕截图和 fdisk 输出下方:
$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476,94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WDC PC SN520 SDAPMUW-512G-1101
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 68C5B02D-2F6D-464B-AC15-BC33272E2AD7
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 761978879 761411584 363,1G Microsoft basic data
/dev/nvme0n1p4 998166528 1000214527 2048000 1000M Windows recovery environment
/dev/nvme0n1p5 939532288 996937725 57405438 27,4G Microsoft basic data
/dev/nvme0n1p6 996937728 998166525 1228798 600M EFI System
Partition table entries are not in disk order.
现在走出我的舒适区 :) 我现在应该如何扩展分区?
我有一张 4GB 的 SD 卡,但我想做的是在 / 分区上有更多可用空间我实际上也不需要交换分区,所以我将如何调整/移动分区的大小,例如使用 fdisk?
Disk /dev/mmcblk0: 3.7 GiB
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 2048 3844095 3842048 1.9G 83 Linux
/dev/mmcblk0p2 3846142 7772159 3926018 1.9G 5 Extended
/dev/mmcblk0p5 3846144 7772159 3926016 1.9G 82 Linux swap / Solaris
Filesystem Size Used Avail Use% Mounted on
udev 920M 0 920M 0% /dev
tmpfs 187M 20M 168M 11% /run
/dev/mmcblk0p1 1.8G 1.3G 417M 76% /
tmpfs 935M 0 935M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 935M 0 935M 0% /sys/fs/cgroup
tmpfs 187M 0 187M 0% /run/user/1001
刚刚注意到我正在使用 SDD 作为 SSD。已更正
我需要帮助解释这种情况。/dev/sda
是备份的数据磁盘并具有可重现的数据,因此这不是系统关键,但我想避免恢复/重建数据的工作,其中一些将非常耗时
是否可以恢复/修复?
如果有怎么办?如果我擦除磁盘以重新使用它的可靠性是什么?
摘要(详细报告如下):
挂载 ssd 失败,如下所示:
[stephen@meer ~]$ sudo mount /dev/sda1 /mnt/sda
mount: /mnt/sda: can't read superblock on /dev/sda1.
dmesg(1) may have more information after failed mount system call.
[stephen@meer ~]$
但 badblocks 没有发现坏块
[root@meer stephen]# badblocks -v /dev/sda1
Checking blocks 0 to 976760831
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)
但是 smartctl 没有发现错误
[root@meer stephen]# smartctl -a /dev/sda
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-5.17.9-arch1-1] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: WD Blue / Red / Green SSDs
Device Model: WDC WDS100T2B0A-00SM50
Serial Number: 213159800516
LU WWN Device Id: 5 001b44 8bc4fdc6e
Firmware Version: 415020WD
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
TRIM Command: Available, deterministic, zeroed
Device is: In smartctl database 7.3/5319
ATA Version is: ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.3, 6.0 Gb/s (current: 1.5 Gb/s)
Local Time is: Tue May 24 16:06:23 2022 PDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 0) seconds.
Offline data collection
capabilities: (0x11) SMART execute Offline immediate.
No Auto Offline data collection support.
Suspend Offline collection upon new
command.
No Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
No Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 10) minutes.
SMART Attributes Data Structure revision number: 4
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0032 100 100 --- Old_age Always - 124
9 Power_On_Hours 0x0032 100 100 --- Old_age Always - 1470
12 Power_Cycle_Count 0x0032 100 100 --- Old_age Always - 134
165 Block_Erase_Count 0x0032 100 100 --- Old_age Always - 4312400063
166 Minimum_PE_Cycles_TLC 0x0032 100 100 --- Old_age Always - 1
167 Max_Bad_Blocks_per_Die 0x0032 100 100 --- Old_age Always - 65
168 Maximum_PE_Cycles_TLC 0x0032 100 100 --- Old_age Always - 14
169 Total_Bad_Blocks 0x0032 100 100 --- Old_age Always - 630
170 Grown_Bad_Blocks 0x0032 100 100 --- Old_age Always - 124
171 Program_Fail_Count 0x0032 100 100 --- Old_age Always - 128
172 Erase_Fail_Count 0x0032 100 100 --- Old_age Always - 0
173 Average_PE_Cycles_TLC 0x0032 100 100 --- Old_age Always - 2
174 Unexpected_Power_Loss 0x0032 100 100 --- Old_age Always - 90
184 End-to-End_Error 0x0032 100 100 --- Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 --- Old_age Always - 0
188 Command_Timeout 0x0032 100 100 --- Old_age Always - 64
194 Temperature_Celsius 0x0022 070 053 --- Old_age Always - 30 (Min/Max 18/53)
199 UDMA_CRC_Error_Count 0x0032 100 100 --- Old_age Always - 0
230 Media_Wearout_Indicator 0x0032 001 001 --- Old_age Always - 0x002600140026
232 Available_Reservd_Space 0x0033 097 097 004 Pre-fail Always - 97
233 NAND_GB_Written_TLC 0x0032 100 100 --- Old_age Always - 2703
234 NAND_GB_Written_SLC 0x0032 100 100 --- Old_age Always - 2842
241 Host_Writes_GiB 0x0030 253 253 --- Old_age Offline - 466
242 Host_Reads_GiB 0x0030 253 253 --- Old_age Offline - 622
244 Temp_Throttle_Status 0x0032 000 100 --- Old_age Always - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 1470 -
Selective Self-tests/Logging not supported
并且 fsck 失败了:
[root@meer ~]# e2fsck -cfpv /dev/sda1
/dev/sda1: recovering journal
e2fsck: Input/output error while recovering journal of /dev/sda1
e2fsck: unable to set superblock flags on /dev/sda1
/dev/sda1: ********** WARNING: Filesystem still has errors **********
May 24 15:38:29 meer kernel: I/O error, dev sda, sector 121899008 op 0x1:(WRITE) flags 0x800 phys_seg 1 prio class 0
May 24 15:38:29 meer kernel: sd 2:0:0:0: [sda] tag#31 CDB: Write(10) 2a 00 07 44 08 00 00 00 08 00
May 24 15:38:29 meer kernel: sd 2:0:0:0: [sda] tag#31 Add. Sense: Unaligned write command
May 24 15:38:29 meer kernel: sd 2:0:0:0: [sda] tag#31 Sense Key : Illegal Request [current]
May 24 15:38:29 meer kernel: sd 2:0:0:0: [sda] tag#31 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
May 24 15:38:29 meer kernel: ata3.00: configured for UDMA/33
May 24 15:38:29 meer kernel: ata3.00: error: { ABRT }
May 24 15:38:29 meer kernel: ata3.00: status: { DRDY ERR }
May 24 15:38:29 meer kernel: ata3.00: cmd ca/00:08:00:08:44/00:00:00:00:00/e7 tag 31 dma 4096 out
res 51/04:08:00:08:44/00:00:07:00:00/e7 Emask 0x1 (device error)
May 24 15:38:29 meer kernel: ata3.00: failed command: WRITE DMA
May 24 15:38:29 meer kernel: ata3.00: irq_stat 0x40000001
May 24 15:38:29 meer kernel: ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
May 24 15:38:29 meer kernel: ata3: EH complete
May 24 15:38:29 meer kernel: ata3.00: configured for UDMA/33
May 24 15:38:29 meer kernel: ata3.00: error: { ABRT }
May 24 15:38:29 meer kernel: ata3.00: status: { DRDY ERR }
May 24 15:38:29 meer kernel: ata3.00: cmd ca/00:08:00:08:44/00:00:00:00:00/e7 tag 6 dma 4096 out
res 51/04:08:00:08:44/00:00:07:00:00/e7 Emask 0x1 (device error)
May 24 15:38:29 meer kernel: ata3.00: failed command: WRITE DMA
May 24 15:38:29 meer kernel: ata3.00: irq_stat 0x40000001
May 24 15:38:29 meer kernel: ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
fdisk 看到的分区。
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDC WDS100T2B0A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3F701164-2CF8-6D48-A94E-478634C140BE
Device Start End Sectors Size Type
/dev/sda1 2048 1953523711 1953521664 931.5G Linux filesystem
来自 dmesg
[ 5292.895300] ata3.00: configured for UDMA/33
[ 5292.895315] ata3: EH complete
[ 5293.021851] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 5293.021859] ata3.00: irq_stat 0x40000001
[ 5293.021864] ata3.00: failed command: WRITE DMA
[ 5293.021866] ata3.00: cmd ca/00:08:00:08:44/00:00:00:00:00/e7 tag 18 dma 4096 out
res 51/04:08:00:08:44/00:00:07:00:00/e7 Emask 0x1 (device error)
[ 5293.021874] ata3.00: status: { DRDY ERR }
[ 5293.021877] ata3.00: error: { ABRT }
分开:
root@meer stephen]# parted /dev/sda
GNU Parted 3.5
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: ATA WDC WDS100T2B0A (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 1000GB 1000GB ext4
1000GB 1000GB 729kB Free Space
对于每个多路径磁盘标签,/dev/mapper
我最后都有另一个带有 1 的标签。他们是一样的吗?有什么关系吗?
例如:
/dev/mapper/mpathaj
和/dev/mapper/mpathaj1
或
/dev/mapper/mpathai
和/dev/mapper/mpathai1
当我发出命令od --read-bytes=128 --format=c /dev/mapper/mpathai
时,磁盘看起来很干净:
[root@server02 ~]# od --read-bytes=128 --format=c /dev/mapper/mpathai
0000000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0000200
但最后 1 的另一个显示一些行:
[root@server02 ~]# od --read-bytes=128 --format=c /dev/mapper/mpathai1
0000000 001 202 001 001 \0 \0 \0 \0 003 \0 \0 200 220 . 5 213
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000120 3 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
some characters I needed to remove to don't show costumer content.
0000160 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000200
这发生在每个磁盘上。一个是干净的,另一个没有。
而且,我问它的原因是:我可以失去一个(mpathaj)而不会失去另一个(mpathaj1)吗?我已经看到他们指向不同的/dev/dm-xx
.
即:/dev/mapper/mpathaj
是/dev/dm-18
和/dev/mapper/mpathaj1
是/dev/dm-19