Але*_*р Б 6 partitioning sd-card
当所有分区工具将我的 SD 卡视为 30 GB 大小的卡时,我遇到了一个问题。但是当我购买该卡时,我清楚地记得该卡有 64 GB,而且它写在“ScanDisk Ultra 64 GB”卡上。在我决定用 ext4 文件系统(文件系统之前是 exFAT)重新格式化我的 SD 卡后,最大容量发生了变化。然后无论我尝试做什么,都没有帮助我恢复容量。我尝试过gparted、fdisk,甚至尝试使用Windows 工具SDFormatterv4 和diskpart。但是我在 VirtualBox 下使用 windows 工具,因为我的主要操作系统是 Ubuntu。我没有在物理驱动器上预装 Windows 操作系统。我在 google 上搜索并找到了只有当 Windows 只看到 SD 卡上的第一个分区时的解决方案。但我认为这不是我的情况,因为我至少不使用 Windows。但无论如何,我尝试了那些对我没有帮助的解决方案。如何将容量恢复到原始大小?
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 698.7G 0 disk
??sda1 8:1 0 171.2G 0 part /
??sda2 8:2 0 7.6G 0 part
??sda3 8:3 0 163G 0 part
??sda4 8:4 0 356.9G 0 part /home
sdb 8:16 1 27.5G 0 disk
sr0 11:0 1 1024M 0 rom
# parted -l
... /dev/sda skipped ...
Model: Generic USB SD Reader (scsi)
Disk /dev/sdb: 29.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
Run Code Online (Sandbox Code Playgroud)
我通过 SD 读卡器连接 SD 卡。正如你所看到的 /dev/sdb 根本没有分区
# dmesg | tail -n 20
[ 9203.022463] usb 2-5: New USB device found, idVendor=090c, idProduct=6200
[ 9203.022475] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9203.022482] usb 2-5: Product: Generic USB2.0 card
[ 9203.022487] usb 2-5: Manufacturer: Silicon Motion, Inc.
[ 9203.022492] usb 2-5: SerialNumber: 12345678901234567890
[ 9203.022997] usb-storage 2-5:1.0: USB Mass Storage device detected
[ 9203.024017] scsi17 : usb-storage 2-5:1.0
[ 9204.024052] scsi 17:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0 CCS
[ 9204.024780] sd 17:0:0:0: Attached scsi generic sg2 type 0
[ 9204.027078] sd 17:0:0:0: [sdb] 57626624 512-byte logical blocks: (29.5 GB/27.4 GiB)
[ 9204.030200] sd 17:0:0:0: [sdb] Write Protect is off
[ 9204.030205] sd 17:0:0:0: [sdb] Mode Sense: 4b 00 00 08
[ 9204.031340] sd 17:0:0:0: [sdb] No Caching mode page found
[ 9204.031344] sd 17:0:0:0: [sdb] Assuming drive cache: write through
[ 9204.034209] sd 17:0:0:0: [sdb] No Caching mode page found
[ 9204.034212] sd 17:0:0:0: [sdb] Assuming drive cache: write through
[ 9204.049098] sdb:
[ 9204.051865] sd 17:0:0:0: [sdb] No Caching mode page found
[ 9204.051876] sd 17:0:0:0: [sdb] Assuming drive cache: write through
[ 9204.051885] sd 17:0:0:0: [sdb] Attached SCSI removable disk
Run Code Online (Sandbox Code Playgroud)
魔术 :-( 64 Gb 消失了。这是我的 SD 卡及其读卡器的照片

# hdparm -N /dev/sdb
/dev/sdb:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
max sectors = 0/1, HPA is enabled
Run Code Online (Sandbox Code Playgroud)
我试图记住并在你们的帮助下发现了什么!
我第一次买卡时没有在电脑上检查我的 SD 卡是否有 64 GB 容量。只有我的相机显示我可以在 9 小时内录制视频。如果我插入 32 GB SD 卡,那么我的相机显示我可以在 4 小时内录制视频。这意味着一张卡比另一张大。此外,64 GB 和 32 GB 卡上有相应的标题。因此,根据这些事实,我得出结论,一张卡为 32GB,另一张为 64GB。
但是当我将 64GB 卡插入我的电脑时,我发现它只有 30GB。我开始错误地将它与 ext4 文件系统的格式化相关联(因为我在检查大小之前已格式化)!为什么我认为这是一个错误?因为我将 SD 卡重新格式化回 exFat 然后在 PC 上检查了大小,它仍然是 ~30GB。然后我对着我的相机。我的相机显示我可以录制 9 小时的视频,而使用 32GB 卡则可以录制 4 小时!这意味着容量不会丢失。
那么问题是谁说谎相机或PC?似乎 HPA 是根本原因,PC 获得了我的 SD 卡的一些空间。
我试图在我的 android 设备上格式化 SD 卡。最后 PC 显示给我 64GB
# dmesg | tail -n 20
[15394.096958] usb-storage 2-5:1.0: USB Mass Storage device detected
[15394.097115] scsi22 : usb-storage 2-5:1.0
[15395.097725] scsi 22:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0 CCS
[15395.097962] sd 22:0:0:0: Attached scsi generic sg2 type 0
[15395.099192] sd 22:0:0:0: [sdb] 57626624 512-byte logical blocks: (29.5 GB/27.4 GiB)
[15395.099822] sd 22:0:0:0: [sdb] Write Protect is off
[15395.099824] sd 22:0:0:0: [sdb] Mode Sense: 4b 00 00 08
[15395.100449] sd 22:0:0:0: [sdb] No Caching mode page found
[15395.100452] sd 22:0:0:0: [sdb] Assuming drive cache: write through
[15395.108424] sd 22:0:0:0: [sdb] No Caching mode page found
[15395.108427] sd 22:0:0:0: [sdb] Assuming drive cache: write through
[15395.123181] sdb: sdb1
[15395.123185] sdb: p1 size 124733440 extends beyond EOD, enabling native capacity
[15395.125048] sd 22:0:0:0: [sdb] No Caching mode page found
[15395.125056] sd 22:0:0:0: [sdb] Assuming drive cache: write through
[15395.125836] sdb: sdb1
[15395.125847] sdb: p1 size 124733440 extends beyond EOD, truncated
[15395.129559] sd 22:0:0:0: [sdb] No Caching mode page found
[15395.129570] sd 22:0:0:0: [sdb] Assuming drive cache: write through
[15395.129578] sd 22:0:0:0: [sdb] Attached SCSI removable disk
# df -h | grep sdb
/dev/sdb1 60G 20K 60G 1% /media/alek/C8AE-0ADD
Run Code Online (Sandbox Code Playgroud)
但仍然启用了 HPA
# hdparm -N /dev/sdb
/dev/sdb:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
max sectors = 0/1, HPA is enabled
Run Code Online (Sandbox Code Playgroud)
我买了卡。相机显示我可以使用新卡录制比使用 32GB 旧卡更长(两倍)的视频。
我用 ext4 文件系统在我的 PC 上格式化了 SD 卡。我第一次检查了容量,大约是 30 GB。
我用 exFat 格式化了 SD 卡。我在 PC 上检查了容量。它仍然约为30GB。我将 SD 卡插入我的相机。相机显示我可以像以前一样使用 32GB 卡录制更长的视频。
我在安卓设备上重新格式化了 SD 卡。Android 设备显示该卡具有 60 GB 容量。然后我将卡插入PC。PC 开始显示正确的容量 - 60GB。
它是在我在 android 设备上格式化后添加的。所以它显示大约64GB。
# sgdisk --print /dev/sdb
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Warning! Secondary partition table overlaps the last partition by
67108897 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/sdb: 57626624 sectors, 27.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): B5FDFA69-32D4-42B0-B8A3-B14DF7A513B5
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 57626590
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 124735487 59.5 GiB 0700 Microsoft basic data
Run Code Online (Sandbox Code Playgroud)
dd if=/dev/zero of=1gb_file bs=1024 count=1048576
复制了60次到SD卡
因为我在seq 1 60;做 echo -n ($i) ; cp -v 1gb_file /media/alek/C8AE-0ADD/$i ; 完毕
(1)«1gb_file» -> «/media/alek/C8AE-0ADD/1» (2)«1gb_file» -> «/media/alek/C8AE-0ADD/2» (3)«1gb_file» -> «/媒体/alek/C8AE-0ADD/3»
...
(57)«1gb_file» -> «/media/alek/C8AE-0ADD/57» (58)«1gb_file» -> «/media/alek/C8AE-0ADD/58» (59)«1gb_file» -> «/媒体/alek/C8AE-0ADD/59»
(60)«1gb_file» -> «/media/alek/C8AE-0ADD/59»
cp:写入“/media/alek/C8AE-0ADD/60”时出错:设备上没有剩余空间
cp:无法扩展“/media/alek/C8AE-0ADD/60”:设备上没有剩余空间
只有最新的命令失败,因为磁盘已满。所以我可以向我的 SD 卡写入大约 60 GB。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 698,7G 0 disk
??sda1 8:1 0 171,2G 0 part /
??sda2 8:2 0 7,6G 0 part
??sda3 8:3 0 163G 0 part
??sda4 8:4 0 356,9G 0 part /home
sdb 8:16 1 27,5G 0 disk
??sdb1 8:17 1 27,5G 0 part /media/alek/C8AE-0ADD
sr0 11:0 1 1024M 0 rom
Run Code Online (Sandbox Code Playgroud)
# dd if=/dev/sdb of=/dev/null
57626624+0 records in
57626624+0 records out
29504831488 bytes (30 GB) copied, 1518,73 s, 19,4 MB/s
Run Code Online (Sandbox Code Playgroud)
这是SD卡读卡器的问题。

我想我现在会写下我的结论作为答案。简而言之,您的 USB SD 读卡器有缺陷。据报道,该卡的尺寸比实际尺寸要小。当您在 Android 设备中格式化该卡(使用其全部容量),然后将其安装到计算机中时,您将无法正确访问整个磁盘,因此您将很快损坏文件。
返回或以其他方式扔掉当前的读卡器,并购买一个能够正确识别该卡的全部容量的新读卡器。
| 归档时间: |
|
| 查看次数: |
9709 次 |
| 最近记录: |