fsckをloopデバイスに使う


『Back Street Girls -ゴクドルズ-』

笑えるアニメが増えてきました。
まだ私が十代の頃、大人ぶって、バーにジュースを飲みに行くことがありました。
そこで、ボーイッシュな女友達について、アメリカ人と日本人の友人が話していて、
「いやいや、男、みたい、ではなく、男なんだよ」
「have you checked?」
ってやりとりをしていたんですが、周囲で笑いがどっとおこりました。
当時、話していることは分かったのですが、何が面白いのか分かりませんでした。
何が面白いか聞いたら、これがアメリカンジョークみたいな感覚かも、って皆言ってましたが、今でもその感覚は分かりません。ユーモアは、相性もあるので、面白さの感覚は人それぞれですね。
まあこのアニメは、間違いなく笑えます。

今回は、チェックつながりで、fsck使います。
ハードディスクをまるごとチェックするのは面倒なので、loopデバイスを作成してチェックします。

まずは適当に100Mのファイル作成。

takk@deb9:~/tmp$ ls
takk@deb9:~/tmp$ truncate -s 100M a.bin
takk@deb9:~/tmp$ file a.bin
a.bin: data
takk@deb9:~/tmp$ od -tx1 -Ax a.bin
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
6400000
takk@deb9:~/tmp$ 

中身は全部0ですね。

フォーマットします。ext3にしました。

takk@deb9:~/tmp$ sudo mkfs -t ext3 a.bin
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done                            
Creating filesystem with 102400 1k blocks and 25688 inodes
Filesystem UUID: 4213e153-bc5b-4fa5-8407-17c06279f0b4
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done 

takk@deb9:~/tmp$ 

フォーマットできたか確認。

takk@deb9:~/tmp$ file a.bin
a.bin: Linux rev 1.0 ext3 filesystem data, UUID=4213e153-bc5b-4fa5-8407-17c06279f0b4 (large files)
takk@deb9:~/tmp$ 

マウントします。

takk@deb9:~/tmp$ sudo mount -o loop a.bin test
takk@deb9:~/tmp$

dfで確認。/dev/loop0が増えていますね。

takk@deb9:~/tmp$ df
ファイルシス   1K-ブロック     使用   使用可 使用% マウント位置
udev               2014288        0  2014288    0% /dev
tmpfs               405108    16124   388984    4% /run
/dev/sda1         36893152 11101956 23887428   32% /
tmpfs              2025524    30232  1995292    2% /dev/shm
tmpfs                 5120        4     5116    1% /run/lock
tmpfs              2025524        0  2025524    0% /sys/fs/cgroup
tmpfs               405104        4   405100    1% /run/user/112
tmpfs               405104       20   405084    1% /run/user/1000
/dev/sr0             56614    56614        0  100% /media/cdrom0
/dev/loop0           95054     1567    88367    2% /home/takk/tmp/test
takk@deb9:~/tmp$ 

fsck使います。

takk@deb9:~/tmp$ sudo fsck /dev/loop0
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
/dev/loop0 is mounted.
e2fsck: Cannot continue, aborting.


takk@deb9:~/tmp$ 

ん~。マウントしていると使えないようです。
umount後、losetupで/dev/loop0を作成することにします。

takk@deb9:~/tmp$ sudo umount test
takk@deb9:~/tmp$ sudo losetup /dev/loop0 a.bin
takk@deb9:~/tmp$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE            DIO
/dev/loop0         0      0         0  0 /home/takk/tmp/a.bin   0
takk@deb9:~/tmp$ 

これで、/ev/loop0ができました。

ここで、man fsck確認。

FSCK(8)                    System Manager's Manual                   FSCK(8)

名前
       fsck - Linux ファイルシステムのチェックと修復を行う

書式
       fsck  [  -sAVRTNP ] [ -C [ fd ] ] [ -t fstype ] [filesys ... ] [--] [
       fs-specific-options ]



~省略~

       fsck の返り値は、以下の状態を表す数の和となる。
            0    - エラーなし
            1    - ファイルシステムのエラーが修正された
            2    - システムをリブートする必要がある
            4    - ファイルシステムのエラーが修正されないまま
                   残っている
            8    - 操作エラー
            16   - 利用法・文法のエラー
            32   - fsck がユーザ要求によってキャンセルされた
            128  - 共有ライブラリのエラー
       複数のファイルシステムをチェックした場合の返り値は、   チェックした各
       ファイルシステムの返り値に対して、  ビットごとの  OR をとったものにな
       る。


~省略~


       -a     質問なしで自動的にファイルシステムを修復する (このオプションの
              使用には注意を要する)。 ほとんどのファイルシステムチェッカーは
              -a  オプションに対応しているが、  e2fsck(8) においては -a オプ
              ションは過去互換性のために準備されているだけである。  したがっ
              て  e2fsck  では、このオプションは  (安全に利用できる) -p オプ
              ションにマップされ、    いくつかのフィルシステムチェッカーがサ
              ポートしている -a にはマップされない。

注意する点としては戻り値でしょうか。0なら成功は覚えられますが、他は覚えられないので、毎回man fsckで確認することになりそうです。

では、fsckかけます。

takk@deb9:~/tmp$ sudo fsck -a /dev/loop0
fsck from util-linux 2.29.2
/dev/loop0: clean, 11/25688 files, 8913/102400 blocks
takk@deb9:~/tmp$ echo $?
0
takk@deb9:~/tmp$ 

成功しました。ファイルを破壊してないので当たり前ですが、特に問題ないようです。

次回、ファイルを破壊後、修復してみます。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA