Linuxストレージ周り

凄くわかりにくかったけどなんとなく理解した気がするのでまとめてみた。
合ってるかどうかは不明。

まとめると、ファイルシステムを作成出来るのは

の3つ。

絵的に表すと↓。

ちなみに自分のお遊び仮想マシンは以下の様になっていた。

# fdisk -l
ディスク /dev/sda: 8589 MB, 8589934592 バイト
...
バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
/dev/sda2 64 523 3681280 8e Linux LVM

ディスク /dev/mapper/VolGroup-lv_root: 2692 MB, 2692743168 バイト
...
ディスク /dev/mapper/VolGroup-lv_swap: 1073 MB, 1073741824 バイト
...

# pvscan
PV /dev/sda2 VG VolGroup lvm2 [3.51 GiB / 0 free]
Total: 1 [3.51 GiB] / in use: 1 [3.51 GiB] / in no VG: 0 [0 ]

# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup" using metadata type lvm2

# lvscan
ACTIVE '/dev/VolGroup/lv_root' [2.51 GiB] inherit
ACTIVE '/dev/VolGroup/lv_swap' [1.00 GiB] inherit

#df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
2.5G 928M 1.5G 39% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 30M 431M 7% /boot

sedコマンドの正規表現「+」はエスケープしないとダメ

$ echo '   Slave_IO_Running: Yes   ' | sed 's/\s\+//g'
Slave_IO_Running:Yes

()とかもエスケープしないとダメ。
他にもあるかも。

trim用。

$ echo "    Slave_IO_Running: Yes    " |  sed 's/\(^\s\+\|\s+$\)//g'
Slave_IO_Running: Yes

エスケープしないとダメだった。\だらけでわけわかめ

Samba最小設定

ホスト名でのアクセスは不可。IPのみ。やり方は知らない!

SELinuxはOFFにする事。でないと色々めんどくさい。

インストール

# yum -y install samba

起動

# service smb start
# service nmb start

ファイアウォール

# iptables -I INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT
service iptables save
service iptables restart

ユーザ追加

# smbpasswd -a username
# service smb restart

アクセス

エクスプローラで「\\IP」と打ってアクセス。
成功すると「/home/username」配下のファイルが見られる。

/home/username以外のディレクトリへはシンボリックリンクを貼ると便利。

PuTTY(plink)にパイプ

> echo hoge | plink user@host -pw xxxx cat

hoge
echo hogeの出力をplinkにパイプしてリモートのcatコマンドで表示する。

パスワードをコマンドラインで指定しないとうまくいかない
LinuxSSHは大丈夫)。

Quest PuTTYなら-auto_store_key_in_cacheで初回接続時のプロンプトもスキップ出来る。

この辺と同じようにすればtarで固めたものを転送して展開、なんて事も出来る。

> tar cvf - hoge.txt | plink user@host -pw xxxx -auto_store_key_in_cache "cat > hoge.tar; tar xvf hoge.tar"

複数のバッファをひとつのzipファイルにしてダウンロード

PEAR::File_Archiveのインストール。

# pear install File_Archive

<?php
require_once 'File/Archive.php';

$test1 = 'test1dayo';
$test2 = 'test2dayo';

$fa = new File_Archive();

$src = $fa->readMulti();

$src->addSource($fa->readMemory($test1, 'test1.txt'));
$src->addSource($fa->readMemory($test2, 'test2.txt'));

$fa->extract($src, $fa->toArchive('test.zip', $fa->toOutput()));

?>

mod_sslはデフォルトだと何故かIPv6

$_SERVER['REMOTE_ADDR']がIPv6になる。

SSL/TLS の導入 (2)
↑のページを参考にssl.confを以下の様に修正した。

Listen 0.0.0.0:443
IPv4でのみListenする様にした。ら治った。

httpd.confのListen 80の方は何も無くてもIPv4のアドレスになっているのになんでだろう…。
この時代にIPv6を敢えて対応しないというのも悪だけど。
もっとApache勉強したいなぁ。。。

x86ビルドでヒープにXMMATRIXを確保するとうまく動作しない。

てか落ちる。x64ビルドだと大丈夫。
Direct3D11+XNA Mathやってて超ハマってた。

Getting Started - Windows applications | Microsoft Docs

型の使用方法のガイドライン

ただし、ヒープからの割り当てはさらに複雑です。この場合、ヒープから割り当てられるクラスまたは構造体のメンバーとして XMVECTOR または XMMATRIX を使用する場合は注意が必要です。Xbox 360 および Windows x64 では、すべてのヒープ割り当ては 16 バイトにアライメントされますが、Windows x86 では 8 バイトにアライメントされます。16 バイトのアライメントでヒープから構造体を割り当てるためのオプションは、いくつかあります (「割り当ての適切なアライメント」を参照してください)。また、C++ の場合は、new 演算子や delete 演算子オーバーロードを利用することもできます。

クラスメンバの変数にはおとなしくXMFLOAT4X4にしてStore系の関数使えって事かな。
x86(Win32)とx64両対応するならだけども。
アライメント揃えられるやり方自体はあるようだけど、めんどくさそう。