WD80EFZXを買って考える、大容量HDDのアロケーションユニットサイズ

8TBのHDDを買いました。

2TBのHDD2本で長いこと暮らしていましたが、いよいよ容量が逼迫してきてここ数か月は不要なファイルを削除しつつなんとか凌いでいる感じでした。

しかしいつ満杯になってしまうか気にしながら恐る恐る使うのは精神衛生上よろしくないので、ちょっと奮発して8TBのHDDを買ってしまいました。
これで一気に容量が倍、さらに8TBがいっぱいになっても、1本追加する余裕ができるということで、しばらくはデータの掃除から解放されることに。

さて、この8TBのHDDをフォーマットするにあたり、ふと、アロケーションユニットサイズをいくらにするのが適切か、ちょっと考えてみました。

アロケーションユニットサイズとは

アロケーションユニットサイズ、クラスタサイズともいいますが、これはファイルシステムがディスクに読み書きする際の最小単位のことです。

ファイルシステムがファイルを書き込む際、ファイルはアロケーションユニットに分割されてディスクに書き込まれます。

たとえば、アロケーションユニットサイズが4KBだった場合、16KBのファイルは4つのアロケーションユニットに分割して書き込まれることになります。16KB÷4KB=4 ということですね。 

NTFSアロケーションユニットサイズはデフォルトで4KBです。フォーマット時に4KB~64KBの範囲で選ぶことができます。

https://msdn.microsoft.com/ja-jp/library/dn466522(v=ws.11).aspx

さて、このアロケーションユニットサイズを変更することでどんな影響があるかというと、大きくは以下の2点です。

フラグメンテーション

一つ目のフラグメンテーション(断片化)ですが、さっきの例では16KBのファイルが4つのアロケーションユニットに分割して保存されました。実はこのとき、分割されたアロケーションユニットが、必ずしもディスク上で連続した場所に保存されるとは限りません。連続した4つのアロケーションユニットが確保できればいいのですが、できなかった場合は空いている場所に飛ばされてしまいます。HDDは連続した領域への読み書き(シーケンシャルアクセス)は得意ですが、ばらばらな場所からデータを読み書きする(ランダムアクセス)は苦手です。そのため、アロケーションユニットサイズを大きくとり、できるだけファイルが分割されないようにしたほうが、ファイルアクセスが高速になります。

クラスタギャップ

二つ目のクラスタギャップについてです。
さっきの例では、16KBのファイルをきっちり4KBのアロケーションユニット4つにおさめることができました。
ここでもし、ファイルサイズが17KBであったらどうなるのでしょうか?アロケーションユニットは、ファイルシステムがディスクに読み書きする最小単位なので、17KBのファイルを保存するには、16KB+4KB、つまり5つのアロケーションユニットが必要となります。さて、5つ目のアロケーションユニットには1KBしかデータを保存しませんが、残りの3KBは何に使われるのでしょうか?
答えは、何にも使われません。
つまり、17KBのデータを保存するには、20KBのディスク上の領域が必要で、そのとき3KBは無駄になってしまうということになります。この、実際のデータサイズとそのデータを保存するために必要なディスク上のサイズの差をクラスタギャップといいます。
クラスタギャップはファイル数が多いほど、またアロケーションユニットサイズが大きいほど多くなります。
例えばアロケーションユニットサイズが4KBであれば、1KBのファイルを保存するときのクラスタギャップは3KBですが、アロケーションユニットサイズが64KBであれば、1KBのファイルを保存するときのクラスタギャップは63KBにもなります。
また、クラスタギャップが発生するのは、そのファイルの最後のアロケーションユニットだけなので、ファイルサイズが大きくても小さくても関係なく、クラスタギャップは1ファイルにつき1つだけ発生します。

上記2点を考慮すると、ディスクの読み書きの速度を上げるにはアロケーションユニットはできるだけ大きくしたいですが、クラスタギャップを小さくしてディスクの無駄遣いをなくすには、アロケーションユニットを小さくしたほうがよいとなります。

最適なアロケーションユニットサイズの考え方

さて、では最適なアロケーションユニットサイズはどのように考えればいいでしょうか?

今回は、今まで使っていたHDDの置き換えですので、既存ディスクの使用状況を見てみます。
アロケーションユニットサイズはすべてデフォルトの4KBで作ってあります。

HDD1台目
ファイル数 54,863
サイズ   1,965,779,878,872 バイト
ディスク上のサイズ 1,965,890,957,312 バイト
クラスタギャップ 111,078,440 バイト

HDD2台目
ファイル数 54,045
サイズ   1,441,201,290,584 バイト
ディスク上のサイズ 1,441,313,718,272 バイト
クラスタギャップ 112,427,688 バイト

クラスタギャップをファイル数で割ると、約2KBになりました。クラスタギャップが0~4KBの範囲でどのように発生するかはファイルサイズによりますが、平均すると1ファイルあたりアロケーションユニットサイズの半分と考えてよさそうです。

また、1ファイルあたりの平均サイズは約34MB(35,253KB)程度となりました。データ保存に使っているので、比較的大きなファイルが多いようです。

この傾向で今後もデータが増えていくとして、8TBのディスクを使いきるころに、クラスタギャップはどの程度のサイズになっているでしょうか?

まずはアロケーションユニットサイズを64KBにした場合を考えてみます。
1ファイルあたりのディスク上のサイズは、ファイルサイズ35,253KB+クラスタギャップ32KB(64KBの半分)なので、35,285KB (約35MB)になります。

8TB÷35MB=226,519 で、ファイル数は22万6千ほどになっている見込みです。
すると、クラスタギャップは (64KB÷2) × 22万6千 = 7.2 GB となりました。

アロケーションユニットサイズを4KBにすれば、クラスタギャップは1/16になるので460MBほどになるでしょう。

アロケーションユニットサイズを4KBから64KBに変更した際のアクセス速度の向上が、ディスク6.8GBを無駄にしてもいいと思えるほどであれば、増やすメリットがあるということになりますね。

ただ、アロケーションユニットサイズの違いによるディスクアクセス性能への影響は、通常のディスクパフォーマンス測定ツールを使った定量測定が難しい(*)ので、とりあえず今回は64KBでフォーマットしてみようと思いました。

(*)断片化を意図的に発生させる必要があるため。デフラグツールは結構ありますが、断片化ツールは意外にないですね。ファイルのランダム再配置でがんばって断片化させようというツールはありましたが、ディスクサイズを考えるとデフラグツールと同じようにWindowsの標準デフラグAPIを使って任意に断片化を発生させないと意味のある測定はできなさそう。

ちなみに

システムディスクはOSやアプリケーションの小さなファイルが大量にあるため、アロケーションユニットサイズは小さくしたほうがいいでしょう。
最近のシステムディスクにはSSDを使う人が多いと思います。SSDはHDDと比べてランダムアクセスがはるかに高速なので、アロケーションユニットサイズを大きくすることによる速度向上はHDDに比べて小さくなると思います。逆に容量単価が高いので、アロケーションユニットサイズを小さくして効率的に利用するメリットが大きいと思います。

Windows 10 マシンを Windows Server 2016 TP3 に入れ替える

Windows 10 が正式リリースされお役御免となったWindows 10 Insider Preview。

10月1日にはライセンスが停止(2週間後までは起動可能だが3時間おきにリブートされ、10月15日で起動不可となる)する。
Windows 10 Technical Preview の有効期限について - マイクロソフト コミュニティ

利用期限はBuildごとに切られており、上記は10049までの情報だった。リリース後もInsider Programに参加することでInsider Preview版の利用は継続可能。Build 10240以降は今のところ利用期限は切られていない様子(slmgrで確認)(最新は10547)。

そのため空いた評価機を Windows Server 2016 Technical Preview 3 に入れ替えることにした。

ダウンロード

https://technet.microsoft.com/ja-jp/evalcenter/dn781243.aspx

2種類のエディションがある。2つ目はサーバコアなのでISOを選ぶ。

  • Windows Server 2016 Technical Preview 3 64 ビット ISO
  • Windows Server 2016 Technical Preview 3 Core with Windows Server Containers

USBブートドライブを作成

TechNetにはISOしかない。Rufus でUSBブートドライブを作成できた。

Rufus - 窓の杜ライブラリ

インストール

  • Select the opetation systetm you want to install

バリバリサーバ機として使うわけではないので、Server with Desktop Experience を選択。

  • Where do you want to install Windows?

パーティション無しの状態でインストールすると、ドライブの先頭に500MBの予約領域が作成される。その後インストール中に Getting files ready for Installation の途中で 0x8007045D のエラーにより進まなくなった。I/Oエラーのようだがドライブがおかしいのかと思い、別マシンでチェックしたが特に問題なし。

ディスクの管理から見ると予約領域として作成されたはずの500MBが未割当となっていて、システム領域が作られていないように見えたため、試しに予約領域無しでインストールすることに。別のパソコンであらかじめドライブの全領域を使い一つのパーティションを作成。そのパーティションに再インストールしたところ問題なくインストールできた。

ユーザ作成

Edgeなどはビルトインアドミニストレータでは使えないとのことで、通常利用の管理者アカウントを作成した。



とりあえずここまで

タブレットに充電しながらUSB機器が使える、OTG充電対応のUSBハブ ルートアール RUH-OTGU4+C を試す

(追記) USB充電の仕様についてはこちらの記事が図解で詳しいのでご参考に

www.atmarkit.co.jp


最近のスマホタブレットはmicroUSBポートから充電するものが多い。

DG-D10IW2も2つあるUSBポートのうち、一つはmicroUSBポートでACアダプタを刺して充電するために用意されている。
そのため、そのままだとUSB機器を繋げられるポートは1つだけということになる。

USBハブを繋げれば問題ないものの、据え置きポジションからちょっと持ち歩くのにUSBケーブルを2本外すのはめんどくさい。

そこでこのmicroUSBポートのほうにUSBハブを追加し、さらに充電もできるようにする便利なOTGハブを購入した。

タブレットのmicroUSBにUSB機器を繋げられるようにする「OTG」について。

充電用のmicroUSBポートは接続したACアダプタから電気を貰う側になる。
これはパソコン(ホスト)がUSBマウス(デバイス)に電気を供給するのと同じ関係で、つまりDG-D10IW2のmicroUSBポートはUSBマウスと同じようにデバイスとして扱かわれている、ということだ。

USBは利用する側(ホスト)と利用される側(デバイス)がある。仮にUSBマウス(デバイス)にUSBマウス(デバイス)を繋いだとしても、当然お互いを操作できない。

そして電気は通常、ホスト(パソコン)からデバイス(マウス)に供給されるので、DG-D10IW2はデバイスとして電気を受け取って充電しているわけだ。

このままではデバイスであるDG-D10IW2にほかのUSB機器(デバイス)を接続することはできないのだが、マウスと違ってタブレットは、USB機器を使う側(ホスト)になることもできる。

ただ、ひとつのUSBポートが同時にホストとデバイスになる、ということはできないので、あるときはデバイス、あるときはホストと切り替える必要がある。

その切り替えを行うための規格が、USB On-the-Go (OTG)である。

通常はデバイスとして動いているmicroUSBポートだが、OTGに対応しているUSBケーブル、もしくはUSBハブを繋げることで、ホストとして動作し、デバイスを接続することができる。
(OTG対応ケーブルは、タブレットにホストとして動けと知らせる機能を備えている)

OTGを使うことでタブレットのmicroUSBポートに普通にUSB機器を繋げられるようになるわけだが、前述したように電源はホストからデバイスに供給されるため、通常のOTGケーブルを繋げただけではホストになったタブレットに電気を供給する(=充電する)ことができなくなってしまう。

OTGでUSB機器を繋げ、さらに充電もできるようにする

そういった利用シーンに対応するため、ACA(Accessory Charger Adaptor)という規格があり、OTG充電に対応とうたっているOTG対応ケーブル、ハブを購入することで、USB機器を使いながらタブレットを充電するできる。

しかしこの規格、タブレットとハブの相性によっては、説明書通りに繋いでも充電されない!とか、充電アイコンはでるのに実は全く充電されていない!というような状態に陥ってしまうことがよくある。

今回DG-D10IW2用にルートアール RUH-OTGU4+Cを購入し、USBハブ機能と充電ができるか確認した。

ルートアール RUH-OTGU4+C

スリムサイズ。4ポート。タブレットの種類ごとにスイッチを切り替えることで相性問題が起きにくいようにしている。などが特徴。2A対応のUSB充電ケーブルも付属するが、ACアダプタ自体は付属しないのでDG-D10IW2のアダプタをそのまま使う。ACアダプタはUSB接続で汎用性があり、様々な製品が出ている。必要な容量のものを自由に選べる点がよい。

付属の説明書は nexus7、Lenovo Miix 8、Venue 8 Pro、の場合の使い方が書かれているが、DG-D10IW2ではそれらの方法では使えなかった。

DG-D10IW2での利用手順は以下の通り。

  1. RUH-OTGU4+Cに何も繋がない状態にする
  2. 製品本体のスイッチ(OTG Only、A、Bの3つから選ぶ)をA、もしくはB、にする。
  3. DG-D10IW2のmicroUSBに繋ぐ
  4. ACアダプタを繋ぐ
  5. USB機器を繋ぐ

このうち重要なのが 1 の手順。
説明書には先にACアダプタをRUH-OTGU4+Cに繋げと書かれているが、そうすると通常のUSBハブとしては使えるが、肝心の充電はできない。
しかもWindowsのバッテリーアイコンは充電中となるので、しばらく使ってて「あれ?充電しているのにバッテリーが減ってくな」ということになる。
必ず先にDG-D10IW2に繋いでからACアダプタを接続すること。

スイッチの切り替えで何が変わるのか

この[OTG Only]か[AまたはB]の違いは、電源をタブレットから供給するか、ACアダプタから供給するか、の違いである。

[OTG Only]では、タブレットがホストになり、デバイスへの給電もタブレットが行う。つまりバッテリーは減る。

[AまたはB]では、タブレットがホストになるが、タブレットを含むデバイスへの給電はACアダプタが行う。

そのためもし動作中にスイッチを切り替えた場合には以下のような動作になる。

  • [AまたはB]から[OTG Only]に切り替えると、ACアダプタからの充電が止まる。接続しているUSB機器はそのまま使える。
  • その状態でACアダプタを抜いてもUSB機器へはタブレットが給電しているので使い続けることができる。
  • しかしACアダプタを抜いた状態で[AまたはB]に切り替えると、タブレットからの給電が止まり、USB機器が停止する。
  • ACアダプタを刺した状態で[AまたはB]に切り替えると、タブレットへの充電は再開しない。USB機器へはACアダプタから給電される。タブレットからの給電は止まるので、ACアダプタを抜くとUSB機器は停止する。
  • スイッチが[AまたはB]の状態でACアダプタを一度抜いて再度差し込むと、タブレットへの充電もUSBへの給電も再開される。

まとめると、

  • タブレットへの充電をするには、スイッチが[AかB]の状態でタブレットに繋いでからACアダプタを接続すればよい。
  • USB機器へバッテリーではなくACアダプタで給電したい場合には、ACアダプタを繋いだ状態で一旦[OTG Only]に切り替えたのち、[AまたはB]に切り替えればよい。


ACアダプタの容量によっては、タブレットへの充電と電力消費の大きいUSB機器への給電の両方を行うことができない場合があるだろう。

また、ほぼ据え置きで使う場合、常に100%の状態でバッテリーを充電し続けるとバッテリーが劣化してしまう。[OTG Only]だと起動中やスリープ中は充電されず、シャットダウンしたときのみ充電されるので、普段はバッテリーを使い、たまにシャットダウンして充電、とかもできそう。

ほんとうに充電されているか?を確認する

Windowsのバッテリーアイコンで充電中となっていても、実際には充電されていないケースがある。

フリーソフト[BatteryInfoView]で[Charge/Discharge Rate]を見ることで、実際の充電状態を確認することができる。

gigazine.net

ドスパラの10.1型Windowsタブレット DG-D10IW2

6年前に購入したサブPC、NA801が逝ってしまったため代替機として DG-D10IW2 の Windows 8.1 モデルを購入。店頭アウトレットで2.6万。

スペックや使用感はネットにいろいろと情報があるので、電源を入れた後最初にやっておくべきバックアップやWindows 10へのアップグレードについて記載する。

USB回復ドライブを作成する

Windows 10 へのアップグレードも考えて、まずは何があっても初期状態に復元できるよう、回復ドライブを作成する。
4GBのUSBメモリを用意する。後述するUSBメモリのバックアップを行う場合、できるだけ小さいサイズ(4GBないし8GB)がお勧め。microSDHCにも作成できるが、内臓のカードリーダからはbootできないため別途USB接続のカードリーダーを用意する必要がある。

http://windows.microsoft.com/ja-jp/windows-8/create-usb-recovery-drive

USB回復ドライブを作成したら、USBメモリの破損に備えてバックアップを取る

[USB Image Tool]などでUSBドライブのイメージを別のパソコンのハードディスクへコピーする。
USB Image Toolのオプションの[Create MD5 checksums...]にチェックしておくと、ファイルのチェックサムも一緒に生成してくれる。

回復ドライブのサイズは3.6GB程度。このバックアップではUSBメモリのサイズと同サイズのファイルができる。
USB Image ToolでCompress Image File Format(.imz)で保存するか、自分でZIP圧縮することでサイズを小さくできる。

再セットアップを試す

作成したUSB回復ドライブから問題なく再セットアップができるか試す。あえてしなくてもいいが、避難訓練みたいなもの。

実際やってみて、USB回復ドライブからの回復と、元から内臓ドライブに作成されている回復ドライブからの回復とで手順が若干違うことがわかった。

まずはUSB回復ドライブとUSBキーボード(BluetoothはNG)をタブレットに繋げる。インストール中Bluetoothは使えないのでUSBハブが必須か。

電源ボタンを長押しして電源が入ったら、ボリュームのマイナスボタンを押す。
Diginnosロゴが表示されたタイミングで押してあればOKですが、電源ボタンとボリュームを同時に押しっぱなしにすると電源が入らないようなので注意。

起動ドライブ選択画面が表示されるので、USB回復ドライブのUSBメモリを選んでEnter。

あとは画面に従って キーボードレイアウトの選択(IME)→トラブルシューティング→PCを初期状態に戻す、でOK。

なお、USBメモリから起動した場合には、「PCドライブのパーティション分割をやり直しますか?」という質問が出る。

はい、ドライブのパーティション分割をやり直します。
いいえ、これまでのパーティションをそのまま使います。

いいえ、を選ぶとUSBメモリから起動した場合にはそれはできません的なことを言われるため、はいを選ぶしかない。

また、USBメモリから回復した場合のみ、再インストール中に以下のメッセージが表示された。

A configuration change was requested to clear this computer’s TPM (Trusted Platform Module)

WARNING: Clearing erases infomation stored on the TPM. You Will lose all created keys and access to data encrypted by these keys.

Press F12 or Volume Up to clear the TPM
Press ESC or Volume Down to reject this change request and continue

WARNINGでは、暗号キーを初期化しちゃうので今のキーを使って暗号化していたドライブは使えなくなりますよと言っている。
Cドライブや回復ドライブ、つまりもとから内臓されていたドライブは、どのみち再セットアップで消去するので問題ないと思われるが、特に初期化する必要もないため「Press ESC or Volume Down...」を選ぶ。
(再セットアップでTPMをクリアするのはセキュリティ観点での推奨ぽい。クリアしなくても動作に支障はない様子。)

セットアップ中の「オンラインに接続」は「この手順をスキップする」を選択することをお勧め。

無線LANは 11n 150Mbps でリンク。実行速度はLAN内のマシンに32Mbps、Speedtestサイトに50Mbps。なぜかLANのが遅い。

Microsoft以外のドライバーを [Glary Utilities] でバックアップしておく。ちなみにASCIIの記事では [Double Driver] が紹介されているが、たまたま作業時にダウンロードができなかった。記事で実績のあるDouble Driverをお勧めする。
http://www.forest.impress.co.jp/library/software/doubledriver/

あと C:\windows\inf\touchsetting.gt もバックアップしておく(Windows 10クリーンインストールで使用)

Windows 10 アップグレードの準備

DG-D10IW2のWindows 10へのアップグレードはASCIIの記事がとても参考になる。
ただ記事では Windows 10 のTechnical Preview版を使っているためか、リリース版でやってみると若干の差異があった。

ascii.jp

まずはWindows 10 のメディア作成ツールをダウンロード
http://www.microsoft.com/ja-jp/software-download/windows10

インストールメディアを作成(3GB以上のUSBメモリ)

Windows 8.1Windows 10にアップグレード

結論から言えばタッチパネル、ホームボタン、Wifi、SDカード等特に問題なく使えてる様子。
気のせいか8.1よりもタッチパネルの反応がいい気すらする。起動時間は8.1で測るのを忘れたが、10だと電源ボタン長押し5秒+15秒程度。

ASCIIでは「圧縮されたオペレーティングシステムを利用しているため...」のメッセージが表示されアップグレードができなかったと書かれているが、その現象には出くわさなかった。TechnicalPreview版から改善されている可能性、もしくはこのとき「デバイスの暗号化」を解除した状態でアップグレード作業を行った可能性(記憶があやふや)がある。
デバイスの暗号化解除は[設定]→[PC 設定の変更]→[PC 情報]の最下部。

「すぐに使い始めることができます」画面が表示されたら、簡易設定もしくは「設定のカスタマイズ」で詳細なカスタマイズを行う。
設定項目が1画面に収まっていないことがあります。下にスクロールできるかどうかは、見た目ではわからないのでスライドして確認。

アップデート後、今後のクリーンインストールのためにWindows 10 のプロダクトキーをメモする。プロダクトキーの確認は次のどちらかがお勧め。

フリーソフトを使う
http://www.atmarkit.co.jp/ait/articles/0512/20/news104_2.html

バイナリが不安な場合
http://ameblo.jp/urawaza7/entry-10574273741.html

アップグレードすると、450MBの回復ドライブが追加で作成され、その分Cドライブに割りあてられる容量は減る。
Cドライブの空きは11GB程度、メモリの空きは810MB程度。

なお、アップグレード後、31日間は元のバージョンに戻す(Windows 10をアンインストールする)ことができるが、新しいユーザを追加したりシステムファイルのクリーンアップ等で以前のバージョンの情報(Windows.oldフォルダ等)が削除されると戻せなくなるそうだ。

そこで一つ疑問が。
バージョンアップによりWindows 10のラインセスが新しく払い出される。
当然古いWindows 8.1のライセンスと同時に使うことはできないわけだが、Windows 10をアンインストールすることができない状態になったときにWindows 8.1に戻すことはできるのだろうか?

そこで試しにWindows 10をアンインストールせずに、Windows 8.1クリーンインストールしてみる。

Windows 10 アップグレード後にWindows 8.1クリーンインストールする

Windows 8.1 のUSB回復ドライブで起動。
[PCを初期状態に戻す]の後対象のOSを選択する部分では[Windows 10]を選ぶ(シングルブートなので選択肢は一つ)。

結果、インストールもでき、オンラインでのライセンス認証も完了し、初期状態まで戻すことができた。
これなら安心してWindows 10へ移行することができそう。

Windows 10 クリーンインストール

作成したUSBメモリからBootする。
セットアップ前にプロダクトキーの入力を求められる。

クリーンインストールのため、インストールの種類は[カスタム]を選ぶ。

Windows 8.1を残したままでもインストール可能だが、今回はすっきり削除する。

Ctrl + F10 でコマンドプロンプトを立ち上げる。

diskpart
list disk
select disk 0
list partition
select partition 3
format quick fs=ntfs override

(overrideオプションはBitLockerがかかっているとき用)

インストールが終わったら、Windows 8.1からコピーしておいたドライバーをタブレットの適当な場所にコピー。

デバイスマネージャから不明なデバイスを右クリックし、[ドライバーソフトウェアの更新]→[コンピューターを参照してドライバーソフトウェアを更新します]→[次の場所でドライバーソフトウェアを検索します:]にその場所を指定して一つづつ更新していった。
※今回は手作業で復元したが、バックアップに使ったツールでの復元をお勧め。

Windows 8.1からコピーしておいたドライバーうち、Intel(R) Dynamic Platform and Thermal Framework 関連のドライバーがインストールに失敗してしまう。原因調査の前にDG-D10IWのドライバーを試したらインストールできたので、気持ち悪さはあるもののとりあえず様子を見ることに。(ASCIIでは問題なかったよう。手作業でのドライバ更新か、Glary Utilitiesを使ったことによる違いか)
http://faq3.dospara.co.jp/faq/show/2325

タッチパネルのドライバをインストールしたら、Windows 8.1 からコピーしておいた touchsetting.gt を C:\windows\inf\touchsetting.gt に保存し再起動。

クリーンインストール後Cドライブの空きは17GB、メモリーの空きは1.1GB程度。

後は普段利用の環境を構築していくだけ。

(9/14 今更ながらにASCIIの記事を見つけ、いくつか加筆)