есть раздел XFS, который, как мне кажется, ведет себя очень странно. Он отлично монтируется под системой, но не может монтироваться под другими, в том числе моей основной системой. Поскольку я новичок в XFS, я хотел бы услышать от пользователей более опытных, чем я, прежде чем я просто забуду о XFS.
Arch i686
(ядро 3.19-ck) с parted
. Не было никаких проблем с доступом к нему в этой системе. Но под Fedora 16 i686
со старым ядром, где оно не монтировалось, даже после запуска xfs_repair
.Arch x86_64
который заменил версию i686 на моем основном ноутбуке. Ничего не менял, кроме версии ОС.Slackware 14.1
с linux-3.17.4 (i686) он просто ... монтируется ?!Вот схема диска
# fdisk -l /dev/sdb
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x531843f8
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 212991 204800 100M 83 Linux
/dev/sdb2 212992 8200191 7987200 3.8G 82 Linux swap / Solaris
/dev/sdb3 8200192 20488191 12288000 5.9G 83 Linux
/dev/sdb4 20488192 1953523711 1933035520 921.8G 83 Linux
Попытка монтировать, поскольку мой пользователь дал это:
$ mount /media/momedia/
mount: mount /dev/sdb4 on /media/momedia failed: Structure needs cleaning
Тогда как root
# mount /media/momedia/
mount: wrong fs type, bad option, bad superblock on /dev/sdb4,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
С участием dmesg
:
# dmesg | tail
[274136.490862] sd 9:0:0:0: [sdb] 1953525168 512-byte logical blocks:
(1.00 TB/931 GiB)
[274136.490876] sd 9:0:0:0: [sdb] 4096-byte physical blocks
[274136.491965] sd 9:0:0:0: [sdb] Write Protect is off
[274136.491980] sd 9:0:0:0: [sdb] Mode Sense: 43 00 00 00
[274136.493079] sd 9:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[274136.519478] sdb: sdb1 sdb2 sdb3 sdb4
[274136.523459] sd 9:0:0:0: [sdb] Attached SCSI disk
[274162.463851] XFS (sdb4): Version 5 superblock detected. This kernel has EXPERIMENTAL support enabled!
Use of these features in this kernel is at your own risk!
[274162.463864] XFS (sdb4): Superblock has unknown read-only compatible features (0x1) enabled.
[274162.463869] XFS (sdb4): Attempted to mount read-only compatible filesystem read-write.
Filesystem can only be safely mounted read only.
[274162.463878] ffff880079931000: 58 46 53 42 00 00 10 00 00 00 00 00 0e 66 f9 00 XFSB.........f..
[274162.463884] ffff880079931010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[274162.463889] ffff880079931020: ed 2d 1b 3d be 8e 4a 99 94 48 1e 50 b3 63 8a 3b .-.=..J..H.P.c.;
[274162.463895] ffff880079931030: 00 00 00 00 08 00 00 08 00 00 00 00 00 00 00 60 ...............`
[274162.463901] XFS (sdb4): Internal error xfs_sb_read_verify at line 730 of file fs/xfs/xfs_mount.c. Caller 0xffffffffa0714635
[274162.463910] CPU: 0 PID: 81 Comm: kworker/0:1H Not tainted 3.10.94-1-lts310-ck #1
[274162.463915] Hardware name: Dell Inc. Inspiron 1012/00D2K7, BIOS A11 11/12/2010
[274162.463942] Workqueue: xfslogd xfs_buf_iodone_work [xfs]
[274162.463947] 0000000000000001 ffff880078f25d88 ffffffff814bec2d ffff880078f25dc8
[274162.463956] ffffffffa07172d3 ffffffffa0714635 ffffffffa0795945 ffff88007002a100
[274162.463963] 0000000000000016 ffff88007985d800 0000000000001000 ffff880078f25e08
[274162.463971] Call Trace:
[274162.463985] [<ffffffff814bec2d>] dump_stack+0x19/0x1b
[274162.464007] [<ffffffffa07172d3>] xfs_corruption_error+0x93/0xa0 [xfs]
[274162.464028] [<ffffffffa0714635>] ? xfs_buf_iodone_work+0x75/0xa0 [xfs]
[274162.464059] [<ffffffffa076da02>] xfs_sb_read_verify+0x112/0x130 [xfs]
[274162.464081] [<ffffffffa0714635>] ? xfs_buf_iodone_work+0x75/0xa0 [xfs]
[274162.464102] [<ffffffffa0714635>] xfs_buf_iodone_work+0x75/0xa0 [xfs]
[274162.464112] [<ffffffff8107558a>] process_one_work+0x17a/0x4e0
[274162.464120] [<ffffffff81076093>] worker_thread+0x123/0x430
[274162.464128] [<ffffffff814c2dc3>] ? preempt_schedule+0x43/0x60
[274162.464137] [<ffffffff81075f70>] ? manage_workers.isra.8+0x290/0x290
[274162.464144] [<ffffffff8107c6f0>] kthread+0xc0/0xd0
[274162.464152] [<ffffffff8107c630>] ? kthread_worker_fn+0x170/0x170
[274162.464161] [<ffffffff814cbe48>] ret_from_fork+0x58/0x90
[274162.464168] [<ffffffff8107c630>] ? kthread_worker_fn+0x170/0x170
[274162.464174] XFS (sdb4): Corruption detected. Unmount and run xfs_repair
[274162.464193] XFS (sdb4): SB validate failed with error 22.
file -s идентифицирует файловую систему аккуратно и ясно
[root@gwenael ~]# file -s /dev/sdb4
/dev/sdb4: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Я проверил данные в начале раздела и нашел их аккуратными (но я не эксперт, когда дело доходит до шестнадцатеричного кода)
[root@gwenael ~]# dd if=/dev/sdb4 bs=512 count=64 iflag=direct | hexdump -C
64+0 records in
64+0 records out
32768 bytes (33 kB) copied, 0.0252469 s, 1.3 MB/s
00000000 58 46 53 42 00 00 10 00 00 00 00 00 0e 66 f9 00 |XFSB.........f..|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 ed 2d 1b 3d be 8e 4a 99 94 48 1e 50 b3 63 8a 3b |.-.=..J..H.P.c.;|
00000030 00 00 00 00 08 00 00 08 00 00 00 00 00 00 00 60 |...............`|
00000040 00 00 00 00 00 00 00 61 00 00 00 00 00 00 00 62 |.......a.......b|
00000050 00 00 00 01 03 99 be 40 00 00 00 04 00 00 00 00 |.......@........|
00000060 00 01 cc df bc a5 10 00 02 00 00 08 6d 6f 6d 65 |............mome|
00000070 64 69 61 73 00 00 00 00 0c 0c 09 03 1a 00 00 19 |dias............|
00000080 00 00 00 00 00 03 f8 00 00 00 00 00 00 00 01 22 |..............."|
00000090 00 00 00 00 09 77 78 90 00 00 00 00 00 00 00 00 |.....wx.........|
000000a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
000000b0 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 |................|
При следующей попытке монтирования вывод изменился на то, что было от моего пользователя
# mount -t xfs /dev/sdb4 /media/momedia/
mount: mount /dev/sdb4 on /media/momedia failed: Structure needs cleaning
Безопасная проверка находит суперблок
# xfs_repair -n /dev/sdb4
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
- found root inode chunk
<SNIP SNIP>
- moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
Maximum metadata LSN (1:402600) is ahead of log (1:8).
Would format log to cycle 4.
Поскольку он не монтируется, я бегу xfs_repair /dev/sdb4
с тем же выходом, что и выше, но
Phase 5 - rebuild AG headers and trees...
- reset superblock...
Но я тоже не могу его смонтировать
# mount -t xfs /dev/sdb4 /media/momedia/
mount: wrong fs type, bad option, bad superblock on /dev/sdb4,
missing codepage or helper program, or other error
Я тогда побежал xfs_repair /dev/sdb4
с тем же результатом.
Впервые встречаю такую чувствительный FS Итак, знаете ли вы, что я могу сделать, чтобы это крепление было более стандартным / совместимым?
ИЗМЕНИТЬ, чтобы отображать полный системный журнал при команде монтирования. Кроме того, установка его только для чтения в соответствии с советом журнала не удается на Arch:
# mount -t xfs -o ro /dev/sdb4 /mnt/tmp/
mount: mount /dev/sdb4 on /mnt/tmp failed: Structure needs cleaning
mkfs.xfs (начиная с версии 3.2.4 xfsprogs) недавно по умолчанию перешел на суперблок версии 5 с множеством новых улучшений, таких как контрольные суммы CRC метаданных. Для суперблока версии 5 требуется ядро 3.16 или выше. Эта ошибка типична: вы пытаетесь смонтировать том в ядре, которое не поддерживает суперблоки v5, т.е. е. с версией до 3.16.
Будьте осторожны при использовании последних версий xfsprogs со старыми ядрами. Вам нужно будет использовать эти параметры для создания файловой системы v4:
mkfs.xfs -m crc=0,finobt=0 /your/device
Обратите внимание, что опция finobt может не понадобиться.
С другой стороны, если вам нужно проверить или восстановить файловую систему, всегда лучше использовать последнюю версию xfsprogs. Поэтому я бы посоветовал использовать xfsprogs в максимально возможной версии с оговоркой, что вам может потребоваться использовать предыдущую командную строку при создании новой файловой системы, чтобы убедиться, что она совместима с вашим запущенным ядром.
Есть исключение: RedHat / CentOS v. 7.x предоставляют xfsprogs в версии, которая поддерживает XFS v5, а их ядра (хотя версия по умолчанию претендует на 3.10.x) также поддерживает XFS v5.
Однако файл mkfs.xfs RH / CentOS был исправлен на XFS v4. Поэтому, если вы используете RedHat / CentOS v7.x, вы можете использовать
mkfs.xfs -m crc=1,finobt=1 /your/device
чтобы воспользоваться новыми функциями.